首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLocale在安装了语言包的Windows上错误地检测系统语言

QLocale在安装了语言包的Windows上错误地检测系统语言
EN

Stack Overflow用户
提问于 2013-09-03 14:05:24
回答 4查看 7.5K关注 0票数 3

我正在尝试用QLocale来检测当前的系统语言。

代码语言:javascript
复制
QLocale::Language sysLangId = QLocale::system().language();

但是,它不能正常工作。我在俄语Windows 7上应用了英语语言包,但是language()返回俄语而不是英语。有什么解决办法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-05 08:11:11

我找到了两种解决问题的方法。Qt的方法是使用QLocale::system().uiLanguages()。在我的系统中,它返回一个单项"en-US“的列表。问题是,我需要一个语言名称,比如"english",所以我需要添加一个映射,以便将语言代码转换为语言名称。这没什么大不了的,但我决定使用WinAPI:

代码语言:javascript
复制
QString sysLangName;
const LANGID langId = GetUserDefaultUILanguage();
WCHAR langName[1000] = {0};
if (GetLocaleInfoW(MAKELCID(langId, SORT_DEFAULT), LOCALE_SENGLANGUAGE, langName, sizeof langName / sizeof langName[0] - 1) != 0)
    sysLangName = QString::fromWcharArray(langName);
票数 2
EN

Stack Overflow用户

发布于 2013-09-04 05:33:47

当我在Qt中进行本地化时,我使用

代码语言:javascript
复制
QString locale = QLocale::system().name();

当我测试获取区域设置时,我发现它依赖于区域和语言设置中的格式:

控制面板>区域和语言>格式

希望这能有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2017-08-29 19:47:50

我也有同样的问题,我用这个代码解决了。

代码语言:javascript
复制
QString local =  QLocale::languageToString(QLocale::system().language());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18594380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档