lime_qt: Switch to GetUserDefaultUILanguage to fetch active display language on Windows

This commit is contained in:
Kleidis 2024-10-24 03:41:41 +02:00 committed by OpenSauce04
parent a5ad887771
commit d4b96557b8
2 changed files with 26 additions and 7 deletions

View File

@ -3515,16 +3515,32 @@ void GMainWindow::LoadTranslation() {
return;
}
bool loaded;
QString language = UISettings::values.language;
if (UISettings::values.language.isEmpty()) {
// Use the system's default locale
loaded = translator.load(QLocale::system(), {}, {}, QStringLiteral(":/languages/"));
} else {
// Otherwise load from the specified file
loaded = translator.load(UISettings::values.language, QStringLiteral(":/languages/"));
if (language.isEmpty()) {
#ifdef _WIN32
// Use Windows API to get the active display language
LANGID lang_id = GetUserDefaultUILanguage();
wchar_t locale_name[LOCALE_NAME_MAX_LENGTH];
if (LCIDToLocaleName(MAKELCID(lang_id, SORT_DEFAULT), locale_name, LOCALE_NAME_MAX_LENGTH,
0)) {
char locale_name_str[LOCALE_NAME_MAX_LENGTH];
WideCharToMultiByte(CP_UTF8, 0, locale_name, -1, locale_name_str,
LOCALE_NAME_MAX_LENGTH, nullptr, nullptr);
language = QString::fromUtf8(locale_name_str);
} else {
language = QLocale::system().name();
}
#else
language = QLocale::system().name();
#endif
}
// Replace dashes with underscores for compatibility with translation files
language.replace(QLatin1Char('-'), QLatin1Char('_'));
bool loaded = translator.load(language, QStringLiteral(":/languages/"));
if (loaded) {
qApp->installTranslator(&translator);
} else {

View File

@ -321,6 +321,9 @@ private:
GameListPlaceholder* game_list_placeholder;
LoadingScreen* loading_screen;
// General
QString current_language;
// Status bar elements
QProgressBar* progress_bar = nullptr;
QLabel* message_label = nullptr;