(真的很惊讶,这在网上的任何地方都没有得到回答;在过去的几年中,几篇帖子都提出了类似的问题,但从未得到回答。我们希望Stackoverflow的工作人员能够来救助)

情况:

当使用gettext支持应用程序本地化时,有时希望使用dgettext('domain','some text string')指定一个“域”。但是,在运行xgettext时,所有用dgettext(...)包装的字符串都吐到一个文件中(默认值:messages.po)。

给出以下示例:

dgettext('menus', 'login link');
dgettext('menus', 'account link');
dgettext('footer', 'copyright notice');
dgettext('footer', 'contact form');


有什么方法可以结束

menus.po
页脚

使用提取器,如xgettext?

需要PHP响应,尽管我认为这应该适用于所有语言

最佳答案

我发现做到这一点的唯一方法是重新定义gettext函数...

例:

function _menus ($str) {
    return dgettext('menus', $str);
}

function _footer ($_str) {
    return dgettext('footer', $str);
}

_menus('login link');
_menus('account link');
_footer('copyright notice');
_footer('contact form');


否则,您只需要运行以下命令:

xgettext [usual options] -k --keyword=_menus:1 -d menus
xgettext [usual options] -k --keyword=_footer:1 -d footer


再见!

10-06 11:29