FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Recherche rapide

Affichage des dates À la Française

Pour pouvoir afficher les dates à la française, il faut, avant tout, être sûr que votre serveur PHP supporte les locales, si vous ne savez pas renseignez-vous auprès de l'administrateur ou de l'hébergeur. Il est possible de connaître quelle est la valeur de la locale utilisée en exécutant, sur le serveur, le petit script suivant qui doit afficher la valeur de ladite locale :

<?php
echo "<p>L'identifiant du Français sur ce système est : ".setlocale(LC_ALL,'fr_FR','french','French_France.1252','fr_FR.ISO8859-1','fra')."</p>n";
?>

Afficher les dates avec, éventuellement les noms des mois et des jours, en français dans FluxBB 1.4 peut être effectué, presque de la même manière que cela était fait avec FluxBB 1.2

Pour ce faire, il faut remplacer - à bon escient :

par

  • La fonction strftime() qui retourne une date et/ou une heure suivant la localisation locale. Les noms des mois, des jours de la semaine respecteront la localisation courante définie par la fonction setlocale(). (Documentation : http://fr2.php.net/manual/fr/function.strftime.php).

Néanmoins, pour que les comparaisons de date puissent générer Hier et Aujourd'hui avec certitude tout en prenant en compte fuseau horaire de l'utilisateur et horaire d'été éventuel, nous serons obligé de conserver gmdate() pour ces comparaisons.

Tout d'abord, il faut remplacer les formats possibles de gmdate() par ceux que les utilisateurs pourront choisir pour strftime(), sans oublier de garder une possibilité d'afficher sans noms des mois et des jours et en format US.

Dans le fichier include/common.php, ligne 137, remplacer

$forum_date_formats = array($pun_config['o_date_format'], 'Y-m-d', 'Y-d-m', 'd-m-Y', 'm-d-Y', 'M j Y', 'jS M Y');

par

$forum_date_formats = array($pun_config['o_date_format'], '%d %b %Y', '%A %d %B %Y', '%a %d %B %Y', '%a %d %b %Y', ' %d-%m-%Y', '%Y-%m-%d');

On va maintenant remplacer les fonctions gmdate() par strftime(). dans le fichier include/functions.php, trouvez les lignes 936 à 946 :

	$date = gmdate($date_format, $timestamp);
	$today = gmdate($date_format, $now+$diff);
	$yesterday = gmdate($date_format, $now+$diff-86400);

	if(!$no_text)
	{
		if ($date == $today)
			$date = $lang_common['Today'];
		else if ($date == $yesterday)
			$date = $lang_common['Yesterday'];
	}

à remplacer par (*):

  //[modif oto] Affichage date avec noms des mois et jours suivant locale
        $date_comp = gmdate('d-m-Y', $timestamp);
	$today = gmdate('d-m-Y', $now+$diff);
	$yesterday = gmdate('d-m-Y', $now+$diff-86400);
        setlocale(LC_TIME,'fr_FR','french','French_France.1252','fr_FR.ISO8859-1','fra');
	$date =  iconv('ISO-8859-1', 'UTF-8',strftime($date_format, $timestamp));
	
        if(!$no_text)
	{
		if ($date_comp == $today)
			$date = $lang_common['Today'];
		else if ($date_comp == $yesterday)
			$date = $lang_common['Yesterday'];
	}

Il faut maintenant définir le format par défaut dans Administration, Options, Format de la date. Dans la zone de saisie mettre un des formats définis dans common.php, comme : %d %B %Y et, pour que l'affichage corresponde au format, il faut modifier admin_options.php. Trouvez ligne 360

<span><?php printf($lang_admin_options['Date format help'], gmdate($pun_config['o_date_format'], $timestamp), '<a href="http://www.php.net/manual/en/function.date.php">'.$lang_admin_options['PHP manual'].'</a>') ?></span>

et remplacer gmdate par strftime :

<span><?php printf($lang_admin_options['Date format help'], iconv('ISO-8859-1', 'UTF-8',strftime($pun_config['o_date_format'], $timestamp)), '<a href="http://www.php.net/manual/en/function.strftime.php.php">'.$lang_admin_options['PHP manual'].'</a>') ?></span>

(*) Nota 1 : Les valeurs setlocale() sont fonction de la localisation souhaîtée et également du serveur sur lequel tourne le forum. Dans le cas ci-dessus, la plupart des serveurs Linux ou Windows sont couverts, mais il se peut que vous soyez obligé d'ajouter ou de modifier une des valeurs locales.

Nota 2 : Il est préférable de (re)définir setlocale() à chaque besoin. En effet, l'information locale est maintenue par processus, non par thread. Si vous faites fonctionner PHP sur un serveur multi-threadé comme IIS ou Apache sur Windows, vous pourriez obtenir des changements soudains des configurations locales pendant qu'un script fonctionne, même si celui-ci n'appelle jamais la fonction setlocale(). Ceci survient à cause des autres scripts qui fonctionnent dans des threads différents du même processus. Ces scripts changent les configurations locales dans le processus au complet en utilisant la fonction setlocale().

Remarque : Les numéros des lignes des fichiers à modifier sont donnés pour la version FluxBB 1.4.2. Ces numéros peuvent varier en fonction des modifications déjà installées.

Nota : La mod Date Localization, effectue les modifications de manière automatique à l'aide du plugin Mod Installer

 
fluxbb_1_4/astuces/dates_francaises.txt · Dernière modification: 2011/06/06 11:23 par Otomatic