Ich benutze Qt und möchte die Texte "nativ" übersetzen, die von Qt Widgets angezeigt werden. Unter "Texte nativ" verstehe ich zum Beispiel die, die in Kontextmenüs für Textänderungen (Kopieren, Einfügen, ...) angezeigt werden. HierQt - Gebaute Übersetzungen verwenden
ist, was ich bereits getan:
#include <QApplication>
#include <QDebug>
#include <QTranslator>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
if(translator.load("qt_fr.qm", QApplication::applicationDirPath())) {
qDebug() << a.installTranslator(&translator);
}
qDebug() << QFile::exists(QApplication::applicationDirPath() + "/qt_fr.qm"); // just to debug file existence
// MainWindow w; // not related to my question
// w.showMaximized(); // neither is this
return a.exec();
}
Die qt_fr.qm Datei befindet sich auf path_to_qt gelegen/Qt5.6.2/5,6/mingw49_32/Übersetzungen für Qt5.6.2 und MinGW Benutzer . Ich kopiere die genannte Datei in das laufende Softwareverzeichnis, aber der Übersetzer lädt sie immer nicht. Aber wenn ich meine eigene qm-Datei verwende (die aus einer .ts-Datei mit den Qt lupdate- und lrelease-Tools erstellt wurde), wird die qm-Datei ordnungsgemäß geladen und installiert.
Gibt es etwas, das ich vermisse oder falsch mache?
Qt wird zuerst ein Suffix (Standard '.qm') anhängen, also würde ich empfehlen, das aus dem Argument filename zu entfernen. Beachten Sie, dass in der Dokumentation empfohlen wird, die Überladung zu verwenden, die auch ein "QLocale" als erstes Argument akzeptiert. Zum Beispiel 'translator.load (QLocale :: French," qt ", QApplication :: applicationDirPath())'. –
Tatsächlich haben Sie Recht: Der Ladeprozess ist einfach, wenn dem Dateinamen keine Erweiterung hinzugefügt wird. Aber seit Qt Backtracks und Wiederholungen bei fehlgeschlagenem Ladevorgang hat, sollte das Hinzufügen der Erweiterung .qm nicht zum Ausfall geführt haben. Ich habe auch versucht, die Version mit QLocale, aber es funktioniert immer noch nicht. Jeder andere Vorschlag wäre willkommen. – misterFad
Darüber hinaus geht die Verwendung von QLocale davon aus, dass die zu ladende qm-Datei mit der Sprache übereinstimmt, die auf dem Betriebssystem installiert ist, auf dem unsere Software ausgeführt wird. Aber [manchmal] (https://camo.githubusercontent.com/8e48efe46e756e80f900584241c5c108ebc7fcef/68747470733a2f2f757365722e6f632d7374617469632e636f6d2f75706c6f61642f323031372f30312f32362f31343835343536393833393335385f696d6734372e706e67) können wir Englisch wählen, während Deutschsein (zum Beispiel). Das oben angegebene Snippet von mir funktioniert gut, wenn ich meine eigene .qm-Datei (lupdate & lrelease) verwende, aber wenn es darum geht, Qt-eingebaute .qm-Dateien zu laden, schlägt der Ladevorgang fehl. – misterFad