【发布时间】:2014-02-01 00:38:34
【问题描述】:
我不能强制 django 翻译字符串,从请求中选择的语言是正确的,但我没有翻译字符串。
这里可能有问题:当我运行 shell 时,返回的 language_code 与 settings.py 中的不相等
gettext = lambda s: s
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = 'en'
LANGUAGES = (
('cs', gettext('Czech')),
('en', gettext('English')),
)
>>> from django.utils import translation
>>>
>>> translation.get_language()
'en-us'
>>> from django.conf import settings
>>> settings.LANGUAGE_CODE
'en'
我的消息文件在locale/cs/LC_MESSAGES/django.{mo,po}
我有这个内容(翻译的周短名称缩写):
msgid "Mo Tu We Th Fr Sa Su"
msgstr "Po Út St Čt Pá So Ne"
在视图中,当我得到正确的值'cs'时
print get_language()
'cs'
下一行是ugettext
ugettext('Mo Tu We Th Fr Sa Su')
'Mo Tu We Th Fr Sa Su'
但我期待
'Po Út St Čt Pá So Ne'
谁能告诉我哪里有问题? :o)
【问题讨论】:
-
Django 使用会话变量来检测用户语言,所以这可能是您在 shell 中没有获得正确语言的原因。
-
您是否激活了 i18n 中间件并配置了语言环境路径?前段时间我在stackoverflow.com/questions/20467626/…
标签: python django translation django-i18n