Changeset 10422 for trunk/src/kernel32/lang.cpp
- Timestamp:
- Jan 29, 2004, 3:21:50 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/lang.cpp
r10339 r10422 1 /* $Id: lang.cpp,v 1.4 3 2003-11-21 11:29:33 sandervlExp $ */1 /* $Id: lang.cpp,v 1.44 2004-01-29 14:21:50 bird Exp $ */ 2 2 /* 3 3 * Win32 language API functions for OS/2 … … 6 6 * Copyright 1998 Patrick Haller 7 7 * Copyright 1999 Przemyslaw Dobrowolski 8 * Copyright 2004 InnoTek Systemberatung GmbH 8 9 * 9 10 * … … 30 31 ODINDEBUGCHANNEL(KERNEL32-LANG) 31 32 32 static ULONG defaultLanguage= 0;33 static ULONG gulDefaultLanguageId = 0; 33 34 34 35 //****************************************************************************** … … 36 37 void WIN32API SetDefaultLanguage(DWORD deflang) 37 38 { 38 defaultLanguage = deflang; 39 } 40 //****************************************************************************** 41 //****************************************************************************** 42 ULONG GetLanguageId() 43 { 44 if(defaultLanguage == 0) { 45 switch(OSLibQueryCountry()) { 46 case CTRY_USA: 47 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); 48 break; 49 case CTRY_CANADA://TODO: french-canadian 50 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US); 51 break; 52 case CTRY_LATIN_AMERICA: 53 defaultLanguage = MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH); 54 break; 55 case CTRY_RUSSIA: 56 defaultLanguage = MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN); 57 break; 58 case CTRY_GREECE: 59 defaultLanguage = MAKELANGID(LANG_GREEK, SUBLANG_DEFAULT); 60 break; 61 case CTRY_NETHERLANDS: 62 defaultLanguage = MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH); 63 break; 64 case CTRY_BELGIUM://TODO: french-belgian 65 defaultLanguage = MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH_BELGIAN); 66 break; 67 case CTRY_FRANCE: 68 defaultLanguage = MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH); 69 break; 70 case CTRY_SPAIN: 71 defaultLanguage = MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH); 72 break; 73 case CTRY_ITALY: 74 defaultLanguage = MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN); 75 break; 76 case CTRY_SWITZERLAND: 77 defaultLanguage = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS); 78 break; 79 case CTRY_AUSTRIA: 80 defaultLanguage = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN); 81 break; 82 case CTRY_UNITED_KINGDOM: 83 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK); 84 break; 85 case CTRY_IRELAND: 86 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_EIRE); 87 break; 88 case CTRY_DENMARK: 89 defaultLanguage = MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT); 90 break; 91 case CTRY_SWEDEN: 92 defaultLanguage = MAKELANGID(LANG_SWEDISH, SUBLANG_DEFAULT); 93 break; 94 case CTRY_NORWAY: 95 defaultLanguage = MAKELANGID(LANG_NORWEGIAN, SUBLANG_DEFAULT); 96 break; 97 case CTRY_GERMANY: 98 defaultLanguage = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN); 99 break; 100 case CTRY_MEXICO: 101 defaultLanguage = MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN); 102 break; 103 case CTRY_BRAZIL: 104 defaultLanguage = MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN); 105 break; 106 case CTRY_AUSTRALIA: 107 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_AUS); 108 break; 109 case CTRY_NEW_ZEALAND: 110 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_NZ); 111 break; 112 case CTRY_JAPAN: 113 defaultLanguage = MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT); 114 break; 115 case CTRY_KOREA: 116 defaultLanguage = MAKELANGID(LANG_KOREAN, SUBLANG_DEFAULT); 117 break; 118 case CTRY_SINGAPORE: 119 defaultLanguage = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE); 120 break; 121 case CTRY_HONG_KONG: 122 defaultLanguage = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG); 123 break; 124 case CTRY_CHINA: 125 defaultLanguage = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL); 126 break; 127 case CTRY_TAIWAN: 128 defaultLanguage = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL); 129 break; 130 case CTRY_TURKEY: 131 defaultLanguage = MAKELANGID(LANG_TURKISH, SUBLANG_DEFAULT); 132 break; 133 case CTRY_PORTUGAL: 134 defaultLanguage = MAKELANGID(LANG_PORTUGUESE, SUBLANG_DEFAULT); 135 break; 136 case CTRY_LUXEMBOURG: 137 defaultLanguage = MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_LUXEMBOURG); 138 break; 139 case CTRY_ICELAND: 140 defaultLanguage = MAKELANGID(LANG_ICELANDIC, SUBLANG_DEFAULT); 141 break; 142 case CTRY_FINLAND: 143 defaultLanguage = MAKELANGID(LANG_FINNISH, SUBLANG_DEFAULT); 144 break; 145 case CTRY_BULGARIA: 146 defaultLanguage = MAKELANGID(LANG_BULGARIAN, SUBLANG_DEFAULT); 147 break; 148 case CTRY_UKRAINE: 149 defaultLanguage = MAKELANGID(LANG_UKRAINIAN, SUBLANG_RUSSIAN); 150 break; 151 case CTRY_CROATIA: 152 defaultLanguage = MAKELANGID(LANG_CROATIAN, SUBLANG_CROATIAN); 153 break; 154 case CTRY_SLOVENIA: 155 defaultLanguage = MAKELANGID(LANG_SLOVENIAN, SUBLANG_DEFAULT); 156 break; 157 case CTRY_CZECH_REPUBLIC: 158 defaultLanguage = MAKELANGID(LANG_CZECH, SUBLANG_DEFAULT); 159 break; 160 case CTRY_SLOVAK_REPUBLIC: 161 defaultLanguage = MAKELANGID(LANG_SLOVAK, SUBLANG_DEFAULT); 162 break; 163 case CTRY_POLAND: 164 defaultLanguage = MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT); 165 break; 166 default: 167 defaultLanguage = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK); 168 break; 169 } 170 } 171 return defaultLanguage; 39 gulDefaultLanguageId = deflang; 40 } 41 //****************************************************************************** 42 //****************************************************************************** 43 static ULONG DeterminDefaultLanguageId(void) 44 { 45 const char *pszLang = getenv("LANG"); 46 if (pszLang && pszLang[0] && pszLang[1]) /* (Ignore one character values (like 'C').) */ 47 { 48 /** Conversion table from LANG to LanguageId based upon vac365 locales, 49 * Sun JDK Internationalization Docs (1.2), good friends and google. 50 * LANG value format: <language id>_<region>.[stuff] 51 * 52 * If no region is specified in LANG, we'll search exact match, and if not 53 * found <val>_<val>. So for values where language id doesn't match region 54 * then add a 2nd line with only language id (if there is such a default). 55 */ 56 const static struct 57 { 58 const char *pszLang; /* LANG value. (case insensitive) */ 59 ULONG ulLangId; /* Win32 Language ID. */ 60 } aLangToLangId[] = 61 { 62 { "ar_ae", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_UAE) }, 63 { "ar_BH", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_BAHRAIN) }, 64 { "ar_DZ", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_ALGERIA) }, 65 { "ar", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_EGYPT) }, 66 { "ar_EG", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_EGYPT) }, 67 { "ar_IQ", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_IRAQ ) }, 68 { "ar_JO", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_JORDAN ) }, 69 { "ar_KW", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_KUWAIT ) }, 70 { "ar_LB", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_LEBANON ) }, 71 { "ar_LY", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_LIBYA ) }, 72 { "ar_MA", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_MOROCCO ) }, 73 { "ar_OM", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_OMAN ) }, 74 { "ar_QA", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_QATAR ) }, 75 { "ar_SA", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_SAUDI_ARABIA) }, 76 { "ar_SY", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_SYRIA ) }, 77 { "ar_TN", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_TUNISIA ) }, 78 { "ar_YE", MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_YEMEN ) }, 79 { "ar_SD", MAKELANGID(LANG_ARABIC, SUBLANG_DEFAULT) }, /* no win32 constant. */ 80 { "be", MAKELANGID(LANG_BELARUSIAN, SUBLANG_DEFAULT) }, 81 { "be_BY", MAKELANGID(LANG_BELARUSIAN, SUBLANG_DEFAULT) }, 82 { "bg_BG", MAKELANGID(LANG_BULGARIAN, SUBLANG_DEFAULT) }, 83 { "ca", MAKELANGID(LANG_CATALAN, SUBLANG_DEFAULT) }, 84 { "ca_ES", MAKELANGID(LANG_CATALAN, SUBLANG_DEFAULT) }, 85 { "cs", MAKELANGID(LANG_CZECH, SUBLANG_DEFAULT) }, 86 { "cs_CZ", MAKELANGID(LANG_CZECH, SUBLANG_DEFAULT) }, 87 { "da", MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT) }, 88 { "da_DK", MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT) }, 89 { "de_AT", MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN) }, 90 { "de_CH", MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS) }, 91 { "de_DE", MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN) }, 92 { "de_LU", MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_LUXEMBOURG) }, 93 { "el", MAKELANGID(LANG_GREEK, SUBLANG_DEFAULT) }, 94 { "el_GR", MAKELANGID(LANG_GREEK, SUBLANG_DEFAULT) }, 95 { "en_AU", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_AUS) }, 96 { "en_CA", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_CAN) }, 97 { "en_GB", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK) }, 98 { "en_IE", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_EIRE) }, 99 { "en_NZ", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_NZ) }, 100 { "en_US", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) }, 101 { "en_ZA", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_SOUTH_AFRICA) }, 102 { "en_DK", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) }, /* odd ibm vac365 */ 103 { "en_JP", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) }, /* odd ibm vac365 */ 104 { "es_AR", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_ARGENTINA ) }, 105 { "es_BO", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_BOLIVIA ) }, 106 { "es_CL", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_CHILE ) }, 107 { "es_CO", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_COLOMBIA ) }, 108 { "es_CR", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_COSTA_RICA ) }, 109 { "es_DO", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_DOMINICAN_REPUBLIC) }, 110 { "es_EC", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_ECUADOR ) }, 111 { "es_ES", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH ) }, /* SUBLANG_SPANISH_MODERN? */ 112 { "es_GT", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_GUATEMALA ) }, 113 { "es_HN", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_HONDURAS ) }, 114 { "es_MX", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN ) }, 115 { "es_NI", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_NICARAGUA ) }, 116 { "es_PA", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_PANAMA ) }, 117 { "es_PE", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_PERU ) }, 118 { "es_PR", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_PUERTO_RICO ) }, 119 { "es_PY", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_PARAGUAY ) }, 120 { "es_SV", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_EL_SALVADOR ) }, 121 { "es_UY", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_URUGUAY ) }, 122 { "es_VE", MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_VENEZUELA ) }, 123 { "et", MAKELANGID(LANG_ESTONIAN, SUBLANG_DEFAULT) }, 124 { "et_EE", MAKELANGID(LANG_ESTONIAN, SUBLANG_DEFAULT) }, 125 { "fi_FI", MAKELANGID(LANG_FINNISH, SUBLANG_DEFAULT) }, 126 { "fo", MAKELANGID(LANG_FAEROESE, SUBLANG_DEFAULT) }, 127 { "fo_FO", MAKELANGID(LANG_FAEROESE, SUBLANG_DEFAULT) }, 128 { "fr_BE", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH_BELGIAN) }, 129 { "fr_CA", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH_CANADIAN) }, 130 { "fr_CH", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH_SWISS) }, 131 { "fr_FR", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH) }, 132 { "fr_LU", MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH_LUXEMBOURG) }, 133 { "hr_HR", MAKELANGID(LANG_CROATIAN, SUBLANG_DEFAULT) }, 134 { "hu_HU", MAKELANGID(LANG_HUNGARIAN, SUBLANG_DEFAULT) }, 135 { "is_IS", MAKELANGID(LANG_ICELANDIC, SUBLANG_DEFAULT) }, 136 { "it_CH", MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN_SWISS) }, 137 { "it_IT", MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN) }, 138 { "iw", MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT) }, 139 { "iw_IL", MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT) }, 140 { "ja_JP", MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT) }, 141 { "ko", MAKELANGID(LANG_KOREAN, SUBLANG_DEFAULT) }, 142 { "ko_KR", MAKELANGID(LANG_KOREAN, SUBLANG_DEFAULT) }, 143 { "lt_LT", MAKELANGID(LANG_LITHUANIAN, SUBLANG_DEFAULT) }, 144 { "lv_LV", MAKELANGID(LANG_LATVIAN, SUBLANG_DEFAULT) }, 145 /*{ "mk_MK", MAKELANGID(LANG_MACEDONIAN, SUBLANG_DEFAULT) }, - no win32 eq */ 146 { "nl_BE", MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH_BELGIAN) }, 147 { "nl_NL", MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH) }, 148 { "no_NO", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK) }, /* yeah sure! Sun is medling in norwegian politics here... */ 149 { "no_NO_B", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL) }, /* yeah sure! Sun is medling in norwegian politics here... */ 150 { "ny", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK) }, 151 { "ny_NO", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NYNORSK) }, 152 { "nb", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL) }, 153 { "nb_NO", MAKELANGID(LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL) }, 154 { "pl_PL", MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT) }, 155 { "pt_BR", MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN) }, 156 { "pt_PT", MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE) }, 157 { "ro_RO", MAKELANGID(LANG_ROMANIAN, SUBLANG_DEFAULT) }, 158 { "ru_RU", MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT) }, 159 { "sh", MAKELANGID(LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC) }, 160 { "sh_YU", MAKELANGID(LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC) }, 161 { "sk_SK", MAKELANGID(LANG_SLOVAK, SUBLANG_DEFAULT) }, 162 { "sl_SL", MAKELANGID(LANG_SLOVENIAN, SUBLANG_DEFAULT) }, 163 { "sq", MAKELANGID(LANG_ALBANIAN, SUBLANG_DEFAULT) }, 164 { "sq_AL", MAKELANGID(LANG_ALBANIAN, SUBLANG_DEFAULT) }, 165 { "sr", MAKELANGID(LANG_SERBIAN, SUBLANG_DEFAULT) }, 166 { "sr_YU", MAKELANGID(LANG_SERBIAN, SUBLANG_DEFAULT) }, 167 { "sv", MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH) }, 168 { "sv_FI", MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH_FINLAND) }, 169 { "sv_SE", MAKELANGID(LANG_SWEDISH, SUBLANG_SWEDISH) }, 170 { "th_TH", MAKELANGID(LANG_THAI, SUBLANG_DEFAULT) }, 171 { "tr_TR", MAKELANGID(LANG_TURKISH, SUBLANG_DEFAULT) }, 172 { "tr_DE", MAKELANGID(LANG_TURKISH, SUBLANG_DEFAULT) }, /* phun ;-) */ 173 { "uk", MAKELANGID(LANG_UKRAINIAN, SUBLANG_DEFAULT) }, 174 { "uk_UA", MAKELANGID(LANG_UKRAINIAN, SUBLANG_DEFAULT) }, 175 { "zh", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) }, 176 { "zh_CN", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED) }, 177 { "zh_TW", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL) }, 178 { "zh_HK", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG) }, 179 /*{ "zh_??", MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE) },*/ 180 }; 181 182 /* 183 * Strip off anything past the '.' and any '_EURO'. 184 */ 185 char szLang[16]; 186 strncpy(szLang, pszLang, sizeof(szLang)); 187 szLang[sizeof(szLang) - 1] = '\0'; 188 char *psz = strrchr(szLang, '.'); 189 if (psz) 190 *psz = '\0'; 191 strupr(szLang); 192 psz = strstr(szLang, "_EURO"); 193 if (psz) 194 *psz = '\0'; 195 196 /* 197 * Loop thru the table looking for 'exact' match. 198 */ 199 int i; 200 for (i = 0; i < sizeof(aLangToLangId) / sizeof(aLangToLangId[0]); i++) 201 if (!stricmp(aLangToLangId[i].pszLang, szLang)) 202 return aLangToLangId[i].ulLangId; 203 204 /* 205 * No exact match. We'll now try look for <langid> and then for <langid>_<langid>. 206 * ASSUMES: no user sets "LANG=e" or any other on character letter. 207 */ 208 szLang[2] = '\0'; 209 for (i = 0; i < sizeof(aLangToLangId) / sizeof(aLangToLangId[0]); i++) 210 if (!stricmp(aLangToLangId[i].pszLang, szLang)) 211 return aLangToLangId[i].ulLangId; 212 213 szLang[2] = '_'; 214 szLang[3] = szLang[0]; 215 szLang[4] = szLang[1]; 216 szLang[5] = '\0'; 217 for (i = 0; i < sizeof(aLangToLangId) / sizeof(aLangToLangId[0]); i++) 218 if (!stricmp(aLangToLangId[i].pszLang, szLang)) 219 return aLangToLangId[i].ulLangId; 220 221 /* 222 * No match, let's try find the language if nothing else. 223 */ 224 for (i = 0; i < sizeof(aLangToLangId) / sizeof(aLangToLangId[0]); i++) 225 if (!strnicmp(aLangToLangId[i].pszLang, szLang, 2)) 226 return MAKELANGID(PRIMARYLANGID(aLangToLangId[i].ulLangId), SUBLANG_NEUTRAL); 227 228 /* we give up! */ 229 dprintf(("DeterminDefaultLanguageId: WARNING: LANG value '%s' isn't known to us!!!\n", pszLang)); 230 DebugInt3(); 231 } 232 233 234 /* 235 * If LANG parsing failes, we'll go for the country info. 236 */ 237 switch(OSLibQueryCountry()) 238 { 239 case CTRY_AUSTRALIA: return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_AUS); 240 case CTRY_AUSTRIA: return MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN); 241 case CTRY_BELGIUM: return MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH_BELGIAN); //TODO: french-belgian 242 case CTRY_BRAZIL: return MAKELANGID(LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN); 243 case CTRY_BULGARIA: return MAKELANGID(LANG_BULGARIAN, SUBLANG_DEFAULT); 244 case CTRY_CANADA: return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_CAN); //TODO: french-canadian 245 case CTRY_CHINA: return MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL); 246 case CTRY_CROATIA: return MAKELANGID(LANG_CROATIAN, SUBLANG_CROATIAN); 247 case CTRY_CZECH_REPUBLIC: return MAKELANGID(LANG_CZECH, SUBLANG_DEFAULT); 248 case CTRY_DENMARK: return MAKELANGID(LANG_DANISH, SUBLANG_DEFAULT); 249 case CTRY_FINLAND: return MAKELANGID(LANG_FINNISH, SUBLANG_DEFAULT); 250 case CTRY_FRANCE: return MAKELANGID(LANG_FRENCH, SUBLANG_FRENCH); 251 case CTRY_GERMANY: return MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN); 252 case CTRY_GREECE: return MAKELANGID(LANG_GREEK, SUBLANG_DEFAULT); 253 case CTRY_HONG_KONG: return MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG); 254 case CTRY_ICELAND: return MAKELANGID(LANG_ICELANDIC, SUBLANG_DEFAULT); 255 case CTRY_IRELAND: return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_EIRE); 256 case CTRY_ITALY: return MAKELANGID(LANG_ITALIAN, SUBLANG_ITALIAN); 257 case CTRY_JAPAN: return MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT); 258 case CTRY_KOREA: return MAKELANGID(LANG_KOREAN, SUBLANG_DEFAULT); 259 case CTRY_LATIN_AMERICA: return MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH); 260 case CTRY_LUXEMBOURG: return MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_LUXEMBOURG); 261 case CTRY_MEXICO: return MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN); 262 case CTRY_NETHERLANDS: return MAKELANGID(LANG_DUTCH, SUBLANG_DUTCH); 263 case CTRY_NEW_ZEALAND: return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_NZ); 264 case CTRY_NORWAY: return MAKELANGID(LANG_NORWEGIAN, SUBLANG_DEFAULT); 265 case CTRY_POLAND: return MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT); 266 case CTRY_PORTUGAL: return MAKELANGID(LANG_PORTUGUESE, SUBLANG_DEFAULT); 267 case CTRY_RUSSIA: return MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN); 268 case CTRY_SINGAPORE: return MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE); 269 case CTRY_SLOVAK_REPUBLIC: return MAKELANGID(LANG_SLOVAK, SUBLANG_DEFAULT); 270 case CTRY_SLOVENIA: return MAKELANGID(LANG_SLOVENIAN, SUBLANG_DEFAULT); 271 case CTRY_SPAIN: return MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH); 272 case CTRY_SWEDEN: return MAKELANGID(LANG_SWEDISH, SUBLANG_DEFAULT); 273 case CTRY_SWITZERLAND: return MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS); 274 case CTRY_TAIWAN: return MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL); 275 case CTRY_TURKEY: return MAKELANGID(LANG_TURKISH, SUBLANG_DEFAULT); 276 case CTRY_UKRAINE: return MAKELANGID(LANG_UKRAINIAN, SUBLANG_RUSSIAN); 277 case CTRY_UNITED_KINGDOM: return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK); 278 default: 279 return MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK); 280 } 281 /* will never reach this point! */ 282 } 283 284 ULONG GetLanguageId(void) 285 { 286 /* 287 * If no default language is set we'll try determin that by evaluating the 288 * LANG env.var. and OS/2 country information. 289 */ 290 if (gulDefaultLanguageId == 0) 291 { 292 gulDefaultLanguageId = DeterminDefaultLanguageId(); 293 dprintf(("KERNEL32: GetLanguageId: Sets default language id to %#x\n", gulDefaultLanguageId)); 294 } 295 return gulDefaultLanguageId; 172 296 } 173 297 //****************************************************************************** … … 273 397 * Author : Przemyslaw Dobrowolski [Tue, 1999/07/22 17:07] 274 398 *****************************************************************************/ 275 int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR wbuf, 399 int WIN32API GetLocaleInfoW(LCID lcid, LCTYPE LCType, LPWSTR wbuf, 276 400 int len) 277 401 { … … 330 454 LocaleFromUniStr(puni_lconv->thousands_sep,wbuf,&ulInfoLen); 331 455 //MN: hack for Czech language; weird value returned here (0xA0 instead of 0x20) 332 if (defaultLanguage == CTRY_CZECH_REPUBLIC) {456 if (gulDefaultLanguageId == CTRY_CZECH_REPUBLIC) 333 457 ((BYTE*)wbuf)[0] = ((BYTE*)wbuf)[0] & 0x7F; 334 }335 458 break; 336 459 … … 912 1035 if (ret_len && buf) 913 1036 UnicodeToAscii(lpWStr,buf); 914 1037 915 1038 if (lpWStr) free(lpWStr); // free prevooisly allocated memory 916 1039 … … 938 1061 { 939 1062 TEB *teb = GetThreadTEB(); 940 1063 941 1064 if(teb == NULL) { 942 1065 dprintf(("KERNEL32: ERROR SetThreadLocale teb == NULL!"));
Note:
See TracChangeset
for help on using the changeset viewer.