xgettext --join-exist在我的pot文件中产生了多个注释



我有一个构建脚本,可以扫描源代码目录(PHP)并执行xgettext --join-existing ...以进行更新的翻译并保存到pot文件中,例如

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 ""
  1. 为什么评论中有两行源/行?(我猜这是由于我们在源中移动了消息。

  2. 那么,如果同一个文件更新了内容,如何让 xgettext 忽略呢?

  3. 还是我不应该建议在构建脚本中使用--join-existing?(但是有时候我们在pot文件中有手动项目,那么如何解决呢?

听起来逻辑上xgettext附加信息(甚至是源引用),因为它是使用选项 --join-existing 显式设置的。但以下解决方法可能会有所帮助。


解决方法 1

在构建新 pot 之前,使用 sed 从 pot 文件中删除以前的源引用:

sed -i.old '/^#: /d' languages/myapp/myapp.pot

解决方法 2

不要使用选项--join-existing并将手动项目放在虚拟 php 文件中。

如果使用 poedit,这会有问题吗?它是带有"更新"按钮的GUI应用程序。Poedit扫描所有文件并收集所有可翻译的字符串。我已经用了很多时间了,它的工作很完美。

最新更新