【问题标题】:Django missing translation of some strings. Any idea why?Django 缺少一些字符串的翻译。知道为什么吗?
【发布时间】:2010-10-02 14:22:29
【问题描述】:

我有一个中等规模的 Django 项目(如果有什么不同的话,可以在 AppEngine 上运行),并且所有字符串都按照应有的方式存在于 .po 文件中。

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

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

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

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

【问题讨论】:

    标签: python django internationalization translation


    【解决方案1】:

    呃。姜戈,你杀了我。

    这是发生了什么:

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

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

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

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

    【讨论】:

    • +1 默认情况下 PyCharm 在文件顶部包含 #fuzzy 以取消激活它。
    • 谢谢,遇到了同样的问题,你节省了我的时间 :-)
    • 用你喜欢的 po 编辑器浏览 po 文件,检查是否可以将所有模糊条目标记为 OK。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多