From c281709029cf2d169627f6709135e173c4e3c9e5 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 16 Mar 2023 14:07:30 +0100 Subject: [PATCH] Change how translations are loaded This allows to add multiple translation files and not requires them to be named like the application id. --- nymea-app/main.cpp | 34 ++++++++----------- .../{nymea-app-de.ts => nymea-app.de.ts} | 0 .../{nymea-app-en.ts => nymea-app.en.ts} | 0 ...{nymea-app-en_US.ts => nymea-app.en_US.ts} | 0 .../{nymea-app-it.ts => nymea-app.it.ts} | 0 .../{nymea-app-ko.ts => nymea-app.ko.ts} | 0 .../{nymea-app-nl.ts => nymea-app.nl.ts} | 0 .../{nymea-app-tr.ts => nymea-app.tr.ts} | 0 .../{nymea-app-vi.ts => nymea-app.vi.ts} | 0 9 files changed, 15 insertions(+), 19 deletions(-) rename nymea-app/translations/{nymea-app-de.ts => nymea-app.de.ts} (100%) rename nymea-app/translations/{nymea-app-en.ts => nymea-app.en.ts} (100%) rename nymea-app/translations/{nymea-app-en_US.ts => nymea-app.en_US.ts} (100%) rename nymea-app/translations/{nymea-app-it.ts => nymea-app.it.ts} (100%) rename nymea-app/translations/{nymea-app-ko.ts => nymea-app.ko.ts} (100%) rename nymea-app/translations/{nymea-app-nl.ts => nymea-app.nl.ts} (100%) rename nymea-app/translations/{nymea-app-tr.ts => nymea-app.tr.ts} (100%) rename nymea-app/translations/{nymea-app-vi.ts => nymea-app.vi.ts} (100%) diff --git a/nymea-app/main.cpp b/nymea-app/main.cpp index bf6e87c5..ceead76b 100644 --- a/nymea-app/main.cpp +++ b/nymea-app/main.cpp @@ -110,26 +110,22 @@ int main(int argc, char *argv[]) qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); application.installTranslator(&qtTranslator); - - QTranslator appTranslator; - bool translationResult = appTranslator.load("nymea-app-" + QLocale().name(), ":/translations/"); - if (translationResult) { - qCDebug(dcApplication()) << "Loaded translation for locale" << QLocale(); - } else { - qCInfo(dcApplication()) << "Failed to load translations for locale" << QLocale(); + QStringList loadedTranslations; + foreach (const QFileInfo &qmFile, QDir(":/translations").entryInfoList({"*.qm"})) { + if (loadedTranslations.contains(qmFile.baseName())) { + continue; + } + QTranslator *translator = new QTranslator(); + bool loadResult = translator->load(qmFile.baseName() + "." + QLocale().name(), ":/translations"); + if (loadResult) { + application.installTranslator(translator); + loadedTranslations.append(qmFile.baseName()); + qCInfo(dcApplication()) << "Loaded translation" << qmFile.baseName(); + } else { + delete translator; + qCInfo(dcApplication()) << "Failed to load translation" << qmFile.baseName(); + } } - application.installTranslator(&appTranslator); - -#ifdef OVERLAY_PATH - QTranslator overlayTranslator; - translationResult = overlayTranslator.load(QString("%1-%2").arg(APPLICATION_NAME).arg(QLocale().name()), ":/translations"); - if (translationResult) { - qCDebug(dcApplication()) << "Loaded overlay translation for locale" << QString("%1-%2").arg(APPLICATION_NAME).arg(QLocale().name()); - } else { - qCInfo(dcApplication()) << "Failed to load overlay translations for locale" << QString("%1-%2").arg(APPLICATION_NAME).arg(QLocale().name()); - } - application.installTranslator(&overlayTranslator); -#endif Nymea::Core::registerQmlTypes(); Nymea::AirConditioning::registerQmlTypes(); diff --git a/nymea-app/translations/nymea-app-de.ts b/nymea-app/translations/nymea-app.de.ts similarity index 100% rename from nymea-app/translations/nymea-app-de.ts rename to nymea-app/translations/nymea-app.de.ts diff --git a/nymea-app/translations/nymea-app-en.ts b/nymea-app/translations/nymea-app.en.ts similarity index 100% rename from nymea-app/translations/nymea-app-en.ts rename to nymea-app/translations/nymea-app.en.ts diff --git a/nymea-app/translations/nymea-app-en_US.ts b/nymea-app/translations/nymea-app.en_US.ts similarity index 100% rename from nymea-app/translations/nymea-app-en_US.ts rename to nymea-app/translations/nymea-app.en_US.ts diff --git a/nymea-app/translations/nymea-app-it.ts b/nymea-app/translations/nymea-app.it.ts similarity index 100% rename from nymea-app/translations/nymea-app-it.ts rename to nymea-app/translations/nymea-app.it.ts diff --git a/nymea-app/translations/nymea-app-ko.ts b/nymea-app/translations/nymea-app.ko.ts similarity index 100% rename from nymea-app/translations/nymea-app-ko.ts rename to nymea-app/translations/nymea-app.ko.ts diff --git a/nymea-app/translations/nymea-app-nl.ts b/nymea-app/translations/nymea-app.nl.ts similarity index 100% rename from nymea-app/translations/nymea-app-nl.ts rename to nymea-app/translations/nymea-app.nl.ts diff --git a/nymea-app/translations/nymea-app-tr.ts b/nymea-app/translations/nymea-app.tr.ts similarity index 100% rename from nymea-app/translations/nymea-app-tr.ts rename to nymea-app/translations/nymea-app.tr.ts diff --git a/nymea-app/translations/nymea-app-vi.ts b/nymea-app/translations/nymea-app.vi.ts similarity index 100% rename from nymea-app/translations/nymea-app-vi.ts rename to nymea-app/translations/nymea-app.vi.ts