繁体   English   中英

只需要由xgettext生成转换字符串,而不是源文件中的所有字符串

[英]Need just the strings for translation to be generated by xgettext, not all the strings in the source files

真的很挣这个。

我最近设置了一个bash shell脚本来提取,连接和重复删除字符串以转换出整个webite的视图页面(使用中的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. 在整个网站源代码中,我一直小心翼翼地确保所有需要翻译的字符串都被函数_('这里要翻译的字符串')所包围,但是xgettext命令几乎从我的文件中提取文件中的每个字符串。不仅可以告诉_('')函数包围的那些。 这意味着我生成的.pot文件包含变量名,URL,格式字符串,函数参数,配置数据和其他不合适的字符串,这些字符串不应传递给我们的翻译人员。 由于网站的大小,手动删除这些是不切实际的 - 我们正在查看近80,000个字符串条目,这只是我需要在接下来的6个中以相同方式处理的数字的第一个网站周! 如何将xgettext配置为仅提取用于翻译的字符串?

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

我一直在阅读文档并在网上搜索几个小时甚至几天试图寻找解决方案,尤其是问题。 1,非常感谢gettext大师的一些帮助! 提前致谢..

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

-a, --extract-all           extract all strings

作为旁注,您的xgettext调用似乎非常复杂。 我当然不知道你想要做什么,但对我来说,以下命令就足够了:

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

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

第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
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM