From: Jactry Zeng jzeng@codeweavers.com
--- dlls/ntdll/unix/env.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c index c88357b1b68..31b793a553a 100644 --- a/dlls/ntdll/unix/env.c +++ b/dlls/ntdll/unix/env.c @@ -799,6 +799,7 @@ static void init_locale(void) struct locale_nls_header *header; const NLS_LOCALE_HEADER *locale_table; const NLS_LOCALE_DATA *locale; + char *p, buffer[LOCALE_NAME_MAX_LENGTH];
setlocale( LC_ALL, "" ); if (!unix_to_win_locale( setlocale( LC_CTYPE, NULL ), system_locale )) system_locale[0] = 0; @@ -867,6 +868,20 @@ static void init_locale(void) system_lcid = locale->idefaultlanguage; if ((locale = get_win_locale( locale_table, user_locale ))) user_lcid = locale->idefaultlanguage; + else + { + strcpy( buffer, user_locale ); + while ((p = strrchr( buffer, '-' ))) + { + *p = 0; + if ((locale = get_win_locale( locale_table, buffer ))) + { + user_lcid = locale->idefaultlanguage; + strcpy( user_locale, buffer ); + break; + } + } + } free( header ); } if (!system_lcid) system_lcid = MAKELANGID( LANG_ENGLISH, SUBLANG_DEFAULT );