web-dev-qa-db-fra.com

PHP date () en langues étrangères - p.ex. 25 mars 09 août

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

18
David Miller

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

40
Jakub

Selon la page de manuel de la fonction date function, vous devez utiliser setlocale . Des méthodes telles que strftime utiliseront ensuite les paramètres régionaux spécifiés. date, cependant, ne sera pas pour une raison quelconque.

5
Samir Talwar

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"); 
2
Artur Babyuk

Vous voudrez peut-être aussi regarder Zend_Date .

0
André Hoffmann