2015-03-31 72 views
0

我試圖將我的應用程序從芬蘭翻譯成英語。我檢查了Riverbank's short doc,並得到它主要工作。在我跑的應用程序,我稱之爲:變量的PyQt5國際化問題

translator = QTranslator() 
translator.load("gui/translations/mainwindow.qm") 
app = QApplication(sys.argv) 
app.installTranslator(translator) 

和應用程序正確地轉換大多數文章的,如果我這樣的代碼:QCoreApplication.translate("setapikeyheading", "Aseta tunnisteavain")

現在,我的應用程序已經在那裏可能出現同樣的錯誤消息幾種情況在不同的情況下。我喜歡乾的,所以我成立了幾個「常數」像這樣的靜態變量:

_UNKNOWN_ERROR = QCoreApplication.translate("unknown_error", "Tuntematon virhe: ") 

然後我跑pylupdate5和翻譯在語言學家的字符串。但是,在運行期間,這些消息不會被翻譯,而是仍然顯示芬蘭原文。

爲什麼以及如何解決它?我有一個預感,它與上下文有關,但我還沒有設法找出它,因爲我沒有找到PyQt翻譯的任何深入文檔(Riverbank的含義很模糊)。

另外,考慮到Riverbank建議使用translate()而不是tr(),我應該如何翻譯Designer生成的UI與PyQt?

回答

0

看起來像我發現上下文問題的黑客攻擊。 .txt文件是Qt語言學家用來定義翻譯的,上下文有<location filename="messages.py" line="9"/>,這讓我推斷出源文件中字符串的實際位置很重要。

雖然像在我的問題的變量沒有工作,職能合作,他們似乎保持相同的情況下根據語言學家/ QTranslate:

def unknown_error(self): 
    return QCoreApplication.translate("unknown_error", "Tuntematon virhe: ") 

要顯示的文字,我剛纔打電話print(messages.unknown_error())。這感覺像對我來說是一個黑客,但它的工作。