Python:使用自定义区域设置文件夹找不到域的翻译文件

发布于 2024-09-25 20:09:53 字数 1204 浏览 5 评论 0原文

我有以下结构:

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

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

谢谢,

达米安

I have the following structure :

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

In my __init__.py there is the following lines :

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

But when I try to run my program I got this error :

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'

I don't understand which path is expected by gettext.translation as I give a complete path to the .mo file.

Could someone explain me what I have to do to load my translation files correctly ?

Thanks,

Damien

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ˇ宁静的妩媚 2024-10-02 20:09:53

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

I think your __init__.py should be something like:

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文