get_language_from_request
Функция get_language_from_request применяется для определения
предпочтительного языка пользователя на основе данных запроса.
Она анализирует заголовок Accept-Language, параметры
запроса, настройки сессии и cookies. Функция возвращает
строку с кодом языка, например, 'ru' или 'en-us'.
Функция принимает объект запроса и возвращает код языка.
Если язык не может быть определён, возвращается значение
по умолчанию из настроек LANGUAGE_CODE.
Синтаксис
from django.utils.translation import get_language_from_request
language = get_language_from_request(request, check_path=False)
Параметры функции:
request - объект HTTP-запроса, который содержит
информацию о заголовках, cookies и параметрах.
check_path - булевый параметр, указывающий,
нужно ли проверять URL-путь на наличие префикса языка
(по умолчанию False).
Пример . С заголовком Accept-Language
Рассмотрим определение языка из заголовка Accept-Language входящего запроса:
from django.utils.translation import get_language_from_request
from django.http import HttpRequest
# Создаём объект запроса с заголовком Accept-Language
request = HttpRequest()
request.META['HTTP_ACCEPT_LANGUAGE'] = 'ru-RU,ru;q=0.9,en;q=0.8'
language = get_language_from_request(request)
print(language)
Результат выполнения кода:
"ru"
Пример . С параметром check_path
Покажем, как функция определяет язык из URL-пути при
включённом параметре check_path:
from django.utils.translation import get_language_from_request
from django.http import HttpRequest
# Запрос с путём, содержащим префикс языка
request = HttpRequest()
request.path = '/en/about/'
language = get_language_from_request(request, check_path=True)
print(language)
Результат выполнения кода:
"en"
Пример . Во view-функции
Используем функцию в контроллере для определения языка пользователя и адаптации контента:
from django.shortcuts import render
from django.utils.translation import get_language_from_request
def article_list(request):
language = get_language_from_request(request)
# Формируем контент в зависимости от языка
context = {
'current_language': language,
'articles': get_articles_by_language(language),
}
return render(request, 'articles/list.html', context)
Смотрите также
-
функция
get_language,
которая возвращает текущий активный язык -
функция
get_language_bidi,
которая определяет, является ли язык двунаправленным -
функция
override,
которая временно переопределяет текущий язык -
функция
activate,
которая активирует указанный язык для текущего потока