Ich taste mich langsam an die Sache ran.
Ich habe jetzt zu Beginn, zwei Buttons erstellt. Die werden später einem Auswahlmenü weichen. Aber zum Testen ist es ganz gut.
Mit der Hilfe von Beispielen habe ich mir jetzt folgendes zusammengestrickt.
Code: Alles auswählen
void myProg::on_pushButton_deutsch_clicked()
{
qDebug() << "Deutsch";
QTranslator myappTranslator;
myappTranslator.load("myProg_de");
QApplication::installTranslator(&myappTranslator);
Application::setLanguage("de_De");
ui.retranslateUi(this);
}
void myProg::on_pushButton_englisch_clicked()
{
qDebug() << "Englisch";
QTranslator myappTranslator;
myappTranslator.load("myProg_en");
QApplication::installTranslator(&myappTranslator);
Application::setLanguage("en_En");
ui.retranslateUi(this);
}
In der Application siet setLanguage so aus:
Code: Alles auswählen
void Application::setLanguage(const QString& locale)
{
// remove previous
if (current)
{
removeTranslator(current);
}
// install new
current = translators.value(locale, 0);
if (current)
{
installTranslator(current);
}
}
Das klappt auch für mein Hauptfenster.
Ich besitze allerdings auch ein Infofenster. Das habe ich mit dem qt Designer erstellt und besitzt nur ein QLabel. Das rufe ich immer mal wieder mit unterschiedlichen Texten auf.
In dem Header meines MainWindow steht es so:
Code: Alles auswählen
Ui::MainWindow ui; //Das "Fenster"
Ui::Info infofenster; //Das Fenster für "Infos"
In meinem Hauptprogramm definiere ich es dann so:
Code: Alles auswählen
infowidget = new QWidget();
infofenster.setupUi(infowidget);
Dann rufe ich das infowidget immer auf wenn ich es gerade brauche und schließe es. Z.B :
Code: Alles auswählen
infofenster.label->setText(tr("Daten OK"));
modeminfowidget->show();
Ich hatte mit weiteren Fenster immer Probleme gehabt und bin mir nicht sicher ob es so überhaupt sein muss. Aber es funktioniert so gut.
Wenn ich die *.qm in der main.cpp lade, dann werden auch alle Texte übersetzt angezeigt.
Aber so wie ich es jetzt habe läuft es nicht.
Auch ein infofenster.retranslateUi(infowidget) hilft mir nicht
