8

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

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

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

4

2 回答 2

9

假设您有一个新的 PO 模板文件,其中只包含应该在名为 的文件中的最终 PO 目录中的字符串,messages.pot以及在 中的目标 PO 目录messages.po,您可以这样做:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po

这会标记任何过时的字符串。该--set-obsolete开关告诉 msgattrib 将obsolete标志应用于目标文件中的所有字符串,并--ignore-file告诉它忽略出现在指定文件中的字符串(在我们的例子中是 PO 模板)。

如果您还想完全删除它们,还有一个步骤:

msgattrib --no-obsolete -o messages.po messages.po

您可以在此处阅读有关msgattrib命令的更多信息。

于 2014-11-27T19:37:24.550 回答
-1

如此

find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done
于 2014-10-20T15:43:02.977 回答