Django';让我们了解当前的语言奇怪的行为

Django';让我们了解当前的语言奇怪的行为,django,django-i18n,Django,Django I18n,我想根据my settings.py中定义的语言,将html标记中的lang属性设置为当前语言环境的语言。我不使用localemidware,用户不能选择语言 (我对同一页面有不同的域。如果有人想用不同的语言查看网站,用户必须转到不同的网站) 设置.py LANGUAGE_CODE = 'pl-PL' USE_I18N = True USE_L10N = True LANGUAGES = [ ('en', 'English'), ('de', 'German

我想根据my settings.py中定义的语言,将html标记中的lang属性设置为当前语言环境的语言。我不使用localemidware,用户不能选择语言

(我对同一页面有不同的域。如果有人想用不同的语言查看网站,用户必须转到不同的网站)

设置.py

LANGUAGE_CODE = 'pl-PL'
USE_I18N      = True
USE_L10N      = True

LANGUAGES = [
    ('en', 'English'),
    ('de', 'German'),
    ('pl', 'Polish'),
    ('ru', 'Russian'),
    ('uk', 'Ukrainian'),
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'pipeline.middleware.MinifyHTMLMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
]
Django版本

Django==2.0.9

模板

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
{% get_language_info for LANGUAGE_CODE as lang %}

<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}">
{%loadi18n%}
{%get_当前语言为语言代码%}
{%get_language_Information for language_CODE as lang%}
输出

如果我刷新页面而不进行交互,有时会得到:

  • pl
  • 损益
  • 损益

为什么会发生这种情况?

您可以尝试使用
{{{lang.code}}
仅获取
pl
部分(这取决于语言)


在这种情况下,Django从Accept languageHTTP头中获取用户语言首选项,该头通常包含多个具有优先级的语言代码

它可能包含一种基本语言的多个语言代码,具体取决于您的系统区域设置、浏览器设置等;i、 e.pl,pl,pl;q=0.7其中q为优先级


Django解析头并根据优先级对语言代码进行排序。由于几个代码的优先级是相同的-它们将以不同的顺序出现在每个请求的结果中,并且将使用第一个代码。

Ahh好的,所以在我的情况下,我根本不应该使用它。我编写了自己的context\u过程,它只是直接从设置中添加语言代码。