我为我的网络应用程序实现了多语言功能。我通过这个获得了值
echo $lang['the key here'];
我将这些值保存在像这样的单独的文件中
$lang['confirm'] = 'COnfirm the message';
$lang['deny'] = 'Deny the invitation';
所以我想如果有人调用未定义的密钥,比如$ lang ['sdefscfef'],打印空格,我想打印密钥名称,即'sdefscfef'
我想把它作为一个功能
function translate($string) {
if(! isset($string)) {
echo THE KEY;
}
else {
echo $string;
}
}
translate($lang['asdadad']);
并打印密钥
答案 0 :(得分:2)
我不是直接打印数组而是创建一个函数(_()
很常见),并像这样使用它:
echo _('Welcome');
然后_()
函数将在$ language数组中查找:
function _ ($str) {
global $language;
return isset($language[$str]) ? $language[$str] : $str;
}
类似的东西。
如果你想避免使用全局变量,可以在这样的类中包装所有这些:
class Lang {
private $lang = array();
public static translate ($str) {
return isset(self::$lang[$str]) self::$lang[$str] : $str;
}
}
然后,为避免必须在任何地方输入Lang::translate()
,您可以执行此操作:
function _ ($str) {
return Lang::translate($str);
}
以下是一个更高级语言课程的示例:http://code.google.com/p/sleek-php/source/browse/trunk/Core/Lang.php
答案 1 :(得分:0)
简单地使用:
$lang['confirm'] = 'COnfirm the message';
$lang['deny'] = 'Deny the invitation';
....
function getTranslation($key) {
global $lang;
if (isset($lang[$key])) {
return $lang[$key];
} else {
return $key;
}
}
// Usage:
echo getTranslation('confirm'); // Prints 'Confirm the message'
echo getTranslation('sjdhj'); // Prints 'sjdhj'