Browse Source

Merge pull request #6258

powerjungle (1):
      fix(ui): system translation not being updated
reviewable/pr6264/r1
sudden6 5 years ago
parent
commit
ff1ab07a21
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
  1. 28
      src/widget/translator.cpp
  2. 3
      src/widget/translator.h

28
src/widget/translator.cpp

@ -28,7 +28,8 @@ @@ -28,7 +28,8 @@
#include <QTranslator>
#include <algorithm>
QTranslator* Translator::translator{nullptr};
QTranslator* Translator::core_translator{nullptr};
QTranslator* Translator::app_translator{nullptr};
QVector<Translator::Callback> Translator::callbacks;
QMutex Translator::lock;
@ -39,31 +40,38 @@ void Translator::translate(const QString& localeName) @@ -39,31 +40,38 @@ void Translator::translate(const QString& localeName)
{
QMutexLocker locker{&lock};
if (!translator)
translator = new QTranslator();
if (!core_translator)
core_translator = new QTranslator();
if (!app_translator)
app_translator = new QTranslator();
// Remove old translations
QCoreApplication::removeTranslator(core_translator);
QApplication::removeTranslator(app_translator);
// Load translations
QCoreApplication::removeTranslator(translator);
QString locale = localeName.isEmpty() ? QLocale::system().name().section('_', 0, 0) : localeName;
if (locale != "en") {
if (translator->load(locale, ":translations/")) {
if (core_translator->load(locale, ":translations/")) {
qDebug() << "Loaded translation" << locale;
// system menu translation
QTranslator* qtTranslator = new QTranslator();
// System menu translation
QString s_locale = "qt_" + locale;
QString location = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
if (qtTranslator->load(s_locale, location)) {
QApplication::installTranslator(qtTranslator);
if (app_translator->load(s_locale, location)) {
QApplication::installTranslator(app_translator);
qDebug() << "System translation loaded" << locale;
} else {
qDebug() << "System translation not loaded" << locale;
}
// Application translation
QCoreApplication::installTranslator(core_translator);
} else {
qDebug() << "Error loading translation" << locale;
}
QCoreApplication::installTranslator(translator);
}
// After the language is changed from RTL to LTR, the layout direction isn't

3
src/widget/translator.h

@ -38,5 +38,6 @@ private: @@ -38,5 +38,6 @@ private:
using Callback = QPair<void*, std::function<void()>>;
static QVector<Callback> callbacks;
static QMutex lock;
static QTranslator* translator;
static QTranslator* core_translator;
static QTranslator* app_translator;
};

Loading…
Cancel
Save