Что такое bindtextdomain, textdomain в gettext?

Я изучал немного gettext, но я не могу схватить те две функции. Я задавался вопросом, мог ли я использовать несколько переводов в APP, записанном в PHP. Для экземпляра у меня есть 1) системный перевод 2) переводы расширений 3) переводы темы для деления тех, которые в различных файлах. Мой вопрос, если я загружу системный перевод, затем загружу перевод темы, то первый будет "сброшен"?

Я ценил бы любые ссылки, связанные с gettext и php.

Спасибо

6
задан allenskd 1 January 2010 в 17:19
поделиться

1 ответ

Вы можете легко переключаться между текстовыми доменами когда угодно. Например:

Given

./locale/en/LC_MESSAGES/template.po 

with the content

msgid "foo"
msgstr "foobar"

and

./locale/en/LC_MESSAGES/messages.po

with the content

msgid "Basic test"
msgstr "A basic test"

You can use something like the PHP code to switch from one textdomain to the other, and then back:

<?php
setlocale(LC_ALL, 'en_US.UTF-8');
bindtextdomain ("messages", "./locale");
bindtextdomain ("template", "./locale");

textdomain ("messages");
echo gettext("Basic test"), "\n";

textdomain ("template");
echo _("foo"), "\n";

textdomain ("messages");
echo gettext("Basic test"), "\n";
24
ответ дан 8 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: