2014-11-01 60 views
0
翻譯

我試圖加載存儲翻譯的QApplication 我加載語言這樣的Qt保持的QApplication

QTranslator translator; 
QString dir = QApplication::applicationDirPath(); 
dir.append("/languages"); 
if(translator.load("main_pl.qm", dir)) 
    QApplication::installTranslator(&translator); 

然後我試圖讓翻譯這樣說:

QApplication::translate("accountTab", "Login completed!", 0) 

沒有成功。 所以我試圖加載翻譯(與上面相同的方式)功能,後來我翻譯 - 工作。 翻譯只是在加載翻譯的函數中工作。 任何建議,如何使它在所有類和功能中工作?

回答

2

我認爲問題在於您創建一個臨時轉換器,只要您離開函數的作用域就會被刪除。爲了讓你的翻譯器對象「活着」,你需要從堆中分配它。例如:

QTranslator *translator = new QTranslator; 
QString dir = QApplication::applicationDirPath(); 
dir.append("/languages"); 
if(translator->load("main_pl.qm", dir)) { 
    QApplication::installTranslator(translator); 
} 
+0

你說得對,我沒注意那個指針是發送給QApplication的。謝謝你的回答:) – 2014-11-02 00:45:21