diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ff4013b1c..efd63714d 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,13 @@ 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")); + m_translations->downloadIndex(); + qInfo() << "Your language is" << m_translations->selectedLanguage(); + qInfo() << "<> Translations loaded."; + } // 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..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()); } } @@ -267,7 +266,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();