首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gettext的Python i18n不工作

使用gettext的Python i18n不工作
EN

Stack Overflow用户
提问于 2017-09-24 21:08:17
回答 1查看 1.5K关注 0票数 0

我试着查看python关于在python项目上创建一些i18n机制的内容。虽然我通常喜欢python文档,但这一节在我看来并不直观,我看了另一种资源。通过查看这些:

inventwithpython.com/blog/translate-your-python-3-program-with-the-gettext-module/

Python文档:本地化应用程序

我成功地完成了下面粘贴的源代码。最初它给出了一个域错误,但是在添加了.mo文件之后,现在它无法工作或显示任何错误。

main.py

代码语言:javascript
复制
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文件示例

代码语言:javascript
复制
"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子树)

代码语言:javascript
复制
.
├── 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-24 21:23:32

我发现了这个问题,并找到了一个暂时但不令人满意的解决办法。

我的代码是这样的:

代码语言:javascript
复制
from gettext import gettext as _

也不需要它。事实上,当我删除这一行的时候,一切都很完美。

我不太明白为什么,但这解决了问题。我不知道当我有另一个带有i18n字符串的类时,这是否有效

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46394865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档