在 Smarty 中将月份名称从其他语言更改为英语
Change month name from other language to english in Smarty
如何在 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
您可能希望在 php 代码中为 time/date 格式设置语言环境:
setlocale(LC_TIME, en_US.utf8);
如果您只想在模板中的少数地方输出英文日期并保持 time/date 语言环境波兰语,您应该编写自定义 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
如何在 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
您可能希望在 php 代码中为 time/date 格式设置语言环境:
setlocale(LC_TIME, en_US.utf8);
如果您只想在模板中的少数地方输出英文日期并保持 time/date 语言环境波兰语,您应该编写自定义 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