2010-10-01 2 views
6

que tienen la siguiente estructura:Python: Sin archivo de traducción encontrados para dominio con carpeta personalizada local

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

En mi __init__.py hay las siguientes líneas:

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

Pero cuando trato de ejecutar mi programa me dio este error:

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' 

No entiendo qué camino se espera por gettext.translation como doy una ruta completa al archivo .mo.

¿Podría alguien explicarme qué debo hacer para cargar mis archivos de traducción correctamente?

Gracias,

Damien

+0

try establece locale_path a la ruta completa, por ejemplo: locale_path = "/ home/xxx /" –

+0

@ juan misoskian No funciona demasiado ... el argumento de dominio (primer argumento de gettext.translation) se establece en 'brainz'. Supongo que es la referencia al nombre del archivo (brainz.mo). Lo es ? –

Respuesta

7

Creo que su __init__.py debería ser algo como:

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

¡Muchas gracias! Funciona muy bien !!! –

Cuestiones relacionadas