diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/Format.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/Format.php index 372f74d3f..e254ecc60 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/Format.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/Format.php @@ -50,6 +50,7 @@ class Format extends AbstractSmartyPlugin * * ex : * {format_date date=$dateTimeObject format="Y-m-d H:i:s"} will output the format with specific format + * {format_date date=$dateTimeObject format="%e %B %Y" locale="fr_FR"} will output the format with specific format (see strftime() function) * {format_date date=$dateTimeObject output="date"} will output the date using the default date system format * {format_date date=$dateTimeObject} will output with the default datetime system format * @@ -86,7 +87,25 @@ class Format extends AbstractSmartyPlugin $format = DateTimeFormat::getInstance($this->request)->getFormat($this->getParam($params, "output", null)); } - return $date->format($format); + $locale = $this->getParam($params,'locale', false); + + if($locale === false) { + return $date->format($format); + } else { + if(function_exists('setlocale')) { + // Save the current locale + $system_locale = setlocale('LC_TIME', 0); + setlocale('LC_TIME', $locale); + $localized_date = strftime($format, $date->getTimestamp()); + // Restore the locale + setlocale('LC_TIME', $system_locale); + + return $localized_date; + } else { + // setlocale() function not available => error + throw new SmartyPluginException("The setlocale() function is not available on your system."); + } + } } /** @@ -171,4 +190,4 @@ class Format extends AbstractSmartyPlugin new SmartyPluginDescriptor("function", "format_money", $this, "formatMoney") ); } -} +} \ No newline at end of file