Подтвердить что ты не робот

Django: отображение текущего языкового стандарта в шаблоне

Мне нужно встроить текущую локаль в вывод шаблона Django (как часть URL, чтобы быть точным). Я знаю, что я могу получить доступ к текущему языку как {{ LANGUAGE_CODE }}, если я { load i18n }, но есть ли аналогичный способ доступа к текущему языку?

Я полагаю, что я мог бы использовать to_locale() в логике представления и помещать его в контекст для шаблона, но я ищу нечто более общее, которое может быть частью самой структуры Django. Есть ли такой синтаксис?

4b9b3361

Ответ 1

Я решил это, включив код в шаблон

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}

и переменная LANGUAGE_CODE имеет нужное значение (см. также django docs для примера использования).

Ответ 2

Вы можете захотеть написать свой собственный процессор контекста, который вызовет to_locale и автоматически заполнит контекст результатом - он будет просто быть чем-то вроде этого.

from django.utils.translation import to_locale, get_language
def locale(request):
    return {'LOCALE': to_locale(get_language())}

Ответ 3

Я думал о реализации собственного настраиваемого тега шаблона, который просто выводит to_locale(get_language()), но ответ выше проще реализовать, поэтому мне это нравится лучше.