Python django翻译不适合我
我不能强迫django翻译字符串,从请求中选择的语言是正确的,但我没有翻译的字符串 这可能是个问题:当我运行shell时,返回的Python django翻译不适合我,python,django,translation,django-i18n,Python,Django,Translation,Django I18n,我不能强迫django翻译字符串,从请求中选择的语言是正确的,但我没有翻译的字符串 这可能是个问题:当我运行shell时,返回的language\u code与我在settings.py中的代码不相等 gettext = lambda s: s USE_I18N = True USE_L10N = True LANGUAGE_CODE = 'en' LANGUAGES = ( ('cs', gettext('Czech')), ('en', gettext('English')),
language\u 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}
我有以下内容(周简称翻译):
在我看来,当我得到正确的“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) 翻译可能在.po
文件中,但是.mo
文件中缺少翻译。尝试通过运行
./manage.py compilemessages
翻译可能在.po
文件中,但在.mo
文件中缺失。尝试通过运行
./manage.py compilemessages
我整晚都在追踪密码,发现了一些线索。主要在trans_real.py和gettext.py中。您可以在“translation”函数中设置断点
当应用程序启动时,翻译代码只执行一次。因此,您需要重新加载uwsgi以加载新版本
采购订单文件从未使用过。gettext.py仅使用“mo”文件(在我的笔记本电脑中)。因此,您必须在更改后编译消息
语言代码中的“-”将在语言环境路径中转换为“\u1”。例如,“zh CN”将转换为“zh_CN”。这就是找不到翻译文件的原因。我认为如果只使用两个字符作为语言代码会更好。Linux系统中应考虑区分大小写
我整晚都在追踪密码,发现了一些线索。主要在trans_real.py和gettext.py中。您可以在“translation”函数中设置断点
当应用程序启动时,翻译代码只执行一次。因此,您需要重新加载uwsgi以加载新版本
采购订单文件从未使用过。gettext.py仅使用“mo”文件(在我的笔记本电脑中)。因此,您必须在更改后编译消息
语言代码中的“-”将在语言环境路径中转换为“\u1”。例如,“zh CN”将转换为“zh_CN”。这就是找不到翻译文件的原因。我认为如果只使用两个字符作为语言代码会更好。Linux系统中应考虑区分大小写
Django使用会话变量来检测用户语言,因此这可能是您无法在shell中获得正确语言的原因。您是否已激活i18n中间件并配置语言环境路径?一段时间前,我在Django使用会话变量来检测用户语言,所以这可能是您在shell中没有获得正确语言的原因。您是否激活了i18n中间件并配置了区域设置路径?前一段时间我还在苦苦思索,请记下为什么它应该解决这个问题。把你的答案扩大一点。给我们一些证明,这确实是这个问题的答案。请记下为什么它应该解决这个问题。稍微扩展一下你的答案。给我们一些证明,这确实是这个问题的答案。语言到语言环境的映射是用这个函数完成的,例如zh-hans将是zh_-hans。语言到语言环境的映射是用这个函数完成的,例如zh-hans将是zh_-hans。