我如何在 php gettext 中使用多个文本域?
How i can use multiple textdomain in php gettext?
我想在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" 文件。每个模块加载相同的文件。
如何使用多个文本域?
您需要两个功能。第一个功能是动态改变 gettext 域。
第二个函数像默认的 gettext 方法一样工作。
简要地;您必须在函数中更改 gettext 域和 select 域。
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');
我想在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" 文件。每个模块加载相同的文件。
如何使用多个文本域?
您需要两个功能。第一个功能是动态改变 gettext 域。 第二个函数像默认的 gettext 方法一样工作。 简要地;您必须在函数中更改 gettext 域和 select 域。
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');