Python i18n 与 gettext 不工作
Python i18n with gettext not working
我试图查看 python 文档,了解如何在 python 项目中创建一些国际化机制。虽然我通常喜欢 python 文档,但这个部分对我来说并不直观,我查看了另一个资源。通过查看这些:
inventwithpython.com/blog/translate-your-python-3-program-with-the-gettext-module/
Python docs: localizing-your-application
我设法完成了下面粘贴的源代码。一开始它给出域错误,但在添加 .mo 文件后,现在它不起作用或显示任何错误。
main.py
from gettext import translation
from gettext import gettext as _
lang1 = translation('poker', '/home/myUser/myProjects/pokerProject/resources/localedir', languages=['en'])
lang2 = translation('poker', '/home/myUser/myProjects/pokerProject/resources/localedir', languages=['es'])
lang2.install()
# Code with strings in this way
print(_('This should be translated'))
.mo 文件样本
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.py:26
msgid "This should be translated"
msgstr "Translated text"
布局(pokerProject子树)
.
├── martintc
│ ├── __init__.py
│ └── poker
│ ├── __init__.py
│ └── model
│ ├── diceset.py
│ ├── die.py
│ ├── errors.py
│ ├── __init__.py
│ ├── main.py
│ ├── poker.pot
│ └── utils.py
└── resources
└── localedir
├── en
│ └── LC_MESSAGES
│ ├── poker.mo
│ └── poker.po
└── es
└── LC_MESSAGES
├── poker.mo
└── poker.po
我找到了问题和一个临时但不令人满意的解决方案。
我的代码有一行:
from gettext import gettext as _
而且不需要。事实上,当我删除这一行时,一切都很顺利。
我不太明白为什么,但这解决了。我不知道当我有另一个 类 with i18n strings
时这是否有效
我试图查看 python 文档,了解如何在 python 项目中创建一些国际化机制。虽然我通常喜欢 python 文档,但这个部分对我来说并不直观,我查看了另一个资源。通过查看这些:
inventwithpython.com/blog/translate-your-python-3-program-with-the-gettext-module/
Python docs: localizing-your-application
我设法完成了下面粘贴的源代码。一开始它给出域错误,但在添加 .mo 文件后,现在它不起作用或显示任何错误。
main.py
from gettext import translation
from gettext import gettext as _
lang1 = translation('poker', '/home/myUser/myProjects/pokerProject/resources/localedir', languages=['en'])
lang2 = translation('poker', '/home/myUser/myProjects/pokerProject/resources/localedir', languages=['es'])
lang2.install()
# Code with strings in this way
print(_('This should be translated'))
.mo 文件样本
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: main.py:26
msgid "This should be translated"
msgstr "Translated text"
布局(pokerProject子树)
.
├── martintc
│ ├── __init__.py
│ └── poker
│ ├── __init__.py
│ └── model
│ ├── diceset.py
│ ├── die.py
│ ├── errors.py
│ ├── __init__.py
│ ├── main.py
│ ├── poker.pot
│ └── utils.py
└── resources
└── localedir
├── en
│ └── LC_MESSAGES
│ ├── poker.mo
│ └── poker.po
└── es
└── LC_MESSAGES
├── poker.mo
└── poker.po
我找到了问题和一个临时但不令人满意的解决方案。
我的代码有一行:
from gettext import gettext as _
而且不需要。事实上,当我删除这一行时,一切都很顺利。
我不太明白为什么,但这解决了。我不知道当我有另一个 类 with i18n strings
时这是否有效