Php 具有可选替换参数的转换函数
我有一个函数Php 具有可选替换参数的转换函数,php,internationalization,Php,Internationalization,我有一个函数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)时,我使用以下
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
作为一个形式参数(然后将array作为第二个参数),但如何将其扩展到sprintf()
的各个参数呢?像往常一样,我在询问后马上找到了答案^^
这是我的解决方案——如果你能写得更好,请随意回答,我可以接受
// 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;
}
}
如果要使用数组,可以执行类似于
L('myKey',array('varname1'=>$var1',varname2'=>$var2)
的操作。但不确定是否更简单。