Измените название месяца с другого языка на английский в Smarty



Как изменить название месяца с текущего языка (польский PL) на английский в Smarty?



У меня есть это



 {$product->specificPrice.to|date_format:'%d %B %Y %H:%M:%S'}


Что дает мне



 17 maj 2015 00:00:00


"maj" в польском языке означает May, и я хочу иметь эту разметку:



 17 May 2015 00:00:00
620   1  

1 ответ:

Вы можете установить локаль для форматов даты и времени в вашем php коде:

    setlocale(LC_TIME, en_US.utf8);

Если вы хотите выводить даты на английском языке только в нескольких местах в ваших шаблонах и сохранить локаль времени/даты польской, вы должны написать пользовательский модификатор Smarty и использовать его для вывода дат в вашем пользовательском формате.

Не лучший, но простой способ-повторно использовать date_format smarty's в вашем пользовательском модификаторе, как показано в следующем примере (Учитывая Smarty 3):

    class Smarty_Extended extends Smarty
    {
        private $_locale;

        public function __construct($defaultLocale)
        {
            parent::__construct();

            $this->_locale = $defaultLocale;
            $this->loadPlugin('smarty_modifier_date_format');
            $this->registerPlugin('modifier', 'date_format_eng', [$this, 'smarty_modifier_date_format_eng']);
        }

        public function smarty_modifier_date_format_eng($string, $format = null, $default_date = '', $formatter = 'auto')
        {
            setlocale(LC_TIME, 'en_US.utf8');
            $date = smarty_modifier_date_format($string, $format, $default_date, $formatter);
            setlocale(LC_TIME, $this->_locale);
            return $date;
        }
    }

Теперь вы можете использовать date_format_eng в ваш шаблон:

{$time|date_format_eng}
May 22, 2015

Comments

    Ничего не найдено.