diff options
Diffstat (limited to 'src/core/Translator.cpp')
-rw-r--r-- | src/core/Translator.cpp | 70 |
1 files changed, 24 insertions, 46 deletions
diff --git a/src/core/Translator.cpp b/src/core/Translator.cpp index 4e3f568cb..ff7dafde5 100644 --- a/src/core/Translator.cpp +++ b/src/core/Translator.cpp @@ -27,7 +27,7 @@ #include "config-keepassx.h" #include "core/Config.h" -#include "core/FilePath.h" +#include "core/Resources.h" /** * Install all KeePassXC and Qt translators. @@ -35,7 +35,7 @@ void Translator::installTranslators() { QStringList languages; - QString languageSetting = config()->get("GUI/Language").toString(); + QString languageSetting = config()->get(Config::GUI_Language).toString(); if (languageSetting.isEmpty() || languageSetting == "system") { // NOTE: this is a workaround for the terrible way Qt loads languages // using the QLocale::uiLanguages() approach. Instead, we search each @@ -49,22 +49,9 @@ void Translator::installTranslators() // Always try to load english last languages << "en_US"; - const QStringList paths = { -#ifdef QT_DEBUG - QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR), -#endif - filePath()->dataPath("translations")}; - - bool translationsLoaded = false; - for (const QString& path : paths) { - installQtTranslator(languages, path); - if (installTranslator(languages, path)) { - translationsLoaded = true; - break; - } - } - - if (!translationsLoaded) { + const auto path = resources()->dataPath("translations"); + installQtTranslator(languages, path); + if (!installTranslator(languages, path)) { // couldn't load configured language or fallback qWarning("Couldn't load translations."); } @@ -117,40 +104,31 @@ bool Translator::installQtTranslator(const QStringList& languages, const QString */ QList<QPair<QString, QString>> Translator::availableLanguages() { - const QStringList paths = { -#ifdef QT_DEBUG - QString("%1/share/translations").arg(KEEPASSX_BINARY_DIR), -#endif - filePath()->dataPath("translations")}; - QList<QPair<QString, QString>> languages; languages.append(QPair<QString, QString>("system", "System default")); QRegularExpression regExp("^keepassx_([a-zA-Z_]+)\\.qm$", QRegularExpression::CaseInsensitiveOption); - for (const QString& path : paths) { - const QStringList fileList = QDir(path).entryList(); - for (const QString& filename : fileList) { - QRegularExpressionMatch match = regExp.match(filename); - if (match.hasMatch()) { - QString langcode = match.captured(1); - if (langcode == "en") { - continue; - } - - QLocale locale(langcode); - QString languageStr = QLocale::languageToString(locale.language()); - if (langcode == "la") { - // langcode "la" (Latin) is translated into "C" by QLocale::languageToString() - languageStr = "Latin"; - } - QString countryStr; - if (langcode.contains("_")) { - countryStr = QString(" (%1)").arg(QLocale::countryToString(locale.country())); - } + const QStringList fileList = QDir(resources()->dataPath("translations")).entryList(); + for (const QString& filename : fileList) { + QRegularExpressionMatch match = regExp.match(filename); + if (match.hasMatch()) { + QString langcode = match.captured(1); + if (langcode == "en") { + continue; + } - QPair<QString, QString> language(langcode, languageStr + countryStr); - languages.append(language); + QLocale locale(langcode); + QString languageStr = QLocale::languageToString(locale.language()); + if (langcode == "la") { + // langcode "la" (Latin) is translated into "C" by QLocale::languageToString() + languageStr = "Latin"; } + if (langcode.contains("_")) { + languageStr += QString(" (%1)").arg(QLocale::countryToString(locale.country())); + } + + QPair<QString, QString> language(langcode, languageStr); + languages.append(language); } } |