Andrew Eikum : kernel32: Use different default sublangs for Spanish and Chinese.

Alexandre Julliard julliard at winehq.org
Tue Jan 2 15:01:22 CST 2018


Module: wine
Branch: stable
Commit: dc282ebb309374dd1c69bd9c5a8bd2281cccdf7e
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=dc282ebb309374dd1c69bd9c5a8bd2281cccdf7e

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Tue Jan 24 14:43:53 2017 -0600

kernel32: Use different default sublangs for Spanish and Chinese.

Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 7737693693ca46a88c41cfeab95d2b65423d8e51)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/kernel32/locale.c         | 20 ++++++++++++++++----
 dlls/kernel32/nls/esn.nls      |  2 +-
 dlls/kernel32/nls/esp.nls      |  2 +-
 dlls/kernel32/tests/locale.c   |  8 ++++----
 dlls/msvcr120/tests/msvcr120.c |  8 +++-----
 5 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 9b3a957..2bf1024 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -359,6 +359,18 @@ static UINT find_charset( const WCHAR *name )
     return 0;
 }
 
+static WORD get_default_sublang(LCID lang)
+{
+    switch (PRIMARYLANGID(lang))
+    {
+    case LANG_SPANISH:
+        return SUBLANG_SPANISH_MODERN;
+    case LANG_CHINESE:
+        return SUBLANG_CHINESE_SIMPLIFIED;
+    default:
+        return SUBLANG_DEFAULT;
+    }
+}
 
 /***********************************************************************
  *           find_locale_id_callback
@@ -402,7 +414,7 @@ static BOOL CALLBACK find_locale_id_callback( HMODULE hModule, LPCWSTR type,
     }
     else  /* match default language */
     {
-        if (SUBLANGID(LangID) == SUBLANG_DEFAULT) matches++;
+        if (SUBLANGID(LangID) == get_default_sublang( LangID )) matches++;
     }
 
     if (data->codepage)
@@ -1671,7 +1683,7 @@ INT WINAPI GetLocaleInfoW( LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len )
 
     /* replace SUBLANG_NEUTRAL by SUBLANG_DEFAULT */
     if (SUBLANGID(lang_id) == SUBLANG_NEUTRAL)
-        lang_id = MAKELANGID(PRIMARYLANGID(lang_id), SUBLANG_DEFAULT);
+        lang_id = MAKELANGID(PRIMARYLANGID(lang_id), get_default_sublang( lang_id ));
 
     if (!(hrsrc = FindResourceExW( kernel32_handle, (LPWSTR)RT_STRING,
                                    ULongToPtr((lctype >> 4) + 1), lang_id )))
@@ -2776,7 +2788,7 @@ LCID WINAPI ConvertDefaultLocale( LCID lcid )
         langid = LANGIDFROMLCID(lcid);
         if (SUBLANGID(langid) == SUBLANG_NEUTRAL)
         {
-          langid = MAKELANGID(PRIMARYLANGID(langid), SUBLANG_DEFAULT);
+          langid = MAKELANGID(PRIMARYLANGID(langid), get_default_sublang( langid ));
           lcid = MAKELCID(langid, SORTIDFROMLCID(lcid));
         }
     }
@@ -4212,7 +4224,7 @@ static BOOL NLS_GetLanguageGroupName(LGRPID lgrpid, LPWSTR szName, ULONG nameSiz
     langId = GetSystemDefaultLangID();
 
     if (SUBLANGID(langId) == SUBLANG_NEUTRAL)
-        langId = MAKELANGID( PRIMARYLANGID(langId), SUBLANG_DEFAULT );
+        langId = MAKELANGID(PRIMARYLANGID(langId), get_default_sublang( langId ));
 
     hResource = FindResourceExW( kernel32_handle, (LPWSTR)RT_STRING, szResourceName, langId );
 
diff --git a/dlls/kernel32/nls/esn.nls b/dlls/kernel32/nls/esn.nls
index 7306c00..4108ca2 100644
--- a/dlls/kernel32/nls/esn.nls
+++ b/dlls/kernel32/nls/esn.nls
@@ -123,7 +123,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN
   LOCALE_SMONTHNAME12 "diciembre"
   LOCALE_SMONTHNAME13 ""
   LOCALE_SMONTHOUSANDSEP "."
-  LOCALE_SNAME "es-ES_modern"
+  LOCALE_SNAME "es-ES"
   LOCALE_SNATIVECTRYNAME "España"
   LOCALE_SNATIVECURRNAME "euro"
   LOCALE_SNATIVEDIGITS "0123456789"
diff --git a/dlls/kernel32/nls/esp.nls b/dlls/kernel32/nls/esp.nls
index 5260627..5547752 100644
--- a/dlls/kernel32/nls/esp.nls
+++ b/dlls/kernel32/nls/esp.nls
@@ -123,7 +123,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
   LOCALE_SMONTHNAME12 "diciembre"
   LOCALE_SMONTHNAME13 ""
   LOCALE_SMONTHOUSANDSEP "."
-  LOCALE_SNAME "es-ES"
+  LOCALE_SNAME "es-ES_tradnl"
   LOCALE_SNATIVECTRYNAME "España"
   LOCALE_SNATIVECURRNAME "euro"
   LOCALE_SNATIVEDIGITS "0123456789"
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 4224c0a..7cbaafa 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -255,7 +255,7 @@ static const struct neutralsublang_name2_t neutralsublang_names2[] = {
     { {'e','s',0}, {'e','s','-','E','S',0},
       MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MODERN), SORT_DEFAULT),
       MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH), SORT_DEFAULT) /* vista */,
-      {'e','s','-','E','S','_','t','r','a','d','n','l',0}, 0x1 },
+      {'e','s','-','E','S','_','t','r','a','d','n','l',0} },
     { {'g','a',0}, {'g','a','-','I','E',0},
       MAKELCID(MAKELANGID(LANG_IRISH, SUBLANG_IRISH_IRELAND), SORT_DEFAULT), 0, {0}, 0x3 },
     { {'i','t',0}, {'i','t','-','I','T',0},
@@ -273,7 +273,7 @@ static const struct neutralsublang_name2_t neutralsublang_names2[] = {
     { {'u','z',0}, {'u','z','-','L','a','t','n','-','U','Z',0},
       MAKELCID(MAKELANGID(LANG_UZBEK, SUBLANG_UZBEK_LATIN), SORT_DEFAULT) },
     { {'z','h',0}, {'z','h','-','C','N',0},
-      MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT), 0, {0}, 0x3 },
+      MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT) },
     { {0} }
 };
 
@@ -2684,7 +2684,7 @@ static const struct neutralsublang_name_t neutralsublang_names[] = {
     { {'a','z',0}, MAKELCID(MAKELANGID(LANG_AZERI,      SUBLANG_AZERI_LATIN), SORT_DEFAULT) },
     { {'d','e',0}, MAKELCID(MAKELANGID(LANG_GERMAN,     SUBLANG_GERMAN), SORT_DEFAULT) },
     { {'e','n',0}, MAKELCID(MAKELANGID(LANG_ENGLISH,    SUBLANG_ENGLISH_US), SORT_DEFAULT) },
-    { {'e','s',0}, MAKELCID(MAKELANGID(LANG_SPANISH,    SUBLANG_SPANISH_MODERN), SORT_DEFAULT), 1 },
+    { {'e','s',0}, MAKELCID(MAKELANGID(LANG_SPANISH,    SUBLANG_SPANISH_MODERN), SORT_DEFAULT) },
     { {'g','a',0}, MAKELCID(MAKELANGID(LANG_IRISH,      SUBLANG_IRISH_IRELAND), SORT_DEFAULT) },
     { {'i','t',0}, MAKELCID(MAKELANGID(LANG_ITALIAN,    SUBLANG_ITALIAN), SORT_DEFAULT) },
     { {'m','s',0}, MAKELCID(MAKELANGID(LANG_MALAY,      SUBLANG_MALAY_MALAYSIA), SORT_DEFAULT) },
@@ -2693,7 +2693,7 @@ static const struct neutralsublang_name_t neutralsublang_names[] = {
     { {'s','r',0}, MAKELCID(MAKELANGID(LANG_SERBIAN,    SUBLANG_SERBIAN_SERBIA_LATIN), SORT_DEFAULT), 1 },
     { {'s','v',0}, MAKELCID(MAKELANGID(LANG_SWEDISH,    SUBLANG_SWEDISH), SORT_DEFAULT) },
     { {'u','z',0}, MAKELCID(MAKELANGID(LANG_UZBEK,      SUBLANG_UZBEK_LATIN), SORT_DEFAULT) },
-    { {'z','h',0}, MAKELCID(MAKELANGID(LANG_CHINESE,    SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT), 1 },
+    { {'z','h',0}, MAKELCID(MAKELANGID(LANG_CHINESE,    SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT) },
     { {0} }
 };
 
diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c
index e631738..13f3672 100644
--- a/dlls/msvcr120/tests/msvcr120.c
+++ b/dlls/msvcr120/tests/msvcr120.c
@@ -453,11 +453,10 @@ static void test____lc_locale_name_func(void)
         const char *locale;
         const WCHAR name[10];
         const WCHAR broken_name[10];
-        BOOL todo;
     } tests[] = {
         { "American",  {'e','n',0}, {'e','n','-','U','S',0} },
         { "Belgian",   {'n','l','-','B','E',0} },
-        { "Chinese",   {'z','h',0}, {'z','h','-','C','N',0}, TRUE },
+        { "Chinese",   {'z','h',0}, {'z','h','-','C','N',0} },
         { "Dutch",     {'n','l',0}, {'n','l','-','N','L',0} },
         { "English",   {'e','n',0}, {'e','n','-','U','S',0} },
         { "French",    {'f','r',0}, {'f','r','-','F','R',0} },
@@ -476,9 +475,8 @@ static void test____lc_locale_name_func(void)
 
         lc_names = p____lc_locale_name_func();
         ok(lc_names[0] == NULL, "%d - lc_names[0] = %s\n", i, wine_dbgstr_w(lc_names[0]));
-        todo_wine_if(tests[i].todo)
-            ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)),
-                    "%d - lc_names[1] = %s\n", i, wine_dbgstr_w(lc_names[1]));
+        ok(!lstrcmpW(lc_names[1], tests[i].name) || broken(!lstrcmpW(lc_names[1], tests[i].broken_name)),
+           "%d - lc_names[1] = %s\n", i, wine_dbgstr_w(lc_names[1]));
 
         for(j=LC_MIN+2; j<=LC_MAX; j++) {
             ok(!lstrcmpW(lc_names[1], lc_names[j]), "%d - lc_names[%d] = %s, expected %s\n",




More information about the wine-cvs mailing list