Merge pull request #471 from nicolasleon/master

Date formating should be able to cope with locale time format
This commit is contained in:
Manuel Raynaud
2014-06-15 19:47:22 +02:00

View File

@@ -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")
);
}
}
}