國際化程式設計中Locale相關概念的一些解釋

ATField發表於2007-04-13

Locales

一般常用的並且容易造成混淆的Locale3種:System Locale, User Locale, Thread Locale

1.     System Locale:系統區域設定。決定了非Unicode程式所使用的內碼表,如下:

System Locale對應的Code Page可以用GetACPGetOEMCP來獲得。System Locale無法被API修改 ,但是可以用GetSystemDefaultLCIDGetSystemDefaultLangID獲得。LCIDLangID後面會解釋。

2.     User Locale:使用者區域設定,決定了各種標準和格式的定義,如數字,日期等,如下:

User Locale是不能被API修改的,只能由使用者設定。可以通過GetUserDefaultLCIDGetUserDefaultLangID獲得。同樣的,區別後面會提到。

3.     Thread Locale:執行緒相關的區域。初始值為當前的User Locale,可以使用GetThreadLocaleSetThreadLocale獲取和修改。

 

LANGID & LCID

 

1.     LANGIDLanguage ID,也就是語言ID。代表不同的語言,比如EnglishChinese,等等。Lang ID (16 bit)=Primary Language ID(10 bit) + Sub Language ID(6 bit),如下:

Sub Language ID:6

Primary Language ID:10

 

PrimaryLanguage代表主語言,比如英語

Sub Language代表子語言,也就是語言的亞種,如美式英語 (en-us),或者英式英語(en-gb),對應的子語言為us/gb

2.     LCIDLocale Identifier,代表Locale資訊,等價於LANGID (16 bit) + Sort ID (4bit) + Reserved (12),如下:

Reserved : 16

Sort ID : 4

LANG ID: 16

 

作者:      ATField
Blog:     
http://blog.csdn.net/atfield
轉載請註明出處

相關文章