From 8fd1452174f27a9bd0e2bd5754565d3ddc50c147 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 1 Jul 2023 23:43:05 +0200 Subject: [PATCH] Allow clearing previously installed translation files --- resources/resources.cpp | 19 +++++++++++++++++++ resources/resources.h | 1 + 2 files changed, 20 insertions(+) diff --git a/resources/resources.cpp b/resources/resources.cpp index 3698fbe..bc96f63 100644 --- a/resources/resources.cpp +++ b/resources/resources.cpp @@ -68,6 +68,11 @@ void cleanup() */ namespace TranslationFiles { +/*! + * \brief The translators installed via the load-functions in this namespace. + */ +static QList translators; + /*! * \brief Allows to set an additional search path for translation files. * \remarks This path is considered *before* the default directories. @@ -132,6 +137,7 @@ void loadQtTranslationFile(initializer_list repositoryNames, const QStr || qtTranslator->load(fileName, path = QStringLiteral("../share/qt/translations")) || qtTranslator->load(fileName, path = QStringLiteral(":/translations"))) { QCoreApplication::installTranslator(qtTranslator); + translators.append(qtTranslator); if (debugTranslations) { cerr << "Loading translation file for Qt repository \"" << repoName.toLocal8Bit().data() << "\" and the locale \"" << localeName.toLocal8Bit().data() << "\" from \"" << path.toLocal8Bit().data() << "\"." << endl; @@ -230,6 +236,7 @@ void loadApplicationTranslationFile(const QString &configName, const QString &ap || appTranslator->load(fileName, path = QStringLiteral(APP_INSTALL_PREFIX "/share/") % directoryName % QStringLiteral("/translations")) || appTranslator->load(fileName, path = QStringLiteral(":/translations"))) { QCoreApplication::installTranslator(appTranslator); + translators.append(appTranslator); if (qEnvironmentVariableIsSet("QT_DEBUG_TRANSLATIONS")) { logTranslationEvent("Loading", configName, applicationName, localeName, path); } @@ -267,6 +274,18 @@ void loadApplicationTranslationFile(const QString &configName, const std::initia loadApplicationTranslationFile(configName, applicationName, localeName); } } + +/*! + * \brief Clears all translation files previously loaded via the load-functions in this namespace. + */ +void clearTranslationFiles() +{ + for (auto *const translator : translators) { + QCoreApplication::removeTranslator(translator); + } + translators.clear(); +} + } // namespace TranslationFiles /*! diff --git a/resources/resources.h b/resources/resources.h index c9ee7a3..9a05ea3 100644 --- a/resources/resources.h +++ b/resources/resources.h @@ -53,6 +53,7 @@ QT_UTILITIES_EXPORT void loadApplicationTranslationFile(const QString &configNam QT_UTILITIES_EXPORT void loadApplicationTranslationFile(const QString &configName, const std::initializer_list &applicationNames); QT_UTILITIES_EXPORT void loadApplicationTranslationFile( const QString &configName, const std::initializer_list &applicationNames, const QString &localeName); +QT_UTILITIES_EXPORT void clearTranslationFiles(); } // namespace TranslationFiles namespace ApplicationInstances {