3

我想将 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)))
4

3 回答 3

7

看来您混合了两件事: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的Produce translations部分可以为您提供帮助。您需要提供项目文件、翻译文件 (.ts) 并使用 Qt Linguist 工具。

您可以通过安装多个翻译器来混合 Qt 本身的翻译和您自己的应用程序翻译。

请注意,在加载翻译器时,您不必在文件名中添加 .qm 扩展名。

于 2012-10-23T15:41:57.327 回答
1

请阅读《Qt 翻译手册》或在此处查看一个非常基本但说明性的示例:http: //doc.qt.digia.com/qt/linguist-hellotr.html。请注意:您可能需要使用 fi Qt Linguist自己提供翻译文件。

于 2012-10-23T14:56:51.690 回答
0

如果您在窗口中执行此操作__init__(),则必须保存(保留对)您的翻译器的引用:

self.translator = translator

否则,即使在安装之后,您的翻译器也会被垃圾收集。在这种情况下,self.tr()将停止工作(静默失败)。

于 2016-09-04T04:17:11.540 回答