我所说的域是指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");