diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2022-08-29 13:14:50 +0200 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2022-09-07 10:22:07 +0200 |
commit | 157cb7cbcb5a8d148b25e43066b80edd71a1d1b9 (patch) | |
tree | 2b2f2748b179b7933206500ffc5d0f9c1753a010 | |
parent | 9f52107c1c0c4915c61f487877f00c47930e59e0 (diff) |
QtTools utils: port away from deprecated QLocale calls
That is required to propagate deprecation warnings to internal tools
Also change QLocale::{Any}Country to QLocale::{Any}Territory.
Task-number: QTBUG-105102
Change-Id: I3396d832cf4a98722ee9a10ed64dab263ba4eb0f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r-- | src/designer/src/lib/uilib/properties.cpp | 4 | ||||
-rw-r--r-- | src/linguist/linguist/messagemodel.cpp | 27 | ||||
-rw-r--r-- | src/linguist/linguist/phrase.cpp | 12 | ||||
-rw-r--r-- | src/linguist/linguist/translationsettingsdialog.cpp | 24 | ||||
-rw-r--r-- | src/linguist/lupdate/main.cpp | 2 | ||||
-rw-r--r-- | src/linguist/shared/numerus.cpp | 33 | ||||
-rw-r--r-- | src/linguist/shared/po.cpp | 2 | ||||
-rw-r--r-- | src/linguist/shared/qm.cpp | 4 | ||||
-rw-r--r-- | src/linguist/shared/translator.cpp | 16 |
9 files changed, 68 insertions, 56 deletions
diff --git a/src/designer/src/lib/uilib/properties.cpp b/src/designer/src/lib/uilib/properties.cpp index 9fac4bacd..8e31bef7c 100644 --- a/src/designer/src/lib/uilib/properties.cpp +++ b/src/designer/src/lib/uilib/properties.cpp @@ -246,8 +246,8 @@ QVariant domPropertyToVariant(const DomProperty *p) const DomLocale *locale = p->elementLocale(); return QVariant::fromValue(QLocale(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Language>("language", locale->attributeLanguage().toLatin1().constData()), - enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Country>("country", - locale->attributeCountry().toLatin1().constData()))); + enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Territory>("country", + locale->attributeCountry().toLatin1().constData()))); } case DomProperty::SizePolicy: { const DomSizePolicy *sizep = p->elementSizePolicy(); diff --git a/src/linguist/linguist/messagemodel.cpp b/src/linguist/linguist/messagemodel.cpp index 6b5448b55..35e157877 100644 --- a/src/linguist/linguist/messagemodel.cpp +++ b/src/linguist/linguist/messagemodel.cpp @@ -95,8 +95,8 @@ DataModel::DataModel(QObject *parent) m_srcCharsSpc(0), m_language(QLocale::Language(-1)), m_sourceLanguage(QLocale::Language(-1)), - m_country(QLocale::Country(-1)), - m_sourceCountry(QLocale::Country(-1)) + m_country(QLocale::Territory(-1)), + m_sourceCountry(QLocale::Territory(-1)) {} QStringList DataModel::normalizedTranslations(const MessageItem &m) const @@ -258,12 +258,12 @@ bool DataModel::load(const QString &fileName, bool *langGuessed, QWidget *parent *langGuessed = true; } QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; Translator::languageAndCountry(lang, &l, &c); if (l == QLocale::C) { QLocale sys; l = sys.language(); - c = sys.country(); + c = sys.territory(); *langGuessed = true; } if (!setLanguageAndCountry(l, c)) @@ -278,7 +278,7 @@ bool DataModel::load(const QString &fileName, bool *langGuessed, QWidget *parent lang = tor.sourceLanguageCode(); if (lang.isEmpty()) { l = QLocale::C; - c = QLocale::AnyCountry; + c = QLocale::AnyTerritory; } else { Translator::languageAndCountry(lang, &l, &c); } @@ -360,7 +360,7 @@ void DataModel::doCharCounting(const QString &text, int &trW, int &trC, int &trC } } -bool DataModel::setLanguageAndCountry(QLocale::Language lang, QLocale::Country country) +bool DataModel::setLanguageAndCountry(QLocale::Language lang, QLocale::Territory country) { if (m_language == lang && m_country == country) return true; @@ -372,9 +372,18 @@ bool DataModel::setLanguageAndCountry(QLocale::Language lang, QLocale::Country c QByteArray rules; bool ok = getNumerusInfo(lang, country, &rules, &m_numerusForms, 0); QLocale loc(lang, country); - m_localizedLanguage = QLocale::countriesForLanguage(lang).size() > 1 + // Add territory name if we couldn't match the (lang, country) combination, + // or if the language is used in more than one country. + const bool mentionTerritory = (loc.territory() != country) || [lang, country]() { + const auto locales = QLocale::matchingLocales(lang, QLocale::AnyScript, + QLocale::AnyTerritory); + return std::any_of(locales.cbegin(), locales.cend(), [country](const QLocale &locale) { + return locale.territory() != country; + }); + }(); + m_localizedLanguage = mentionTerritory //: <language> (<country>) - ? tr("%1 (%2)").arg(loc.nativeLanguageName(), loc.nativeCountryName()) + ? tr("%1 (%2)").arg(loc.nativeLanguageName(), loc.nativeTerritoryName()) : loc.nativeLanguageName(); m_countRefNeeds.clear(); for (int i = 0; i < rules.size(); ++i) { @@ -391,7 +400,7 @@ bool DataModel::setLanguageAndCountry(QLocale::Language lang, QLocale::Country c return ok; } -void DataModel::setSourceLanguageAndCountry(QLocale::Language lang, QLocale::Country country) +void DataModel::setSourceLanguageAndCountry(QLocale::Language lang, QLocale::Territory country) { if (m_sourceLanguage == lang && m_sourceCountry == country) return; diff --git a/src/linguist/linguist/phrase.cpp b/src/linguist/linguist/phrase.cpp index d67d701b3..d10fc8bb2 100644 --- a/src/linguist/linguist/phrase.cpp +++ b/src/linguist/linguist/phrase.cpp @@ -164,8 +164,8 @@ PhraseBook::PhraseBook() : m_changed(false), m_language(QLocale::C), m_sourceLanguage(QLocale::C), - m_country(QLocale::AnyCountry), - m_sourceCountry(QLocale::AnyCountry) + m_country(QLocale::AnyTerritory), + m_sourceCountry(QLocale::AnyTerritory) { } @@ -174,7 +174,7 @@ PhraseBook::~PhraseBook() qDeleteAll(m_phrases); } -void PhraseBook::setLanguageAndCountry(QLocale::Language lang, QLocale::Country country) +void PhraseBook::setLanguageAndCountry(QLocale::Language lang, QLocale::Territory country) { if (m_language == lang && m_country == country) return; @@ -183,7 +183,7 @@ void PhraseBook::setLanguageAndCountry(QLocale::Language lang, QLocale::Country setModified(true); } -void PhraseBook::setSourceLanguageAndCountry(QLocale::Language lang, QLocale::Country country) +void PhraseBook::setSourceLanguageAndCountry(QLocale::Language lang, QLocale::Territory country) { if (m_sourceLanguage == lang && m_sourceCountry == country) return; @@ -210,14 +210,14 @@ bool PhraseBook::load(const QString &fileName, bool *langGuessed) if (m_language == QLocale::C) { QLocale sys; m_language = sys.language(); - m_country = sys.country(); + m_country = sys.territory(); *langGuessed = true; } QString lang = hand->sourceLanguage(); if (lang.isEmpty()) { m_sourceLanguage = QLocale::C; - m_sourceCountry = QLocale::AnyCountry; + m_sourceCountry = QLocale::AnyTerritory; } else { Translator::languageAndCountry(lang, &m_sourceLanguage, &m_sourceCountry); } diff --git a/src/linguist/linguist/translationsettingsdialog.cpp b/src/linguist/linguist/translationsettingsdialog.cpp index 17112d60e..72aaa3e21 100644 --- a/src/linguist/linguist/translationsettingsdialog.cpp +++ b/src/linguist/linguist/translationsettingsdialog.cpp @@ -56,19 +56,21 @@ static void fillCountryCombo(const QVariant &lng, QComboBox *combo) combo->clear(); QLocale::Language lang = QLocale::Language(lng.toInt()); if (lang != QLocale::C) { - for (QLocale::Country cntr : QLocale::countriesForLanguage(lang)) { - QString country = QLocale::countryToString(cntr); - auto loc = QLocale(lang, cntr); + const auto matches = QLocale::matchingLocales(lang, QLocale::AnyScript, + QLocale::AnyTerritory); + for (const auto &loc : matches) { + QString name = QLocale::territoryToString(loc.territory()); if (loc.language() != QLocale::English) { - QString ncn = loc.nativeCountryName(); - if (!ncn.isEmpty()) - country = TranslationSettingsDialog::tr("%1 (%2)").arg(country, ncn); + QString endonym = loc.nativeTerritoryName(); + if (!endonym.isEmpty()) + name = TranslationSettingsDialog::tr("%1 (%2)").arg(name, endonym); } - combo->addItem(country, QVariant(cntr)); + combo->addItem(name, QVariant(loc.territory())); } combo->model()->sort(0, Qt::AscendingOrder); } - combo->insertItem(0, TranslationSettingsDialog::tr("Any Country"), QVariant(QLocale::AnyCountry)); + combo->insertItem(0, TranslationSettingsDialog::tr("Any Country"), + QVariant(QLocale::AnyTerritory)); combo->setCurrentIndex(0); } @@ -90,7 +92,7 @@ void TranslationSettingsDialog::on_buttonBox_accepted() itemindex = m_ui.tgtCbCountryList->currentIndex(); var = m_ui.tgtCbCountryList->itemData(itemindex); - QLocale::Country country = QLocale::Country(var.toInt()); + QLocale::Territory country = QLocale::Territory(var.toInt()); itemindex = m_ui.srcCbLanguageList->currentIndex(); var = m_ui.srcCbLanguageList->itemData(itemindex); @@ -98,7 +100,7 @@ void TranslationSettingsDialog::on_buttonBox_accepted() itemindex = m_ui.srcCbCountryList->currentIndex(); var = m_ui.srcCbCountryList->itemData(itemindex); - QLocale::Country country2 = QLocale::Country(var.toInt()); + QLocale::Territory country2 = QLocale::Territory(var.toInt()); if (m_phraseBook) { m_phraseBook->setLanguageAndCountry(lang, country); @@ -114,7 +116,7 @@ void TranslationSettingsDialog::on_buttonBox_accepted() void TranslationSettingsDialog::showEvent(QShowEvent *) { QLocale::Language lang, lang2; - QLocale::Country country, country2; + QLocale::Territory country, country2; if (m_phraseBook) { lang = m_phraseBook->language(); diff --git a/src/linguist/lupdate/main.cpp b/src/linguist/lupdate/main.cpp index 0b0a88030..d4e72ee4b 100644 --- a/src/linguist/lupdate/main.cpp +++ b/src/linguist/lupdate/main.cpp @@ -381,7 +381,7 @@ static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFil // (when the language is not recognized, plural translations are lost) if (tor.translationsExist()) { QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; tor.languageAndCountry(tor.languageCode(), &l, &c); QStringList forms; if (!getNumerusInfo(l, c, 0, &forms, 0)) { diff --git a/src/linguist/shared/numerus.cpp b/src/linguist/shared/numerus.cpp index bcd8f842d..ef52bcdb6 100644 --- a/src/linguist/shared/numerus.cpp +++ b/src/linguist/shared/numerus.cpp @@ -265,22 +265,22 @@ static const QLocale::Language welshLanguage[] = { QLocale::Welsh, EOL }; static const QLocale::Language arabicLanguage[] = { QLocale::Arabic, EOL }; static const QLocale::Language tagalogLanguage[] = { QLocale::Filipino, EOL }; -static const QLocale::Country frenchStyleCountries[] = { +static const QLocale::Territory frenchStyleCountries[] = { // keep synchronized with frenchStyleLanguages - QLocale::AnyCountry, - QLocale::AnyCountry, - QLocale::AnyCountry, + QLocale::AnyTerritory, + QLocale::AnyTerritory, + QLocale::AnyTerritory, QLocale::Brazil, - QLocale::AnyCountry, - QLocale::AnyCountry, - QLocale::AnyCountry + QLocale::AnyTerritory, + QLocale::AnyTerritory, + QLocale::AnyTerritory }; struct NumerusTableEntry { const uchar *rules; int rulesSize; const char * const *forms; const QLocale::Language *languages; - const QLocale::Country *countries; + const QLocale::Territory *countries; const char * const gettextRules; }; @@ -324,7 +324,7 @@ static const NumerusTableEntry numerusTable[] = { static const int NumerusTableSize = sizeof(numerusTable) / sizeof(numerusTable[0]); -bool getNumerusInfo(QLocale::Language language, QLocale::Country country, +bool getNumerusInfo(QLocale::Language language, QLocale::Territory country, QByteArray *rules, QStringList *forms, const char **gettextRules) { while (true) { @@ -332,7 +332,7 @@ bool getNumerusInfo(QLocale::Language language, QLocale::Country country, const NumerusTableEntry &entry = numerusTable[i]; for (int j = 0; entry.languages[j] != EOL; ++j) { if (entry.languages[j] == language - && ((!entry.countries && country == QLocale::AnyCountry) + && ((!entry.countries && country == QLocale::AnyTerritory) || (entry.countries && entry.countries[j] == country))) { if (rules) { *rules = QByteArray::fromRawData(reinterpret_cast<const char *>(entry.rules), @@ -350,9 +350,9 @@ bool getNumerusInfo(QLocale::Language language, QLocale::Country country, } } - if (country == QLocale::AnyCountry) + if (country == QLocale::AnyTerritory) break; - country = QLocale::AnyCountry; + country = QLocale::AnyTerritory; } return false; } @@ -364,14 +364,15 @@ QString getNumerusInfoString() for (int i = 0; i < NumerusTableSize; ++i) { const NumerusTableEntry &entry = numerusTable[i]; for (int j = 0; entry.languages[j] != EOL; ++j) { - QLocale loc(entry.languages[j], entry.countries ? entry.countries[j] : QLocale::AnyCountry); + QLocale loc(entry.languages[j], entry.countries ? entry.countries[j] + : QLocale::AnyTerritory); QString lang = QLocale::languageToString(entry.languages[j]); if (loc.language() == QLocale::C) lang += QLatin1String(" (!!!)"); - else if (entry.countries && entry.countries[j] != QLocale::AnyCountry) - lang += QLatin1String(" (") + QLocale::countryToString(loc.country()) + QLatin1Char(')'); + else if (entry.countries && entry.countries[j] != QLocale::AnyTerritory) + lang += QLatin1String(" (%1)").arg(QLocale::territoryToString(loc.territory())); else - lang += QLatin1String(" [") + QLocale::countryToString(loc.country()) + QLatin1Char(']'); + lang += QLatin1String(" [%1]").arg(QLocale::territoryToString(loc.territory())); langs << QString::fromLatin1("%1 %2 %3\n").arg(lang, -40).arg(loc.name(), -8) .arg(QString::fromLatin1(entry.gettextRules)); } diff --git a/src/linguist/shared/po.cpp b/src/linguist/shared/po.cpp index 681f69f21..a3c47d7c0 100644 --- a/src/linguist/shared/po.cpp +++ b/src/linguist/shared/po.cpp @@ -729,7 +729,7 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &) addPoHeader(headers, hdrOrder, "Content-Transfer-Encoding", QLatin1String("8bit")); if (!translator.languageCode().isEmpty()) { QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; Translator::languageAndCountry(translator.languageCode(), &l, &c); const char *gettextRules; if (getNumerusInfo(l, c, 0, 0, &gettextRules)) diff --git a/src/linguist/shared/qm.cpp b/src/linguist/shared/qm.cpp index 5ec984f22..37075294d 100644 --- a/src/linguist/shared/qm.cpp +++ b/src/linguist/shared/qm.cpp @@ -498,7 +498,7 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd) QString strProN = QLatin1String("%n"); QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; Translator::languageAndCountry(translator.languageCode(), &l, &c); QStringList numerusForms; bool guessPlurals = true; @@ -620,7 +620,7 @@ bool saveQM(const Translator &translator, QIODevice &dev, ConversionData &cd) { Releaser releaser(translator.languageCode()); QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; Translator::languageAndCountry(translator.languageCode(), &l, &c); QByteArray rules; if (getNumerusInfo(l, c, &rules, 0, 0)) diff --git a/src/linguist/shared/translator.cpp b/src/linguist/shared/translator.cpp index a258dd32c..6ac1aa08e 100644 --- a/src/linguist/shared/translator.cpp +++ b/src/linguist/shared/translator.cpp @@ -324,28 +324,28 @@ bool Translator::save(const QString &filename, ConversionData &cd, const QString return false; } -QString Translator::makeLanguageCode(QLocale::Language language, QLocale::Country country) +QString Translator::makeLanguageCode(QLocale::Language language, QLocale::Territory country) { QString result = QLocale::languageToCode(language); - if (language != QLocale::C && country != QLocale::AnyCountry) { + if (language != QLocale::C && country != QLocale::AnyTerritory) { result.append(QLatin1Char('_')); - result.append(QLocale::countryToCode(country)); + result.append(QLocale::territoryToCode(country)); } return result; } void Translator::languageAndCountry(QStringView languageCode, QLocale::Language *langPtr, - QLocale::Country *countryPtr) + QLocale::Territory *countryPtr) { QLocale::Language language = QLocale::AnyLanguage; - QLocale::Country country = QLocale::AnyCountry; + QLocale::Territory country = QLocale::AnyTerritory; const auto underScore = languageCode.indexOf(u'_'); // "de_DE" if (underScore != -1) { language = QLocale::codeToLanguage(languageCode.left(underScore)); - country = QLocale::codeToCountry(languageCode.mid(underScore + 1)); + country = QLocale::codeToTerritory(languageCode.mid(underScore + 1)); } else { language = QLocale::codeToLanguage(languageCode); - country = QLocale(language).country(); + country = QLocale(language).territory(); } if (langPtr) @@ -671,7 +671,7 @@ void Translator::normalizeTranslations(ConversionData &cd) { bool truncated = false; QLocale::Language l; - QLocale::Country c; + QLocale::Territory c; languageAndCountry(languageCode(), &l, &c); int numPlurals = 1; if (l != QLocale::C) { |