我可以转换来自QtDesigner的文本,但是我不能翻译任何在它之外定义的内容。
在示例中,此代码:
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',而不是我翻译的。
我做错了什么?
发布于 2015-03-13 13:12:45
我只是掉进了同一个陷阱。皮西上面的评论说明了一切。
幽门更新是“只是”一个文件解析器。它以字符串的形式搜索tr()和translate()。它忽略了像my_tr_func = translate这样的做作。
如果你写
my_tr_func = translate
text = my_tr_func("Context", "Source text")您的字符串将被忽略。
这里的诀窍是,您使用tr()作为别名,而不是使用任何字符串,而不是仅仅忽略它,而是将它误认为是QObject tr()方法,并相应地解析其参数。
你对此无能为力(除非你修补幽门更新.)。
注意,很显然,你可以写
translate = QtCore.QCoreApplication.translate
text = translate("Context", "Source text")总比什么都没有好。
https://stackoverflow.com/questions/14715015
复制相似问题