我正在尝试翻译成一种特定的语言,不管在应用程序中选择哪种语言。我试图不改变应用程序的语言,所以即使知道我所使用的应用程序,我也不认为这对我有帮助。下面我有一个alwaysTranslate()方法,我总是希望返回翻译后的文本,即使我在应用程序中卸载翻译程序(或在这种情况下,我只是没有一个)。在
import sys
from os import getcwd
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setupUi(self)
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(556, 362)
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.label = QtWidgets.QLabel()
self.verticalLayout.addWidget(self.label)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
self.label.setText(_translate("Ui_Form", "something"))
# this is what I want to come back with a local translation
def alwaysTranslate(self):
qt_translator = QtCore.QTranslator()
m_langPath = getcwd()
qt_translator.load("test.qm", m_langPath)
_translate = QtCore.QCoreApplication.translate
print("should NOT be 'something': " + _translate("Ui_Form", "something"))
if __name__ == '__main__':
app = QApplication(sys.argv)
qt_translator = QtCore.QTranslator(app)
m_langPath = getcwd()
_translate = QtCore.QCoreApplication.translate
qt_translator.load("test.qm", m_langPath)
app.installTranslator(qt_translator)
print("should NOT be 'something': " + _translate("Ui_Form", "something"))
qt_translator.load("en.qm", m_langPath)
app.installTranslator(qt_translator)
print("should be 'something': " + _translate("Ui_Form", "something"))
ex = Ui_Form()
ex.alwaysTranslate()
sys.exit(app.exec_())
我的测试.ts文件外观
^{pr2}$当我运行它时,我得到以下结果
should NOT be 'something': matters not
should be 'something': something
should NOT be 'something': something
最后一个我想成为“无关紧要”的人。在
我没试过,但我觉得这应该行得通:
相关问题 更多 >
编程相关推荐