在PHP应用程序的gettext中使用多个域


Use multiple domains in gettext in a PHP application

我所说的域是指gettext域。我有这个代码

$domain = "default";
$locale = 'en_US';
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain($domain, 'my_path'); 
bind_textdomain_codeset($domain, 'UTF-8');    
textdomain($domain);

因此,它将使用my_path/en_US/LC_MESSAGES/default.po

但我想使用多个文件,这样我就可以覆盖覆盖default.po中的值使用另一个po文件,如admin.po、blog.po等

首先定义所有您的域,如下所示:

bindtextdomain('domain1', DIR_LOCALE);
bindtextdomain('domain2', DIR_LOCALE);
bindtextdomain('domain3', DIR_LOCALE);
textdomain('domain1'); // set default domain for _() function

现在,如果您想从不同的域获取字符串,您可以使用dgettext()dcgettext()(如果不是从LC_MESSAGES)从不同的指定域中只检索一个字符串。示例:

echo dgettext('domain2', "msgid");