diff options
author | saturneric <[email protected]> | 2024-03-03 13:11:31 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-03-03 13:11:31 +0000 |
commit | b0221c662d71ccdfe584ccd9facc2543c03d100e (patch) | |
tree | 8eb615a6a82aa533757ded3d1302ac5798a926ca /src/ui/GpgFrontendUIInit.cpp | |
parent | fix: slove a ci issue on linux platform (diff) | |
download | GpgFrontend-b0221c662d71ccdfe584ccd9facc2543c03d100e.tar.gz GpgFrontend-b0221c662d71ccdfe584ccd9facc2543c03d100e.zip |
fix: translation doesn't refresh after switching
Diffstat (limited to 'src/ui/GpgFrontendUIInit.cpp')
-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); } } |