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

问题描述

我正在为我的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"自动翻译,该msgid与实际字符串并不接近,也没有与此msgstr链接

有人可以向我解释后台发生了什么,如何删除所有此类链接,所以对于msgid我只能得到空字符串(除非字符串100%相似)?预先谢谢你。

我的技巧是public typealias CoordUnit = Double public struct StyledAxis: StyledAxisProtocol { public var name: String public var bounds: ClosedRange<CoordUnit> public var distribution: Double? ... } 是根据字符串片段分配的,以寻找“最佳匹配”。如果是这样的话-如何停止这种行为?

解决方法

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

模糊翻译不是 ,应由您的应用程序使用/部署。如果您使用.po.mo文件编译成msgmerge文件(compilemessages可能会这样做),这些模糊转换将被忽略。

只需将模糊翻译保留在.po文件中。它们不会受到伤害,并且使以后的翻译更加容易,因为翻译人员不必从头开始翻译,而是改正自动建议的翻译。