我可以翻譯來自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