2010-10-01 24 views
6

Tôi có cấu trúc sau:Python: Không có tập tin dịch tìm thấy cho miền sử dụng tùy chỉnh locale thư mục

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

Trong tôi __init__.py có những dòng sau:

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

Nhưng khi tôi cố gắng chạy chương trình của tôi tôi gặp lỗi này:

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' 

Tôi không hiểu con đường nào được mong đợi bởi gettext.translation khi tôi cung cấp đường dẫn đầy đủ tới tệp .mo.

Ai đó có thể giải thích cho tôi những gì tôi phải làm để tải các tệp dịch của mình một cách chính xác?

Cảm ơn,

Damien

+0

thử locale_path thiết lập để đường dẫn đầy đủ ví dụ: locale_path = "/ home/xxx /" –

+0

@ john misoskian Nó không hoạt động quá ... đối số miền (đối số thứ nhất của gettext.translation) được đặt thành 'brainz'. Tôi cho rằng đó là tham chiếu đến tên tệp (brainz.mo). Là nó ? –

Trả lời

7

Tôi nghĩ bạn __init__.py nên một cái gì đó như:

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

Cảm ơn bạn rất nhiều! Nó hoạt động rất tốt !!! –

Các vấn đề liên quan