IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

gettext ne fonctionne pas


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut gettext ne fonctionne pas
    Bonsoir,

    Je me permets de venir vous déranger car j'ai un souci.
    Je m'essaie à gettext pour réaliser un petit site multilingues. J'ai décoché dans le php.ini la ligne correspondante, j'ai redémarré mon wampserver et n'ai eu aucune erreur. (Je suis sous windows 7 - 64 bits.)

    Sauf que ça ne fonctionne pas. La traduction ne se fait pas. Alors pendant plusieurs heures, je cherche sur le net où mon code pourrait être faux. J'essaie de nombreux codes mais rien ne marche. Comme mon environnement de prod (ovh donc linux) est déjà prêt, je le pousse et là magie ça fonctionne !! Donc mon code est bon.

    Donc le souci vient de wampserver qui doit être mal configuré mais je n'ai pas d'erreur dans les logs ni au lancement.

    Si vous connaissiez une batterie de tests à effectuer pour vérifier que ça fonctionne, je suis preneur.

    Un grand merci d'avance.

    Serait-ce possible que ce soit à cause du fait que je bosse sur windows ?
    Et que pour mes trad, j'utilise fr_FR et en_US et que je compile mes .po en .mo sur mon ubuntu ?

    Un conflit windows/linux ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 4
    Par défaut
    Bonsoir,

    Je me suis pas mal documenté sur GetText et j'ai pu lire que ça ne fonctionne pas sous WampServer. J'imagine que t'as déjà eu ta réponse depuis. Envoie ça sur un serveur Linux par exemple et ça devrait marcher si tu as aucune erreur dans ton code.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par ericdebra Voir le message
    Bonsoir,

    Je me suis pas mal documenté sur GetText et j'ai pu lire que ça ne fonctionne pas sous WampServer. J'imagine que t'as déjà eu ta réponse depuis. Envoie ça sur un serveur Linux par exemple et ça devrait marcher si tu as aucune erreur dans ton code.
    Ca fonctionne très bien sous wampserver.
    Il y'a juste certaines version de PHP 5.3 (rien à voir avec wampserver) où gettext est buggé sous windows.

    Si tu veux gettext sous wampserver soit tu passe en php 5.2 sois en php >=5.3.3
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    Salut,

    Merci pour vos réponses.
    En fait non ericdebra je n'ai pas trouvé ma réponse. Personne ne sait que faire et j'ai pourtant essayé plusieurs forums.

    @grunk, j'ai installé la dernière version de wamp hier pour voir si ce n'était pas à cause de ça. J'ai donc PHP 5.3.5.

    J'ai aussi essayé de télécharger un autre php_gettext.dll que celui fourni dans wamp. Le nouveau pèse 20 ko (contre 40) et me génère l'erreur suivante : Call to undefined function bindtextdomain().

    J'ai donc remis l'ancien. J'ai lu aussi parfois qu'il fallait compiler gettext pour php. Qu'est-ce que ça veut dire ? Et comment le faire ? Quelle est cette commande : php --with-gettext et comment l'exécuter ?

    J'suis toujours perdu

    Ah je lis aussi qu'il faut installer les locales... de quoi il s'agit, comment installer des locales sous windows ?

    Merci d'avance

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Sur le tout dernier wampserver (32bit) ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    setlocale(LC_ALL,$langue);
    putenv("LANG=$langue");
    putenv("LC_ALL=$langue");
    $tradFile = 'messages';
    bindtextdomain($tradFile, ROOT_PATH."includes/lang/");
    bind_textdomain_codeset($tradFile,'UTF-8');
    textdomain($tradFile);
    marche très bien chez moi.

    J'ai aussi essayé de télécharger un autre php_gettext.dll que celui fourni dans wamp. Le nouveau pèse 20 ko (contre 40) et me génère l'erreur suivante : Call to undefined function bindtextdomain().
    Pour les extension , si tu veux les remplacer il faut trouver la bonne version et c'est généralement très compliquer selon si ton php à été compiler en Vc6, Vc9 et en thread safe ou Non thread safe.

    J'ai donc remis l'ancien. J'ai lu aussi parfois qu'il fallait compiler gettext pour php. Qu'est-ce que ça veut dire ? Et comment le faire ? Quelle est cette commande : php --with-gettext et comment l'exécuter ?
    Ce sont des paramètres de compilation , dans ton cas quand tu télécharge PHP pour windows ou un wampserver , php est déjà compiler tu n'as donc pas à t'en occuper
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    Bonjour,

    Merci pour ta réponse mais ça ne marche toujours pas.
    J'ai installé rapidement sur mon serveur local au boulot (windows XP) qui est en PHP 5.2.11.

    Ca ne fonctionne pas non plus. Mon code est le suivant, au cas où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    setlocale(LC_ALL, $langueLocale); // On modifie les informations de localisation en fonction de la langue
    putenv('LANG = $langueLocale'); // On modifie la variable d'environnement
    putenv('LC_ALL = $langueLocale');
    $nomDesFichiersDeLangue = 'traductions'; // Le nom de nos fichiers .mo
    bindtextdomain($nomDesFichiersDeLangue, 'locale'); // On indique le chemin vers les fichiers .mo
    bind_textdomain_codeset($nomDesFichiersDeLangue, 'UTF-8');	
    textdomain($nomDesFichiersDeLangue); // Le nom du domaine par défaut
    Encore merci.

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si tu as effectivement des simple quote dans ton c'est normale que cela ne marche pas.

    C'est soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    putenv('LANG = '.$langueLocale);
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    putenv("LANG = $langueLocale");
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ?

    PHP 5.3.6 :
    Fixed bug #53837 (_() crashes on Windows when no LANG or LANGUAGE
    environment variable are set). (Pierre)
    http://bugs.php.net/bug.php?id=53837

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    @grunk > Ca ne change rien

    @stealth35 > T'es mignon mais je sais pas comment installer les langues sur mon windows. J'ai déjà cherché, installer une locale c'est chaud car google trouve tout sauf ça.

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    En pièce jointe un code qui fonctionne sur mon wamp (5.3.5).

    Vérifie de ton coté que tu utilises les bons nom de locales (en_EN pour l'anglais par exemple) que tu redémarre bien apache avant de tester tes scripts car il garde en cache les fichier mo.

    Si ca peut aide la listes des extensions activé sur mon php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Core
    bcmath
    calendar
    com_dotnet
    ctype
    date
    ereg
    filter
    ftp
    hash
    iconv
    json
    mcrypt
    SPL
    odbc
    pcre
    Reflection
    session
    standard
    mysqlnd
    tokenizer
    zip
    zlib
    libxml
    dom
    PDO
    Phar
    SimpleXML
    wddx
    xml
    xmlreader
    xmlwriter
    apache2handler
    fileinfo
    gd
    gettext
    mbstring
    mysql
    mysqli
    pdo_mysql
    PDO_ODBC
    pdo_sqlite
    sockets
    mhash
    xdebug
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Ennicolem Voir le message
    @stealth35 > T'es mignon mais je sais pas comment installer les langues sur mon windows. J'ai déjà cherché, installer une locale c'est chaud car google trouve tout sauf ça.
    oula, t'a rien lu ou quoi ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    oula, t'a rien lu ou quoi ?
    Je pense ne pas avoir compris surtout . Mon anglais est bof (d'une) et de deux, ça part dans tous les sens...
    Surtout ton message me paraissait clair :
    when no LANG or LANGUAGE
    environment variable are set).
    J'ai dû mal interpréter le set.

    Vérifie de ton coté que tu utilises les bons nom de locales (en_EN pour l'anglais par exemple) que tu redémarre bien apache avant de tester tes scripts car il garde en cache les fichier mo.
    J'utilise en_US pour l'anglais... Sinon j'essaierai d'activer les mêmes modules. Je vide bien mon cache à chaque fois.

    J'te tiens au jus.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    @grunk, j'ai testé ton fichier joint et ça fonctionne. J'avoue être un peu perdu car mon code est sensiblement le même... et fonctionne en prod.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    Comme je pense que c'est mon code qui foire (bizarre vu qu'il fonctionne dans mon hébergement final OVH -il ne faudrait pas qu'ensuite ca fonctionne sur wamp mais plus sur OVH... ce serait le comble-), voici mon code, si vous trouvez où l'erreur peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <?php if(isset($_GET['langue'])) { //Langue indiquée dans l'URL
     
    	$langueSite = htmlspecialchars($_GET['langue']);
     
    	switch($langueSite) {
    		case 'fr':
    			$langueLocale = 'fr_FR.utf8';
    		break;
    		case 'en':
    			$langueLocale = 'en_US.utf8';
    		break;
    	}
     
    	setcookie('langueLocale', $langueLocale, time() + (15778463), '/'); //Génération du COOKIE pour 6 mois
     
    }
    else { //Langue non indiquée dans l'URL
     
    	if(!empty($_COOKIE['langueLocale'])) { //COOKIE présent
     
    		$langueLocale = htmlspecialchars($_COOKIE['langueLocale']);
     
    		$cookieExplode = explode('_', $langueLocale);
    		$langueSite = $cookieExplode[0];
     
    		header('Location: /'.$langueSite.'/');
     
    	}
    	else { //COOKIE absent
     
    		header('Location: /fr/');
     
    	}
     
    }
     
    setlocale(LC_ALL, $langueLocale); // On modifie les informations de localisation en fonction de la langue
    putenv('LANG = '.$langueLocale); // On modifie la variable d'environnement
    putenv('LC_ALL = '.$langueLocale);
    $nomDesFichiersDeLangue = 'messages'; // Le nom de nos fichiers .mo
    bindtextdomain($nomDesFichiersDeLangue, 'locale/'); // On indique le chemin vers les fichiers .mo
    bind_textdomain_codeset($nomDesFichiersDeLangue, 'UTF-8');	
    textdomain($nomDesFichiersDeLangue); // Le nom du domaine par défaut
    ?>
    Encore merci.

  15. #15
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Si tu supprime le .utf8 de tes locales ça marche ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Par défaut
    Non

Discussions similaires

  1. [gettext] Ne fonctionne pas
    Par Neuromancien2 dans le forum Général Python
    Réponses: 2
    Dernier message: 10/08/2011, 17h09
  2. [Smarty] smarty gettext ne fonctionne pas pour la traduction
    Par HwRZxLc4 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/07/2010, 12h11
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo