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

Django Python Discussion :

UTF-8, accents et fichier .po [Python 2.X]


Sujet :

Django Python

  1. #1
    Mvu
    Mvu est déconnecté
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Points : 105
    Points
    105
    Par défaut UTF-8, accents et fichier .po
    Bonjour,
    Je m'arrache les cheveux avec le problème des caractères accentués.
    Actuellement je génère mes fichiers .po et .mo avec les commande manage.py makemessages et compilemessages.
    Mais: dans un views.py, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = _(u"Bonjour les zéros")
    Après génération du .po, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgid "Bonjour les zéros"
    Ma première ligne du views.py est et l'en-tête de django.po est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Plural-Forms: nplurals=2; plural=(n != 1);\n"
    Qu'est-ce que je dois modifier pour avoir non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgid "Bonjour les zéros"
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgid "Bonjour les zéros"
    ?
    Marc Van Uytvanck
    Bruxelles

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Quelle commande utilises-tu ?

    J'utilise ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd = 'xgettext -L python --from-code=UTF-8 --force-po -o %s -f %s' %(PO, TRANSLATABLES)
    PO est la langue et TRANSLATABLES les noms des fichiers contenant les chaînes à traduire

    Ça passe sans problème:
    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
     
    "Project-Id-Version: qarte 1\n"
    "Report-Msgid-Bugs-To: \n"
    "POT-Creation-Date: 2013-01-31 13:42+0100\n"
    "PO-Revision-Date: 2013-01-31 13:44+0100\n"
    "Last-Translator: Vincent Vande Vyvre\n"
    "Language-Team: French\n"
    "Language: fr\n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
    "Plural-Forms: nplurals=2; plural=(n > 1);\n"
     
    #: artelivewebviewer.py:454 artePlus.py:728
    msgid "Add to download list"
    msgstr "Ajouter à la liste de téléchargement"

  3. #3
    Mvu
    Mvu est déconnecté
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Points : 105
    Points
    105
    Par défaut
    Bonjour VinsS. Django et python sont nouveaux pour moi (du coup ma question est peut-être naïve).
    En fait j'utilise Eclipse et le menu Custom_command



    Comment dois-je entrer ta commande via cete interface ?
    Marc Van Uytvanck
    Bruxelles

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Pour eclipse je ne saurais te répondre, je ne l'ai jamais utilisé.

    Mais en général je fais comme ceci:

    soit ces deux fichiers qui contiennent des chaînes à traduire:
    mainapp.py
    mainui.py

    Je crée un fichier
    TRANSLATABLES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    chemin/de/mainapp.py
    chemin/de/mainui.py
    Je veux que mon fichier pot s'appelle monapp.pot
    j'ouvre une console dans le même dossier et j'entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xgettext -L python --from-code=UTF-8 --force-po -o monapp.pot -f TRANSLATABLES
    pour la traduction en français:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    msginit -i monapp.pot -l fr -o fr.po
    traduire ...

    compiler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    msgfmt fr.po -o fr.mo
    exporter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cp fr.mo /chemin/de/locale/fr/LC_MESSAGES/monapp.mo
    Je pense que je n'ai rien oublié.

  5. #5
    Mvu
    Mvu est déconnecté
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Points : 105
    Points
    105
    Par défaut
    Merci d'avoir répondu.
    En fait je pense que le problème est ailleurs. La génération des fichiers django.po et django.po se passe très bien. La seule chose qui ne va pas, c'est qui'il remplace dans les messages en français les caractères accentués par leur équivalent utf-8.
    Ce que je n'arrive pas à comprendre c'est que si j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #: .\templates\localise\test_i18n.html:4
    msgid "Hi newbies"
    msgstr "Bonjour les zéros"
    lors du compilemessages il plante et affiche une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CommandError: Execution of msgfmt failed: C:\Users\Marc\WibDjango6\wooditbe\locale\nl\LC_MESSAGES\django.po:66:22: Séquence d'octets multiples invalide
    C:\Users\Marc\WibDjango6\wooditbe\locale\nl\LC_MESSAGES\django.po:66:23: Séquence d'octets multiples invalide
    msgfmt: 2 erreurs fatales trouvées
    J'ai beau ratisser la doc Django et les forums, je ne trouve rien qui m'aide.

    J'ai aussi le problème dans les templates.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      - block head
        %meta{'charset':'utf-8'}
        %meta{'xml version':'1.0', 'encoding' : 'UTF-8'}
        %meta{'http-equiv':'Content-Type', 'content':'text/html'}
        %meta{'name':'viewport', 'content':'width=device-width, initial-scale=1'}
        {% load i18n %}
     
    <h1> {% trans "Bonjour les zéros" %}  {{content_language}}</h1>
    Génère l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    utf8' codec can't decode byte 0xe9 in position 49: invalid continuation byte
    Bref, c'est pas cool.
    Marc Van Uytvanck
    Bruxelles

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Pour la deuxième erreur, elle me semble attendue, tu dois déclarer les chaînes unicode avec Python 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h1> {% trans u"Bonjour les zéros" %}
    Par contre, pour tes fichiers .po sans savoir quelles commandes as-tu utilisé exactement pour les créer, je serais tenté de croire que, lors de la traduction, ton éditeur n'aurait pas enregistré en utf-8.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Django mache déjà un peu le travail et comment mettre en œuvre les traductions côté code et templates HTML est documenté ici.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Mvu
    Mvu est déconnecté
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Points : 105
    Points
    105
    Par défaut La solution
    Voici finalement la solution.
    J'utilise Eclipe Kepler. J'ai installé gted GetTextEditor 1.7.0 téléchargé depuis la Eclipse Marketplace.
    J'utilise le gettext de Cygwin.
    Faire attention à ajouter en-tête de tous les fichiers .py Reste un problème dans les fichiers template. Là il n'accepte pas les accents si j'écris un lmessage en dur.
    Dans le pire des cas, la solution est de créer le message dans le views.py qui correspond au template.
    Marc Van Uytvanck
    Bruxelles

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

Discussions similaires

  1. osql : accents dans fichier résultats
    Par frenchy371 dans le forum Outils
    Réponses: 2
    Dernier message: 27/10/2008, 17h24
  2. [DOM4J] Encodage des accents dans fichier XML
    Par NizarK dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/10/2008, 14h57
  3. [MySQL] [UTF-8] Accents ok, juste l'apostrophe
    Par pc.bertineau dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/07/2007, 09h12
  4. accents et fichier sql
    Par millefeintes dans le forum Oracle
    Réponses: 9
    Dernier message: 19/02/2007, 17h58
  5. Problème avec accent dans fichier
    Par shaun_the_sheep dans le forum Administration système
    Réponses: 3
    Dernier message: 19/11/2006, 20h46

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