[PATCH 1/3] kernel32: Use different default sublangs for Spanish and Chinese
Andrew Eikum
aeikum at codeweavers.com
Tue Jan 24 14:43:53 CST 2017
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
dlls/kernel32/locale.c | 20 ++++++++++++++++----
dlls/kernel32/nls/esn.nls | 2 +-
dlls/kernel32/nls/esp.nls | 2 +-
dlls/kernel32/tests/locale.c | 8 ++++----
4 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 9b3a957610..2bf1024c03 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 7306c005d4..4108ca21f7 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 52606274f1..5547752d0c 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 4224c0a271..7cbaafaa65 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} }
};
--
2.11.0
More information about the wine-patches
mailing list