Following a discussion with Alexandre on IRC, here is a revised patch. This one doesn't touch the LC_MESSAGE, as these do not affect the user locale. Further work will be necessary on supporting MUI like language checking.


Shachar Shemesh wrote:

Changelog:
Shachar Shemesh <[EMAIL PROTECTED]>
dlls/kernel/locale.c

   * System default locale in Windows determines the ANSI encoding
     (LC_CTYPE on Unix)

-- Shachar Shemesh Lingnu Open Source Consulting ltd. http://www.lingnu.com/

Index: dlls/kernel/locale.c
===================================================================
RCS file: /home/sun/sources/cvs/wine/dlls/kernel/locale.c,v
retrieving revision 1.46
diff -u -r1.46 locale.c
--- dlls/kernel/locale.c	7 Jul 2004 00:47:31 -0000	1.46
+++ dlls/kernel/locale.c	15 Jul 2004 10:24:00 -0000
@@ -505,13 +505,13 @@
 /***********************************************************************
  *		init_default_lcid
  */
-static LCID init_default_lcid( UINT *unix_cp )
+static LCID init_default_lcid( UINT *unix_cp, const char *env1 )
 {
     char *buf, *lang,*country,*charset,*dialect,*next;
     LCID ret = 0;
 
     if ((lang = getenv( "LC_ALL" )) ||
-        (lang = getenv( "LANGUAGE" )) ||
+        (env1 && (lang = getenv( env1 ))) ||
         (lang = getenv( "LANG" )))
     {
         if (!strcmp(lang,"POSIX") || !strcmp(lang,"C")) goto done;
@@ -2483,11 +2483,13 @@
                                        const union cptable *unix_cp );
 
     UINT ansi_cp = 1252, oem_cp = 437, mac_cp = 10000, unix_cp = ~0U;
-    LCID lcid = init_default_lcid( &unix_cp );
+    LCID lcid = init_default_lcid( &unix_cp, "LANGUAGE" );
 
-    NtSetDefaultLocale( FALSE, lcid );
     NtSetDefaultLocale( TRUE, lcid );
 
+    lcid = init_default_lcid( &unix_cp, "LC_CTYPE" );
+    NtSetDefaultLocale( FALSE, lcid );
+
     ansi_cp = get_lcid_codepage(lcid);
     GetLocaleInfoW( lcid, LOCALE_IDEFAULTMACCODEPAGE | LOCALE_RETURN_NUMBER,
                     (LPWSTR)&mac_cp, sizeof(mac_cp)/sizeof(WCHAR) );

Reply via email to