summaryrefslogtreecommitdiffstats
path: root/src/linguist/linguist/translationsettingsdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/linguist/linguist/translationsettingsdialog.cpp')
-rw-r--r--src/linguist/linguist/translationsettingsdialog.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/linguist/linguist/translationsettingsdialog.cpp b/src/linguist/linguist/translationsettingsdialog.cpp
index 5c567e59a..978887a29 100644
--- a/src/linguist/linguist/translationsettingsdialog.cpp
+++ b/src/linguist/linguist/translationsettingsdialog.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Linguist of the Qt Toolkit.
@@ -41,14 +41,16 @@ TranslationSettingsDialog::TranslationSettingsDialog(QWidget *parent)
m_ui.setupUi(this);
for (int i = QLocale::C + 1; i < QLocale::LastLanguage; ++i) {
- QString lang = QLocale::languageToString(QLocale::Language(i));
- auto loc = QLocale(QLocale::Language(i));
- if (loc.language() != QLocale::English) {
- QString nln = loc.nativeLanguageName();
- if (!nln.isEmpty()) {
- //: <english> (<endonym>) (language and country names)
- lang = tr("%1 (%2)").arg(lang, nln);
- }
+ const auto language = QLocale::Language(i);
+ QString lang = QLocale::languageToString(language);
+ const auto loc = QLocale(language);
+ // Languages for which we have no data get mapped to the default locale;
+ // its endonym is unrelated to the language requested. For English, the
+ // endonym is the name we already have; don't repeat it.
+ if (loc.language() == language && language != QLocale::English) {
+ const QString native = loc.nativeLanguageName();
+ if (!native.isEmpty()) //: <english> (<endonym>) (language names)
+ lang = tr("%1 (%2)").arg(lang, native);
}
m_ui.srcCbLanguageList->addItem(lang, QVariant(i));
}