Yii: Отображаем даты по-русски или локализация формата даты в Yii

Нет картинки Переводим даты на русский язык, меняет формат дат на языке, установленном в локализации приложения. В Yii присутствуют файлы локализация на разные языки, всё что нам нужно, это попросить Yii отображать даты по-русски.

Вся магия в строке:

<?php echo Yii::app()->dateFormatter->format('d MMMM yyyy', $data->create_time);?>

Причём у нас заработало это, если исходная дата в формате Datetime, и timestamp. Почему?

Потому что метод format() форматирует дату согласно первому параметру - 'd MMMM yyyy' (паттерну), а второй параметр может передаваться в обоих форматах (см. http://yiiki.info/class:cdateformatter)

  • unix timestamp (например 1288987169)
  • Mysql DATETIME

В config/main.php должен быть установлен язык

'sourceLanguage'=>'en_US',
  'language'=>'ru',
  'charset'=>'utf-8',

Также будет неприятная ошибка, если в конфиге прописана строка:

'dateFormatter'=>array('class'=>'CDateFormatter', 'params'=>array('ru')

Ошибка:

Missing argument 1 for CDateFormatter::__construct(), called in /Users/macbook/Sites/YiiRoot/framework/YiiBase.php on line 219 and defined 

Так нельзя.

Ответ Qiang'а на офф. форуме:

"CDateFormatter is not an application component. So you can't declare it in 'components' in main.php.
Without declaring it in main.php, you can directly use Yii::app()->dateFormatter because of the existence of CApplication::getDateFormatter().
The date formatter returned uses the locale as specified by Yii::app()->language.
If you want to use the date formatter for a different locale, you can use Yii::app()->getLocale('fr')->dateFormatter"




Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (2)     Подпишитесь на RSS комментариев к этой статье.

2 комментариев

#282
BS говорит:
February 12, 2012 at 03:29 pm

можно ещё 

//Time Zone
date_default_timezone_set("Europe/Moscow");

в main.php добавить.

#283
Саша Loco говорит:
February 13, 2012 at 02:40 am
Это из PHP функция. Значит Yii поймёт временную зону и применит язык этой зоны, так?