Python django翻译不适合我

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')),

我不能强迫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')),
)

>>> 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。