为什么Django .po中的某些字符串被翻译而其他字符串却没有?

时间:2014-03-23 06:50:36

标签: django localization internationalization gettext

这是我第一次使用Django本地化。

  1. 我使用makemessages生成.po文件并随机选择一个 几个字符串来填写翻译,只是为了检查是否 本地化工作。
  2. 然后我用。生成.mo文件 compilemessages。
  3. 我转到网页,只看到一个字符串 '用户名'已翻译,大多数其他字符串无法翻译 版本显示。
  4. 这里发生了什么?

    编辑: 我发现为什么'用户名'被翻译,它使用Django中的默认翻译,但为什么Django没有使用我的mo文件超出了我。我按照i18n doc中的所有说明进行操作。

    1. 我将settings.py中的LOCALE_PATHS变量设置为我的本地化文件的路径。
    2. 我尝试了不同的LANGUAGE_CODE设置'zh-cn','zh_CN'(设置变量和目录名称)。
    3. 我试过msgunfmt django.mo,该文件有效。
    4. 有一些行靠近po文件的开头:

      #, fuzzy
      msgid ""
      msgstr ""
      

      我认为这是正常的。

1 个答案:

答案 0 :(得分:1)

经过数小时的试验和错误,我终于得到了它。 我改变了我的LOCALE_PATHS:

LOCALE_PATHS = ("/path/to/locale/");

为:

LOCALE_PATHS = ("", "/path/to/locale/");

它立即起作用。也许它是Django 1.5(我正在使用)的一个错误,或者我配置错误。

无论如何,希望这可以帮助某人,并为您节省数小时的时间。

====== EDIT ===========

正如@J.C.Leitão指出的那样,你必须添加逗号才能使变量成为元组。 这是我的一个新手错误。但我认为如果单个字符串被识别,Django可能对开发人员更友好。