From 2cdfe883eab58ca148db3227132fdf3360cb3c21 Mon Sep 17 00:00:00 2001 From: MartinSu Date: Thu, 9 Jan 2025 11:24:41 +0800 Subject: [PATCH] Distinguishing between Simplified Chinese and Traditional Chinese in the Win32 Platform --- core/platform/Common.h | 1 + core/platform/win32/Application-win32.cpp | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/platform/Common.h b/core/platform/Common.h index 5ff87c41651d..fd4a7e756cf9 100644 --- a/core/platform/Common.h +++ b/core/platform/Common.h @@ -50,6 +50,7 @@ enum class LanguageType { ENGLISH = 0, CHINESE, + CHINESE_TRADITIONAL, FRENCH, ITALIAN, GERMAN, diff --git a/core/platform/win32/Application-win32.cpp b/core/platform/win32/Application-win32.cpp index a2dd06d70433..e074b8c20bcb 100644 --- a/core/platform/win32/Application-win32.cpp +++ b/core/platform/win32/Application-win32.cpp @@ -154,12 +154,25 @@ LanguageType Application::getCurrentLanguage() LanguageType ret = LanguageType::ENGLISH; LCID localeID = GetUserDefaultLCID(); - unsigned short primaryLanguageID = localeID & 0xFF; + + unsigned short primaryLanguageID = PRIMARYLANGID(localeID); + unsigned short subLanguageID = SUBLANGID(localeID); switch (primaryLanguageID) { case LANG_CHINESE: - ret = LanguageType::CHINESE; + switch (subLanguageID) + { + case SUBLANG_CHINESE_SIMPLIFIED: + ret = LanguageType::CHINESE; + break; + case SUBLANG_CHINESE_TRADITIONAL: + ret = LanguageType::CHINESE_TRADITIONAL; + break; + default: + ret = LanguageType::CHINESE; + break; + } break; case LANG_ENGLISH: ret = LanguageType::ENGLISH;