wie kann ich Dynamisch den QTranslator wechseln? So habe ich es schon versucht, leider werden die Texte in tr() und auch nicht die in den ui-Files übersetzt.
Hi,
du musst natürlich noch die retranslateUi -Funktion aufrufen, bzw. alle Strings neu setzen. D.h. alle strings die zum Zeitpunkt des Translatorwechsels existieren, Strings in Dialogboxen, etc. die noch nicht angezeigt werden sollte automatisch übersetzt werden.
Die retranslateUi - Funktion befindet sich in der generierten ui_xyz.h Datei.
Texte die Du schon geschrieben hast und die nicht in retranslateUi stehen, musst Du halt nochmal schreiben. Texte die erst noch geschrieben werden, werden passend übersetzt.
Hmm, liest sich jetzt blöd, hoffe es ist klar was gemeint ist.
ja mit den Texten der Controls (QLabel, QPushButton, etc.) bzw. Widgets funktioniert es wunderbar. Die Texte kann ich dann im changeEvent mit retranslateUi oder einer eigenen Funktion übersetzen. Mir ist aber nicht klar, wie das mit einem Text funktionieren soll, der z.B. in einem QTextEdit angezeigt wird. Ich habe zum Beispiel eine Funktion die mir mehrere Werte in einem QTextEdit anzeigt:
Länge a = 5
Länge b = 5
Fläche = 25
Die Werte a und b sind Eingaben, die Fläche wird berechnet und alles im QTextEdit angezeigt. Wenn der Benutzer jetzt die Sprache wechselt, wird zwar die Sprache der Oberfläche geändert, aber der Text im QTextEdit bleibt unverändert.
Kannst du mir einen Tipp geben wie es möglich ist, auch den Text im QTextEdit während der Laufzeit zu übersetzen?
Oh, der Tipp war gut, so funktioniert es, aber leider kann ich das nicht so einfach machen. Der angezeigte Text beruht auf einer Abfrage, Berechnung usw. je nach Widget. Diese Aktionen kann ich nicht bei einem Sprachwechsel erneut ausführen, welche Möglichkeit habe ich dennoch die Sprache dynamisch zu wechseln?
Wenn du unbedingt ein QTextEdit verwenden willst, kannst du ja jedem Textsegment eine eigene ID zuweisen. Beim neuübersetzen parst du halt das Document übersetzt anhand der ID, die Zahlen bleiben ja (hoffentlich) gleich...