现在的位置: 首页 > 综合 > 正文

国际化编程中Locale相关概念的一些解释

2013年01月01日 ⁄ 综合 ⁄ 共 908字 ⁄ 字号 评论关闭

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
转载请注明出处

抱歉!评论已关闭.