如何自动删除未使用的gettext字符串?

时间:2012-05-03 16:54:34

标签: gettext xgettext

我有一个Web应用程序,我使用gettext进行了几次翻译。但是现在我已经完成了对应用程序的重大改写,虽然大多数字符串是相同的,但也有相当多的字符串被显着更改或删除。

我使用xgettext来创建.po文件,能够在代码中找到新的字符串并将它们添加到.po文件中很棒,但我没有看到删除未找到的字符串的选项在代码中。

是否有自动方法从.po文件中删除不再存在于代码中的字符串?

2 个答案:

答案 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