Seite 1 von 1

QTranslator wechseln?

Verfasst: 27. Oktober 2006 17:59
von Whitefurrows
Hi,

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.

Code: Alles auswählen

static QTranslator* translator=0;

if (translator)
{
	qApp->removeTranslator(translator);
	delete translator;
}

translator = new QTranslator(0);

if (language =="en")
{
	translator->load(":/translation/language + ".qm");
	qApp->installTranslator( translator );
}

Verfasst: 30. Oktober 2006 13:22
von Vaaco
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.

Code: Alles auswählen

static QTranslator* translator=0; 

if (translator) 
{ 
   qApp->removeTranslator(translator); 
   delete translator; 
} 

translator = new QTranslator(0); 

if (language =="en") 
{ 
   translator->load(":/translation/language + ".qm"); 
   qApp->installTranslator( translator ); 
retranslateUi();
}

Verfasst: 1. November 2006 00:01
von Whitefurrows
Hi,

ok das mit der retranslateUi() ist mir jetzt klar und funktioniert auch. Was kann ich aber mit einer funktion machen, die so aussieht:

Code: Alles auswählen

void AnyWidget::anyFunction()
{
   QString html; 
   html.append("<table border=\"0\" width=\"100%\">");
   html.append("<tr><td>" + tr("Text zum Übersetzen 1") + "</td>");
   html.append("<td>" + tr("Text zum Übersetzen 2") + "</td></tr>");
   html.append("</table>"); 
   myTextEdit->document()->setHtml(html);
}
Wie kann ich da den Text übersetzen, das funktioniert mir retranslateUi() nicht!?

Gruß

Whitefurrows

Verfasst: 2. November 2006 07:19
von macman
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.

Verfasst: 2. November 2006 14:31
von Whitefurrows
Hallo,

danke für den Tipp, aber leider verstehe ich es nicht. Ich habe ein Beispiel angefügt, vielleicht kannst du mir zeigen wie es funktioniert.

Gruß

Whitefurrows

Verfasst: 3. November 2006 09:31
von macman
Dazu fehlt mir etwas die Zeit. Was funktioniert denn nicht? Werden die anderen Texte übersetzt und nur der im HTML-Kontext nicht?

Verfasst: 3. November 2006 11:44
von Whitefurrows
Hallo,

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?

Gruß

Whitefurrows

Verfasst: 3. November 2006 12:05
von Christian81
Du musst schon QTextedit neu füllen...

Verfasst: 3. November 2006 23:27
von Whitefurrows
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?

Gruß

Whitefurrows

Verfasst: 4. November 2006 08:59
von upsala
Tja, dann mußt du halt den Inhalt des Textedits in einer Sprachunabhängigen Struktur speichern und beim Sprachenwechsel neu ausgeben.

Andererseits: Hast du des öfteren vor, die Sprache zu wechseln?

Verfasst: 4. November 2006 15:55
von Whitefurrows
Hallo,

wie meinst du das in einer Sprachunabhängigen Struktur speichern und beim Sprachenwechsel neu ausgeben, wie soll das funktionieren?

Kann ich dir leider nicht sagen wie oft die Sprache gewechselt werden soll, aber es ist eine Anforderung an das Programm die erfüllt werden muss.

Gruß

Whitefurrows

Verfasst: 4. November 2006 20:26
von upsala
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...