9

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

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

4

2 回答 2

3

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

例如,假设你有一个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 变体,并将它们复制/安装到正确的位置。

于 2012-04-04T20:14:17.267 回答
0

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

于 2011-12-25T23:06:07.313 回答