具有可选替换参数的翻译功能

时间:2015-03-07 23:30:31

标签: 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)时,我使用它:

sprintf(L('myKey'), $var)

是否有一些简单的方法可以让我只使用L('myKey', $var)

我考虑将array $params=null添加为形式参数(然后将数组作为第二个参数),但是如何将其扩展为sprintf()的各个参数?

1 个答案:

答案 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;
    }
}