From 49aef77f3fe14c7f38d09944d69d5bbccf71ff15 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Thu, 7 May 2026 18:33:40 +0500 Subject: [PATCH] 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();