Измените название месяца с другого языка на английский в 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
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