gettext:将dgettext()字符串提取到domain.po文件

时间:2009-10-19 09:47:26

标签: localization gettext

我有多个域的程序,一些源文件包含具有不同文本域的dgettext()调用。

如何将gettext-strings提取到多个.po文件?例如,调用dgettext('one', 'Hello')应该转到one.po,而dgettext('two', 'Bye')应转到two.po. xgettext只是忽略文本域并将所有内容放在单个文件中。

2 个答案:

答案 0 :(得分:2)

首先,您需要一种分离域的方法。

例如,假设您有 lib 的域名和 app 的域名,然后为dgettext()调用创建快捷方式;

_app(msg) -> dgettext("app", msg);

和一个lib域:

_lib(msg) -> dgettext("lib", msg);

在您的代码中添加这些调用,如下所示;

show_message(_app("Choose a directory to save your work."));
show_message(_lib("No space left on device."));

请记住,在初始化应用程序时,您需要为两个域调用bindtextdomain()

要提取它们,您需要在源树中包含这些标记的所有文件名中为xgettext指定不同的关键字:

xgettext --keyword=_app -d domain1 filenames...
xgettext --keyword=_lib -d domain2 filenames...

最后,将两个.po文件编译成二进制.mo变体并将它们复制/安装到正确的位置。

答案 1 :(得分:0)

如果您使用的是linux,请使用gtranslator程序来操作* .po并测试您的* .po文件。