3

真的在努力解决这个问题。

我最近设置了一个 bash shell 脚本来提取、连接和删除字符串以翻译出整个网站的视图页面(使用 MVC 框架),它看起来像这样:

for x in *.php; do xgettext --no-wrap --language=PHP -e --flag=_:1:pass-c-format -a "$x" -o "${x%.php}.pot"; done
msgcat -u -s --output-file=$WEBSITENAME-concat.pot *.pot
msguniq -u --output-file=$WEBSITENAME-unique.pot $WEBSITENAME-concat.pot
msgmerge -s -v -U $WEBSITENAME.po $WEBSITENAME-unique.pot

除了这两件事之外,上述工作绝对正常,以便克服困难:

  1. 在所有网站源代码中,我一直小心翼翼地确保所有需要翻译的字符串都被函数_('string to translate here')包围,但是xgettext命令几乎从我的文件中提取了文件中的每个字符串可以说,不仅仅是被_('')函数包围的那些。这意味着我生成的.pot文件包含变量名、URL、格式字符串、函数参数、配置数据和其他不应传递给我们的翻译器的不适当的字符串。由于网站的大小,手动删除这些是不切实际的 - 我们正在查看近 80,000 个字符串条目,这只是我需要在接下来的 6 个中以相同方式处理的数字的第一个网站周!如何将xgettext配置为仅提取用于翻译的字符串?

  2. 提取的许多字符串中都有换行符,这些换行符作为\n插入到字符串中。有没有办法配置xgettext不这样做,或者一个简单的方法来删除这些?

我一直在阅读文档并在网上搜索数小时甚至数天,试图找到一个解决方案,特别是解决问题。1,非常感谢gettext专家的帮助!提前致谢..

4

2 回答 2

4

只是在这里猜测,但您遇到的第一个问题可能是由 -a 选项引起的。从xgettext 手册

-a, --extract-all           extract all strings

附带说明一下,您的 xgettext 调用似乎很复杂。我当然不知道你想做什么,但对我来说,以下命令就足够了:

xgettext -L PHP --from-code=utf-8 *.php -o messages.pot

这会将所有_()包含的字符串保存到 messages.pot 中。

于 2011-05-18T14:25:49.083 回答
0

第 1 点的可能答案。

我不知道您使用的版本,但是使用 Delphi 版本,您可以添加一个名为 ggexclude.cfg 的文件来排除某些组件。

# exclude all occurences of the specified class
# and property in all DFM files in or below the
# path where "ggexclude.cfg" is in
[exclude-form-class-property]
TField.FieldName
...
于 2011-06-09T13:57:53.877 回答