Python: не найден файл перевода для домена, использующего пользовательскую папку локали - PullRequest
7 голосов
/ 01 октября 2010

У меня следующая структура:

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

В моем __init__.py есть следующие строки:

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

Но когда я пытаюсь запустить свою программу, я получаю эту ошибку:

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'

Я не понимаю, какой путь ожидает gettext.translation, поскольку я даю полный путь к файлу .mo.

Может кто-нибудь объяснить мне, что я долженправильно загрузить файлы перевода?

Спасибо,

Дэмиен

1 Ответ

7 голосов
/ 01 октября 2010

Я думаю, что ваш __init__.py должен выглядеть примерно так:

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