|
|
@@ -81,10 +81,8 @@ MainWindow::MainWindow(QWidget * parent)
|
|
|
load(); // load FS before UI
|
|
|
|
|
|
bool setupCompleted = settings["launcher"]["setupCompleted"].Bool();
|
|
|
-
|
|
|
- std::string currentLanguage = settings["general"]["language"].String();
|
|
|
-
|
|
|
- if (!setupCompleted && currentLanguage.empty())
|
|
|
+
|
|
|
+ if (!setupCompleted)
|
|
|
detectPreferredLanguage();
|
|
|
|
|
|
updateTranslation(); // load translation
|
|
|
@@ -132,31 +130,47 @@ MainWindow::MainWindow(QWidget * parent)
|
|
|
|
|
|
void MainWindow::detectPreferredLanguage()
|
|
|
{
|
|
|
- auto appLanguages = QLocale().uiLanguages();
|
|
|
- auto sysLanguages = QLocale::system().uiLanguages();
|
|
|
-
|
|
|
- const auto &preferredLanguages = (appLanguages != sysLanguages && !appLanguages.isEmpty()) ? appLanguages : sysLanguages;
|
|
|
-
|
|
|
- std::string selectedLanguage;
|
|
|
-
|
|
|
- for (auto const & userLang : preferredLanguages)
|
|
|
- {
|
|
|
- logGlobal->info("Preferred language: %s", userLang.toStdString());
|
|
|
-
|
|
|
- for (auto const & vcmiLang : Languages::getLanguageList())
|
|
|
- {
|
|
|
- if (vcmiLang.tagIETF == userLang.toStdString() && vcmiLang.selectable)
|
|
|
- selectedLanguage = vcmiLang.identifier;
|
|
|
- }
|
|
|
-
|
|
|
- if (!selectedLanguage.empty())
|
|
|
- {
|
|
|
- logGlobal->info("Selected language: %s", selectedLanguage);
|
|
|
- Settings node = settings.write["general"]["language"];
|
|
|
- node->String() = selectedLanguage;
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
+ // Skip autodetection if language is already set to a valid VCMI language
|
|
|
+ std::string currentLanguage = settings["general"]["language"].String();
|
|
|
+
|
|
|
+ if (!currentLanguage.empty())
|
|
|
+ {
|
|
|
+ for (const auto &vcmiLang : Languages::getLanguageList())
|
|
|
+ {
|
|
|
+ if (vcmiLang.identifier == currentLanguage && vcmiLang.selectable)
|
|
|
+ {
|
|
|
+ logGlobal->info("Language '%s' is already valid, skipping autodetection", currentLanguage);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Proceed with autodetection
|
|
|
+ auto appLanguages = QLocale().uiLanguages();
|
|
|
+ auto sysLanguages = QLocale::system().uiLanguages();
|
|
|
+
|
|
|
+ const auto &preferredLanguages = (appLanguages != sysLanguages && !appLanguages.isEmpty()) ? appLanguages : sysLanguages;
|
|
|
+
|
|
|
+ std::string selectedLanguage;
|
|
|
+
|
|
|
+ for (const auto &userLang : preferredLanguages)
|
|
|
+ {
|
|
|
+ logGlobal->info("Preferred language: %s", userLang.toStdString());
|
|
|
+
|
|
|
+ for (const auto &vcmiLang : Languages::getLanguageList())
|
|
|
+ {
|
|
|
+ if (vcmiLang.tagIETF == userLang.toStdString() && vcmiLang.selectable)
|
|
|
+ selectedLanguage = vcmiLang.identifier;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!selectedLanguage.empty())
|
|
|
+ {
|
|
|
+ logGlobal->info("Detected language: %s", selectedLanguage);
|
|
|
+ Settings node = settings.write["general"]["language"];
|
|
|
+ node->String() = selectedLanguage;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void MainWindow::enterSetup()
|