gpt4 book ai didi

c++ - 获取 Qt5 中的语言列表

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:54 26 4
gpt4 key购买 nike

我想从 QLocale 获取 ISO 639 语言的列表。我可以使用此代码获取所有语言/国家/地区的组合。

QList<QLocale> allLocales = QLocale::matchingLocales(
QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::AnyCountry);

这正是我所需要的。我想我可以手动过滤掉列表,但是否存在更好的替代方法?

最佳答案

您可以这样做,也可以做一些不太好的事情(见本文末尾)并手动从列表中过滤重复的语言,例如如果你想要 ISO 639 语言名称:

QList<QLocale> allLocales = QLocale::matchingLocales(
QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::AnyCountry);
QSet<QString> iso639Languages;

for(const QLocale &locale : allLocales) {
iso639Languages.insert(QLocale::languageToString(locale.language()));
}

qDebug() << iso639Languages;

iso639Languages 然后包含按 ISO 639 分类并为 Qt 所知的所有语言的名称。请注意,它包含语言名称(例如德语), ISO 639 代码(例如 de)。

如果您需要 ISO 639 代码,请执行以下操作:

QList<QLocale> allLocales = QLocale::matchingLocales(
QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::AnyCountry);
QSet<QString> iso639LanguageCodes;

for(const QLocale &locale : allLocales) {
iso639LanguageCodes.insert(locale.name().split('_').first());
}

qDebug() << iso639LanguageCodes;

也可以通过手动遍历 QLocale::Language 枚举然后解析结果来构造 QLocale 对象,但是我强烈建议不要那样做,因为这个枚举可能会改变(例如 Qt 5.3),然后你的应用程序将无法捕捉新的语言,直到你手动更新迭代范围。

关于c++ - 获取 Qt5 中的语言列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26307729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com