From 49aef77f3fe14c7f38d09944d69d5bbccf71ff15 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Thu, 7 May 2026 18:33:40 +0500 Subject: [PATCH 1/2] fix(translations): redownload index if it is missing after file reloading Signed-off-by: Octol1ttle --- launcher/Application.cpp | 21 ++++++++++----------- launcher/translations/TranslationsModel.cpp | 7 ++++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ff4013b1c..710b75162 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -937,15 +937,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) qInfo() << "<> Network done."; } - // load translations - { - m_translations.reset(new TranslationsModel("translations")); - auto bcp47Name = m_settings->get("Language").toString(); - m_translations->selectLanguage(bcp47Name); - qInfo() << "Your language is" << bcp47Name; - qInfo() << "<> Translations loaded."; - } - // Instance icons { auto setting = APPLICATION->settings()->getSetting("IconsDir"); @@ -1024,8 +1015,16 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) qInfo() << "<> Cache initialized."; } - // now we have network, download translation updates - m_translations->downloadIndex(); + // load translations + { + m_translations.reset(new TranslationsModel("translations")); + auto bcp47Name = m_settings->get("Language").toString(); + m_translations->selectLanguage(bcp47Name); + qInfo() << "Your language is" << bcp47Name; + qInfo() << "<> Translations loaded."; + + m_translations->downloadIndex(); + } // FIXME: what to do with these? m_profilers.insert("jprofiler", std::shared_ptr(new JProfilerFactory())); diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index ebbd7cdb6..54d792f0c 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -267,7 +267,12 @@ void TranslationsModel::reloadLocalFiles() { QMap languages = { { g_defaultLangCode, Language(g_defaultLangCode) } }; - readIndex(d->m_dir.absoluteFilePath("index_v2.json"), languages); + const auto indexPath = d->m_dir.absoluteFilePath("index_v2.json"); + if (!QFileInfo::exists(indexPath)) { + downloadIndex(); + return; + } + readIndex(indexPath, languages); auto entries = d->m_dir.entryInfoList({ "mmc_*.qm", "*.po" }, QDir::Files | QDir::NoDotAndDotDot); for (auto& entry : entries) { auto completeSuffix = entry.completeSuffix(); From d59b4b0ad7b8377b9f7f3a2d834ba02fa5487fa2 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Thu, 7 May 2026 20:15:38 +0500 Subject: [PATCH 2/2] fix(translations): do not reset user language if translations index is missing Signed-off-by: Octol1ttle --- launcher/Application.cpp | 7 ++----- launcher/translations/TranslationsModel.cpp | 13 ++++++------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 710b75162..efd63714d 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1018,12 +1018,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // load translations { m_translations.reset(new TranslationsModel("translations")); - auto bcp47Name = m_settings->get("Language").toString(); - m_translations->selectLanguage(bcp47Name); - qInfo() << "Your language is" << bcp47Name; - qInfo() << "<> Translations loaded."; - m_translations->downloadIndex(); + qInfo() << "Your language is" << m_translations->selectedLanguage(); + qInfo() << "<> Translations loaded."; } // FIXME: what to do with these? diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index 54d792f0c..7f905608b 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -179,6 +179,7 @@ TranslationsModel::TranslationsModel(const QString& path, QObject* parent) : QAb { d = std::make_unique(); d->m_dir.setPath(path); + d->m_selectedLanguage = APPLICATION->settings()->get("Language").toString(); FS::ensureFolderPathExists(path); reloadLocalFiles(); @@ -202,22 +203,20 @@ void TranslationsModel::indexReceived() { qDebug() << "Got translations index!"; d->m_indexJob.reset(); + reloadLocalFiles(); if (d->m_noLanguageSet) { - reloadLocalFiles(); - auto language = getSystemLocaleName(); if (!findLanguageAsOptional(language).has_value()) { language = getSystemLanguage(); } selectLanguage(language); - if (selectedLanguage() != g_defaultLangCode) { - updateLanguage(selectedLanguage()); - } APPLICATION->settings()->set("Language", selectedLanguage()); d->m_noLanguageSet = false; - } else if (d->m_selectedLanguage != g_defaultLangCode) { - downloadTranslation(d->m_selectedLanguage); + } + + if (selectedLanguage() != g_defaultLangCode) { + updateLanguage(selectedLanguage()); } }