From 7758f708335994952ded51df425b76a81c225957 Mon Sep 17 00:00:00 2001 From: crueter Date: Wed, 25 Feb 2026 00:41:21 +0100 Subject: [PATCH] [core] Fix language index mismatches (#3629) For reasons I am not knowledgeable enough to answer, NACP language and nn::settings::Language don't match. PR #3587 however erroneously matched language_index directly to NACP language which caused those weird mismatches (since idx 2 = French actually matches up to an NACP language of Japanese). So to get around that just go back to the mapping of language idx -> nacp language Signed-off-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3629 Reviewed-by: MaranBr Reviewed-by: DraVee --- src/core/file_sys/control_metadata.cpp | 29 +++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/core/file_sys/control_metadata.cpp b/src/core/file_sys/control_metadata.cpp index 23514bed01..f86d22d627 100644 --- a/src/core/file_sys/control_metadata.cpp +++ b/src/core/file_sys/control_metadata.cpp @@ -108,7 +108,34 @@ NACP::NACP(VirtualFile file) NACP::~NACP() = default; const LanguageEntry& NACP::GetLanguageEntry() const { - u32 index = static_cast(Settings::values.language_index.GetValue()); + + auto const language = []{ + switch (Settings::values.language_index.GetValue()) { + case Settings::Language::Chinese: return Language::SimplifiedChinese; + case Settings::Language::ChineseSimplified: return Language::SimplifiedChinese; + case Settings::Language::ChineseTraditional: return Language::TraditionalChinese; + case Settings::Language::Dutch: return Language::Dutch; + case Settings::Language::EnglishAmerican: return Language::AmericanEnglish; + case Settings::Language::EnglishBritish: return Language::BritishEnglish; + case Settings::Language::French: return Language::French; + case Settings::Language::FrenchCanadian: return Language::CanadianFrench; + case Settings::Language::German: return Language::German; + case Settings::Language::Italian: return Language::Italian; + case Settings::Language::Korean: return Language::Korean; + case Settings::Language::Japanese: return Language::Japanese; + case Settings::Language::Portuguese: return Language::Portuguese; + case Settings::Language::PortugueseBrazilian: return Language::BrazilianPortuguese; + case Settings::Language::Russian: return Language::Russian; + case Settings::Language::Spanish: return Language::Spanish; + case Settings::Language::SpanishLatin: return Language::LatinAmericanSpanish; + case Settings::Language::Taiwanese: return Language::SimplifiedChinese; + case Settings::Language::Thai: return Language::Thai; + case Settings::Language::Polish: return Language::Polish; + default: return Language::AmericanEnglish; + } + }(); + + u32 index = u32(language); if (index < language_entries.size() && !language_entries[index].GetApplicationName().empty()) { return language_entries[index];