PyQt4:QFileDialog和QFontDialog本地化

时间:2012-02-03 12:53:45

标签: localization pyqt pyqt4 qfiledialog

Subj:有可能吗?例如,我可以将QtGui.QFileDialog().getSaveFileName()按钮“保存”翻译为“Conservare”,将“取消”翻译为“Ignorare”吗?是否可以在不发明速度的情况下基于QFileDialog/QFontDialog创建我的课程? 有人说,这些函数将始终被翻译,具体取决于os系统区域设置。不要相信,我的俄语版OpenSUSE说这是谎言。 :-)俄罗斯Windows 7有这样的行为。我在系统上看到的所有字符串都是英文的。我不是民族主义者,但我想在其他语言中使用字符串。 :-)谢谢!

2 个答案:

答案 0 :(得分:2)

标准Qt安装应该包含20个左右的Qt库本身的翻译文件。

关于如何使用它们的解释可以在Qt i18n文档的this section中找到。

这是一个基本的PyQt4示例:

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_())

答案 1 :(得分:0)

我已经找到了解决方案: qm 文件。您可以使用lrelease ts 文件中获取这些文件。