Это легко получить текущий язык (например, еп) в любом месте приложения Джанго: django.utils.translation.get_lanaguage()Получение текущей локали в Джанго
Но как я могу получить текущую локаль (например, en_US или en_GB)?
Это легко получить текущий язык (например, еп) в любом месте приложения Джанго: django.utils.translation.get_lanaguage()Получение текущей локали в Джанго
Но как я могу получить текущую локаль (например, en_US или en_GB)?
Вы попробовали to_locale()
?
from django.utils.translation import to_locale, get_language
to_locale(get_language())
Различие между language
и locale
(в Django, по крайней мере) это просто вопрос форматирования. Оба en
и en-us
являются языками, и если en-us
является выбранным в данный момент языком, который будет возвращен get_language()
.
Итак, ваша проблема заключается в том, что Django не устанавливает текущий язык так, как вы ожидаете. Существует long list техник, которые Django использует, чтобы попытаться выяснить язык, который нужно использовать, поэтому я предлагаю вам работать, чтобы понять, почему язык не тот, который вы ожидаете.
Например:
Если базовый язык доступен, но Подъязык Указано нет, Django использует базовый язык. Например, если пользователь указывает
de-at
(австрийский немецкий), но Django имеет толькоde
, Django используетde
.
to_locale (get_language()) по-прежнему выводит только «en», если язык «en». – user3834658
Документы для to_locale говорят: включает имя языка (en-us) в имя локали (en_US). Если «to_lower» имеет значение True, последний компонент имеет нижний регистр (en_us) ... Поэтому он ожидает имя языка, которое является языком + страна. Моя проблема заключается в том, что языковой стандарт содержит как язык, так и страну, поэтому не может быть извлечен из языка. – user3834658
https://docs.djangoproject.com/en/1.7/topics/i18n/ – user3834658