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

Jul*_*lio 4 php gettext

域名我指的是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);
Run Code Online (Sandbox Code Playgroud)

所以它将使用my_path/en_US/LC_MESSAGES/default.po

但是我想使用多个文件,所以我可以覆盖 default.po中的值,用admin.po,blog.po等其他po文件覆盖

Dan*_*Man 20

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

bindtextdomain('domain1', DIR_LOCALE);
bindtextdomain('domain2', DIR_LOCALE);
bindtextdomain('domain3', DIR_LOCALE);
textdomain('domain1'); // set default domain for _() function
Run Code Online (Sandbox Code Playgroud)

现在,如果要从其他域中获取字符串,则可以使用dgettext()或者dcgettext()(如果不是来自LC_MESSAGES)从不同的指定域中检索单个字符串.例:

echo dgettext('domain2', "msgid");
Run Code Online (Sandbox Code Playgroud)