我正在我的php应用程序上重建语言系统,以便更轻松地创建翻译。
我做的一件事是将所有内容转换为一个大数组$lang;下面是一个看起来像的示例:
$lang['common:login'] = "Login";
$lang['common:signup'] = "Sign Up";
$lang['index:title'] = "Home Page";
$lang['messages:newmessages'] = "You have %s new messages";
我使用以下代码加载它:
require_once "lang/en/lang.php";
调用 $lang['common:login'] 将毫无问题地 wqork,与我过去所做的其他方式相比,一旦我创建了一个用于加载这些的函数,就会出现问题。
function outputLanguage($tag) {
global $lang;
//see if tag exists.
if (!in_array($tag, $lang)) {
return $tag." is an invalid language tag.";
} else {
return $lang[$tag];
}
}
似乎 in_array() 不喜欢使用来自其他来源的数组。
老实说,我希望有一些验证,以防有人犯了错误,那么有谁知道一个好的解决方案吗?
谢谢。
您需要使用array_key_exists
而不是in_array
您正在寻找数组键,请尝试:
if(!isset($lang[$tag])) {
return $tag." is an invalid language tag.";
} else {
return $lang[$tag];
}
或者我会返回false
:
return isset($lang[$tag]) ? $lang[$tag] : false;