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

时间:2019-09-17 18:18:40

标签: translation poedit pot

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

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

我一直在寻找可以进行破坏性合并的工具,但是我一直没有成功找到它。在我去写一个...之前,我错过了什么吗?

(很抱歉,如果这属于另一个交易所,如果有人告诉我哪一个,我会将这篇文章移至更好的交易所)。

1 个答案:

答案 0 :(得分:0)

您所描述的“破坏性”合并是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)是最可能的原因(在这种情况下,请使用更好的编辑器,例如ahem,Poedit),或者也许是(2)(应该易于通过搜索来查看)即将使用的字符串的POT。)

但是合并确实可以实现您期望的正确的事情。

相关问题