la méthode load() de QTranslator
Avec la méthode load(), on l'inconvénient suivant : The previous contents of this translator object are discarded.
Lorsque je dispose de deux fichiers .qm, l'un pour l'application principale et l'autre pour le plugin, et je dois les loader les deux dans main.cpp.
Y'a t-il une solution pourque je puisse générer un seul fichier .qm pour l'application et ses différents plugins?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include "../headers/ManagementConsoleView.h"
#include <iostream>
#include <QtGui>
#include <QApplication>
#include <QTranslator>
#include <QLocale>
#include <QLibraryInfo>
#include <QDir>
int main(int argc, char *argv[]) {
Q_INIT_RESOURCE(ManagementConsole);
QApplication app(argc, argv);
// Traduction des chaines predefinies par Qt dans notre langue
QString locale = QLocale::system().name();
QTranslator translator;
translator.load(QString("qt_") + locale, QLibraryInfo::location(
QLibraryInfo::TranslationsPath));
app.installTranslator(&translator);
//======================================================
//la clef registre pour l'application
//======================================================
QCoreApplication::setOrganizationName("dotfoss");
QCoreApplication::setOrganizationDomain("dotfoss.com");
QCoreApplication::setApplicationName("UTMC");
QSettings settings;
QString LanguageFile;
LanguageFile = settings.value("LanguageFile").toString();
translator.load(LanguageFile);
QDir dir(":/Languages/TranslationsPlugins");
QStringList fileNames = dir.entryList(QStringList(
"*_*.qm"), QDir::Files, QDir::Name);
QMutableStringListIterator i(fileNames);
while (i.hasNext()) {
i.next();
i.setValue(dir.filePath(i.value()));
}
for (int j = 0; j < fileNames.size(); j++)
std::cout << qPrintable(fileNames.at(j)) << std::endl;
QString Language;
Language = settings.value("Language").toString();
for (int i = 0; i < fileNames.size(); i++) {
QStringList string1;
string1.append(fileNames.at(i).split("_"));
QStringList string2;
string2.append(string1.value(1).split("."));
QString string3;
string3 = string2.value(0);
if (Language == string3) {
std::cout << qPrintable(fileNames.at(i)) << std::endl;
//translator.load(QmFiles.at(i));
}
}
app.installTranslator(&translator);
ManagementConsoleView console;
if (console.SslCheck()) {
ConnectionView connection(&console);
int ret = connection.exec();
if (ret == 1) {
console.Init();
//console.show();
} else
exit(1);
} else
exit(1);
return app.exec();
} |