我可以翻译来自QtDesigner的文本,但我无法翻译任何在其外部定义的文本。PyQt国际化
在示例的代码:
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')
根据documentation第一个参数是上下文和第二是sourceText。但是当我在QtLinguist中打开我的.ts
文件时,它显示上下文是我的sourceText和sourceText是一条评论。不管怎样,在QtLinguist中翻译它之后,我发布了.qm
文件,然后运行我的应用程序,但文本不会更改。我只看到通过sourceText,所以在这个例子中它仍然是'True'
而不是我翻译的。
我在做什么错?
我其实写道,从QtDesigner字符串的翻译作品,他们不会如果我不会加载翻译文件。所以我当然装了它。无论如何,感谢您的努力。 –
我认为可能发生的事情是pylupdate被tr()的重新分配所困惑。我怀疑它认为tr(...)引用QObject.tr(),其中参数与QCoreApplication.translate()中的参数相反。我自己尝试过,发现如果我使用QtCore.QCoreApplication.translate()而不是tr(),它就可以工作。此外,在这种情况下,u'...'符号上的pylupdate扼流圈。我发现只使用'...'就行得通。 – piccy