你如何实现pyqt4的多语言支持

时间:2013-12-24 09:06:51

标签: python qt pyqt4 multilingual python-2.x

我有一个pyqt4程序,并希望实现多语言支持。我有所有.qm文件,但无法弄清楚如何使用它们。

我真的找不到太多关于此的文档,我尝试的任何内容似乎都没有用。

1 个答案:

答案 0 :(得分:3)

关于这个主题的文档很多,可以在明显的地方找到:

下面是一个简单的演示脚本(使用-h运行):

from PyQt4 import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        message = self.tr('Hello World')
        label = QtGui.QLabel('<center><b>%s</b><center>' % message, self)
        buttonbox = QtGui.QDialogButtonBox(self)
        buttonbox.addButton(QtGui.QDialogButtonBox.Yes)
        buttonbox.addButton(QtGui.QDialogButtonBox.No)
        buttonbox.addButton(QtGui.QDialogButtonBox.Cancel)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(label)
        layout.addWidget(buttonbox)

if __name__ == '__main__':

    import sys, os, getopt

    options, args = getopt.getopt(sys.argv[1:], 'hl:')
    options = dict(options)
    if '-h' in options:
        print("""
Usage: %s [opts] [path/to/other.qm]

Options:
 -h        display this help and exit
 -l [LOC]  specify locale (e.g. fr, de, es, etc)
""" % os.path.basename(__file__))
        sys.exit(2)
    app = QtGui.QApplication(sys.argv)
    translator = QtCore.QTranslator(app)
    if '-l' in options:
        locale = options['-l']
    else:
        locale = QtCore.QLocale.system().name()
    # translator for built-in qt strings
    translator.load('qt_%s' % locale,
                    QtCore.QLibraryInfo.location(
                        QtCore.QLibraryInfo.TranslationsPath))
    app.installTranslator(translator)
    if args:
        # translator for app-specific strings
        translator = QtCore.QTranslator(app)
        translator.load(args[0])
        app.installTranslator(translator)
    window = Window()
    window.setGeometry(500, 300, 200, 60)
    window.show()
    sys.exit(app.exec_())