为什么Django本地化模板字符串会失败?

时间:2011-06-30 15:12:48

标签: django locale

我有一个标准的本地化项目设置。我在settings.py中定义了几种语言。我正在使用LocaleMiddleware。我的模板文件中有一些{%blocktrans%}字符串,这些字符串会被拉入我的django.po文件中。我已运行django-admin.py compilemessages并验证已创建.mo文件。

  • .po。
  • 中没有“模糊”条目
  • 在模板中,{% get_current_language as LANGUAGE_CODE %}{{LANGUAGE_CODE}}提供了正确的语言(在本例中为zh-cn
  • 我重新启动了[开发]服务器
  • 我有ENABLE_I18N = TrueUSE_L10N = True
  • 我在LANGUAGE_CODE
  • 中设置了LANGUAGESsettings.py

当我渲染视图时,我知道选择了正确的区域设置,因为使用它的视图代码(request.session.get('django_language', settings.LANGUAGE_CODE))获得了正确的代码。但是模板中字符串中的翻译不会显示出来。

我如何尝试解决此问题?

3 个答案:

答案 0 :(得分:1)

原来我错过了同时显而易见且不明显的东西。工作中有两种不同的标准。现在我修复了它,我的设置文件有:

LANGUAGES = (
    ('en', "English"),
    ('zh-CN', "中文")
)

但我的语言环境目录是locale/zh_CN。我愚蠢地假设在整个Django本地化中都会使用相同的语言环境标准。我错了。

进一步阅读:

使用连字符类型的文件:https://code.djangoproject.com/browser/django/trunk/django/conf/global_settings.py

使用下划线的文档。本页末尾的最后一段:https://docs.djangoproject.com/en/dev/topics/i18n/deployment/

答案 1 :(得分:0)

我讨厌问这个,但是,您是否在USE_I18N = True设置了settings.py

您还在问题中写了{%blocktranslate%},而它应该是{% blocktrans %}

答案 2 :(得分:0)

鉴于所有这一切,剩下的唯一事情是1)实际的翻译代码根本没有被调用(出于某种原因),或者2)它在完成工作之前就已经过时了。

我保留了Django的个人副本(即不是系统副本)所以我可以坚持print深入到某些东西的内心。尝试在print中添加一些django/templatetags/i18n.py,看看你是否真的到达了正确的地方。