【问题标题】:Python : No translation file found for domain using custom locale folderPython:使用自定义语言环境文件夹找不到域的翻译文件
【发布时间】:2010-10-01 08:48:29
【问题描述】:

我有以下结构:

/
|- 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 文件的完整路径。

有人能解释一下我必须做什么才能正确加载我的翻译文件吗?

谢谢,

达米安

【问题讨论】:

  • 尝试将 locale_path 设置为完整路径,例如:locale_path="/home/xxx/"
  • @john misoskian 它也不起作用...域参数(gettext.translation 的第一个参数)设置为“brainz”。我想这是对文件名(brainz.mo)的引用。是吗?

标签: python gettext


【解决方案1】:

我认为你的__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()

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多