aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-03-03 13:11:31 +0000
committersaturneric <[email protected]>2024-03-03 13:11:31 +0000
commitb0221c662d71ccdfe584ccd9facc2543c03d100e (patch)
tree8eb615a6a82aa533757ded3d1302ac5798a926ca
parentfix: slove a ci issue on linux platform (diff)
downloadGpgFrontend-b0221c662d71ccdfe584ccd9facc2543c03d100e.tar.gz
GpgFrontend-b0221c662d71ccdfe584ccd9facc2543c03d100e.zip
fix: translation doesn't refresh after switching
-rw-r--r--resource/lfs/locale/ts/GpgFrontend.en_US.ts2
-rw-r--r--src/ui/GpgFrontendUIInit.cpp41
2 files changed, 26 insertions, 17 deletions
diff --git a/resource/lfs/locale/ts/GpgFrontend.en_US.ts b/resource/lfs/locale/ts/GpgFrontend.en_US.ts
index f04c2ff7..869b8b6c 100644
--- a/resource/lfs/locale/ts/GpgFrontend.en_US.ts
+++ b/resource/lfs/locale/ts/GpgFrontend.en_US.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
+<TS version="2.1" language="en_US">
<context>
<name>GpgFrontend::GpgDecryptResultAnalyse</name>
<message>
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);
}
}