런타임시 언어를 전환하려는 간단한 프로그램이 있습니다. GUI는 QtDesigner로 끝나지 않으므로 .ui 파일이 없으므로 ui.retranslateUi를 사용할 수 없습니다. 모든 위젯에 언어 변경 이벤트가 발생할 때마다이 수동으로 호출의 setText를 해결하는 나의 현재 방법 : here 설명 ui.retranslateUi를 사용하여와PySide : ui.retranslateUi없이 런타임에 언어를 동적으로 변경합니다.
가from PySide.QtCore import *
from PySide.QtGui import *
import sys
class Simple(QPushButton):
def __init__(self):
super().__init__('translate-me')
self.translator = QTranslator()
self.clicked.connect(self.switchLanguage)
self.show()
def changeEvent(self, event):
if event.type() == QEvent.Type.LanguageChange:
self.setText(self.tr('translate-me'))
def switchLanguage(self):
self.translator.load('translation-file')
QApplication.installTranslator(self.translator)
app = QApplication(sys.argv)
simple = Simple()
sys.exit(app.exec_())
이 솔루션은하지만 훨씬 짧습니다. .ui GUI 용 파일을 사용하지 않을 때와 유사한 솔루션이 있습니까?
아마 가치가 없습니다. 사용자가 언어를 변경하도록 허용 한 다음 응용 프로그램을 다시 시작할 수있는 옵션을 제공 할 수 있습니다. 'retranslateUi'는 모든 것을 마술처럼 수정하지는 않습니다. 언어가 변경 될 때 보이는 문자열을 업데이트하도록 코드에서'tr()'을 사용할 때마다 감사해야합니다. 개발을 시작하기 전까지는 일반적으로 어렵습니다. 그런 다음 사용자가 볼 수있는 문자열을 사용하는 코드의 모든 부분을 고수해야한다는 것을 구현하기 위해 일종의 공통 패턴을 디자인해야합니다. –