我有一个标准的本地化项目设置。我在settings.py
中定义了几种语言。我正在使用LocaleMiddleware
。我的模板文件中有一些{%blocktrans%}
字符串,这些字符串会被拉入我的django.po
文件中。我已运行django-admin.py compilemessages
并验证已创建.mo
文件。
{% get_current_language as LANGUAGE_CODE %}{{LANGUAGE_CODE}}
提供了正确的语言(在本例中为zh-cn
)ENABLE_I18N = True
和USE_L10N = True
LANGUAGE_CODE
LANGUAGES
和settings.py
当我渲染视图时,我知道选择了正确的区域设置,因为使用它的视图代码(request.session.get('django_language', settings.LANGUAGE_CODE)
)获得了正确的代码。但是模板中字符串中的翻译不会显示出来。
我如何尝试解决此问题?
答案 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
,看看你是否真的到达了正确的地方。