From 78bda011a30d37ca1b042027979afa3ed9596c69 Mon Sep 17 00:00:00 2001 From: SunderB Date: Wed, 2 Aug 2023 22:22:30 +0100 Subject: [PATCH 1/4] i18n: Only show one language in dialog box when switching to system language --- app/gui/qt/widgets/settingswidget.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/gui/qt/widgets/settingswidget.cpp b/app/gui/qt/widgets/settingswidget.cpp index c1c4209801..b6a9039522 100644 --- a/app/gui/qt/widgets/settingswidget.cpp +++ b/app/gui/qt/widgets/settingswidget.cpp @@ -622,11 +622,7 @@ void SettingsWidget::updateUILanguage(int index) { QString old_lang = sonicPii18n->getNativeLanguageName(piSettings->language); QString new_lang = sonicPii18n->getNativeLanguageName(lang); - // Load new language - //QString language = sonicPii18n->determineUILanguage(lang); - //sonicPii18n->loadTranslations(language); - //QString title_new = tr("Updated the UI language from %s to %s").arg(); - + // Show confirmation box QMessageBox msgBox(this); msgBox.setText(QString(tr("You've selected a new language: %1")).arg(new_lang)); QString info_text = ( @@ -636,7 +632,9 @@ void SettingsWidget::updateUILanguage(int index) { ); if (lang == "system_language") { - info_text = tr("System languages found: %1").arg(sonicPii18n->getNativeLanguageNames(sonicPii18n->getSystemLanguages()).join(", ")) + "\n" + info_text; + // Determine the actual language to load + QString actual_lang = sonicPii18n->determineUILanguage(lang); + info_text = tr("System language found: %1").arg(sonicPii18n->getNativeLanguageName(actual_lang)) + "\n" + info_text; } msgBox.setInformativeText(info_text); From 5206449676a8575b95ffde845c6e600e1ab56ca2 Mon Sep 17 00:00:00 2001 From: SunderB Date: Wed, 2 Aug 2023 22:23:12 +0100 Subject: [PATCH 2/4] i18n: Fix system language detection when the language is generic English --- app/gui/qt/utils/sonicpi_i18n.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/gui/qt/utils/sonicpi_i18n.cpp b/app/gui/qt/utils/sonicpi_i18n.cpp index d2f1f2337f..bf970761f0 100644 --- a/app/gui/qt/utils/sonicpi_i18n.cpp +++ b/app/gui/qt/utils/sonicpi_i18n.cpp @@ -26,7 +26,6 @@ SonicPii18n::~SonicPii18n() { QString SonicPii18n::determineUILanguage(QString lang_pref) { QStringList available_languages = getAvailableLanguages(); - //std::cout << available_languages.join("\n").toUtf8().constData() << std::endl; QLocale locale; if (lang_pref != "system_language") { @@ -45,7 +44,7 @@ QString SonicPii18n::determineUILanguage(QString lang_pref) { } else { QStringList preferred_languages = locale.uiLanguages(); // If the setting is set to system_language... - // ...run through the list of preferred languages + // ...run through the list of preferred languages std::cout << "[GUI] [i18n] - Looping through preferred ui languages" << std::endl; QString l; @@ -53,9 +52,10 @@ QString SonicPii18n::determineUILanguage(QString lang_pref) { l = preferred_languages[i]; l.replace("-", "_"); - //std::cout << preferred_languages[i].toUtf8().constData() << std::endl; if (available_languages.contains(l)) { - return l; + return l; + } else if (l == "en" || l == "C") { // Catch generic English lang codes + return "en"; } } } From a131b0c2ce51a18164cf993e4f22f32a635e7795 Mon Sep 17 00:00:00 2001 From: SunderB Date: Wed, 2 Aug 2023 23:18:08 +0100 Subject: [PATCH 3/4] i18n: Only show the loaded language in lang settings detail text when using the system language --- app/gui/qt/widgets/settingswidget.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/gui/qt/widgets/settingswidget.cpp b/app/gui/qt/widgets/settingswidget.cpp index b6a9039522..e981df69e6 100644 --- a/app/gui/qt/widgets/settingswidget.cpp +++ b/app/gui/qt/widgets/settingswidget.cpp @@ -918,10 +918,7 @@ void SettingsWidget::settingsChanged() { language_detail_text += "Failed to load language translation. Using English (UK)."; } if (piSettings->language == "system_language") { - language_detail_text += ( - tr("System languages: %1\n").arg(sonicPii18n->getNativeLanguageNames(sonicPii18n->getSystemLanguages()).join(", ")) - + tr("Current UI language: %1\n").arg(sonicPii18n->getNativeLanguageName(sonicPii18n->currentlyLoadedLanguage())) - ); + language_detail_text += tr("System language: %1\n").arg(sonicPii18n->getNativeLanguageName(sonicPii18n->currentlyLoadedLanguage())); } language_details_label->setText(language_detail_text); From b00b120e02c68736d19ed020dbae89f5e845f241 Mon Sep 17 00:00:00 2001 From: SunderB Date: Wed, 2 Aug 2023 23:46:00 +0100 Subject: [PATCH 4/4] i18n: Add native language name for Arabic --- app/server/ruby/bin/qt-doc.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/server/ruby/bin/qt-doc.rb b/app/server/ruby/bin/qt-doc.rb index 8d09a88aca..fe91e9e29f 100755 --- a/app/server/ruby/bin/qt-doc.rb +++ b/app/server/ruby/bin/qt-doc.rb @@ -31,6 +31,7 @@ # List of all languages with GUI translation files @lang_names = Hash[ + "ar" => "اَلْعَرَبِيَّةُ", # Arabic "bg" => "български", # Bulgarian "bn" => "বাংলা", # Bengali/Bangla "bs" => "Bosanski", # Bosnian