我有一个Web应用程序,我使用gettext进行了几次翻译。但是现在我已经完成了对应用程序的重大改写,虽然大多数字符串是相同的,但也有相当多的字符串被显着更改或删除。
我使用xgettext来创建.po文件,能够在代码中找到新的字符串并将它们添加到.po文件中很棒,但我没有看到删除未找到的字符串的选项在代码中。
是否有自动方法从.po文件中删除不再存在于代码中的字符串?
答案 0 :(得分:5)
假设您有一个新的PO模板文件,其中包含仅应包含在最终采购订单目录中的字符串在名为messages.pot
的文件中,并在messages.po
中包含目标采购订单目录,你可以这样做:
msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po
这标志着任何过时的字符串。 --set-obsolete
开关告诉msgattrib将过时的标志应用于目标文件中的所有字符串,--ignore-file
告诉它忽略出现在指定文件中的字符串(PO模板中)我们的情况)。
如果您还想完全删除它们,还有一个步骤:
msgattrib --no-obsolete -o messages.po messages.po
您可以阅读有关msgattrib
命令here的更多信息。
答案 1 :(得分:0)
Сanso
find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done