为什么 gettext 会自动给我错误的翻译?

Why is gettext giving me automatically incorrect translations?

我正在为我的 Django 项目使用 gettext 翻译,并且我通过 makemessagescompilemessages 不断向 .po 文件添加新的和新的翻译。 现在发生的事情是,当我发送消息时,我检查了 .po 文件,许多字符串已经自动翻译,尽管这是 100% 唯一的字符串。

示例: 现在生成:

#: .\agregator\models.py:1855
#, fuzzy
#| msgid "Distribution order"
msgid "Distribution Product Parameters"
msgstr "Objednávka u distribuce"

它是根据msgid "Distribution order"自动翻译的,与实际字符串没有任何接近,也没有任何link到这个msgid

任何人都可以向我解释一下后台发生了什么以及我如何删除所有这样的 links 所以对于 msgstr 我只得到空字符串,(除非字符串是 100% 相似的)?提前谢谢你。

我的提示是 msgid 是根据字符串片段分配的,寻找“最佳匹配”。如果是这种情况 - 如何阻止这种行为?

如果 msgmerge 找到相似字符串的翻译,它会将它们建议为“模糊”。这就是你在这里看到的。

模糊翻译不是您的应用程序used/deployed。如果您将 .po 文件编译成带有 msgmerge.mo 文件(这就是 compilemessages 可能所做的),这些模糊翻译将被忽略。

将模糊翻译留在.po 文件中。它们不会造成伤害,而且它们使以后的翻译更容易,因为翻译者不必从头开始翻译,而是改正 auto-suggested 翻译。