bisher verfahre ich so, dass bei einer Sprachumschaltung mein Programm dazu angehalten wird neuzustarten. Wenn der Anwender die Sprache im Programm ändert (Beispiel: von englisch auf deutsch), dann startet sich mein Programm neu, und lädt die entsprechende Datei, die von Qt-Linguist bearbeitet wurde. Nun möchte ich dazu übergehen, dass man sich den Neustart erspart. Dazu habe ich mir soeben ein kleines Programm gebastet -leider nicht ausführbar. Das Programm funktioniert auch wunderbar, allerdings habe ich kleine Bedenken. Seht selbst:
Code: Alles auswählen
import sys
from PyQt4 import QtGui, QtCore
from testlangs import Ui_MainWindow
class Test(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, app):
QtGui.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
# save reference to app for later
self._app = app
self.set_translators()
self._app.installTranslator(self.en_translator)
# Configure ui interface
self.setupUi(self)
# Connect menu items
self.actionDeutsch.triggered.connect(lambda: self.change_language("langs_de",
self.en_translator,
self.de_translator))
self.actionEnglish.triggered.connect(lambda: self.change_language("langs_en",
self.de_translator,
self.en_translator))
# Create the translators for English and German
def set_translators(self):
self.en_translator = QtCore.QTranslator(self._app)
self.en_translator.load("langs_en")
self.de_translator = QtCore.QTranslator(self._app)
self.de_translator.load("langs_de")
# Change the language to German
def change_language(self, arg, del_trans, add_trans):
self._app.removeTranslator(del_trans)
self._app.installTranslator(add_trans)
self.retranslateUi(self)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = Test(app)
window.show()
sys.exit(app.exec_())
Daher wollte ich euch fragen, ob jemand von euch eine bessere Lösung parat hat und wie ihr vorgehen würdet?
Gruß
Sophus