我有多个域的程序,一些源文件包含具有不同文本域的 dgettext() 调用。
如何将 gettext-strings 提取到多个 .po 文件中?例如,呼叫dgettext('one', 'Hello')
应转到 one.po 和dgettext('two', 'Bye')
two.po。xgettext 只是忽略文本域并将所有内容放在单个文件中。
我有多个域的程序,一些源文件包含具有不同文本域的 dgettext() 调用。
如何将 gettext-strings 提取到多个 .po 文件中?例如,呼叫dgettext('one', 'Hello')
应转到 one.po 和dgettext('two', 'Bye')
two.po。xgettext 只是忽略文本域并将所有内容放在单个文件中。
首先,您需要一种分离域的方法。
例如,假设你有一个lib域和一个appdgettext()
域,然后为调用创建一个快捷方式;
_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 变体,并将它们复制/安装到正确的位置。
如果您使用的是 linux,请使用 gtranslator 程序来操作 *.po 并测试您的 *.po 文件。