Przeglądaj źródła

settings: warn on invalid regon/language combinations

Colin Kinloch 3 lat temu
rodzic
commit
2ccf175324

+ 30 - 0
src/yuzu/configuration/configure_system.cpp

@@ -14,6 +14,20 @@
 #include "yuzu/configuration/configuration_shared.h"
 #include "yuzu/configuration/configure_system.h"
 
+constexpr std::array<u32, 7> LOCALE_BLOCKLIST{
+    0b100011100001100000, // Japan
+    0b000001101001100100, // Americas
+    0b100110100001000010, // Europe
+    0b100110100001000010, // Australia
+    0b000000000000000000, // China
+    0b100111100001000000, // Korea
+    0b100111100001000000, // Taiwan
+};
+
+static bool IsValidLocale(u32 region_index, u32 language_index) {
+    return ((LOCALE_BLOCKLIST[region_index] >> language_index) & 1) == 0;
+}
+
 ConfigureSystem::ConfigureSystem(Core::System& system_, QWidget* parent)
     : QWidget(parent), ui{std::make_unique<Ui::ConfigureSystem>()}, system{system_} {
     ui->setupUi(this);
@@ -34,6 +48,22 @@ ConfigureSystem::ConfigureSystem(Core::System& system_, QWidget* parent)
         }
     });
 
+    const auto locale_check = [this](int index) {
+        const bool valid_locale =
+            IsValidLocale(ui->combo_region->currentIndex(), ui->combo_language->currentIndex());
+        ui->label_warn_invalid_locale->setVisible(!valid_locale);
+        if (!valid_locale) {
+            ui->label_warn_invalid_locale->setText(
+                tr("Warning: \"%1\" is not a valid language for region \"%2\"")
+                    .arg(ui->combo_language->currentText())
+                    .arg(ui->combo_region->currentText()));
+        }
+    };
+
+    connect(ui->combo_language, qOverload<int>(&QComboBox::currentIndexChanged), this,
+            locale_check);
+    connect(ui->combo_region, qOverload<int>(&QComboBox::currentIndexChanged), this, locale_check);
+
     ui->label_console_id->setVisible(Settings::IsConfiguringGlobal());
     ui->button_regenerate_console_id->setVisible(Settings::IsConfiguringGlobal());
 

+ 11 - 1
src/yuzu/configuration/configure_system.ui

@@ -326,7 +326,7 @@
             </item>
             <item>
              <property name="text">
-              <string>English</string>
+              <string>American English</string>
              </property>
             </item>
             <item>
@@ -545,6 +545,16 @@
        </property>
       </spacer>
      </item>
+     <item>
+      <widget class="QLabel" name="label_warn_invalid_locale">
+       <property name="text">
+        <string></string>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
      <item>
       <widget class="QLabel" name="label_disable_info">
        <property name="text">