Django:错误的语言偏好

时间:2012-04-25 09:15:34

标签: django internationalization

我使用Django以两种语言创建一个Web项目:英语和德语。 该文档的默认语言是英语,我自己用德语翻译它并创建了一个.po文件。

我的想法是,如果有人说德语并且浏览器的语言环境设置为“de”,Django应该切换到德语(我提供的翻译)。但在其他所有情况下,都应该改用英语。

问题是它完全相反,我不知道为什么!

现状:如果浏览器的语言环境设置为英语,则网站将以英语显示。但在任何其他情况下,它都以德语显示。

LANGUAGE_CODE = 'en-us'

_ = lambda s: s
LANGUAGES = (
      ('en', _('English')),
      ('de', _('German')),
)

正确设置中间件,区域设置路径也是如此! 当我测试网站时,我清除了所有的cookie和缓存。 我试图提供两种翻译(germand和英语,即使它已经用英文写成),但仍然有相同的效果。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您希望用户能够指定语言,请确保已启用LocaleMiddleware:

MIDDLEWARE_CLASSES = (
   ...
   'django.middleware.locale.LocaleMiddleware',
   ...
)

然后Django将按顺序查找用户的语言首选项:

因此,在Django会话中显式设置语言最直接的方法是重写request.session ['django_language']:

def someview (request):
    ...
    request.session['django_language'] = 'en'
    ...