C++ 如何获取Windows操作系统的语言
对于支持多语言版本的程序来说,一般都是先获取系统的语言,然后根据系统的语言,自动切换到与之对应的语言。Windows sdk 也提供了获取语言的API函数:
- GetSystemDefaultLangID
- GetUserDefaultLangID
- GetSystemDefaultUILanguage
- GetUserDefaultUILanguage
那么我们到底该用哪一个?先说结论:推荐使用GetUserDefaultUILanguage。以win10为例,因为通过修改“Windows显示语言”,该Api的返回值就会发生改变。而修改“Windows显示语言”的操作,与用户的心理预期是一致的。
示例代码:
namespace
{struct countryLang{LANGID langId;//char country[16];//国际代码缩写char lang[32];//char userLang[32];//};const countryLang COUNTRY_LANG[] = {{0x0804, "CN", "zh", "zh_CN"},//中国{0x0409, "US", "en", "en_US"},//美国{0x0412, "KR", "ko", "ko_KR"},//韩国{0x0411, "JP", "ja", "ja_JP"},//日本{0x0421, "ID", "en", "en_ID"},//印度尼西亚{0x0407, "DE", "de", "de_DE"},//德国{0x040c, "FR", "fr", "fr_Fr"},//法国{0x0410, "IT", "it", "it_IT"},//意大利{0x0416, "BR", "pt", "pt_BR"},//葡萄牙{0x0c0a, "ES", "es", "es_Es"},//西班牙{0x0419, "RU", "ru", "ru_RU"},//俄国{0x041f, "TR", "tr", "tr_TR"},//土耳其{0x042a, "VI", "vi", "vi_VI"},//越南{0x041e, "TH", "en", "en_TH"},//泰国{0x0809, "GB", "en", "en_US"}//英国};
}
//
bool GetDefaultLang(std::string& country, std::string& lang, std::string& userLang)
{bool bFind = false;//LANGID lang_id = GetSystemDefaultLangID();LANGID lang_id = GetUserDefaultUILanguage();//"win10>设置>语言>Windows显示语言"int size = sizeof(COUNTRY_LANG) / sizeof(COUNTRY_LANG[0]);char _country[16] = { 0 };//国际代码缩写strcpy_s(_country, "US");char _lang[32] = { 0 };//语言strcpy_s(_lang, "en");char _userlang[32] = { 0 };//用户语言strcpy_s(_userlang, "en_US");for (int i = 0; i < size; i++){if (lang_id == COUNTRY_LANG[i].langId){memset(_country, 0, sizeof(_country));memset(_lang, 0, sizeof(_lang));memset(_userlang, 0, sizeof(_userlang));strcpy(_country, COUNTRY_LANG[i].country);strcpy(_lang, COUNTRY_LANG[i].lang);strcpy(_userlang, COUNTRY_LANG[i].userLang);bFind = true;break;}}country = std::string(_country);lang = std::string(_lang);userLang = std::string(_userlang);return bFind;
}
C++ 如何获取Windows操作系统的语言相关推荐
- VC++获取Windows操作系统的语言版本(附源码)
目录 1.系统提供的多个获取语言版本的API函数 2.各个函数在MSDN上的说明
- 在C#里怎样获得当前Windows操作系统的语言种类?以及如何知道当前Windows版本?...
MessageBox.Show(System.Globalization.CultureInfo.InstalledUICulture.NativeName); MessageBox.Show( ...
- Python获取Windows系统语言
>>> import ctypes >>> dll_h = ctypes.windll.kernel32 >>> hex(dll_h.GetSys ...
- VB获取Windows操作系统所有版本
'**************************************************************************** '人人为我,我为人人 '枕善居汉化收藏整理 ...
- 转:使用DOS命令chcp查看windows操作系统的默认编码以及编码和语言的对应关系
代码页是字符集编码的别名,也有人称"内码表".早期,代码页是IBM称呼电脑BIOS本身支持的字符集编码的名称.当时通用的操作系统都是命令行界面系统,这些操作系统直接使用BIOS供应 ...
- 获取windows程序界面数据
文章目录 结论 可以尝试的其他方向 最后的挣扎 基础知识 win7/win10查看某个进程的句柄数 句柄的概念 Windows MFC.SDK和API的区别和联系 Windows MFC(C++开发) ...
- 操作系统的语言ID(LCID)
操作系统的语言ID(Language Identifier)基本上等同于LCID(Locale Identifier,也叫做区域标识),可以认为两者是相同的. 一个LCID由主语言标识和子语言标识组成 ...
- Windows操作系统的各进程的作用
btwdins.exe是为了微软Windows操作系统支持蓝牙技术的程序. cisvc.exe是微软Windows操作系统自带的程序.它用于监测CIDAEMON.exe内存使用状态,防止可用内存过低问 ...
- 这段百度问答,对我相关有对啊!!!----如何获取Windows系统登陆用户名
如何获取Windows系统登陆用户名 http://zhidao.baidu.com/link?url=Hva9PkVwYZv8KSEWftSqTWe8fqM1dhoq59BurnfADmcOvFjF ...
最新文章
- 网络营销外包专员浅析尽管快照不见了网络营销外包仍在继续
- 实地址模式与保护模式下的中断与异常处理
- android 之ExpandableListView详解
- 5分钟解析Facebook最新推荐算法
- android webservices 返回多行多列数据,Pandas: 如何将一列中的文本拆分为多行?
- leetcode-无重复字符的最长子串
- 获取组件的方式(方法)
- Office 2016中Excel的部分快捷方式
- 什么是SNAT、DNAT?
- linux 下运行libnids,libnids出错
- 通过示例休眠–第1部分(删除孤儿)
- [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?
- Mybatis 在 IDEA 中使用 generator 逆向工程生成 pojo,mapper
- steam一键授权工具_半个东的时间让你省了一个亿 Steam免费游戏一键领取
- Sublime中查找重复行的正则表达式
- 关于 async 与 await的个人理解
- Android 源代码中的res
- 【剑指offer】之字形打印二叉树,C++实现
- Spring Boot Actuator 监控和管理应用程序
- cad线性标注命令_CAD中线性标注的快捷命令是什么
热门文章
- 着色器(Shader)之像素着色器
- windows linux目录相互同步,使用cwRsync在Windows的目录之间增量同步文件
- java练习 家庭收支管理小练习
- Java字符串和数组相互转换
- ci/cd自动化测试_自动化CI / CD并花费更多时间编写代码
- CString 包含头文件
- ElasticSearch7.17权限控制和规划实战
- html标签助手,TidExpress(HTML代码编辑优化助手)V2.0.2.1 正式版
- [MATLAB]将.m文件生成dll文件
- 【C系列综合1】游戏达人I