2

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

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

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

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

LANGUAGE_CODE = 'en-us'

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

中间件设置正确,语言环境路径也是如此!当我测试网站时,我会清除所有 cookie 和缓存。我尝试提供两种翻译(德语和英语,即使它已经用英语编写),但效果仍然相同。

谢谢你的帮助。

4

1 回答 1

0

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

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

然后 Django 将按该顺序查找用户的语言偏好:

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

def someview (request):
    ...
    request.session['django_language'] = 'en'
    ...
于 2012-04-25T09:25:25.607 回答