Ich musste mein Englisch UI in Französisch übersetzen, also tat ich all notwendig mit .ts und .qm Dateien, in der QTranslator Klasse laden, und es das QApplication installieren:Warum wurde meine C++ Qt UI übersetzt, aber nicht meine QStrings in meinem Programm?
//in the InterfaceWidget constructor:
QTranslator myappTranslator;
bool loaded = myappTranslator.load("myApp_" + QLocale::system().name());
qDebug() << "Is translation file loaded?" << loaded; // RETURNS TRUE
QApplication::installTranslator(&myappTranslator);
ui.setupUi(this);
ui.retranslateUi(this); //works, it translates the UI
Später schaffe ich zum InterfaceWidget ein anderes Widget (in einem Register) genannt ConfigurationTabUI und befestigen: richtig
m_ConfigurationTabUI = new ConfigurationTabUI(ui.configTab);
die entsprechende UI auch auf Französisch übersetzt.
Und hier ist mein Problem: in den Methoden des ConfigurationTabUI, es funktioniert nicht, wenn ich versuche, eine einfache QString zu übersetzen:
void ConfigurationTabUI::on_ValidButton_clicked(){
QString msg(ConfigurationTabUI::tr("message to translate"));
qDebug() << "translated string: " << msg; // NOT TRANSLATED
}
Ich habe wirklich keine Ahnung, warum ... Vielen Dank für Eure Hilfe.
Hinweis: I Verwenden Sie Qt5.2, und ich habe überprüft, dass die .ts-Datei die richtige übersetzte Zeichenfolge enthält.
Was Sie drucken ist nicht die gleiche Variable in dem Sie die übersetzte String gespeichert. Sie haben die Übersetzung in "msg" gespeichert, aber "l_sMsg" gedruckt, was nirgendwo anders definiert ist und wir haben keine Ahnung, wofür es eingestellt sein könnte. Wenn es sich um einen Tippfehler handelt, fixiere die Frage und dann können wir es uns noch einmal ansehen. – goug
Ah, sorry, es war ein Tippfehler ... Danke, es anzuschauen – toussa
Hat die 'ConfigurationTabUI' Klasse das' Q_OBJECT' Makro? Was passiert, wenn Sie 'QObject :: tr' anstelle von' ConfigurationTabUI :: tr' verwenden? – Mike