diff options
author | Philipp David <pd@3b.pm> | 2022-01-13 10:20:53 +0100 |
---|---|---|
committer | Philipp David <pd@3b.pm> | 2022-01-17 09:52:04 +0100 |
commit | b9beb3c7d27f41b601c37caf94044015b0a80cc7 (patch) | |
tree | 95ddc38c0d4852ba76c3ca362e22f9bcad649165 /launcher/translations | |
parent | 2dd2555a63a3098359e5a9873b748619b20b98ef (diff) | |
download | PrismLauncher-b9beb3c7d27f41b601c37caf94044015b0a80cc7.tar.gz PrismLauncher-b9beb3c7d27f41b601c37caf94044015b0a80cc7.tar.bz2 PrismLauncher-b9beb3c7d27f41b601c37caf94044015b0a80cc7.zip |
Sort system locale to front of list
Diffstat (limited to 'launcher/translations')
-rw-r--r-- | launcher/translations/TranslationsModel.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index aa76faa2..0cf4d548 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -144,6 +144,9 @@ struct TranslationsModel::Private std::unique_ptr<POTranslator> m_po_translator; QFileSystemWatcher *watcher; + const QString m_system_locale = QLocale::system().name(); + const QString m_system_language = m_system_locale.split('_').front(); + bool no_language_set = false; }; @@ -170,12 +173,12 @@ void TranslationsModel::translationDirChanged(const QString& path) if (d->no_language_set) { - auto bcp47Name = QLocale::system().name(); - if (!findLanguage(bcp47Name)) + auto language = d->m_system_locale; + if (!findLanguage(language)) { - bcp47Name = bcp47Name.split('_').front(); + language = d->m_system_language; } - selectLanguage(bcp47Name); + selectLanguage(language); if (selectedLanguage() != defaultLangCode) { updateLanguage(selectedLanguage()); @@ -340,8 +343,19 @@ void TranslationsModel::reloadLocalFiles() { d->m_languages.append(language); } - std::sort(d->m_languages.begin(), d->m_languages.end(), [](const Language& a, const Language& b) { - return a.key.compare(b.key) < 0; + std::sort(d->m_languages.begin(), d->m_languages.end(), [this](const Language& a, const Language& b) { + if (a.key != b.key) + { + if (a.key == d->m_system_locale || a.key == d->m_system_language) + { + return true; + } + if (b.key == d->m_system_locale || b.key == d->m_system_language) + { + return false; + } + } + return a.key < b.key; }); endInsertRows(); } |