J'ai un script qui doit afficher les données de date à un public international - par exemple.
"soumis le mar. 25 août 09"
Existe-t-il un moyen plus simple et plus propre d’obtenir cette conversion en équivalent français (etc.) «Mar 25 aoû 09» que:
Définition d'une constante LANG
et d'un tableau $LANGUAGES
de fichiers d'inclusion et:
if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}
& puis le fichier inclus mappe les jours, les mois et les remplace pour les paramètres régionaux appropriés?
Merci
David
Je pense que vous ne pouvez pas vous en écarter sans définir LOCALE:
<?php
setlocale(LC_ALL, 'fr_FR');
echo strftime("%A %e %B %Y");
?>
Quelques détails sur strftime: http://us2.php.net/manual/en/function.strftime.php
Je pense que la meilleure façon de le faire avec les fonctions strftime
et setlocale
. Mais cela ne fonctionnera pas si aucun serveur local n’est installé sur votre serveur (dans les questions actuelles, il s’agit de fr_FR
).
Le code ci-dessous lève une exception si les changements de paramètres régionaux échouent
<?php
$result = setlocale(LC_ALL, 'fr_FR');
if($result === false){
throw new \RuntimeException(
'Got error changing locale, check if locale is installed on the system'
);
}
$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$dayOfMonth = '%#d';
}
//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y");
Vous voudrez peut-être aussi regarder Zend_Date .