首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt国际化

PyQt国际化
EN

Stack Overflow用户
提问于 2013-02-05 19:08:51
回答 1查看 3K关注 0票数 3

我可以转换来自QtDesigner的文本,但是我不能翻译任何在它之外定义的内容。

在示例中,此代码:

代码语言:javascript
复制
from PyQt4.QtCore import QCoreApplication
tr = QCoreApplication.translate


class Flag(object):

    def __init__(self, name):

        self._name = name
        self._setting_events = []
        self._clearing_events = []
        self._toggle_events = []
        self._true_name = tr("Flags", u'True')
        self._false_name = tr("Flags", u'False')

根据文档,第一个参数是上下文,第二个参数是sourceText。但是,当我在.ts中打开QtLinguist文件时,它会显示上下文是我的sourceText,sourceText是一个注释。无论如何,在QtLinguist翻译之后,我会发布.qm文件并运行我的应用程序,但是文本不会改变。我只看到通过了sourceText,所以在本例中它仍然是'True',而不是我翻译的。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-03-13 13:12:45

我只是掉进了同一个陷阱。皮西上面的评论说明了一切。

幽门更新是“只是”一个文件解析器。它以字符串的形式搜索tr()translate()。它忽略了像my_tr_func = translate这样的做作。

如果你写

代码语言:javascript
复制
my_tr_func = translate
text = my_tr_func("Context", "Source text")

您的字符串将被忽略。

这里的诀窍是,您使用tr()作为别名,而不是使用任何字符串,而不是仅仅忽略它,而是将它误认为是QObject tr()方法,并相应地解析其参数。

你对此无能为力(除非你修补幽门更新.)。

注意,很显然,你可以写

代码语言:javascript
复制
translate = QtCore.QCoreApplication.translate
text = translate("Context", "Source text")

总比什么都没有好。

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

https://stackoverflow.com/questions/14715015

复制
相关文章

相似问题

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