Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

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.