Django缺少某些字符串的翻译。有什么想法吗?

9
我有一个中等规模的Django项目(在AppEngine上运行,如果有什么区别的话),所有字符串都存储在.po文件中。
我发现某些字符串无法翻译。当我运行make_messages时,它们出现在.po文件中,并标记了我的{% trans %}标签的正确文件位置。翻译已经就位,并且与它们两侧的其他字符串相比看起来正确。但是,当我显示相关页面时,大约四分之一的字符串根本没有被翻译。
查看相关的生成.mo文件,我没有看到msgid或msgstr。你有遇到过类似的情况吗?有什么想法可能会发生什么?
  • trans标签看起来正确
  • .po文件看起来正确
  • 编译消息期间没有错误
2个回答

11

天啊,Django,你要把我搞死了。

事情是这样的:

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

因为某些只有Django知道的原因,它决定用注释“#fuzzy”来标记我的一些翻译,似乎它随机选择了要标记的部分。

无论如何,“#fuzzy”的意思是:“不要翻译这个,尽管这里有翻译:”

如果将来还有其他可怜的人遇到此问题,我将留下此处。


默认情况下,PyCharm在文件顶部包含“#fuzzy”,将其取消激活。 - Valchris
只需使用您喜欢的PO编辑器浏览PO文件,并检查是否可以将所有模糊条目标记为“OK”。 - quazgar

11

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接