9

我有一个中等规模的 Django 项目(如果有任何区别,可以在 AppEngine 上运行),并且所有字符串都像它们应该的那样存在于 .po 文件中。

我看到某些字符串无法翻译的奇怪行为。当我运行 make_messages 时,它们会出现在 .po 文件中,并且正确的文件位置标记了我的 {% trans %} 标签所在的位置。与两侧的其他字符串相比,翻译已经到位并且看起来正确。但是当我显示有问题的页面时,大约 1/4 的字符串根本不翻译。

深入研究生成的相关 .mo 文件,我看不到 msgid 或 msgstr 。

有没有人见过类似的东西?知道会发生什么吗?

  • 反式标签看起来正确
  • .po 文件看起来正确
  • compile_messages 期间没有错误
4

2 回答 2

11

啊。姜戈,你杀了我。

这是发生的事情:

http://blog.e-shell.org/124

出于某种只有 Django 知道的原因,它决定用注释“#fuzzy”来装饰我的一些翻译。它似乎已经选择了随机标记的那些。

无论如何,#fuzzy 的意思是:“不要翻译这个,即使这是翻译:”

我会把它留在这里,以防将来有其他可怜的灵魂遇到它。

于 2009-01-21T00:54:59.663 回答
11

模糊标记由 makemessages 添加到 .po 文件中。当您有一个新字符串(没有翻译)时,它会查找相似的字符串,并将它们作为翻译包含在内,并带有模糊标记。这意味着,这是一个粗略的匹配,所以不要将它显示给用户,但这对于人工翻译来说可能是一个好的开始。

这不是 Django 行为,它来自 gettext 工具。

于 2009-01-21T02:31:43.757 回答