2010-10-01 16 views
6

का उपयोग कर डोमेन के लिए पाया फ़ाइल मैं निम्नलिखित संरचना है:पायथन: नहीं अनुवाद कस्टम स्थान फ़ोल्डर

/ 
|- 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 फ़ाइल का पूरा पथ देता हूं।

क्या कोई मुझे बता सकता है कि मुझे अपनी अनुवाद फ़ाइलों को सही तरीके से लोड करने के लिए क्या करना है?

धन्यवाद,

डेमियन

+0

locale_path उदाहरण के लिए पूरा पथ के लिए सेट का प्रयास करें: locale_path = "/ घर/xxx /" –

+0

@ जॉन misoskian यह भी काम नहीं करता है ... डोमेन तर्क (gettext.translation का पहला तर्क) 'brainz' पर सेट है। मुझे लगता है कि यह फ़ाइल नाम (brainz.mo) का संदर्भ है। क्या यह ? –

उत्तर

7

मुझे लगता है कि अपने __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() 
+0

बहुत बहुत धन्यवाद! ये अच्छी तरह काम करता है !!! –

संबंधित मुद्दे