【发布时间】:2011-04-06 16:00:08
【问题描述】:
真的很纠结这个。
我最近设置了一个 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
除了按照难度顺序排列的这两件事之外,上述工作绝对正常:
在所有网站源代码中,我一直小心确保所有需要翻译的字符串都被函数 _( 'string to translate here' ) 包围,但是 xgettext 命令正在从我所知道的内容中提取文件中的几乎每个字符串,而不仅仅是 _('') 函数包围的字符串。这意味着我生成的 .pot 文件包含变量名、URL、格式字符串、函数参数、配置数据和其他不应传递给我们的翻译器的不适当字符串。由于网站的大小,手动删除这些是不切实际的 - 我们正在查看近 80,000 个字符串条目,这只是我需要在接下来的 6 个中以相同方式处理的数字中的第一个网站周!如何将 xgettext 配置为仅提取用于翻译的字符串?
提取的很多字符串中都有换行符,在字符串中插入为\n。有什么方法可以将 xgettext 配置为不这样做,或者有一种简单的方法来删除这些?
我一直在阅读文档并在网上搜索数小时甚至数天,试图找到解决方案,特别是解决问题。 1,非常感谢 gettext 大师的帮助!提前谢谢..
【问题讨论】: