我想检测我的操作系统上安装的语言。 要做到这一点我跑:
qDebug() << QLocale::system();
// result = QLocale(English, Latin, UnitedStates)
但是我想将它保存在QString中,但它不可能只做:
QString langs = QLocale::system().toString();
如何将此结果保存在字符串中? 或者有更好的方法来检测操作系统语言吗? 另一件事是,是否可以检测键盘语言设置(如果可能,使用Qt)?
答案 0 :(得分:4)
QLocale支持默认语言环境的概念,该语言环境已确定 从应用程序启动时系统的语言环境设置
因此,为了获得系统默认语言的不同表示,QLocale上的以下一种或多种方法可能会对您有所帮助:
qDebug() << QLocale::system().name();
qDebug() << QLocale::system().nativeCountryName();
qDebug() << QLocale::system().nativeLanguageName();
示例输出:
"en_GB"
"United Kingdom"
"British English"
在GUI应用程序中,您可以获得输入方法的类似详细信息,如下所示:
qDebug() << QGuiApplication::inputMethod()->locale().name();
答案 1 :(得分:1)
是否可以使用Qt执行我想要的操作,以显示已安装的语言包?
没有。在Qt中没有这样做的功能。对于您要定位的每个平台,您都需要针对特定平台的方法。
还要注意&#34;语言包的概念&#34;不便携。例如。大多数Unix应用程序(包括OS X上的应用程序)都支持他们可以支持的所有语言,并且您可以即时切换语言而无需安装任何内容。
答案 2 :(得分:0)
您可以按照用户偏好的顺序(例如,在“系统偏好设置”中定义的macOS上),使用QLocale::system().uiLanguages()获取语言列表。
对于用户可呈现的区域设置名称,您可以使用类似
的内容QString("%1 (%2)").arg(QLocale::languageToString(locale.language()),
QLocale::countryToString(locale.country()));