remove translations before load
This commit is contained in:
@@ -14,6 +14,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class __QADTranslators__ {
|
||||||
|
public:
|
||||||
|
static QMap<QString, QTranslator *> translators;
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
QMap<QString, QTranslator *> __QADTranslators__::translators = QMap<QString, QTranslator *>();
|
||||||
|
|
||||||
|
|
||||||
QString QAD::userPath(QAD::LocationType loc, QString name) {
|
QString QAD::userPath(QAD::LocationType loc, QString name) {
|
||||||
QString dir, ext;
|
QString dir, ext;
|
||||||
switch (loc) {
|
switch (loc) {
|
||||||
@@ -58,6 +67,13 @@ QStringList QAD::resourcePaths(QString type) {
|
|||||||
|
|
||||||
|
|
||||||
void QAD::loadTranslations(QString lang) {
|
void QAD::loadTranslations(QString lang) {
|
||||||
|
QMapIterator<QString, QTranslator *> i(__QADTranslators__::translators);
|
||||||
|
while (i.hasNext()) {
|
||||||
|
i.next();
|
||||||
|
qApp->removeTranslator(i.value());
|
||||||
|
delete i.value();
|
||||||
|
}
|
||||||
|
__QADTranslators__::translators.clear();
|
||||||
if (lang.isEmpty())
|
if (lang.isEmpty())
|
||||||
lang = QLocale().bcp47Name();
|
lang = QLocale().bcp47Name();
|
||||||
QString short_lang = lang.left(2);
|
QString short_lang = lang.left(2);
|
||||||
@@ -72,6 +88,7 @@ void QAD::loadTranslations(QString lang) {
|
|||||||
QTranslator * tr = new QTranslator();
|
QTranslator * tr = new QTranslator();
|
||||||
if (tr->load(dit.filePath())) {
|
if (tr->load(dit.filePath())) {
|
||||||
qApp->installTranslator(tr);
|
qApp->installTranslator(tr);
|
||||||
|
__QADTranslators__::translators[dit.filePath()] = tr;
|
||||||
qDebug() << "Add tr" << dit.fileName();
|
qDebug() << "Add tr" << dit.fileName();
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Can`t load translation" << dit.fileName();
|
qDebug() << "Can`t load translation" << dit.fileName();
|
||||||
@@ -107,10 +124,10 @@ QStringList QAD::availableTranslations() {
|
|||||||
if (loc.language() != QLocale::C)
|
if (loc.language() != QLocale::C)
|
||||||
ret << lang[i];
|
ret << lang[i];
|
||||||
}
|
}
|
||||||
//qDebug() << "Can`t load translation" << dit.fileName();
|
|
||||||
delete tr;
|
|
||||||
}
|
}
|
||||||
|
delete tr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret.values();
|
return ret.values();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user