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)
的操作。但不确定是否更简单。