Symfony2 → Twig, интернационализация даты
Иногда возникает потребность выводить дату в таком формате, когда месяц написан текстом, но при этом сайт многоязычный. Месяц, естественно, тоже должен соответствовать выбранной локали. Вот тут и возникает загвоздка, поскольку php-шная функция date выведет месяца на английском. Какой-нибудь крутокодер Вова Теплов создал бы массивчик с переведёнными месяцами и прошёлся бы простой заменой, поскольку некогда разбираться, надо делать тикеты. Но это не наш путь. Языков на сайте может оказаться пять штук, один из которых, допустим, арабский/корейский. Да и сами языки могут добавляться на сайт в будущем.
В общем, задача эта типовая и не надо ничего придумывать. Решение имеется уже готовое → IntlDateFormatter. Но решать эту задачу я буду в контексте Symfony 2.
Минута поиска в вендорских файлах и необходимое расширение twig-а обнаружено. Осталось его только подключить. Как это сделать через основной файл конфигурации, и можно ли это сделать вообще - этого мне найти не удалось. Подключим его так, будто это расширение самодельное:
# Hypersoft/UltraBundle/Resources/config/services.yml services: twig_intl_extension: class: Twig_Extensions_Extension_Intl tags: twig.extension: name: twig.extension
После чего выводим дату в том виде, что нам надо. Результат выше на картинке.
<div class="date"> {{ item.date|localizeddate('none', 'none', null, null, 'dd. LLLL YYYY') }} </div>
Вот, собственно, и всё.
а то Вова Теплов может не сразу врубиться, что значат LLLL и чем они отличаются от LLL :)
Адрес электронной почты нигде не отображается, необходим только для обратной связи.
Веб-сайт вводите в формате http://example.org, при желании, конечно.