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

Python Discussion :

gettext : No translation file found for domain using custom locale folder


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut gettext : No translation file found for domain using custom locale folder
    Bonjour tout le monde,

    J'ai la structure de dossiers suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /
    |- main.py
    |- brainz
    |    |- __init__.py
    |    |- Brainz.py
    |- datas
         |- locale
              |- en_US
                   |- LC_MESSAGES
                        |- brainz.mo
                        |- brainz.po
    Dans mon fichier __init__.py j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import locale
    import gettext
    import os
     
    current_locale, encoding = locale.getdefaultlocale()
     
    locale_path = '../datas/locale/' + current_locale + '/LC_MESSAGES/'
     
    language = gettext.translation ( 'brainz', locale_path )
    language.install()
    Mais quand j'execute mon script j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Traceback (most recent call last):
      File "main.py", line 3, in <module>
        from brainz.Brainz import *
      File "/home/damien/BrainZ/brainz/__init__.py", line 11, in <module>
        language = gettext.translation ( 'brainz', locale_path )
      File "/usr/lib/python2.6/gettext.py", line 484, in translation
        raise IOError(ENOENT, 'No translation file found for domain', domain)
    IOError: [Errno 2] No translation file found for domain: 'brainz'
    Franchement, je ne vois pas pourquoi il ne veux pas charger mon fichier mo vu que je lui fournis le chemin complet vers celui-ci.

    Quelqu'un aurais-t-il une idée ? Ou mieux saurais comment faire ?

    Merci d'avance,

    Damien

    NB : Je suis débutant en python et encore plus avec gettext.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    L'intégration de I18N et L10N dans un projet est quelque chose de "compliqué" l'API de gettext a trop d'options qui demandent un temps non négligeable a être "comprises" pour être mises en oeuvre proprement.
    Il est généralement plus simple d'utiliser Babel.
    C'est une bibliothèque 'au dessus' de gettext qui vous propose des "solutions" qui répondent à la plupart des besoins et qui ont l'avantage de pouvoir être mises en oeuvre rapidement (et sans avoir a re-documenter l'utilisation de gettext).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    En fait, voici le contenu correcte pour __init__.py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import locale
    import gettext
    import os
     
    current_locale, encoding = locale.getdefaultlocale()
     
    locale_path = 'datas/locale/'
    language = gettext.translation ('brainz', locale_path, [current_locale] )
    language.install()
    En espérant que ça aide quelqu'un

    En tout cas merci pour m'avoir fait découvrir Babel.

  4. #4
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Chez moi ça fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    beta.py
    /.calculatrice
         /locale
              /fr_FR/LC_MESSAGES/calculatrice.mo
              /en_US/LC_MESSAGES/calculatrice.mo
    Dans beta.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from locale import getdefaultlocale     # Pour connaitre la langue du système
    from gettext import translation,install,gettext
    _=gettext
     
    lg=getdefaultlocale()[0]
    # Chargement des traductions
    try:translation('calculatrice','.calculatrice/locale/',[lg]).install()     # Si l'utilisateur a choisi une langue, on la charge
    except:
        try:translation('calculatrice','.calculatrice/locale/',[getdefaultlocale()[0]]).install()      # Sinon, on charge la langue par défaut du système
        except:pass     # Si la traduction de la langue du système n'est pas installée, on conserve le français
     
    # Test :
    print _('Bonjour')
    Si la langue est chargée, Bonjour devrait être remplacé par 'Hello'.
    J'ai essayé en chargeant fr_FR ou en_EN, en changeant les noms des fichiers (calculatrice.mo en beta.mo par exemple), des dossiers...

    Rien ne marche. Si je retire les exceptions, j'ai la même erreur que martin-damien.

    Merci.

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il est généralement plus simple d'utiliser Babel.
    Merci pour ceci. Je m'en va tester cela aujourd'hui.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2013, 08h47
  2. Réponses: 7
    Dernier message: 12/10/2010, 20h51
  3. No <db.h> include file found
    Par trattos dans le forum Linux
    Réponses: 4
    Dernier message: 20/03/2006, 16h54
  4. WEB SERVICE No serializer found for class
    Par lch dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/09/2005, 16h02
  5. unformatted on disk for file ...... found 8
    Par mika dans le forum Débuter
    Réponses: 4
    Dernier message: 21/12/2004, 11h05

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