QLocale,从语言名称到语言代码(2个字母)

时间:2019-07-09 16:54:45

标签: c++ qt

在QLocale中,

如何从语言名称中查找“两个字母的ISO 639语言代码”?  例如,“英语”,其两个字母的代码是:en。 “中文”,其两个字母的代码是:zh

如果我知道语言名称,例如“英语”,我们是否有函数返回其两个字母的代码,例如“ en”?

我查看了'QLocale'类,但没有找到用于此目的的方法。

1 个答案:

答案 0 :(得分:2)

您可以迭代所有语言环境以查找所需的实例,然后使用bcp47Name()方法

QString strLang = "Chinese";
QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry);
for (int iLocale = 0; iLocale < allLocales.count(); iLocale++)
{
    if (QLocale::languageToString(allLocales.at(iLocale).language()) == strLang)
    {
        if (allLocales.at(iLocale).bcp47Name().length() == 2) {
            qDebug() << allLocales.at(iLocale).bcp47Name();
        }
    }
}