国家和语言代码检测

问题描述:

我需要在Qt中检测用户的语言和国家代码。该代码必须符合http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s04.html的标准。国家和语言代码检测

我试过QLocale,但它在countryToString和languageToString中返回完整的国家和语言名称。 (我需要短代码,如“en”而不是“English”。)

其中一种方法是创建QLocale :: Language和QString的映射。但是有没有更快更简单的方法?

QLocale::name()

返回该地区的语言和国家的 形式“LANGUAGE_COUNTRY”,其中语言是小写,两个字母ISO 639 语言代码的字符串,而国家是一个大写,两个或三个字母 ISO 3166国家代码。

+0

嗨,就像在Qt中,如果用户决定的区域设置从应用程序的选项更改,它可以触发可听取并提出相应刷新UI应用程序语言变化的事件,是有其Qt可以,如果用户改变捕获任何事件OS中的区域设置? – SexyBeast

除了保罗的回答,还有QLocale::uiLanguages()QLocale::bcp47Name()这应该给变化。

+0

它们仅适用于Qt4.8和更高版本 – darkgaze

当我们谈论正确检测的国家实际上是在用户偏好设置(在Windows平台的OS X,首/地区控制面板/区),你应该使用https://github.com/crystalidea/qt-detect-user-country