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

Ale*_*ich 1 translation poedit pot

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

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

我四处寻找可以进行这种破坏性合并的工具,但我还没有成功找到一个。在我开始写一篇之前……我错过了什么吗?

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

Vác*_*vík 5

您所描述的“破坏性”合并是 gettext 中的标准、正常合并操作,也是每个人都想要的 \xe2\x80\x94 您必须不遗余力地完成非破坏性版本,而我甚至不知道如何。

\n\n

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

\n\n

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

\n\n
msgmerge -U your_old_translation.po latest_strings.pot\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用 Poedit 合并(注意拼写):

\n\n
    \n
  1. 打开包含(现已过时)翻译的 PO 文件。
  2. \n
  3. 使用目录 \xe2\x86\x92 从 POT 文件\xe2\x80\xa6 更新
  4. \n
  5. 选择新生成的 POT 文件。
  6. \n
\n\n

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

\n\n

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

\n\n

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

\n