代码之家  ›  专栏  ›  技术社区  ›  Jason Kester

Django缺少某些字符串的翻译。知道为什么吗?

  •  8
  • Jason Kester  · 技术社区  · 17 年前

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

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

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

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

    • .po文件看起来正确
    • 编译\u消息期间没有错误
    2 回复  |  直到 17 年前
        1
  •  11
  •   Jason Kester    17 年前

    啊。Django,你要杀了我。

    下面是发生的事情:

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

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

    我会把这个留在这里,以防将来有其他可怜的人碰到它。

        2
  •  11
  •   Ned Batchelder    17 年前

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

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