【发布时间】:2018-11-16 07:06:04
【问题描述】:
我正在尝试将我用 pyside2/pyqt5 编写的小型应用程序翻译成多种语言,例如中文。谷歌搜索后,从菜单->语言->中文选择后,我设法将主窗口更改为中文。但是,菜单 -> 选项的弹出对话框仍然是英文版本。似乎翻译信息没有传输到对话框。我该如何解决?
基本上,我在设计器中构建了两个ui文件并转换为两个python文件:一个mainui.py和一个dialogui.py。然后我将这两个 python 文件转换为一个 *.ts 文件使用
pylupdate5 -verbose mainui.py dialogui.py -ts zh_CN.ts
之后,在语言学家中输入翻译词。我可以看到对话框中的项目,这意味着该信息没有丢失。然后我将文件发布为 zh_CN.qm 文件。我使用谷歌驱动器在下面附加的所有这些支持文件。
Supporting files for the question
主文件为
import os
import sys
from PySide2 import QtCore, QtGui, QtWidgets
from mainui import Ui_MainWindow
from dialogui import Ui_Dialog
class OptionsDialog(QtWidgets.QDialog,Ui_Dialog):
def __init__(self,parent):
super().__init__(parent)
self.setupUi(self)
self.retranslateUi(self)
class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.actionConfigure.triggered.connect(self.showdialog)
self.actionChinese.triggered.connect(self.change_lang)
def showdialog(self):
dlg = OptionsDialog(self)
dlg.exec_()
def change_lang(self):
trans = QtCore.QTranslator()
trans.load('zh_CN')
QtCore.QCoreApplication.instance().installTranslator(trans)
self.retranslateUi(self)
if __name__=='__main__':
app = QtWidgets.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
ret = app.exec_()
sys.exit(ret)
我认为这应该是一个典型的任务,因为几乎没有应用程序只有一个主窗口。
【问题讨论】:
-
是的,@eyllanesc。您的解决方案效果很好,我只是将您的答案标记为已接受的解决方案。我没有立即这样做只是因为我想真正坐下来彻底分析您的代码并询问您我无法理解的部分。无论如何,我可以稍后再问你。
标签: python internationalization pyqt5 translation pyside2