forked from qt-creator/qt-creator
Update mime database from Qt
qtbase/1b5e13c8d9db92cec41a1b50d74ce3af5853a7dd Fix QMimeType::comment()'s use of UI languages and default Change-Id: Ife0103d4a4a6ecd170018c395ac867bd5863ed24 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -232,22 +232,38 @@ QString MimeType::comment() const
|
|||||||
{
|
{
|
||||||
MimeDatabasePrivate::instance()->loadMimeTypePrivate(const_cast<MimeTypePrivate&>(*d));
|
MimeDatabasePrivate::instance()->loadMimeTypePrivate(const_cast<MimeTypePrivate&>(*d));
|
||||||
|
|
||||||
QStringList languageList;
|
QStringList languageList = QLocale().uiLanguages();
|
||||||
languageList << QLocale().name();
|
qsizetype defaultIndex = languageList.indexOf(u"en-US"_s);
|
||||||
languageList << QLocale().uiLanguages();
|
|
||||||
languageList << u"default"_s; // use the default locale if possible.
|
// Include the default locale as fall-back.
|
||||||
|
if (defaultIndex >= 0) {
|
||||||
|
// en_US is generally the default, and may be omitted from the
|
||||||
|
// overtly-named locales in the MIME type's data (QTBUG-105007).
|
||||||
|
++defaultIndex; // Skip over en-US.
|
||||||
|
// That's typically followed by en-Latn-US and en (in that order):
|
||||||
|
if (defaultIndex < languageList.size() && languageList.at(defaultIndex) == u"en-Latn-US")
|
||||||
|
++defaultIndex;
|
||||||
|
if (defaultIndex < languageList.size() && languageList.at(defaultIndex) == u"en")
|
||||||
|
++defaultIndex;
|
||||||
|
} else {
|
||||||
|
// Absent en-US, just append it:
|
||||||
|
defaultIndex = languageList.size();
|
||||||
|
}
|
||||||
|
languageList.insert(defaultIndex, u"default"_s);
|
||||||
|
|
||||||
for (const QString &language : std::as_const(languageList)) {
|
for (const QString &language : std::as_const(languageList)) {
|
||||||
const QString lang = language == "C"_L1 ? u"en_US"_s : language;
|
// uiLanguages() uses '-' as separator, MIME database uses '_'
|
||||||
const QString comm = d->localeComments.value(lang);
|
const QString lang
|
||||||
|
= language == "C"_L1 ? u"en_US"_s : QString(language).replace(u'-', u'_');
|
||||||
|
QString comm = d->localeComments.value(lang);
|
||||||
if (!comm.isEmpty())
|
if (!comm.isEmpty())
|
||||||
return comm;
|
return comm;
|
||||||
const qsizetype pos = lang.indexOf(u'_');
|
const qsizetype cut = lang.indexOf(u'_');
|
||||||
if (pos != -1) {
|
// If "de_CH" is missing, check for "de" (and similar):
|
||||||
// "pt_BR" not found? try just "pt"
|
if (cut != -1) {
|
||||||
const QString shortLang = lang.left(pos);
|
comm = d->localeComments.value(lang.left(cut));
|
||||||
const QString commShort = d->localeComments.value(shortLang);
|
if (!comm.isEmpty())
|
||||||
if (!commShort.isEmpty())
|
return comm;
|
||||||
return commShort;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user