QLocale, от названия языка к коду языка (2 буквы) - PullRequest
0 голосов
/ 09 июля 2019

В QLocale,

Как найти «двухбуквенный код языка ISO 639» из названия языка?Например, «английский», его двухбуквенный код: en.«Китайский», его двухбуквенный код: zh

Если я знаю название языка, например «Английский», есть ли у нас функция для возврата его двухбуквенного кода, например «en»?

Я посмотрел на класс 'QLocale' и не нашел метода для этой цели.

1 Ответ

2 голосов
/ 10 июля 2019

Вы можете перебрать все локали, чтобы найти нужный вам экземпляр, а затем использовать 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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...