2012-02-03 70 views
0

Subj:有可能嗎?例如,我可以將QtGui.QFileDialog().getSaveFileName()按鈕「保存」轉換爲「Conservare」,並將「取消」轉換爲「Ignorare」?是否可以根據QFileDialog/QFontDialog創建我的課程而不發明速度? 有人說這些函數將會被翻譯,這取決於系統語言環境。不要相信,我的俄文版OpenSUSE說這是謊言。 :-)和俄羅斯的Windows 7有這樣的行爲。我在系統上看到的所有字符串都是英文。我不是民族主義者,但我想用其他語言的字符串。 :-) 謝謝!PyQt4:QFileDialog和QFontDialog本地化

回答

2

標準的Qt安裝應該包括20個左右的Qt庫本身的翻譯文件。

有關如何使用它們的說明,請參見Qt i18n文檔的this section

這是一個基本PyQ​​t4的例子:

from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.buttons = QtGui.QDialogButtonBox(self) 
     button = self.buttons.addButton(QtGui.QDialogButtonBox.Open) 
     button.clicked.connect(self.handleOpen) 
     button = self.buttons.addButton(QtGui.QDialogButtonBox.Close) 
     button.clicked.connect(self.close) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.buttons) 

    def handleOpen(self): 
     dialog = QtGui.QFileDialog() 
     dialog.exec_() 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    translator = QtCore.QTranslator() 
    if len(sys.argv) > 1: 
     locale = sys.argv[1] 
    else: 
     locale = QtCore.QLocale.system().name() 
    translator.load('qt_%s' % locale, 
     QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)) 
    app.installTranslator(translator) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 
+0

謝謝!這真的很有用。只有一個問題:我可以使用不同的翻譯(默認Qt和我自己)嗎? – ghostmansd 2012-02-04 12:48:24

+0

我在我的應用程序中有一些元素,通過QTranslator.translate通過另一個qm文件進行翻譯。 – ghostmansd 2012-02-04 12:55:40

+0

@ghostmansd。是的,你可以安裝多個翻譯器。查找翻譯是按相反順序完成的,因此您可能需要安裝自己的'qm'文件_last_(請參見[here](http://developer.qt.nokia.com/doc/qt-4.8/qcoreapplication的.html#installTranslator))。 – ekhumoro 2012-02-04 17:59:31

0

我已經找到了解決方案:qm文件。您可以使用lreleasets文件中獲取它們。