【发布时间】:2020-10-19 00:45:45
【问题描述】:
我正在尝试为我的一个小 Django 项目修复翻译。取消 Django 2.2.12。
当前状态是,我可以通过将 LANGUAGE_CODE 设置为不同的值来切换翻译。但我想通过浏览器的接受语言来切换翻译 - 这似乎不起作用。我的怀疑是,由于某种原因,中间件配置不正确。
这是我为中间件设置的:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
还有语言:
LANGUAGES = (
('de', 'German'),
('tr', 'Turkish'),
('en', 'English'),
('it', 'Italian'),
('fr', 'French'),
)
从文档中我得出结论,如果 LANGUAGE_CODE 的设置改变了翻译——就像我的情况一样——那么确定正确翻译的所有其他方法都失败了(包括 cookie)。因为 LANGUAGE_CODE 是在最后一步计算的。
我想知道如何检查中间件是否正确 - 以及为什么它似乎忽略了接受语言。对此的任何提示都非常感谢!
【问题讨论】:
-
它可以工作,但是如果设置了 cookie,那么这会覆盖
Accept-languages的值。 -
Django 尝试通过多种方式确定要使用的语言docs.djangoproject.com/en/3.0/topics/i18n/translation/…。您是否已将语言添加到
settings.LANGUAGES? -
已编辑我的问题以纳入 cmets - 感谢您的评论!
标签: django