我有一个函数L($key)
来翻译我的字符串。
没什么好看的:
$_langs = include(__DIR__ . '/lang.php');
function L($key)
{
global $_langs;
if (array_key_exists($key, $_langs)) {
return $_langs[$key];
} else {
return $key;
}
}
当我需要参数化翻译(使用%s
)时,我使用它:
sprintf(L('myKey'), $var)
是否有一些简单的方法可以让我只使用L('myKey', $var)
?
我考虑将array $params=null
添加为形式参数(然后将数组作为第二个参数),但是如何将其扩展为sprintf()
的各个参数?
答案 0 :(得分:0)
像往常一样,我在询问^^
之后就立刻意识到了这一点这是我的解决方案 - 如果你能更好地写出来,请随时回答,我可以接受。
// i18n utility
$_langs = include(__DIR__ . '/lang.php');
function L($key)
{
global $_langs;
if (array_key_exists($key, $_langs)) {
$formats = array_slice(func_get_args(), 1);
$sprintf_args = array_merge([$_langs[$key]], $formats);
return call_user_func_array('sprintf', $sprintf_args);
} else {
return $key;
}
}