我有一个构建脚本,它扫描源目录(PHP)并执行xgettext --join-existing ...
以获得更新的翻译并保存到一个底池文件中,例如
find . -type f -name '*.php' -not -path './vendor/*' |
xargs xgettext --join-existing --keyword=_e --keyword=_x
--keyword=__ --from-code=UTF-8 --default-domain=myapp
--output=languages/myapp/myapp.pot
我不知道为什么,经过几次代码重构和构建之后,pot文件会有这样的东西
#: src/Member/Auth.php:196
#: src/Member/Auth.php:135
msgid "Login failed!"
msgstr ""
为什么评论中有两行源/行? (我想这是因为我们已经在源头中移动了消息。)
那么,如果同一个文件有更新内容,如何使xgettext忽略?
或者我不应该建议在构建脚本中使用--join-existing
吗? (但有时我们在pot文件中有手工项目,所以如何解决?)
答案 0 :(得分:1)
逻辑上听起来xgettext
附加信息(甚至是源参考),因为它是使用选项--join-existing
显式设置的。但是下面的解决方法可能有所帮助。
解决方法1
在构建新底池之前,使用sed从pot文件中删除以前的源引用:
sed -i.old '/^#: /d' languages/myapp/myapp.pot
解决方法2
请勿使用选项--join-existing
并将手册项放在虚拟php文件中。
答案 1 :(得分:0)
如果使用poedit,这会有问题吗?它是带有“更新”按钮的GUI应用程序。 Poedit扫描所有文件并收集所有可翻译的字符串。我已经使用了很长时间,并且它的工作非常完美。