我想将pyqt应用程序的langauge从英语转换为芬兰语。我看到pyqt有一些方法,我尝试使用它,但它没有帮助我
app = QtGui.QApplication(sys.argv)
translator = QtCore.QTranslator()
translator.load("qt_fr.qm")
app.installTranslator(translator)
。
name = "File"
button.setText(self.tr(QtCore.QString(name)))
看来您正在混合两件事: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_())
如果您需要自己的翻译,则使用QT产生I18N的翻译部分可能会对您有所帮助。您需要提供一个项目文件,您的翻译文件(.TS)并使用QT语言学家工具。
您可以通过安装多个翻译器来混合QT本身翻译和自己的应用程序翻译。
请注意,加载翻译器时,您不必将.QM扩展名添加到文件名中。
请阅读有关翻译的QT手册,或者在此处查看一个非常基本但说明性的示例:http://doc.qt.digia.com/qt/linguist-hellotr。html。请注意:您可能需要使用F.I自己提供翻译文件。QT语言学家。
如果您在窗口的__init__()
中进行此操作,则必须保存(保留引用)您的翻译器:
self.translator = translator
否则,即使安装后,您的翻译人员也会收集垃圾。在这种情况下,self.tr()
将停止工作(默默失败)。