为什么Django本地化模板字符串会失败?
我有一个标准的本地化项目设置。在我的为什么Django本地化模板字符串会失败?,django,locale,Django,Locale,我有一个标准的本地化项目设置。在我的设置.py中定义了几种语言。我正在使用localemidware。我的模板文件中有几个{%blocktrans%}字符串,它们被拉入我的django.po文件中。我已经运行了django-admin.py compilemessages,并验证了.mo文件是否已创建 .po中没有“模糊”条目 在模板中,{%get_current_language as language_code%}{{language_code}}给出了正确的语言(在本例中,zh cn)
设置.py
中定义了几种语言。我正在使用localemidware
。我的模板文件中有几个{%blocktrans%}
字符串,它们被拉入我的django.po
文件中。我已经运行了django-admin.py compilemessages
,并验证了.mo
文件是否已创建
- .po中没有“模糊”条目
- 在模板中,
给出了正确的语言(在本例中,{%get_current_language as language_code%}{{language_code}}
)zh cn
- 我已重新启动[开发]服务器
- 我有
和ENABLE\u I18N=True
USE\u L10N=True
- 我在
settings.py中设置了
和LANGUAGE\u code
LANGUAGES
request.session.get('django\u language',settings.language\u code)
)获得了正确的代码。但是模板中字符串中的翻译不会显示出来
我该如何着手解决这个问题呢?我不想问这个问题,但是,您是否在
设置.py中设置了USE\u I18N=True
另外,您在问题中编写了{%blocktranslate%}
,而它应该是{%blocktranslate%}
鉴于所有这些,剩下的事情只有1)实际的翻译代码根本没有被调用(出于某种原因),或者2)它在完成工作之前退出
我随身带着一份Django的个人副本(即不是系统副本),这样我就可以将打印的内容深入到某个东西的内部。尝试在django/templatetags/i18n.py
中添加一些print
s,看看您是否真的到达了正确的位置。结果表明,我错过了一些既明显又不明显的内容。有两种不同的标准在起作用。现在我已经修复了它,我的设置文件有:
LANGUAGES = (
('en', "English"),
('zh-CN', "中文")
)
但是我的语言环境目录是locale/zh\u CN
。我愚蠢地认为在Django本地化过程中会使用相同的语言环境标准。我错了
进一步阅读:
使用连字符类型的文件:
使用下划线的文档。本页末尾的最后一段:谢谢,但遗憾的是,这些都是键入问题时的错误。这些代码很难理解。不幸的是,在那里用pdb戳一下并没有多大帮助。@乔:查看Django 1.3.0中该文件的源代码,类BlockTranslateNode
在第98行有一个方法.render()
。有两个调用--translation.ungettext()
在第110行和translation.ugettext()
在第113行--这就是我要开始研究的地方。如果您根本没有到达那里,或者如果参数错误,那么问题就出在那里的上游(在执行的早期),否则就是下游。祝你好运,别担心,我修好了。头桌时刻。谢谢你的帮助。