如何合并 POT 和 PO 文件,以便排除不在 POT 文件中的条目?



简而言之,我正在尝试找到一种从新 POT 和现有 PO 文件创建新的 PO 文件的方法 - 但我想排除任何不在 POT 文件中的字符串(及其翻译(。

每次我们更改 cakePHP 网站上的措辞时,我们都会生成一个新的 POT 文件,其中包含网站中的所有可翻译字符串。 但是,当我们将其与现有 PO 文件(使用 POEdit(合并时,合并过程只会将 POT 条目添加到 PO 文件中。 它不会删除我们不再需要的翻译。 我们的 PO 文件中有超过 12k 个不需要的翻译。这让我们的翻译非常不高兴。她只看网站并向我发送翻译以手动添加,这让我非常不高兴。

我已经四处寻找进行这种破坏性合并的工具,但我还没有成功找到一个。 在我去写一个之前...我错过了什么吗?

(对不起,如果这属于不同的交易所,如果有人告诉我是哪一个,我会把这篇文章移到更好的交易所(。

你描述的"破坏性"合并是 gettext 中的标准、正常的合并操作,也是每个人都想要的——你必须竭尽全力完成非破坏性版本,我什至不确定如何。

由此可以安全地得出结论:(1( 您一定在执行一些上面未描述的奇怪步骤,或者 (2( 您的 POT 文件包含的内容比您想象的要多(例如,因为您附加到它而不是替换它(,或 (3( 您或您使用的工具误解了生成的 PO 文件。

要使用 GNU gettext 命令行工具进行合并:

msgmerge -U your_old_translation.po latest_strings.pot

要使用 Poedit 进行合并(注意拼写(:

  1. 打开带有(现已过时(翻译的 PO 文件。
  2. 使用目录→从 POT 文件更新...
  3. 选择新重新生成的 POT 文件。

请注意,默认情况下,过时的翻译将保留在 PO 文件中作为备份。在 Poedit 中,您可以清除它们(请参阅目录→清除已删除的翻译(。但是,这些过时的条目以不同的方式存储在 PO 文件中,作为特殊格式的注释,并且在 Poedit 或任何符合 PO 的编辑工具中可见或不可编辑。

如果我打赌,我会说 (3( 是最有可能的原因(在这种情况下,请使用更好的编辑器,例如,咳咳,Poedit(,或者也许 (2((应该很容易通过搜索 POT 来查看现在未使用的字符串(。

但是合并确实做了你期望它做的正确事情。

相关内容

  • 没有找到相关文章

最新更新