GetLocaleInfo和本地化

在一些系统设计中,时间日期,钱币符号等很多东西在每个国家的表示都是不同。如何让程序自动适应这些变化?

GetLocaleInfo为此提供了解决办法。

GetLocaleInfo可以获取各种数据的设置参数。配合GetDateFormat,GetTimeFormat可以获的日期、时间的本地格式化结果。

GetNumberFormat可以获取数字显示的本地格式化输出结果

以下为时间显示参考代码

TCHAR sdate[128],stime[64];
TCHAR szBuffer[MAX_PATH] = {0};
DWORD dwBufLen = sizeof(TCHAR)*MAX_PATH;
SYSTEMTIME tnow;
GetLocalTime(&tnow);


//显示如: L"23.06.09"
GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tnow,0,sdate,64);


//显示如: L"05:57:08 AM"
GetTimeFormat(LOCALE_SYSTEM_DEFAULT,TIME_FORCE24HOURFORMAT,&tnow,TEXT("HH:mm:ss tt"),stime,64);
//如果szBuffer == L"0"表示12小时制,szBuffer == L"1"表示24小时制
GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer,dwBufLen);


//LOCALE_ILANGUAGE: 显示数字字符如: L"0409"


//LOCALE_SLANGUAGE: 显示字符如: L"English (United States)"


//LOCALE_SENGLANGUAGE: 显示字符如: L"English"


//LOCALE_SABBREVLANGNAME: 显示字符如: L"ENU"


//LOCALE_SNATIVELANGNAME: 显示字符如: L"English"
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SENGLANGUAGE,szBuffer,dwBufLen);


//得到本地代码页
DWORD GetLocalPageCode()
{
	WCHAR pwCodePage[6] = {0};


	GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTCODEPAGE, pwCodePage, sizeof(pwCodePage));

	return _wtoi(pwCodePage);
}


其它请参照MSDN尝试自行设置并查看结果.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值