Дата в формате django в предоставленной пользователем локали
Я пытаюсь настроить форматирование дат в шаблонах на основе локали, предоставленной пользователем. Поскольку остальная часть страницы останется в исходном локальном ('en'), я хочу, чтобы только данные, предоставленные моими пользователями, были отформатированы.
например, даты.
пользователи в Великобритании должны иметь возможность использовать l10n
на датах на их страницах, но я не хочу, чтобы весь сайт был en_GB
,
Есть ли способ установить локаль в шаблоне в блоке, например. что-то вроде
{% locale|'en_GB' %}
{{ my_date|localize }}
{% endlocale %}
1 ответ
Вам не нужно делать ничего явного в шаблоне.
Внутри вашего settings.py
определить FORMAT_MODULE_PATH
установка. Подобно:
FORMAT_MODULE_PATH = 'myproject.myapp.formats'
под formats
каталог создает один пакет Python для каждого поддерживаемого языка (кроме вашего по умолчанию) вашего проекта. Внутри каждого из них вы должны иметь formats.py
который должен иметь какие-либо локализованные параметры форматирования.
В моем случае язык по умолчанию для моего проекта en
но я тоже поддерживаю el
(Греческий). Так что у меня есть это в моем settings.py
:
FORMAT_MODULE_PATH = 'myproject.websiteapp.formats'
Внутри myproject/websiteapp/formats
каталог у меня есть el
пакет с formats.py
файл, как:
el/
__init__.py
formats.py
Внутри formats.py
У меня есть это:
DATETIME_FORMAT="l j M Y, g:i a"
который является греческим конкретным представлением даты.
Поэтому, когда я использую поле datetime внутри моих шаблонов:
{{ mymodel.pub_date }}
Он печатает по умолчанию en
представление, когда языковой стандарт установлен по умолчанию:
Published on: Feb. 22, 2013, 1:47 p.m.
и мой пользовательский греческий, когда локаль установлена el
,
Δημοσιεύτηκε: Τετάρτη 6 Φεβ 2013, 5:39 μμ.
Больше информации здесь
редактировать
Хм, я только что понял, что вы просили конкретные блоки шаблона или значения. Может быть, фильтр шаблона локализации или тег шаблона локализации больше подходят для вашего конкретного случая?