1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_shell.hxx" 30 31 32 #include "internal/config.hxx" 33 #include "internal/dbgmacros.hxx" 34 #include "internal/utilities.hxx" 35 36 //----------------------------- 37 // constants 38 //----------------------------- 39 40 const size_t MAX_RES_STRING = 1024; 41 const wchar_t SPACE_CHAR = _T(' '); 42 43 //--------------------------------- 44 /** 45 */ 46 std::wstring StringToWString(const std::string& String) 47 { 48 int len = MultiByteToWideChar( 49 CP_ACP, 0, String.c_str(), -1, 0, 0); 50 51 wchar_t* buff = reinterpret_cast<wchar_t*>( 52 _alloca(len * sizeof(wchar_t))); 53 54 MultiByteToWideChar( 55 CP_ACP, 0, String.c_str(), -1, buff, len); 56 57 return std::wstring(buff); 58 } 59 60 //--------------------------------- 61 /** 62 */ 63 std::string WStringToString(const std::wstring& String) 64 { 65 int len = WideCharToMultiByte( 66 CP_ACP, 0, String.c_str(), -1, 0, 0, 0, 0); 67 68 char* buff = reinterpret_cast<char*>( 69 _alloca(len * sizeof(char))); 70 71 WideCharToMultiByte( 72 CP_ACP, 0, String.c_str(), -1, buff, len, 0, 0); 73 74 return std::string(buff); 75 } 76 77 //--------------------------------- 78 /** 79 */ 80 std::wstring GetResString(int ResId) 81 { 82 wchar_t szResStr[MAX_RES_STRING]; 83 84 int rc = LoadStringW( GetModuleHandleW(MODULE_NAME), ResId, szResStr, sizeof(szResStr) ); 85 86 OutputDebugStringFormat( "GetResString: read %d chars\n", rc ); 87 ENSURE(rc, "String resource not found"); 88 89 return std::wstring(szResStr); 90 } 91 92 //--------------------------------- 93 /** 94 */ 95 bool is_windows_xp_or_above() 96 { 97 OSVERSIONINFO osvi; 98 ZeroMemory(&osvi, sizeof(osvi)); 99 osvi.dwOSVersionInfoSize = sizeof(osvi); 100 GetVersionEx(&osvi); 101 102 // LLA: check for windows xp or above (Vista) 103 if (osvi.dwMajorVersion > 5 || 104 (5 == osvi.dwMajorVersion && osvi.dwMinorVersion >= 1)) 105 { 106 return true; 107 } 108 return false; 109 } 110 111 //--------------------------------- 112 /** 113 */ 114 115 void SaveDebugInfoToFile( const std::wstring& str ) 116 { 117 int handle; 118 119 if ((handle = open("c:\\temp\\SHELLRESULT.$$$", O_CREAT | O_RDWR | O_APPEND )) == -1) 120 { 121 perror("Error: open file error"); 122 return; 123 } 124 write(handle, str.c_str(), str.length() ); 125 close(handle); 126 } 127 128 //--------------------------------- 129 /** helper function to judge if the string is only has spaces. 130 @returns 131 <TRUE>if the provided string contains only but at least one space 132 character else <FALSE/>. 133 */ 134 135 bool HasOnlySpaces(const std::wstring& String) 136 { 137 if ( String.length() == 0 ) 138 return false; 139 140 const wchar_t* p = String.c_str(); 141 142 while (*p) 143 { 144 if (*p++ != SPACE_CHAR) 145 return false; 146 } 147 148 return true; 149 } 150 151 //--------------------------------- 152 /** helper function to convert windows pathes to short form. 153 @returns 154 shortend path. 155 */ 156 157 std::wstring getShortPathName( const std::wstring& aLongName ) 158 { 159 std::wstring shortName = aLongName; 160 long length = GetShortPathName( aLongName.c_str(), NULL, 0 ); 161 162 if ( length != 0 ) 163 { 164 TCHAR* buffer = new TCHAR[ length+1 ]; 165 length = GetShortPathName( aLongName.c_str(), buffer, length ); 166 if ( length != 0 ) 167 shortName = std::wstring( buffer ); 168 delete [] buffer; 169 } 170 return shortName; 171 } 172 173 /** convert LocaleSet pair into Microsoft List of Locale ID (LCID) 174 according to ISO-639 and ISO-3166. 175 http://etext.lib.virginia.edu/tei/iso639.html 176 http://nl.ijs.si/gnusl/cee/std/ISO_3166.html 177 @param 178 Locale, LocaleSet 179 @returns 180 Windows Locale Identifier corresponding to input LocaleSet. 181 @Usage Sample 182 LocaleSet_t myDefaultLocale( ::std::wstring( L"zh" ),::std::wstring(L"HK") ); 183 DWORD myLCID = LocaleSetToLCID( myDefaultLocale ); 184 wchar_t buffer[20]; 185 _ultow( myLCID, buffer, 16 ); 186 MessageBox( NULL, buffer,L"the LCID is:",MB_OK ); 187 */ 188 189 LCID LocaleSetToLCID( const LocaleSet_t & Locale ) 190 { 191 if ( EMPTY_LOCALE == Locale ) 192 return GetSystemDefaultLCID(); 193 194 USHORT usPrimaryLang= LANG_NEUTRAL; 195 USHORT usSubLang=SUBLANG_DEFAULT; 196 197 ::std::wstring wsLanguage(Locale.first); 198 ::std::wstring wsCountry(Locale.second); 199 200 if ( wsLanguage == L"ar" ) 201 { 202 usPrimaryLang = LANG_ARABIC; // Arabic 01 203 204 if ( wsCountry == L"SA" ) 205 usSubLang = SUBLANG_ARABIC_SAUDI_ARABIA; // Arabic (Saudi Arabia) 206 else if ( wsCountry == L"IQ" ) 207 usSubLang = SUBLANG_ARABIC_IRAQ; // Arabic (Iraq) 208 else if ( wsCountry == L"EG" ) 209 usSubLang = SUBLANG_ARABIC_EGYPT; // Arabic (Egypt) 210 else if ( wsCountry == L"LY" ) 211 usSubLang = SUBLANG_ARABIC_LIBYA; // Arabic (Libya) 212 else if ( wsCountry == L"DZ" ) 213 usSubLang = SUBLANG_ARABIC_ALGERIA; // Arabic (Algeria) 214 else if ( wsCountry == L"MA" ) 215 usSubLang = SUBLANG_ARABIC_MOROCCO; // Arabic (Morocco) 216 else if ( wsCountry == L"TN" ) 217 usSubLang = SUBLANG_ARABIC_TUNISIA; // Arabic (Tunisia) 218 else if ( wsCountry == L"OM" ) 219 usSubLang = SUBLANG_ARABIC_OMAN; // Arabic (Oman) 220 else if ( wsCountry == L"YE" ) 221 usSubLang = SUBLANG_ARABIC_YEMEN; // Arabic (Yemen) 222 else if ( wsCountry == L"SY" ) 223 usSubLang = SUBLANG_ARABIC_SYRIA; // Arabic (Syria) 224 else if ( wsCountry == L"JO" ) 225 usSubLang = SUBLANG_ARABIC_JORDAN; // Arabic (Jordan) 226 else if ( wsCountry == L"LB" ) 227 usSubLang = SUBLANG_ARABIC_LEBANON; // Arabic (Lebanon) 228 else if ( wsCountry == L"KW" ) 229 usSubLang = SUBLANG_ARABIC_KUWAIT; // Arabic (Kuwait) 230 else if ( wsCountry == L"AE" ) 231 usSubLang = SUBLANG_ARABIC_UAE; // Arabic (U.A.E.) 232 else if ( wsCountry == L"BH" ) 233 usSubLang = SUBLANG_ARABIC_BAHRAIN; // Arabic (Bahrain) 234 else if ( wsCountry == L"QA" ) 235 usSubLang = SUBLANG_ARABIC_QATAR; // Arabic (Qatar) 236 else 237 usSubLang = SUBLANG_DEFAULT; //default sub language 238 } 239 else if ( wsLanguage == L"bg" ) 240 usPrimaryLang = LANG_BULGARIAN; //Bulgarian 02 241 else if ( wsLanguage == L"ca" ) 242 usPrimaryLang = LANG_CATALAN; //Catalan 03 243 else if ( wsLanguage == L"zh" ) 244 { 245 usPrimaryLang = LANG_CHINESE; //Chinese 246 if ( wsCountry == L"TW" ) 247 usSubLang = SUBLANG_CHINESE_TRADITIONAL; // Chinese (Traditional) 248 else if ( wsCountry == L"CN" ) 249 usSubLang = SUBLANG_CHINESE_SIMPLIFIED; // Chinese (Simplified) 250 else if ( wsCountry == L"HK" ) 251 usSubLang = SUBLANG_CHINESE_HONGKONG; // Chinese (Hong Kong SAR, PRC) 252 else if ( wsCountry == L"SG" ) 253 usSubLang = SUBLANG_CHINESE_SINGAPORE; // Chinese (Singapore) 254 else if ( wsCountry == L"MO" ) 255 usSubLang = SUBLANG_CHINESE_MACAU; // Chinese (Macau SAR) 256 else 257 usSubLang = SUBLANG_DEFAULT; //default sub language 258 } 259 else if ( wsLanguage == L"cs" ) 260 usPrimaryLang = LANG_CZECH; //Czech 261 else if ( wsLanguage == L"da" ) 262 usPrimaryLang = LANG_DANISH; //Danish 263 else if ( wsLanguage == L"de" ) 264 { 265 usPrimaryLang = LANG_GERMAN; //German 266 if ( wsCountry == L"DE" ) 267 usSubLang = SUBLANG_GERMAN; // German 268 else if ( wsCountry == L"CH" ) 269 usSubLang = SUBLANG_GERMAN_SWISS; // German (Swiss) 270 else if ( wsCountry == L"AT" ) 271 usSubLang = SUBLANG_GERMAN_AUSTRIAN; // German (Austrian) 272 else if ( wsCountry == L"LU" ) 273 usSubLang = SUBLANG_GERMAN_LUXEMBOURG; // German (Luxembourg) 274 else if ( wsCountry == L"LI" ) 275 usSubLang = SUBLANG_GERMAN_LIECHTENSTEIN; // German (Liechtenstein) 276 else 277 usSubLang = SUBLANG_DEFAULT; //default sub language 278 } 279 else if ( wsLanguage == L"el" ) 280 usPrimaryLang = LANG_GREEK; //Greek 281 else if ( wsLanguage == L"en" ) 282 { 283 usPrimaryLang = LANG_ENGLISH; //English 284 if ( wsCountry == L"US" ) 285 usSubLang = SUBLANG_ENGLISH_US; // English (US) 286 else if ( wsCountry == L"GB" ) 287 usSubLang = SUBLANG_ENGLISH_UK; // English (UK) 288 else if ( wsCountry == L"AU" ) 289 usSubLang = SUBLANG_ENGLISH_AUS; // English (Australian) 290 else if ( wsCountry == L"CA" ) 291 usSubLang = SUBLANG_ENGLISH_CAN; // English (Canadian) 292 else if ( wsCountry == L"NZ" ) 293 usSubLang = SUBLANG_ENGLISH_NZ; // English (New Zealand) 294 else if ( wsCountry == L"IE" ) 295 usSubLang = SUBLANG_ENGLISH_EIRE; // English (Ireland) 296 else if ( wsCountry == L"ZA" ) 297 usSubLang = SUBLANG_ENGLISH_SOUTH_AFRICA; // English (South Africa) 298 else if ( wsCountry == L"JM" ) 299 usSubLang = SUBLANG_ENGLISH_JAMAICA; // English (Jamaica) 300 else if ( wsCountry == L"GD" ) 301 usSubLang = SUBLANG_ENGLISH_CARIBBEAN; // English (Caribbean) Grenada 302 else if ( wsCountry == L"BZ" ) 303 usSubLang = SUBLANG_ENGLISH_BELIZE; // English (Belize) 304 else if ( wsCountry == L"TT" ) 305 usSubLang = SUBLANG_ENGLISH_TRINIDAD; // English (Trinidad) 306 else if ( wsCountry == L"ZW" ) 307 usSubLang = SUBLANG_ENGLISH_ZIMBABWE; // English (Zimbabwe) 308 else if ( wsCountry == L"PH" ) 309 usSubLang = SUBLANG_ENGLISH_PHILIPPINES; // English (Philippines) 310 else 311 usSubLang = SUBLANG_DEFAULT; //default sub language 312 } 313 else if ( wsLanguage == L"es" ) 314 { 315 usPrimaryLang = LANG_SPANISH; //Spanish 316 //else if ( wsCountry == L"ES" ) 317 // usSubLang = SUBLANG_SPANISH; // Spanish (Castilian) 318 if ( wsCountry == L"MX" ) 319 usSubLang = SUBLANG_SPANISH_MEXICAN; // Spanish (Mexican) 320 else if ( wsCountry == L"ES" ) 321 usSubLang = SUBLANG_SPANISH_MODERN; // Spanish (Spain) 322 else if ( wsCountry == L"GT" ) 323 usSubLang = SUBLANG_SPANISH_GUATEMALA; // Spanish (Guatemala) 324 else if ( wsCountry == L"CR" ) 325 usSubLang = SUBLANG_SPANISH_COSTA_RICA; // Spanish (Costa Rica) 326 else if ( wsCountry == L"PA" ) 327 usSubLang = SUBLANG_SPANISH_PANAMA; // Spanish (Panama) 328 else if ( wsCountry == L"DO" ) 329 usSubLang = SUBLANG_SPANISH_DOMINICAN_REPUBLIC; // Spanish (Dominican Republic) 330 else if ( wsCountry == L"VE" ) 331 usSubLang = SUBLANG_SPANISH_VENEZUELA; // Spanish (Venezuela) 332 else if ( wsCountry == L"CO" ) 333 usSubLang = SUBLANG_SPANISH_COLOMBIA; // Spanish (Colombia) 334 else if ( wsCountry == L"PE" ) 335 usSubLang = SUBLANG_SPANISH_PERU; // Spanish (Peru) 336 else if ( wsCountry == L"AR" ) 337 usSubLang = SUBLANG_SPANISH_ARGENTINA; // Spanish (Argentina) 338 else if ( wsCountry == L"EC" ) 339 usSubLang = SUBLANG_SPANISH_ECUADOR; // Spanish (Ecuador) 340 else if ( wsCountry == L"CL" ) 341 usSubLang = SUBLANG_SPANISH_CHILE; // Spanish (Chile) 342 else if ( wsCountry == L"UY" ) 343 usSubLang = SUBLANG_SPANISH_URUGUAY; // Spanish (Uruguay) 344 else if ( wsCountry == L"PY" ) 345 usSubLang = SUBLANG_SPANISH_PARAGUAY; // Spanish (Paraguay) 346 else if ( wsCountry == L"BO" ) 347 usSubLang = SUBLANG_SPANISH_BOLIVIA; // Spanish (Bolivia) 348 else if ( wsCountry == L"SV" ) 349 usSubLang = SUBLANG_SPANISH_EL_SALVADOR; // Spanish (El Salvador) 350 else if ( wsCountry == L"HN" ) 351 usSubLang = SUBLANG_SPANISH_HONDURAS; // Spanish (Honduras) 352 else if ( wsCountry == L"NI" ) 353 usSubLang = SUBLANG_SPANISH_NICARAGUA; // Spanish (Nicaragua) 354 else if ( wsCountry == L"PR" ) 355 usSubLang = SUBLANG_SPANISH_PUERTO_RICO; // Spanish (Puerto Rico) 356 else 357 usSubLang = SUBLANG_DEFAULT; //default sub language 358 } 359 else if ( wsLanguage == L"fi" ) 360 usPrimaryLang = LANG_FINNISH; //Finnish 361 else if ( wsLanguage == L"fr" ) 362 { 363 usPrimaryLang = LANG_FRENCH; //French 364 if ( wsCountry == L"FR" ) 365 usSubLang = SUBLANG_FRENCH; // French 366 else if ( wsCountry == L"BE" ) 367 usSubLang = SUBLANG_FRENCH_BELGIAN; // French (Belgian) 368 else if ( wsCountry == L"CA" ) 369 usSubLang = SUBLANG_FRENCH_CANADIAN; // French (Canadian) 370 else if ( wsCountry == L"CH" ) 371 usSubLang = SUBLANG_FRENCH_SWISS; // French (Swiss) 372 else if ( wsCountry == L"LU" ) 373 usSubLang = SUBLANG_FRENCH_LUXEMBOURG; // French (Luxembourg) 374 else if ( wsCountry == L"MC" ) 375 usSubLang = SUBLANG_FRENCH_MONACO; // French (Monaco) 376 else 377 usSubLang = SUBLANG_DEFAULT; //default sub language 378 } 379 else if ( wsLanguage == L"iw" ) 380 usPrimaryLang = LANG_HEBREW; //Hebrew 381 else if ( wsLanguage == L"hu" ) 382 usPrimaryLang = LANG_HUNGARIAN; //Hungarian 383 else if ( wsLanguage == L"is" ) 384 usPrimaryLang = LANG_ICELANDIC; //Icelandic 385 else if ( wsLanguage == L"it" ) 386 { 387 usPrimaryLang = LANG_ITALIAN; //Italian 388 if ( wsCountry == L"IT" ) 389 usSubLang = SUBLANG_ITALIAN; // Italian 390 else if ( wsCountry == L"CH" ) 391 usSubLang = SUBLANG_ITALIAN_SWISS; // Italian (Swiss) 392 else 393 usSubLang = SUBLANG_DEFAULT; //default sub language 394 } 395 else if ( wsLanguage == L"ja" ) 396 usPrimaryLang = LANG_JAPANESE; //Japanese 397 else if ( wsLanguage == L"ko" ) 398 { 399 usPrimaryLang = LANG_KOREAN; //Korean 400 if ( wsCountry == L"KR" ) 401 usSubLang = SUBLANG_KOREAN; // Korean 402 else 403 usSubLang = SUBLANG_DEFAULT; //default sub language 404 } 405 else if ( wsLanguage == L"nl" ) 406 { 407 usPrimaryLang = LANG_DUTCH; //Dutch 408 if ( wsCountry == L"NL" ) 409 usSubLang = SUBLANG_DUTCH; // Dutch 410 else if ( wsCountry == L"BE" ) 411 usSubLang = SUBLANG_DUTCH_BELGIAN; // Dutch (Belgian) 412 else 413 usSubLang = SUBLANG_DEFAULT; //default sub language 414 } 415 else if ( wsLanguage == L"no" ) 416 { 417 usPrimaryLang = LANG_NORWEGIAN; //Norwegian 418 if ( wsCountry == L"NO" ) 419 usSubLang = SUBLANG_NORWEGIAN_BOKMAL; // Norwegian (Bokmal) 420 //else if ( wsCountry == L"NO" ) 421 // usSubLang = SUBLANG_NORWEGIAN_NYNORSK; // Norwegian (Nynorsk) 422 else 423 usSubLang = SUBLANG_DEFAULT; //default sub language 424 } 425 else if ( wsLanguage == L"pl" ) 426 usPrimaryLang = LANG_POLISH; //Polish 427 else if ( wsLanguage == L"pt" ) 428 { 429 usPrimaryLang = LANG_PORTUGUESE; //Portuguese 430 if ( wsCountry == L"BR" ) 431 usSubLang = SUBLANG_PORTUGUESE_BRAZILIAN; // Portuguese (Brazil) 432 else if ( wsCountry == L"PT" ) 433 usSubLang = SUBLANG_PORTUGUESE; // Portuguese (Portugal) 434 else 435 usSubLang = SUBLANG_DEFAULT; //default sub language 436 } 437 else if ( wsLanguage == L"ro" ) 438 usPrimaryLang = LANG_ROMANIAN; //Romanian 439 else if ( wsLanguage == L"ru" ) 440 usPrimaryLang = LANG_RUSSIAN; //Russian 441 else if ( wsLanguage == L"hr" ) 442 usPrimaryLang = LANG_CROATIAN; //Croatian 443 else if ( wsLanguage == L"sr" ) 444 { 445 usPrimaryLang = LANG_SERBIAN; //Serbian 446 if ( wsCountry == L"VA" ) 447 usSubLang = SUBLANG_SERBIAN_LATIN; // Serbian (Latin) 448 else if ( wsCountry == L"HR" ) 449 usSubLang = SUBLANG_SERBIAN_CYRILLIC; // Serbian (Cyrillic) 450 else 451 usSubLang = SUBLANG_DEFAULT; //default sub language 452 } 453 else if ( wsLanguage == L"sk" ) 454 usPrimaryLang = LANG_SLOVAK; //Slovak 455 else if ( wsLanguage == L"sq" ) 456 usPrimaryLang = LANG_ALBANIAN; //Albanian 457 else if ( wsLanguage == L"sv" ) 458 { 459 usPrimaryLang = LANG_SWEDISH; //Swedish 460 if ( wsCountry == L"SE" ) 461 usSubLang = SUBLANG_SWEDISH; // Swedish 462 else if ( wsCountry == L"FI" ) 463 usSubLang = SUBLANG_SWEDISH_FINLAND; // Swedish (Finland) 464 else 465 usSubLang = SUBLANG_DEFAULT; //default sub language 466 } 467 else if ( wsLanguage == L"th" ) 468 usPrimaryLang = LANG_THAI; //Thai 469 else if ( wsLanguage == L"tr" ) 470 usPrimaryLang = LANG_TURKISH; //Turkish 471 else if ( wsLanguage == L"ur" ) 472 { 473 usPrimaryLang = LANG_URDU; //Urdu 474 if ( wsCountry == L"PK" ) 475 usSubLang = SUBLANG_URDU_PAKISTAN; // Urdu (Pakistan) 476 else if ( wsCountry == L"IN" ) 477 usSubLang = SUBLANG_URDU_INDIA; // Urdu (India) 478 else 479 usSubLang = SUBLANG_DEFAULT; //default sub language 480 } 481 else if ( wsLanguage == L"in" ) 482 usPrimaryLang = LANG_INDONESIAN; //Indonesian 483 else if ( wsLanguage == L"uk" ) 484 usPrimaryLang = LANG_UKRAINIAN; //Ukrainian 485 else if ( wsLanguage == L"be" ) 486 usPrimaryLang = LANG_BELARUSIAN; //Belarusian 487 else if ( wsLanguage == L"sl" ) 488 usPrimaryLang = LANG_SLOVENIAN; //Slovenian 489 else if ( wsLanguage == L"et" ) 490 usPrimaryLang = LANG_ESTONIAN; //Estonian 491 else if ( wsLanguage == L"lv" ) 492 usPrimaryLang = LANG_LATVIAN; //Latvian 493 else if ( wsLanguage == L"lt" ) 494 { 495 usPrimaryLang = LANG_LITHUANIAN; //Lithuanian 496 if ( wsCountry == L"LT" ) 497 usSubLang = SUBLANG_LITHUANIAN; // Lithuanian 498 else 499 usSubLang = SUBLANG_DEFAULT; //default sub language 500 } 501 else if ( wsLanguage == L"fa" ) 502 usPrimaryLang = LANG_FARSI; //Farsi 503 else if ( wsLanguage == L"vi" ) 504 usPrimaryLang = LANG_VIETNAMESE; //Vietnamese 505 else if ( wsLanguage == L"hy" ) 506 usPrimaryLang = LANG_ARMENIAN; //Armenian 507 else if ( wsLanguage == L"az" ) 508 { 509 usPrimaryLang = LANG_AZERI; //Azeri 510 //if ( wsCountry == L" " ) 511 // usSubLang = SUBLANG_AZERI_LATIN; // Azeri (Latin) 512 //else if ( wsCountry == L" " ) 513 // usSubLang = SUBLANG_AZERI_CYRILLIC; // Azeri (Cyrillic) 514 } 515 else if ( wsLanguage == L"eu" ) 516 usPrimaryLang = LANG_BASQUE; //Basque 517 else if ( wsLanguage == L"mk" ) 518 usPrimaryLang = LANG_MACEDONIAN; //FYRO Macedonian 519 else if ( wsLanguage == L"af" ) 520 usPrimaryLang = LANG_AFRIKAANS; //Afrikaans 521 else if ( wsLanguage == L"ka" ) 522 usPrimaryLang = LANG_GEORGIAN; //Georgian 523 else if ( wsLanguage == L"fo" ) 524 usPrimaryLang = LANG_FAEROESE; //Faeroese 525 else if ( wsLanguage == L"hi" ) 526 usPrimaryLang = LANG_HINDI; //Hindi 527 else if ( wsLanguage == L"ms" ) 528 { 529 usPrimaryLang = LANG_MALAY; //Malay 530 if ( wsCountry == L"MY" ) 531 usSubLang = SUBLANG_MALAY_MALAYSIA; // Malay (Malaysia) 532 else if ( wsCountry == L"BN" ) 533 usSubLang = SUBLANG_MALAY_BRUNEI_DARUSSALAM; // Malay (Brunei Darassalam) 534 else 535 usSubLang = SUBLANG_DEFAULT; //default sub language 536 } 537 else if ( wsLanguage == L"kk" ) 538 usPrimaryLang = LANG_KAZAK; //Kazak 539 else if ( wsLanguage == L"ky" ) 540 usPrimaryLang = LANG_KYRGYZ; //Kyrgyz 541 else if ( wsLanguage == L"sw" ) 542 usPrimaryLang = LANG_SWAHILI; //Swahili 543 else if ( wsLanguage == L"uz" ) 544 { 545 usPrimaryLang = LANG_UZBEK; //Uzbek 546 if ( wsCountry == L"UZ" ) 547 usSubLang = SUBLANG_UZBEK_LATIN; // Uzbek (Latin) 548 else if ( wsCountry == L"DE" ) 549 usSubLang = SUBLANG_UZBEK_CYRILLIC; // Uzbek (Cyrillic) 550 else 551 usSubLang = SUBLANG_DEFAULT; //default sub language 552 } 553 else if ( wsLanguage == L"tt" ) 554 usPrimaryLang = LANG_TATAR; //Tatar 555 else if ( wsLanguage == L"bn" ) 556 usPrimaryLang = LANG_BENGALI; //Not supported. 557 else if ( wsLanguage == L"pa" ) 558 usPrimaryLang = LANG_PUNJABI; //Punjabi 559 else if ( wsLanguage == L"gu" ) 560 usPrimaryLang = LANG_GUJARATI; //Gujarati 561 else if ( wsLanguage == L"or" ) 562 usPrimaryLang = LANG_ORIYA; //Not supported. 563 else if ( wsLanguage == L"ta" ) 564 usPrimaryLang = LANG_TAMIL; //Tamil 565 else if ( wsLanguage == L"te" ) 566 usPrimaryLang = LANG_TELUGU; //Telugu 567 else if ( wsLanguage == L"kn" ) 568 usPrimaryLang = LANG_KANNADA; //Kannada 569 else if ( wsLanguage == L"ml" ) 570 usPrimaryLang = LANG_MALAYALAM; //Not supported. 571 else if ( wsLanguage == L"as" ) 572 usPrimaryLang = LANG_ASSAMESE; //Not supported. 573 else if ( wsLanguage == L"mr" ) 574 usPrimaryLang = LANG_MARATHI; //Marathi 575 else if ( wsLanguage == L"sa" ) 576 usPrimaryLang = LANG_SANSKRIT; //Sanskrit 577 else if ( wsLanguage == L"mn" ) 578 usPrimaryLang = LANG_MONGOLIAN; //Mongolian 579 else if ( wsLanguage == L"gl" ) 580 usPrimaryLang = LANG_GALICIAN; //Galician 581 else if ( wsLanguage == L"sd" ) 582 usPrimaryLang = LANG_SINDHI; //Not supported. 583 else if ( wsLanguage == L"ks" ) 584 usPrimaryLang = LANG_KASHMIRI; //Not supported. 585 else if ( wsLanguage == L"ne" ) 586 usPrimaryLang = LANG_NEPALI; //Not supported. 587 //else if ( wsLanguage == L" " ) 588 // usPrimaryLang = LANG_MANIPURI; //Not supported. 589 //else if ( wsLanguage == L" " ) 590 // usPrimaryLang = LANG_KONKANI; //Konkani 591 //else if ( wsLanguage == L" " ) 592 // usPrimaryLang = LANG_SYRIAC; //Syriac 593 //else if ( wsLanguage == L" " ) 594 // usPrimaryLang = LANG_DIVEHI; //Divehi 595 else 596 return GetSystemDefaultLCID(); //System Default Locale 597 598 return MAKELCID( MAKELANGID( usPrimaryLang, usSubLang ), SORT_DEFAULT ); 599 } 600