QLocale获取真实的语言名称

时间:2019-03-26 16:08:38

标签: qt localization translation qlocale

我有一个语言代码,例如fr_fr,fr_be。 我想使用QLocale获得法语和比利时,但是我找不到如何做的方法。 我做到了:

QLocale locale("fr_fr"); // or fr_be
QString l = locale.languageToString(locale.language()); //returns French in both cases

2 个答案:

答案 0 :(得分:3)

您正在查询两种语言的语言名称,即法语。也许您想要这样的国家名称:

QLocale locale("fr_be");
QString l = locale.countryToString(locale.country());

阅读here了解更多信息。

答案 1 :(得分:0)

QLocale以母语和英语提供国家和语言名称。选择您喜欢的东西:

#include <QCoreApplication>
#include <QLocale>
#include <QDebug>

void displayNames(QLocale& locale)
{
    qDebug() << locale.nativeLanguageName() << locale.nativeCountryName();
    qDebug() << locale.languageToString(locale.language()) << locale.countryToString(locale.country());
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qDebug() << "ca_ES";
    QLocale cat = QLocale("ca_ES");
    displayNames(cat);

    qDebug() << "es_ES";
    QLocale esp = QLocale("es_ES");
    displayNames(esp);
}

该程序返回:

ca_ES
"català" "Espanya"
"Catalan" "Spain"
es_ES
"español de España" "España"
"Spanish" "Spain"