我有多个域的程序,一些源文件包含具有不同文本域的dgettext()调用。
如何将gettext-strings提取到多个.po文件?例如,调用dgettext('one', 'Hello')
应该转到one.po,而dgettext('two', 'Bye')
应转到two.po. xgettext只是忽略文本域并将所有内容放在单个文件中。
答案 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文件。