diff options
| -rw-r--r-- | src/yuzu/configuration/configure_system.cpp | 30 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.ui | 12 | 
2 files changed, 41 insertions, 1 deletions
| diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 9b14e5903..37a98bea1 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/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()); diff --git a/src/yuzu/configuration/configure_system.ui b/src/yuzu/configuration/configure_system.ui index 46892f5c1..0459cd924 100644 --- a/src/yuzu/configuration/configure_system.ui +++ b/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> @@ -546,6 +546,16 @@        </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">          <string>System settings are available only when game is not running.</string> | 
