CSDN专家博客精华版

为人民服务!
  首页  :: 新随笔  :: 管理

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

Posted on 2007-12-17 10:17  csdnexpert  阅读(235)  评论(0编辑  收藏  举报

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

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1564059