什么是gettext中的bindtextdomain,textdomain?

时间:2010-01-01 17:19:40

标签: php gettext php-gettext

我一直在学习一些gettext但我无法掌握这两个功能。我一直想知道我是否可以在用PHP编写的APP中使用多个翻译。例如,我1)系统翻译2)扩展翻译3)主题翻译,以划分不同的文件。我的问题是,如果我加载系统翻译,然后加载主题翻译将第一个“未设置”?

我很感激任何与gettext和php相关的链接。

由于

1 个答案:

答案 0 :(得分:24)

您可以随时在文本域之间切换。 e.g:

给出

./locale/en/LC_MESSAGES/template.po 

内容

msgid "foo"
msgstr "foobar"

./locale/en/LC_MESSAGES/messages.po

内容

msgid "Basic test"
msgstr "A basic test"

您可以使用类似以下PHP代码的内容从一个textdomain切换到另一个,然后返回:

<?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";