2012-10-23 179 views
2

我想將pyqt應用程序的語言從英語轉換爲芬蘭語。我看到的PyQt有它的一些方法,我嘗試使用它,但它並沒有幫助我Pyqt英語譯成芬蘭語翻譯

app = QtGui.QApplication(sys.argv) 
translator = QtCore.QTranslator() 
translator.load("qt_fr.qm") 
app.installTranslator(translator) 

.qm文件都出現在正確的道路(現在它正在法國我猜)和按鈕我用這個文字

name = "File" 
button.setText(self.tr(QtCore.QString(name))) 

回答

5

看來你在混合兩件事情:Qt本身的翻譯(通過qt_xx.qm文件提供並與Qt一起發佈)和你自己的翻譯。

在這裏你有使用Qt本身的俄語翻譯文件的一個示例:

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class MyWindow(QWidget): 
    def __init__(self, parent=None): 
     super(QWidget, self).__init__(parent) 

     self.hbox = QHBoxLayout(self) 
     self.myButtons = QDialogButtonBox(self) 
     self.hbox.addWidget(self.myButtons) 
     button = self.myButtons.addButton(QDialogButtonBox.Open) 

if __name__ == "__main__": 
    import sys 
    app = QApplication(sys.argv) 
    translator = QTranslator() 
    print translator.load("qt_ru", QLibraryInfo.location(QLibraryInfo.TranslationsPath)) 
    app.installTranslator(translator) 
    ui = MyWindow() 
    ui.show() 
    sys.exit(app.exec_()) 

如果你需要自己的翻譯則農產品翻譯的i18n with Qt部分可以對你有所幫助。您需要提供項目文件,翻譯文件(.ts)以及使用Qt Linguist工具。

您可以通過安裝多個翻譯器來混合Qt本身的翻譯和您自己的應用程序翻譯。

請注意,加載翻譯器時,您不必將.qm擴展名添加到文件名。

+0

感謝您的回覆。如果我在標籤上寫下文字,它可以幫助我清除一件事,我是否可以用qt翻譯它?或者我必須寫我自己的翻譯。謝謝 – Uahmed

+1

你必須寫你自己的翻譯。 – Vicent

+0

避免通配符導入會提高可讀性。 – phobie

0

如果你在裏面你的窗口的__init__(),你必須保存這樣做(保留參考)您的翻譯:

self.translator = translator 

否則您的翻譯會得到垃圾收集,即使安裝。在這種情況下,self.tr()將停止工作(靜默失敗)。