2010-10-01 2 views
6

je la structure suivante:Python: Aucun fichier de traduction pour le domaine en utilisant du dossier personnalisé locale

/ 
|- main.py 
|- brainz 
| |- __init__.py 
| |- Brainz.py 
|- datas 
    |- locale 
      |- en_US 
       |- LC_MESSAGES 
        |- brainz.mo 
        |- brainz.po 

Dans mon __init__.py il y a les lignes suivantes:

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 lorsque je tente de courir mon programme j'ai eu cette erreur:

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' 

Je ne comprends pas quel chemin est prévu par gettext.translation comme je donne un chemin complet au fichier .mo.

Quelqu'un pourrait-il m'expliquer ce que je dois faire pour charger mes fichiers de traduction correctement?

Merci,

Damien

+0

essayez locale_path réglé sur le chemin complet, par exemple: locale_path = "/ home/xxx /" –

+0

@ john misoskian Ça ne marche pas trop ... l'argument de domaine (1er argument de gettext.translation) est mis à 'brainz'. Je suppose que c'est la référence au nom de fichier (brainz.mo). Est-ce? –

Répondre

7

Je pense que votre __init__.py devrait être quelque chose comme:

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() 
+0

Merci beaucoup! Il fonctionne très bien !!! –

Questions connexes