Hi all, I checked how JDK detects default language on Windows, but I cannot understand the code in below:
src/java.base/windows/native/libjava/java_props_md.c: ``` LCID userDefaultUILang = GetUserDefaultUILanguage(); ``` According to MSDN [1], GetUserDefaultUILanguage() returns LANGID. `userDefaultUILang` is used later as LCID. I think it is wrong. I think we should be fix it as below. If it is correct, I will file it to JBS and will send webrev. ``` diff --git a/src/java.base/windows/native/libjava/java_props_md.c b/src/java.base/windows/native/libjava/java_props_md.cindex 231f44ce2b..9068595dcf 100644 --- a/src/java.base/windows/native/libjava/java_props_md.c +++ b/src/java.base/windows/native/libjava/java_props_md.c @@ -641,7 +641,7 @@ GetJavaProperties(JNIEnv* env) */ LCID userDefaultLCID = GetUserDefaultLCID(); LCID systemDefaultLCID = GetSystemDefaultLCID(); - LCID userDefaultUILang = GetUserDefaultUILanguage(); + LANGID userDefaultUILang = GetUserDefaultUILanguage(); { char * display_encoding; @@ -655,8 +655,8 @@ GetJavaProperties(JNIEnv* env) // for the UI Language, if the "language" portion of those // two locales are the same. if (PRIMARYLANGID(LANGIDFROMLCID(userDefaultLCID)) == - PRIMARYLANGID(LANGIDFROMLCID(userDefaultUILang))) { - userDefaultUILang = userDefaultLCID; + PRIMARYLANGID(userDefaultUILang)) { + userDefaultUILang = LANGIDFROMLCID(userDefaultLCID); } SetupI18nProps(userDefaultLCID, @@ -665,7 +665,7 @@ GetJavaProperties(JNIEnv* env) &sprops.format_country, &sprops.format_variant, &sprops.encoding); - SetupI18nProps(userDefaultUILang, + SetupI18nProps(MAKELCID(userDefaultUILang, SORT_DEFAULT), &sprops.display_language, &sprops.display_script, &sprops.display_country, ``` Do you have any comments / suggestions? Thanks, Yasumasa [1] https://docs.microsoft.com/en-us/windows/win32/api/winnls/nf-winnls-getuserdefaultuilanguage