diff options
author | saturneric <[email protected]> | 2024-03-03 13:12:05 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-03-03 13:12:05 +0000 |
commit | d472840a68f788680a47eba8b03ba051075336e7 (patch) | |
tree | 8eb615a6a82aa533757ded3d1302ac5798a926ca /src | |
parent | Merge branch 'dev/2.1.2/main' into develop (diff) | |
parent | fix: translation doesn't refresh after switching (diff) | |
download | GpgFrontend-d472840a68f788680a47eba8b03ba051075336e7.tar.gz GpgFrontend-d472840a68f788680a47eba8b03ba051075336e7.zip |
Merge branch 'dev/2.1.2/main' into develop
Diffstat (limited to '')
-rw-r--r-- | src/ui/GpgFrontendUIInit.cpp | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/ui/GpgFrontendUIInit.cpp b/src/ui/GpgFrontendUIInit.cpp index 08cf012d..32cbc968 100644 --- a/src/ui/GpgFrontendUIInit.cpp +++ b/src/ui/GpgFrontendUIInit.cpp @@ -41,6 +41,8 @@ namespace GpgFrontend::UI { +QList<QTranslator*> registered_translators; + extern void InitUITranslations(); void WaitEnvCheckingProcess() { @@ -213,31 +215,38 @@ void GPGFRONTEND_UI_EXPORT DestroyGpgFrontendUI() {} * */ void InitUITranslations() { + for (const auto& translator : registered_translators) { + QCoreApplication::removeTranslator(translator); + } + registered_translators.clear(); + auto* translator = new QTranslator(QCoreApplication::instance()); - if (translator->load(QLocale(), QLatin1String(PROJECT_NAME), - QLatin1String("."), QLatin1String(":/i18n"), - QLatin1String(".qm"))) { - GF_UI_LOG_DEBUG("load target translation file done, locale: {}", + if (translator->load(QLocale(), QLatin1String("qt"), QLatin1String("_"), + QLatin1String(":/i18n_qt"), QLatin1String(".qm"))) { + GF_UI_LOG_DEBUG("load qt translation file done, locale: {}", QLocale().name()); + QCoreApplication::installTranslator(translator); + registered_translators.append(translator); } - auto* base_translation = new QTranslator(QCoreApplication::instance()); - if (base_translation->load(QLocale(), QLatin1String("qt"), QLatin1String("_"), - QLatin1String(":/i18n_qt"), - QLatin1String(".qm"))) { - GF_UI_LOG_DEBUG("load qt translation file done, locale: {}", + translator = new QTranslator(QCoreApplication::instance()); + if (translator->load(QLocale(), QLatin1String("qtbase"), QLatin1String("_"), + QLatin1String(":/i18n_qt"), QLatin1String(".qm"))) { + GF_UI_LOG_DEBUG("load qtbase translation file done, locale: {}", QLocale().name()); - QCoreApplication::installTranslator(base_translation); + QCoreApplication::installTranslator(translator); + registered_translators.append(translator); } - base_translation = new QTranslator(QCoreApplication::instance()); - if (base_translation->load(QLocale(), QLatin1String("qtbase"), - QLatin1String("_"), QLatin1String(":/i18n_qt"), - QLatin1String(".qm"))) { - GF_UI_LOG_DEBUG("load qtbase translation file done, locale: {}", + translator = new QTranslator(QCoreApplication::instance()); + if (translator->load(QLocale(), QLatin1String(PROJECT_NAME), + QLatin1String("."), QLatin1String(":/i18n"), + QLatin1String(".qm"))) { + GF_UI_LOG_DEBUG("load target translation file done, locale: {}", QLocale().name()); - QCoreApplication::installTranslator(base_translation); + QCoreApplication::installTranslator(translator); + registered_translators.append(translator); } } |