如何在Smarty中将月份名称从当前语言环境(波兰语PL)更改为英语?
我有这个
{$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
答案 0 :(得分:0)
您可能需要在php代码中设置时间/日期格式的区域设置:
setlocale(LC_TIME, en_US.utf8);
如果您只想在模板中的少数几个地方输出英文日期并保持您的时间/日期区域设置波兰语,您应该编写自定义Smarty修改器并使用它以您的自定义格式输出日期。
不是最好但简单的方法是在自定义修改器中重复使用smarty的date_format,如下面的示例节目(考虑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