2010-10-01 10 views
6

Mam następującą strukturę:Python: Brak pliku tłumaczenie znalezionych dla domeny przy użyciu niestandardowych lokalizacji folderu

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

w moim __init__.py jest następujące linie:

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

Ale gdy próbuję uruchomić mój program Mam ten błąd:

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' 

Nie rozumiem, która ścieżka jest oczekiwana przez gettext.translation, ponieważ podaję pełną ścieżkę do pliku .mo.

Czy ktoś mógłby mi wyjaśnić, co muszę zrobić, aby poprawnie załadować pliki tłumaczeniowe?

Dzięki,

Damien

+0

spróbować locale_path ustawiony na pełną ścieżkę na przykład: locale_path = "/ home/xxx /" –

+0

@ john misoskian To nie działa zbyt ... Argument domain (pierwszy argument gettext.translation) jest ustawiony na 'brainz'. Przypuszczam, że jest to odwołanie do nazwy pliku (brainz.mo). Czy to jest? –

Odpowiedz

7

Myślę, że __init__.py powinno być coś takiego:

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

Dziękuję bardzo! Pracuje bardzo dobrze !!! –

Powiązane problemy