Archive

‘動態語系切換’ 分類過的Archive

語系切換測試

2009年1月12日 尚無評論

參考
http://www.codeproject.com/KB/locale/LanguageMenu.aspx
Internationalization Cookbook

使用:
1.使用class
在App中加入

CLanguageSupport _CLanguageSupport;

2.InitInstance()時偵測有那些語言可用

_CLanguageSupport.language_detect();
_CLanguageSupport.LoadBestLanguage();

3.Dialog中的ComboBox的語言選項
初始化ComboBox:

CComboBox* box=(CComboBox*)GetDlgItem(IDC_COMBO1);
int count=theApp._CLanguageSupport.language_count();
CString tmp;

for(int i=0;i
{
	if(theApp._CLanguageSupport.language_name(i,tmp))
	{
		box->AddString(tmp);
		box->SetItemData(i,i);
	}
}
int id=theApp._CLanguageSupport.language_current();
if(id>=0)
{
	theApp._CLanguageSupport.language_name(id,tmp);
	box->SelectString(id,tmp);
}

4. ComboBox選項改變時變更語系

void CChange_languageDlg::OnSelendokCombo1()
{
	CComboBox* box=(CComboBox*)GetDlgItem(IDC_COMBO1);

	int sel=box->GetCurSel();
	if(sel>=0)
		theApp._CLanguageSupport.language_switch(sel);
}

5.接收語系變更訊息
5.1在Message Map 中加入

ON_REGISTERED_MESSAGE(WM_LANGUAGE_CHANGE,OnLanguageChange)

5.2加入訊息處理更新文字訊息

LRESULT CChange_languageDlg::OnLanguageChange(WPARAM,LPARAM)
{
	CString str;
	if(str.LoadString(IDS_STRING_CHANGE_LANGUAGE_DIALOG))
		SetWindowText(str);
	//....
	return 0;
}
Categories: 動態語系切換 Tags:

執行檔使用Unicode

2009年1月10日 尚無評論

改變專案設定
Project\settings\link的Entry-point Symbol: wWinMainCRTStartup

unicode_start
Project\settings\C/C++的Preprocessor definitions:
將_MBCS移除加入_UNICODE,UNICODE

unicode

當執行檔使用MBCS而dll使用UNICODE動態連結至MFC,使用debug程式結束會有memory leak

Detected memory leaks!
Dumping objects ->
{67} client block at 0×00541290, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $00541290, 64 bytes long
a CDynLinkLibrary object at $00541290, 64 bytes long
{62} client block at 0×00541410, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $00541410, 64 bytes long
a CDynLinkLibrary object at $00541410, 64 bytes long
{60} client block at 0×00541530, subtype 0, 64 bytes long.
a CDynLinkLibrary object at $00541530, 64 bytes long
a CDynLinkLibrary object at $00541530, 64 bytes long

Categories: 動態語系切換 Tags:

依據語系編輯資源檔

2009年1月10日 尚無評論

參考區域語言

使用簡寫名稱當檔名:
如AFK.dll, SQI.dll,ARA.dll

1. 建立一個只有資源檔的dll參考resource only dll in vc6
2.將執行檔所用到的所有資源檔加到專案
3. 翻譯資源檔的字串,當windows系統的地區不支援該語系時,vc6沒有辦法編輯該地區的文字!
3.1到控制台的[地區及語言選項\進階]改變區域選項。
region

3.2 改變資源檔語系
VC選單[Project\Setting\Resources]
language

VC選單[View\Resource Includes...]
resource_include

3.3.設定版本資訊的語言資訊與dll名稱相對應
code
code page使用Unicode

3.4開始翻譯文字,Build成XXX.dll

Categories: 動態語系切換 Tags:

區域語言

2009年1月10日 8 則評論

整理至http://www.microsoft.com/globaldev/nlsweb/default.mspx

LCID

Culture Identifier

Locale

Language Country/Region

Local

language name

ANSI

codepage

OEM

codepage

Language name abbreviation **
0×0036 Afrikaans Afrikaans 1252 850 AFK
0×0436 Afrikaans (South Africa) Afrikaans (Suid Afrika) 1252 850 AFK
0x001C Albanian shqipe 1250 852 SQI
0x041C Albanian (Albania) shqipe (Shqipëria) 1250 852 SQI
0×0001 Arabic‎ العربية‏ 1256 720 ARA
0×1401 Arabic (Algeria)‎ العربية (الجزائر)‏ 1256 720 ARG
0x3C01 Arabic (Bahrain)‎ العربية (البحرين)‏ 1256 720 ARH
0x0C01 Arabic (Egypt)‎ العربية (مصر)‏ 1256 720 ARE
0×0801 Arabic (Iraq)‎ العربية (العراق)‏ 1256 720 ARI
0x2C01 Arabic (Jordan)‎ العربية (الأردن)‏ 1256 720 ARJ
0×3401 Arabic (Kuwait)‎ العربية (الكويت)‏ 1256 720 ARK
0×3001 Arabic (Lebanon)‎ العربية (لبنان)‏ 1256 720 ARB
0×1001 Arabic (Libya)‎ العربية (ليبيا)‏ 1256 720 ARL
0×1801 Arabic (Morocco)‎ العربية (المملكة المغربية)‏ 1256 720 ARM
0×2001 Arabic (Oman)‎ العربية (عمان)‏ 1256 720 ARO
0×4001 Arabic (Qatar)‎ العربية (قطر)‏ 1256 720 ARQ
0×0401 Arabic (Saudi Arabia)‎ العربية (المملكة العربية السعودية)‏ 1256 720 ARA
0×2801 Arabic (Syria)‎ العربية (سوريا)‏ 1256 720 ARS
0x1C01 Arabic (Tunisia)‎ العربية (تونس)‏ 1256 720 ART
0×3801 Arabic (U.A.E.)‎ العربية (الإمارات العربية المتحدة)‏ 1256 720 ARU
0×2401 Arabic (Yemen)‎ العربية (اليمن)‏ 1256 720 ARY
0x002B Armenian Հայերեն 0 1 HYE
0x042B Armenian (Armenia) Հայերեն (Հայաստան) 0 1 HYE
0x002C Azeri Azərbaycan­ılı 1254 857 AZE
0x082C Azeri (Cyrillic, Azerbaijan) Азәрбајҹан (Азәрбајҹан) 1251 866 AZE
0x042C Azeri (Latin, Azerbaijan) Azərbaycan­ılı (Azərbaycanca) 1254 857 AZE
0x002D Basque euskara 1252 850 EUQ
0x042D Basque (Basque) euskara (euskara) 1252 850 EUQ
0×0023 Belarusian Беларускі 1251 866 BEL
0×0423 Belarusian (Belarus) Беларускі (Беларусь) 1251 866 BEL
0×0445 Bengali (India) বাঢলা (ভারত) 0 1 BNG
0x141A Bosnian (Latin, Bosnia and Herzegovina) bosanski (Bosna i Hercegovina) 1250 852 BSB
0×0002 Bulgarian български 1251 866 BGR
0×0402 Bulgarian (Bulgaria) български (България) 1251 866 BGR
0×0003 Catalan català 1252 850 CAT
0×0403 Catalan (Catalan) català (català) 1252 850 CAT
0x0C04 Chinese (Hong Kong S.A.R.) 中文(香港特别行政區) 950 950 ZHH
0×1404 Chinese (Macao S.A.R.) 中文(澳門特别行政區) 950 950 ZHM
0×0804 Chinese (People’s Republic of China) 中文(中华人民共和国) 936 936 CHS
0×0004 Chinese (Simplified) 中文(简体) 936 936 CHS
0×1004 Chinese (Singapore) 中文(新加坡) 936 936 ZHI
0×0404 Chinese (Taiwan) 中文(台灣) 950 950 CHT
0x7C04 Chinese (Traditional) 中文(繁體) 950 950 CHT
0x001A Croatian hrvatski 1250 852 HRV
0x101A Croatian (Bosnia and Herzegovina) hrvatski (Bosna i Hercegovina) 1250 852 HRB
0x041A Croatian (Croatia) hrvatski (Hrvatska) 1250 852 HRV
0×0005 Czech čeština 1250 852 CSY
0×0405 Czech (Czech Republic) čeština (Česká republika) 1250 852 CSY
0×0006 Danish dansk 1252 850 DAN
0×0406 Danish (Denmark) dansk (Danmark) 1252 850 DAN
0×0065 Divehi‎ ދިވެހިބަސް‏ 0 1 DIV
0×0465 Divehi (Maldives)‎ ދިވެހިބަސް (ދިވެހި ރާއްޖެ)‏ 0 1 DIV
0×0013 Dutch Nederlands 1252 850 NLD
0×0813 Dutch (Belgium) Nederlands (België) 1252 850 NLB
0×0413 Dutch (Netherlands) Nederlands (Nederland) 1252 850 NLD
0×0009 English English 1252 437 ENU
0x0C09 English (Australia) English (Australia) 1252 850 ENA
0×2809 English (Belize) English (Belize) 1252 850 ENL
0×1009 English (Canada) English (Canada) 1252 850 ENC
0×2409 English (Caribbean) English (Caribbean) 1252 850 ENB
0×1809 English (Ireland) English (Eire) 1252 850 ENI
0×2009 English (Jamaica) English (Jamaica) 1252 850 ENJ
0×1409 English (New Zealand) English (New Zealand) 1252 850 ENZ
0×3409 English (Republic of the Philippines) English (Philippines) 1252 437 ENP
0x1C09 English (South Africa) English (South Africa) 1252 437 ENS
0x2C09 English (Trinidad and Tobago) English (Trinidad y Tobago) 1252 850 ENT
0×0809 English (United Kingdom) English (United Kingdom) 1252 850 ENG
0×0409 English (United States) English (United States) 1252 437 ENU
0×3009 English (Zimbabwe) English (Zimbabwe) 1252 437 ENW
0×0025 Estonian eesti 1257 775 ETI
0×0425 Estonian (Estonia) eesti (Eesti) 1257 775 ETI
0×0038 Faroese føroyskt 1252 850 FOS
0×0438 Faroese (Faroe Islands) føroyskt (Føroyar) 1252 850 FOS
0x000B Finnish suomi 1252 850 FIN
0x040B Finnish (Finland) suomi (Suomi) 1252 850 FIN
0x000C French français 1252 850 FRA
0x080C French (Belgium) français (Belgique) 1252 850 FRB
0x0C0C French (Canada) français (Canada) 1252 850 FRC
0x040C French (France) français (France) 1252 850 FRA
0x140C French (Luxembourg) français (Luxembourg) 1252 850 FRL
0x180C French (Principality of Monaco) français (Principauté de Monaco) 1252 850 FRM
0x100C French (Switzerland) français (Suisse) 1252 850 FRS
0×0056 Galician galego 1252 850 GLC
0×0456 Galician (Galician) galego (galego) 1252 850 GLC
0×0037 Georgian ქართული 0 1 KAT
0×0437 Georgian (Georgia) ქართული (საქართველო) 0 1 KAT
0×0007 German Deutsch 1252 850 DEU
0x0C07 German (Austria) Deutsch (Österreich) 1252 850 DEA
0×0407 German (Germany) Deutsch (Deutschland) 1252 850 DEU
0×1407 German (Liechtenstein) Deutsch (Liechtenstein) 1252 850 DEC
0×1007 German (Luxembourg) Deutsch (Luxemburg) 1252 850 DEL
0×0807 German (Switzerland) Deutsch (Schweiz) 1252 850 DES
0×0008 Greek ελληνικά 1253 737 ELL
0×0408 Greek (Greece) ελληνικά (Ελλάδα) 1253 737 ELL
0×0047 Gujarati ગુજરાતી 0 1 GUJ
0×0447 Gujarati (India) ગુજરાતી (ભારત) 0 1 GUJ
0x000D Hebrew‎ עברית‏ 1255 862 HEB
0x040D Hebrew (Israel)‎ עברית (ישראל)‏ 1255 862 HEB
0×0039 Hindi हिंदी 0 1 HIN
0×0439 Hindi (India) हिंदी (भारत) 0 1 HIN
0x000E Hungarian magyar 1250 852 HUN
0x040E Hungarian (Hungary) magyar (Magyarország) 1250 852 HUN
0x000F Icelandic íslenska 1252 850 ISL
0x040F Icelandic (Iceland) íslenska (Ísland) 1252 850 ISL
0×0021 Indonesian Bahasa Indonesia 1252 850 IND
0×0421 Indonesian (Indonesia) Bahasa Indonesia (Indonesia) 1252 850 IND
0×0010 Italian italiano 1252 850 ITA
0×0410 Italian (Italy) italiano (Italia) 1252 850 ITA
0×0810 Italian (Switzerland) italiano (Svizzera) 1252 850 ITS
0×0011 Japanese 日本語 932 932 JPN
0×0411 Japanese (Japan) 日本語 (日本) 932 932 JPN
0x004B Kannada ಕನ್ನಡ 0 1 KDI
0x044B Kannada (India) ಕನ್ನಡ (ಭಾರತ) 0 1 KDI
0x003F Kazakh Қазащb 1251 866 KKZ
0x043F Kazakh (Kazakhstan) Қазақ (Қазақстан) 1251 866 KKZ
0×0041 Kiswahili Kiswahili 1252 437 SWK
0×0441 Kiswahili (Kenya) Kiswahili (Kenya) 1252 437 SWK
0×0057 Konkani कोंकणी 0 1 KNK
0×0457 Konkani (India) कोंकणी (भारत) 0 1 KNK
0×0012 Korean 한국어 949 949 KOR
0×0412 Korean (Korea) 한국어 (대한민국) 949 949 KOR
0×0040 Kyrgyz Кыргыз 1251 866 KYR
0×0440 Kyrgyz (Kyrgyzstan) Кыргыз (Кыргызстан) 1251 866 KYR
0×0026 Latvian latviešu 1257 775 LVI
0×0426 Latvian (Latvia) latviešu (Latvija) 1257 775 LVI
0×0027 Lithuanian lietuvių 1257 775 LTH
0×0427 Lithuanian (Lithuania) lietuvių (Lietuva) 1257 775 LTH
0x002F Macedonian македонски јазик 1251 866 MKI
0x042F Macedonian (Former Yugoslav Republic of Macedonia) македонски јазик (Македонија) 1251 866 MKI
0x003E Malay Bahasa Malaysia 1252 850 MSL
0x083E Malay (Brunei Darussalam) Bahasa Malaysia (Brunei Darussalam) 1252 850 MSB
0x043E Malay (Malaysia) Bahasa Malaysia (Malaysia) 1252 850 MSL
0x044C Malayalam (India) മലയാളം (ഭാരതം) 0 1 MYM
0x043A Maltese Malti (Malta) 0 1 MLT
0×0481 Maori Reo Māori (Aotearoa) 0 1 MRI
0x004E Marathi मराठी 0 1 MAR
0x044E Marathi (India) मराठी (भारत) 0 1 MAR
0×0050 Mongolian Монгол хэл 1251 866 MON
0×0450 Mongolian (Cyrillic, Mongolia) Монгол хэл (Монгол улс) 1251 866 MON
0x046C Northern Sotho Sesotho sa Leboa (Afrika Borwa) 1252 850 NSO
0×0014 Norwegian norsk 1252 850 NOR
0×0414 Norwegian, Bokmål (Norway) norsk, bokmål (Norge) 1252 850 NOR
0×0814 Norwegian, Nynorsk (Norway) norsk, nynorsk (Noreg) 1252 850 NON
0×0029 Persian‎ فارسى‏ 1256 720 FAR
0×0429 Persian (Iran)‎ فارسى (ايران)‏ 1256 720 FAR
0×0015 Polish polski 1250 852 PLK
0×0415 Polish (Poland) polski (Polska) 1250 852 PLK
0×0016 Portuguese Português 1252 850 PTB
0×0416 Portuguese (Brazil) Português (Brasil) 1252 850 PTB
0×0816 Portuguese (Portugal) português (Portugal) 1252 850 PTG
0×0046 Punjabi ਪੰਜਾਬੀ 0 1 PAN
0×0446 Punjabi (India) ਪੰਜਾਬੀ (ਭਾਰਤ) 0 1 PAN
0x046B Quechua (Bolivia) runasimi (Bolivia Suyu) 1252 850 QUB
0x086B Quechua (Ecuador) runasimi (Ecuador Suyu) 1252 850 QUE
0x0C6B Quechua (Peru) runasimi (Peru Suyu) 1252 850 QUP
0×0018 Romanian română 1250 852 ROM
0×0418 Romanian (Romania) română (România) 1250 852 ROM
0×0019 Russian русский 1251 866 RUS
0×0419 Russian (Russia) русский (Россия) 1251 866 RUS
0x243B Sami, Inari (Finland) sämikielâ (Suomâ) 1252 850 SMN
0x103B Sami, Lule (Norway) julevusámegiella (Vuodna) 1252 850 SMJ
0x143B Sami, Lule (Sweden) julevusámegiella (Svierik) 1252 850 SMK
0x0C3B Sami, Northern (Finland) davvisámegiella (Suopma) 1252 850 SMG
0x043B Sami, Northern (Norway) davvisámegiella (Norga) 1252 850 SME
0x083B Sami, Northern (Sweden) davvisámegiella (Ruoŧŧa) 1252 850 SMF
0x203B Sami, Skolt (Finland) sääm´ǩiõll (Lää´ddjânnam) 1252 850 SMS
0x183B Sami, Southern (Norway) åarjelsaemiengiele (Nöörje) 1252 850 SMA
0x1C3B Sami, Southern (Sweden) åarjelsaemiengiele (Sveerje) 1252 850 SMB
0x004F Sanskrit संस्कृत 0 1 SAN
0x044F Sanskrit (India) संस्कृत (भारतम्) 0 1 SAN
0x7C1A Serbian srpski 1251 855 SRB
0x1C1A Serbian (Cyrillic, Bosnia and Herzegovina) српски (Босна и Херцеговина) 1251 855 SRN
0x0C1A Serbian (Cyrillic, Serbia and Montenegro) српски (Србија и Црна Гора) 1251 855 SRB
0x181A Serbian (Latin, Bosnia and Herzegovina) srpski (Bosna i Hercegovina) 1250 852 SRS
0x081A Serbian (Latin, Serbia and Montenegro) srpski (Srbija i Crna Gora) 1250 852 SRL
0x001B Slovak slovenčina 1250 852 SKY
0x041B Slovak (Slovakia) slovenčina (Slovenská republika) 1250 852 SKY
0×0024 Slovenian slovenski 1250 852 SLV
0×0424 Slovenian (Slovenia) slovenski (Slovenija) 1250 852 SLV
0x000A Spanish español 1252 850 ESP
0x2C0A Spanish (Argentina) Español (Argentina) 1252 850 ESS
0x400A Spanish (Bolivia) Español (Bolivia) 1252 850 ESB
0x340A Spanish (Chile) Español (Chile) 1252 850 ESL
0x240A Spanish (Colombia) Español (Colombia) 1252 850 ESO
0x140A Spanish (Costa Rica) Español (Costa Rica) 1252 850 ESC
0x1C0A Spanish (Dominican Republic) Español (República Dominicana) 1252 850 ESD
0x300A Spanish (Ecuador) Español (Ecuador) 1252 850 ESF
0x440A Spanish (El Salvador) Español (El Salvador) 1252 850 ESE
0x100A Spanish (Guatemala) Español (Guatemala) 1252 850 ESG
0x480A Spanish (Honduras) Español (Honduras) 1252 850 ESH
0x080A Spanish (Mexico) Español (México) 1252 850 ESM
0x4C0A Spanish (Nicaragua) Español (Nicaragua) 1252 850 ESI
0x180A Spanish (Panama) Español (Panamá) 1252 850 ESA
0x3C0A Spanish (Paraguay) Español (Paraguay) 1252 850 ESZ
0x280A Spanish (Peru) Español (Perú) 1252 850 ESR
0x500A Spanish (Puerto Rico) Español (Puerto Rico) 1252 850 ESU
0x0C0A Spanish (Spain) español (España) 1252 850 ESN
0x380A Spanish (Uruguay) Español (Uruguay) 1252 850 ESY
0x200A Spanish (Venezuela) Español (Republica Bolivariana de Venezuela) 1252 850 ESV
0x001D Swedish svenska 1252 850 SVE
0x081D Swedish (Finland) svenska (Finland) 1252 850 SVF
0x041D Swedish (Sweden) svenska (Sverige) 1252 850 SVE
0x005A Syriac‎ ܣܘܪܝܝܐ‏ 0 1 SYR
0x045A Syriac (Syria)‎ ܣܘܪܝܝܐ (سوريا)‏ 0 1 SYR
0×0049 Tamil தமிழ் 0 1 TAM
0×0449 Tamil (India) தமிழ் (இந்தியா) 0 1 TAM
0×0044 Tatar Татар 1251 866 TTT
0×0444 Tatar (Russia) Татар (Россия) 1251 866 TTT
0x004A Telugu తెలుగు 0 1 TEL
0x044A Telugu (India) తెలుగు (భారత దేశం) 0 1 TEL
0x001E Thai ไทย 874 874 THA
0x041E Thai (Thailand) ไทย (ไทย) 874 874 THA
0×0432 Tswana Setswana (Aforika Borwa) 1252 850 TSN
0x001F Turkish Türkçe 1254 857 TRK
0x041F Turkish (Turkey) Türkçe (Türkiye) 1254 857 TRK
0×0022 Ukrainian україньска 1251 866 UKR
0×0422 Ukrainian (Ukraine) україньска (Україна) 1251 866 UKR
0×0020 Urdu‎ اُردو‏ 1256 720 URD
0×0420 Urdu (Islamic Republic of Pakistan)‎ اُردو (پاکستان)‏ 1256 720 URD
0×0043 Uzbek U’zbek 1254 857 UZB
0×0843 Uzbek (Cyrillic, Uzbekistan) Ўзбек (Ўзбекистон) 1251 866 UZB
0×0443 Uzbek (Latin, Uzbekistan) U’zbek (U’zbekiston Respublikasi) 1254 857 UZB
0x002A Vietnamese Tiếng Việt 1258 1258 VIT
0x042A Vietnamese (Vietnam) Tiếng Việt (Việt Nam) 1258 1258 VIT
0×0452 Welsh Cymraeg (y Deyrnas Unedig) 1252 850 CYM
0×0434 Xhosa isiXhosa (uMzantsi Afrika) 1252 850 XHO
0×0435 Zulu isiZulu (iNingizimu Afrika) 1252 850 ZUL

* Abbreviated name of the country or region. This information can be retrieved by a call to the GetLocaleInfo() API with LCTYPE set to SABBREVCTRYNAME.

** Abbreviated name of the language. This information can be retrieved by a call to the GetLocaleInfo() API with LCTYPE set to SABBREVLANGNAME .

Categories: 動態語系切換 Tags: