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

Langage PHP Discussion :

GetText et accents


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut GetText et accents
    Bonjour,

    Tout d'abord désolé si je ne suis pas dans le bon forum, mais j'avoue, je ne sais pas lequel est approprié à mon problème.

    D'ailleurs, voici mon problème, vous en jugerez...

    J'ai installé, sous xp, GetText, j'ai créé mes fichiers .po, tout tourne sauf que... Lorsque ma traduction "msgstr" contient un accent celui est affiché sur ma page avec losange contenant un ?.

    La page attend clairement, un codage en UTF-8. Malgré les tentatives pour transformer le résultat en UTF-8 rien ne marche. Je vous montre ce que j'ai fait, en espérant que c'est moi qui n'ai rien compris... Ainsi vous aurez la possibilité d'y remédier.



    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
     
    // Dans le fichier fr_FR/LC_MESSAGES/traduction.po -->.mo, j'ai msgid "Subscriber" | msgstr "Abonné"
     
    // Je récupère la traduction en Français
    $langage = "fr_FR";
     
    putenv("LANG=$langage"); 
    setlocale(LC_ALL, $langage . ".UTF-8");
     
    	$f_langue = 'traduction'; 
    	bind_textdomain_codeset("$f_langue", "UTF-8");
    	bindtextdomain("$f_langue", "./locale"); 
     
     
    	textdomain("$f_langue"); 
     
    echo _('Subscriber');
    J'ai également tenté de faire un formatage directement dans le fichier .po en ajoutant ces lignes :

    msgid ""
    msgstr ""
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    Pour éviter les erreurs, j'ai mis les caractères accentués avec \\u00E8. Ce qui donne msgid "Subscriber" | msgstr "Abonn\\u00E8".

    Dans ce dernier cas cela m'affiche Abonn\\u00E8.

    Je croise les doigts et allume des cierges afin que quelqu'un connaisse une solution afin que les accents s'affichent correctement.

    Christian.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    J'ai oublié de dire que je parviens à mettre mon texte accentué de façon lisible, mais pour cela je dois faire un echo utf8_encode(_('Subscriber'));

    Ce qui est long à taper. Il n'y a pas un autre moyen ?

    Christian.

  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
    Ton fichier .po est il bien en utf8 ? Le fichier mo généré est il lui aussi en utf8 ?
    Je parle bien de l'encodage du fichier pas du charset déclarer dedans.

    Perso avec la page web en utf8 , les mo et po en utf8 et tout les charset en utf8 je n'ai aucun problème. En utf8 faut rester cohérent jusqu'au bout sinon ca devient l'enfer
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 30
    Par défaut
    Vive les encodages ^^

    Il faut imperativement que tes fichiers soient en UTF-8 eux même.
    Un header UTF-8 ne sert a rien si le fichier est en ISO ou autre.

    Quand on travaille avec de l'UTF-8 il vaut mieux que tous les fichiers soient encodés en UTF-8 sinon effectivement tu vas devoir passer par un utf8_encode et dans certain cas ca peut poser des problèmes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    Merci pour vos réponses.

    Effectivement, cela ne peut être que cela. Pourtant, lorsque j'ouvre Notepad (qui est par défaut en ANSI, je suis sous Windows), je fais un "enregistrer sous" où je demande un encodage en UTF-8.

    Là, je lance l'opération msgfmt -o....

    Je reçois l'erreur 1:2 parse error.

    Dans mon fichier (appelé traduction.po) j'ai en première ligne

    msgid ""
    msgstr ""
    "Content-Type: text/plain; charset=utf-8\n"
    "Content-Transfer-Encoding: 8bit\n"

    msgid "Welcome"
    msgstr "Bienvenue"

    Du coup, soit mon fichier n'est vraiment pas en UTF-8 et alors je ne vois comment je peux faire pour qu'il le soit, soit y à un truc que je ne vois pas.

    Christian.

  6. #6
    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
    Perso je fait pas confiance à notepad , il a une vilaine tendance à me flinguer mes encodages (sans doute une histoire de BOM/Sans Bom).

    Pour ton parse error n'aurait tu pas un retour chariot en fin de fichier ? L'encodage en utf8 à également pu introduire des caractères indésirables, à vérifier.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 10h33
  2. Accents
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 26/02/2003, 17h17
  3. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 03h59
  4. que deviennent mes accents ?!
    Par petitdns dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2002, 10h32
  5. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 12h00

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