Используйте несколько доменов в gettext в приложении PHP - PullRequest
4 голосов
/ 12 марта 2012

Под доменом я понимаю домен 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

Но я хочу использовать более 1 файла, чтобы я мог переопределить перезаписать значение в default.po с другим po-файлом, таким как admin.po, blog.po и т. д.

1 Ответ

18 голосов
/ 31 октября 2012

Сначала определите все ваши домены примерно так:

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

Теперь, если вы хотите получить строки из другого домена, вы должны использовать либо dgettext(), либо * 1007.* (если не из LC_MESSAGES), чтобы получить только одну строку из другого, указанного домена.Пример:

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