我想在gettext中同时加载多个mo文件
一个例子:
$lang = 'en_US';
putenv('LC_ALL=' . $lang);
setlocale(LC_ALL, $lang);
bindtextdomain('module', ROOT . 'Language');
bindtextdomain('default', ROOT . 'Language');
textdomain('module');
textdomain('default');
但我不能同时使用两个“textdomains”。此代码仅提供一种语言。我想同时使用多个“bindtextdomain”和.mo文件。
我有很多模块。每个模块必须具有单独的“mo”文件。每个模块都加载相同的文件。
我如何使用多个textdomain?
答案 0 :(得分:0)
您需要两个功能。第一个功能是动态更改gettext域。 第二个功能就像默认的gettext方法一样工作。 简短地;您必须更改gettext域并在函数中选择域。
function selectDomain($trFile)
{
if ($trFile == 'default') {
bindtextdomain($trFile, ROOT . 'Language');
} else {
bindtextdomain($trFile, MROOT . $trFile . '/Language');
}
textdomain($trFile);
}
function _e($msgid, $trFile = 'default')
{
selectDomain($trFile);
return _($msgid);
}
echo _e('Test');
echo _e('Test','another_text_domain');