Afficher les dates en français
Nous allons définir la configuration locale grâce à la fonction PHP setlocale(), et ce en fonction de l’environnement : développement ou production.
1. Définition de la configuration locale
La fonction PHP setlocale() permet de modifier les informations de localisation de notre application. Elle prend en paramètre la catégorie de fonctions affectée, et le nom de la locale.
Plus d’information sur la fonction setlocale() sur le site officiel PHP
Le nom de la locale dépend du système d’exploitation, c’est pourquoi nous allons faire une double configuration automatique selon l’environnement du site. Nous allons définir la configuration locale dans le fichier {app}/config/bootstrap.php, et faire un test sur l’adresse IP à l’origine de la requête comme expliqué dans un autre sujet.
1 2 3 4 5 6 7 8 9 10 11 12 13 | // {app}/config/bootstrap.php if(env('REMOTE_ADDR') == '127.0.0.1') { // Local (Windows dans notre cas) $locale = 'french'; } else { // En ligne $locale = 'fr_FR'; } // Définition de la locale pour toutes les fonctions php relatives à la de gestion du temps : setlocale(LC_TIME, $locale); |
2. Affichage d’une date
Voyons l’effet de notre configuration : imaginons un blog avec des articles dont nous voulons afficher la date de création. Dans la Vue de l’action view :
1 2 3 4 5 6 7 8 | // {app}/views/articles/view.ctp // Le titre de l'article : e($article['Article']['titre'].'<br />'); // Date de création : $timestamp = strtotime($article['Article']['created']); e("Créé le ".strftime("%d %B %Y à %H:%M", $timestamp)); |
Notre vue affiche bien :
Mon premier article
Créé le 12 février 2008 à 19h51
3. Les champs date dans un formulaire
Autre effet de notre configuration : lorsque nous créons un formulaire avec un champ date (sous forme de 3 listes déroulantes pour le jour, le mois et l’année), nous aimerions que les mois de l’année soient affichés en français et que les champs soient présentés dans l’ordre “jour - mois - année” et non pas “mois - jour - année” comme en anglais.
Dans la Vue de l’action edit :
1 2 3 4 | // {app}/views/articles/edit.ctp e($form->create('Article', array('action' => 'edit'))); e($form->input('created', array('dateFormat' => 'DMY', 'label' => 'Date de création'))); e($form->end('Valider')); |
Nous avons précisé l’ordre dans lequel nous souhaitions voir apparaître les 3 listes déroulantes grâce à l’option dateFormat, et grâce à notre définition de la locale, la liste déroulante du milieu, celle des mois de l’année, montre bien les mois en français.
Pierre-Emmanuel Fringant
Bonjour,
Merci pour ce tutoriel mais comment mettre en francais la fonction du helper time : timeAgoInWords ?
Merci
13 février 2008 à 9:18
Auteur : David