Par défaut, le PHP est généralement en anglais. Par exemple, les dates littérales sont affichées en anglais (« Thursday 7 April 2011 »).
La fonction strftime()
permet d’afficher la date dans une autre langue.
Exemple:
setlocale(LC_TIME, "fr_FR");
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 4, 7, 2011));
Si la langue française (fr_FR) a été installée sur votre serveur, l’exemple ci-dessus affichera « jeudi 7 avril 2011 ».
Si ce n’est pas le cas, voici la procédure à suivre pour apprendre la langue française au PHP. La procédure ci-dessous a été testée sur un QNAP TS-419P Turbo NAS mais fonctionne probablement sur n’importe quel serveur Linux.
La procédure provient du site http://wiki.qnap.com/wiki/Country_Locale.
Introduction
Les fichiers de langues se trouvent dans les répertoires suivants:
/mnt/ext/usr/share/i18n/locales : différentes langues
/mnt/ext/usr/share/i18n/charmaps : différents jeux de caractères (utf8, iso-8859-1, …)
Copie des nouvelles langues sur le serveur
Téléchargez tout d’abord le fichier posix-locales
: http://wiki.qnap.com/w/images/7/77/Posix-locales.rar.
Copiez les fichiers ci-dessous dans le répertoire /usr/share/i18n/locales
:
translit_cjk_variants
translit_combining
xx_XX (en fonction de la langue ou des langues que vous souhaitez installer)
Copiez les jeux de caractères nécessaires dans le répertoire /usr/share/i18n/charmaps
(ex.: ISO-8859-1.gz
et UTF-8.gz
)
Installation des nouvelles langues
Ouvrez une console et entrez les commandes ci-dessous.
Compiler la nouvelle langue:
localedef -i [locale] -f [character map] [database]
Exemple pour la langue française en UTF-8:
localedef -i fr_FR -f UTF-8 fr_FR.utf8
Vérifiez que la nouvelle langue est bien installée:
locale -a
Redémarrez votre serveur (dans ce cas-ci serveur Apache sur un NAS QNAP):
/etc/init.d/Qthttpd.sh restart
Utilisation de la nouvelles langue
Pour afficher la date dans la langue que vous venez d’installer; dans notre exemple, la langue française en UTF-8 que nous avons nommé fr_FR.utf8
:
setlocale(LC_TIME, "fr_FR.utf8");
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 4, 7, 2011));