From 2d5404d830f744bc84156dd18384d47a4fac2d7a Mon Sep 17 00:00:00 2001 From: Chance Date: Wed, 31 Dec 2025 12:38:31 -0600 Subject: [PATCH] Patch system language selection on Windows (#242) --- src/citra_qt/citra_qt.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/citra_qt/citra_qt.cpp b/src/citra_qt/citra_qt.cpp index 6398d1f22..a134e4551 100644 --- a/src/citra_qt/citra_qt.cpp +++ b/src/citra_qt/citra_qt.cpp @@ -3959,14 +3959,35 @@ void GMainWindow::UpdateUITheme() { } void GMainWindow::LoadTranslation() { + bool loaded{false}; + + #ifdef _WIN32 + // Set the language to the first option in "preferred languages" Windows' OS settings + if (UISettings::values.language.isEmpty()) { + + const auto languages = QLocale::system().uiLanguages(QLocale::TagSeparator::Underscore); + for (const auto& lang : languages) { + // If the first language found is English, no need to install any translation + if (lang == QStringLiteral("en")) { + UISettings::values.language = lang; + return; + } + loaded = translator.load(lang, QStringLiteral(":/languages/")); + if (loaded) { + UISettings::values.language = lang; + break; + } + } + } + #endif + // If the selected language is English, no need to install any translation if (UISettings::values.language == QStringLiteral("en")) { return; } - bool loaded; - if (UISettings::values.language.isEmpty()) { + if (UISettings::values.language.isEmpty() && !loaded) { // Use the system's default locale loaded = translator.load(QLocale::system(), {}, {}, QStringLiteral(":/languages/")); } else {