#1 Le 17/12/2018, à 22:31
- Eratox
setlocale
Bonjour,
J'utilise pour mon site plusieurs langue FR, DE, RU.
Je souhaite ajouter ES.
Donc, j'ai ajouté la langue dans mon systeme via : locale-gen, dpkg-reconfigure locales, locale -a.
ES_es.* sont dans la liste de mes languages.
de_DE.ISO-8859-1... done de_DE.UTF-8... done de_DE.ISO-8859-15@euro... done en_AG.UTF-8... done en_AU.UTF-8... done en_BW.UTF-8... done en_CA.UTF-8... done en_DK.UTF-8... done en_GB.ISO-8859-1... done en_GB.ISO-8859-15... done en_GB.UTF-8... done en_HK.UTF-8... done en_IE.UTF-8... done en_IN.UTF-8... done en_NG.UTF-8... done en_NZ.UTF-8... done en_PH.UTF-8... done en_SG.UTF-8... done en_US.UTF-8... done en_ZA.UTF-8... done en_ZM.UTF-8... done en_ZW.UTF-8... done es_AR.UTF-8... done es_BO.UTF-8... done es_CL.UTF-8... done es_CO.UTF-8... done es_CR.UTF-8... done es_CU.UTF-8... done es_DO.UTF-8... done es_EC.UTF-8... done es_ES.ISO-8859-1... done es_ES.UTF-8... done es_ES.ISO-8859-15@euro... done es_GT.UTF-8... done es_HN.UTF-8... done es_MX.UTF-8... done es_NI.UTF-8... done es_PA.UTF-8... done es_PE.UTF-8... done es_PR.UTF-8... done es_PY.UTF-8... done es_SV.UTF-8... done es_US.UTF-8... done es_UY.UTF-8... done es_VE.UTF-8... done fr_FR.ISO-8859-1... done fr_FR.UTF-8... done fr_FR.ISO-8859-15@euro... done ru_RU.ISO-8859-5... done ru_RU.UTF-8... done
Mais avec php : setlocale(LC_TIME, 'es', 'es_ES', 'es_ES.ISO8859-1'); et d'autres combinaisons ne fonctionne pas.
Sur windows en locale EasyPHP setlocale() -> fonction.
Donc j'imagine que le problème est coté serveur (Ubuntu 16.04).
Comment testé ES_es sur linux en ligne de commande pour etre sur que linux prend en compte?
Quels paramètres pour setlocale sur PHP?
Merci.
Hors ligne
#2 Le 18/12/2018, à 09:17
- bruno
Re : setlocale
Bonjour,
Je ne vois pas la nécessité de trifouiller les locales du système pour faire fonctionner un site web multilingue.
Commence par vérifier si le paquet php-intl est installé.
Et plutôt que de nous dire que cela ne fonctionne pas, il vaudrait mieux nous indiquer ce que retourne la fonction php setlocale()
#3 Le 18/12/2018, à 16:15
- Eratox
Re : setlocale
Bonjour,
J'utilise setlocale pour afficher les dates dans la langue sélectionnée. //strftime('%A %d %B', strtotime($value))
setlocale(LC_TIME, 'es', 'es_ES', 'es_ES.ISO8859-1'); // me retour FALSE
Selon la doc :
Retourne la nouvelle configuration locale, ou FALSE si la localisation n'est pas implémentée sur votre plate-forme, si la variable de localisation n'existe pas, ou si la catégorie spécifiée n'est pas valide.
Donc c'est bien la config du serveur, qui ne semble pas opérante.
Au vu de ma liste de locale (voir ci-dessus), on retrouve ES_es, donc je ne vois pas ce qu'il me manque.
Merci.
Hors ligne
#4 Le 18/12/2018, à 16:27
- bruno
Re : setlocale
Ok je comprend mieux.
Je t'ai demandé si le paquet php-intl était bien installé.(a priori pas indispensable).
Regarde la liste de « locales » disponibles et ce que tu passes en argument à ta fonction setlocale et essaie de te limiter à UTF-8;
Un petit test d'après la doc PHPde strftime :
<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "es_ES.UTF-8");
echo strftime(" in Spanish is %A,");
setlocale(LC_TIME, "fr_FR.UTF-8");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE.UTF-8");
echo strftime(" in German %A.\n");
?>
EDIT : un redémarrage du serveur est peut-être nécessaire pour qu les nouvelles langues soient prisent en compte.
Dernière modification par bruno (Le 18/12/2018, à 16:47)
#5 Le 19/12/2018, à 01:19
- Eratox
Re : setlocale
le retour de ton code :
Wednesday in Spanish is Wednesday, in French mercredi and in German Mittwoch.
J'avais pensé à un reboot mais Linux, je me suis NoN.
Mais enfaîte oui, après reboot:
Wednesday in Spanish is miércoles, in French mercredi and in German Mittwoch.
Merci pour ton aide
Dernière modification par Eratox (Le 19/12/2018, à 01:19)
Hors ligne
#6 Le 19/12/2018, à 07:09
- bruno
Re : setlocale
Je ne connais pas d'autre moyen qu'un redémarrage pour que les nouvelles « locales » soit prises en compte sur l'ensemble du système.