在我的Django 2.0站点中,我想lang将html标记的属性设置为当前语言环境的语言.在我base.html扩展的其他模板中,我使用get_current_language以下方式
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}">
...
</html>
Run Code Online (Sandbox Code Playgroud)
该网站提供多种语言的翻译.如果我在浏览器中切换语言,我会看到正确的翻译,但该lang属性将始终包含en.
在我的settings.py我
USE_I18N = True
LANGUAGE_CODE = 'en-us'
Run Code Online (Sandbox Code Playgroud)
并根据Goran的建议提供以下中间件订单
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
Run Code Online (Sandbox Code Playgroud)
该LANGUAGES设置未设置.
正如Kostadin Slavov所建议的那样,我尝试从视图中打印语言.似乎get_current_language调用了django.utils.translation.get_language,所以我在我的视图中插入了以下内容
from django.utils import translation
print(translation.get_language())
Run Code Online (Sandbox Code Playgroud)
它打印正确的值(例如de,在浏览器设置为德语的情况下访问视图时).
我还缺少什么?
如果只是没有设置,我想通过nginx添加标题(缓存控制).
在某些情况下我需要增加缓存时间(使用php),并且通过标题"说"nginx.
对不起,如果不清楚,我真是个新手)