diff options
author | Mate Barany <mate.barany@qt.io> | 2023-02-17 17:59:12 +0100 |
---|---|---|
committer | Mate Barany <mate.barany@qt.io> | 2023-03-15 19:48:30 +0100 |
commit | 3dcd6b7ec98b2edf9654bcefdb83134c4c3d2a38 (patch) | |
tree | 2f981206668a6d50d480d4cc7890ac28d0e6d9d3 /src/corelib/text | |
parent | a9c8870b5e6eddc31b78b7e4afe46b28110e7863 (diff) | |
download | qtbase-3dcd6b7ec98b2edf9654bcefdb83134c4c3d2a38.tar.gz |
Pack languageCodeList tighter
Pack some of the arrays that contain locale data more tightly. The
AlphaCode struct is a char[4] but always holds only [a-z]{,3} which
could be fit into 16 bits, halving the size of an AlphaCode struct.
With the new constructor the initialization of the AlphaCode struct
also changes - modify qlocalexml2cpp.py to reflect this change and
regenerate the languageCodeList.
Fixes: QTBUG-105050
Change-Id: I2b1e93ab7cc3f2d667bf67b45769b74a15211931
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/text')
-rw-r--r-- | src/corelib/text/qlocale.cpp | 42 | ||||
-rw-r--r-- | src/corelib/text/qlocale_data_p.h | 699 | ||||
-rw-r--r-- | src/corelib/text/qlocale_p.h | 4 |
3 files changed, 382 insertions, 363 deletions
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp index 6202bfdfbb..ca2d25438f 100644 --- a/src/corelib/text/qlocale.cpp +++ b/src/corelib/text/qlocale.cpp @@ -105,7 +105,7 @@ QLocale::Language QLocalePrivate::codeToLanguage(QStringView code, if (uc1 > 0x7F || uc2 > 0x7F || uc3 > 0x7F) return QLocale::AnyLanguage; - const AlphaCode codeBuf = { { char(uc1), char(uc2), char(uc3) } }; + const AlphaCode codeBuf = { char(uc1), char(uc2), char(uc3) }; auto searchCode = [codeBuf](auto f) { return std::find_if(languageCodeList.begin(), languageCodeList.end(), @@ -201,27 +201,27 @@ QLocale::Territory QLocalePrivate::codeToTerritory(QStringView code) noexcept return QLocale::AnyTerritory; } -QLatin1StringView QLocalePrivate::languageToCode(QLocale::Language language, - QLocale::LanguageCodeTypes codeTypes) +std::array<char, 4> QLocalePrivate::languageToCode(QLocale::Language language, + QLocale::LanguageCodeTypes codeTypes) { if (language == QLocale::AnyLanguage || language > QLocale::LastLanguage) return {}; if (language == QLocale::C) - return "C"_L1; + return {'C'}; const LanguageCodeEntry &i = languageCodeList[language]; if (codeTypes.testFlag(QLocale::ISO639Part1) && i.part1.isValid()) - return {i.part1.code, 2}; + return i.part1.decode(); if (codeTypes.testFlag(QLocale::ISO639Part2B) && i.part2B.isValid()) - return {i.part2B.code, 3}; + return i.part2B.decode(); if (codeTypes.testFlag(QLocale::ISO639Part2T) && i.part2T.isValid()) - return {i.part2T.code, 3}; + return i.part2T.decode(); if (codeTypes.testFlag(QLocale::ISO639Part3)) - return {i.part3.code, 3}; + return i.part3.decode(); return {}; } @@ -409,14 +409,14 @@ QByteArray QLocaleId::name(char separator) const return QByteArrayLiteral("C"); const LanguageCodeEntry &language = languageCodeList[language_id]; - const char *lang; + AlphaCode lang; qsizetype langLen; if (language.part1.isValid()) { - lang = language.part1.code; + lang = language.part1; langLen = 2; } else { - lang = language.part2B.isValid() ? language.part2B.code : language.part3.code; + lang = language.part2B.isValid() ? language.part2B : language.part3; langLen = 3; } @@ -429,10 +429,12 @@ QByteArray QLocaleId::name(char separator) const QByteArray name(len, Qt::Uninitialized); char *uc = name.data(); - *uc++ = lang[0]; - *uc++ = lang[1]; + auto langArray = lang.decode(); + + *uc++ = langArray[0]; + *uc++ = langArray[1]; if (langLen > 2) - *uc++ = lang[2]; + *uc++ = langArray[2]; if (script) { *uc++ = separator; @@ -1337,15 +1339,18 @@ QLocale::Country QLocale::country() const QString QLocale::name() const { + const auto code = d->languageCode(); + QLatin1StringView view{code.data()}; + Language l = language(); if (l == C) - return d->languageCode(); + return view; Territory c = territory(); if (c == AnyTerritory) - return d->languageCode(); + return view; - return d->languageCode() + u'_' + d->territoryCode(); + return view + u'_' + d->territoryCode(); } static qlonglong toIntegral_helper(const QLocaleData *d, QStringView str, bool *ok, @@ -1422,7 +1427,8 @@ QString QLocale::bcp47Name() const */ QString QLocale::languageToCode(Language language, LanguageCodeTypes codeTypes) { - return QLocalePrivate::languageToCode(language, codeTypes); + const auto code = QLocalePrivate::languageToCode(language, codeTypes); + return QLatin1StringView{code.data()}; } /*! diff --git a/src/corelib/text/qlocale_data_p.h b/src/corelib/text/qlocale_data_p.h index ace1de5944..7780e4300f 100644 --- a/src/corelib/text/qlocale_data_p.h +++ b/src/corelib/text/qlocale_data_p.h @@ -41,14 +41,27 @@ static constexpr TerritoryLanguage ImperialMeasurementSystems[] = { /* Storage for alpha codes with length of up to 4 allowing efficient comparison. */ -struct alignas(uint32_t) AlphaCode { - char code[4]; +struct AlphaCode { + constexpr AlphaCode(char c1 = 0, char c2 = 0, char c3 = 0) + : c1(c2m(c1)), c2(c2m(c2)), c3(c2m(c3)), reserved(0) { } + + uint16_t c1: 5, c2:5, c3: 5, reserved:1; + + bool isValid() const noexcept { return c1 != 0; } + + std::array<char, 4> decode() const { return {m2c(c1), m2c(c2), m2c(c3), 0}; } - bool isValid() const noexcept { return asU32() != 0; } private: + static constexpr uint16_t c2m(char c) { return c ? c - 'a' + 1 : 0; } + static constexpr char m2c (uint16_t c) { return c ? c + 'a' - 1 : 0; } + friend bool operator==(AlphaCode lhs, AlphaCode rhs) noexcept - { return lhs.asU32() == rhs.asU32(); } - uint32_t asU32() const noexcept { return qFromUnaligned<uint32_t>(code); } + { + static_assert(std::has_unique_object_representations_v<AlphaCode>, + "memcmp() cannot be used to implement equality on " + "types that don't have unique object representations"); + return std::memcmp(&lhs, &rhs, sizeof(lhs)) == 0; + } }; struct LanguageCodeEntry { @@ -61,7 +74,7 @@ struct LanguageCodeEntry { // GENERATED PART STARTS HERE /* - This part of the file was generated on 2023-02-02 from the + This part of the file was generated on 2023-03-06 from the Common Locale Data Repository v42 http://www.unicode.org/cldr/ @@ -5423,343 +5436,343 @@ static constexpr quint16 territory_name_index[] = { }; constexpr std::array<LanguageCodeEntry, 337> languageCodeList { - LanguageCodeEntry {{}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}}, // AnyLanguage - LanguageCodeEntry {{}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}}, // C - LanguageCodeEntry {{{'a', 'b'}}, {{'a', 'b', 'k'}}, {{'a', 'b', 'k'}}, {{'a', 'b', 'k'}}}, // Abkhazian - LanguageCodeEntry {{{'a', 'a'}}, {{'a', 'a', 'r'}}, {{'a', 'a', 'r'}}, {{'a', 'a', 'r'}}}, // Afar - LanguageCodeEntry {{{'a', 'f'}}, {{'a', 'f', 'r'}}, {{'a', 'f', 'r'}}, {{'a', 'f', 'r'}}}, // Afrikaans - LanguageCodeEntry {{}, {}, {}, {{'a', 'g', 'q'}}}, // Aghem - LanguageCodeEntry {{{'a', 'k'}}, {{'a', 'k', 'a'}}, {{'a', 'k', 'a'}}, {{'a', 'k', 'a'}}}, // Akan - LanguageCodeEntry {{}, {{'a', 'k', 'k'}}, {{'a', 'k', 'k'}}, {{'a', 'k', 'k'}}}, // Akkadian - LanguageCodeEntry {{}, {}, {}, {{'b', 's', 's'}}}, // Akoose - LanguageCodeEntry {{{'s', 'q'}}, {{'a', 'l', 'b'}}, {{'s', 'q', 'i'}}, {{'s', 'q', 'i'}}}, // Albanian - LanguageCodeEntry {{}, {}, {}, {{'a', 's', 'e'}}}, // American Sign Language - LanguageCodeEntry {{{'a', 'm'}}, {{'a', 'm', 'h'}}, {{'a', 'm', 'h'}}, {{'a', 'm', 'h'}}}, // Amharic - LanguageCodeEntry {{}, {{'e', 'g', 'y'}}, {{'e', 'g', 'y'}}, {{'e', 'g', 'y'}}}, // Ancient Egyptian - LanguageCodeEntry {{}, {{'g', 'r', 'c'}}, {{'g', 'r', 'c'}}, {{'g', 'r', 'c'}}}, // Ancient Greek - LanguageCodeEntry {{{'a', 'r'}}, {{'a', 'r', 'a'}}, {{'a', 'r', 'a'}}, {{'a', 'r', 'a'}}}, // Arabic - LanguageCodeEntry {{{'a', 'n'}}, {{'a', 'r', 'g'}}, {{'a', 'r', 'g'}}, {{'a', 'r', 'g'}}}, // Aragonese - LanguageCodeEntry {{}, {{'a', 'r', 'c'}}, {{'a', 'r', 'c'}}, {{'a', 'r', 'c'}}}, // Aramaic - LanguageCodeEntry {{{'h', 'y'}}, {{'a', 'r', 'm'}}, {{'h', 'y', 'e'}}, {{'h', 'y', 'e'}}}, // Armenian - LanguageCodeEntry {{{'a', 's'}}, {{'a', 's', 'm'}}, {{'a', 's', 'm'}}, {{'a', 's', 'm'}}}, // Assamese - LanguageCodeEntry {{}, {{'a', 's', 't'}}, {{'a', 's', 't'}}, {{'a', 's', 't'}}}, // Asturian - LanguageCodeEntry {{}, {}, {}, {{'a', 's', 'a'}}}, // Asu - LanguageCodeEntry {{}, {}, {}, {{'c', 'c', 'h'}}}, // Atsam - LanguageCodeEntry {{{'a', 'v'}}, {{'a', 'v', 'a'}}, {{'a', 'v', 'a'}}, {{'a', 'v', 'a'}}}, // Avaric - LanguageCodeEntry {{{'a', 'e'}}, {{'a', 'v', 'e'}}, {{'a', 'v', 'e'}}, {{'a', 'v', 'e'}}}, // Avestan - LanguageCodeEntry {{{'a', 'y'}}, {{'a', 'y', 'm'}}, {{'a', 'y', 'm'}}, {{'a', 'y', 'm'}}}, // Aymara - LanguageCodeEntry {{{'a', 'z'}}, {{'a', 'z', 'e'}}, {{'a', 'z', 'e'}}, {{'a', 'z', 'e'}}}, // Azerbaijani - LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'f'}}}, // Bafia - LanguageCodeEntry {{}, {{'b', 'a', 'n'}}, {{'b', 'a', 'n'}}, {{'b', 'a', 'n'}}}, // Balinese - LanguageCodeEntry {{{'b', 'm'}}, {{'b', 'a', 'm'}}, {{'b', 'a', 'm'}}, {{'b', 'a', 'm'}}}, // Bambara - LanguageCodeEntry {{}, {}, {}, {{'b', 'a', 'x'}}}, // Bamun - LanguageCodeEntry {{{'b', 'n'}}, {{'b', 'e', 'n'}}, {{'b', 'e', 'n'}}, {{'b', 'e', 'n'}}}, // Bangla - LanguageCodeEntry {{}, {{'b', 'a', 's'}}, {{'b', 'a', 's'}}, {{'b', 'a', 's'}}}, // Basaa - LanguageCodeEntry {{{'b', 'a'}}, {{'b', 'a', 'k'}}, {{'b', 'a', 'k'}}, {{'b', 'a', 'k'}}}, // Bashkir - LanguageCodeEntry {{{'e', 'u'}}, {{'b', 'a', 'q'}}, {{'e', 'u', 's'}}, {{'e', 'u', 's'}}}, // Basque - LanguageCodeEntry {{}, {}, {}, {{'b', 'b', 'c'}}}, // Batak Toba - LanguageCodeEntry {{{'b', 'e'}}, {{'b', 'e', 'l'}}, {{'b', 'e', 'l'}}, {{'b', 'e', 'l'}}}, // Belarusian - LanguageCodeEntry {{}, {{'b', 'e', 'm'}}, {{'b', 'e', 'm'}}, {{'b', 'e', 'm'}}}, // Bemba - LanguageCodeEntry {{}, {}, {}, {{'b', 'e', 'z'}}}, // Bena - LanguageCodeEntry {{}, {{'b', 'h', 'o'}}, {{'b', 'h', 'o'}}, {{'b', 'h', 'o'}}}, // Bhojpuri - LanguageCodeEntry {{{'b', 'i'}}, {{'b', 'i', 's'}}, {{'b', 'i', 's'}}, {{'b', 'i', 's'}}}, // Bislama - LanguageCodeEntry {{}, {{'b', 'y', 'n'}}, {{'b', 'y', 'n'}}, {{'b', 'y', 'n'}}}, // Blin - LanguageCodeEntry {{}, {}, {}, {{'b', 'r', 'x'}}}, // Bodo - LanguageCodeEntry {{{'b', 's'}}, {{'b', 'o', 's'}}, {{'b', 'o', 's'}}, {{'b', 'o', 's'}}}, // Bosnian - LanguageCodeEntry {{{'b', 'r'}}, {{'b', 'r', 'e'}}, {{'b', 'r', 'e'}}, {{'b', 'r', 'e'}}}, // Breton - LanguageCodeEntry {{}, {{'b', 'u', 'g'}}, {{'b', 'u', 'g'}}, {{'b', 'u', 'g'}}}, // Buginese - LanguageCodeEntry {{{'b', 'g'}}, {{'b', 'u', 'l'}}, {{'b', 'u', 'l'}}, {{'b', 'u', 'l'}}}, // Bulgarian - LanguageCodeEntry {{{'m', 'y'}}, {{'b', 'u', 'r'}}, {{'m', 'y', 'a'}}, {{'m', 'y', 'a'}}}, // Burmese - LanguageCodeEntry {{}, {}, {}, {{'y', 'u', 'e'}}}, // Cantonese - LanguageCodeEntry {{{'c', 'a'}}, {{'c', 'a', 't'}}, {{'c', 'a', 't'}}, {{'c', 'a', 't'}}}, // Catalan - LanguageCodeEntry {{}, {{'c', 'e', 'b'}}, {{'c', 'e', 'b'}}, {{'c', 'e', 'b'}}}, // Cebuano - LanguageCodeEntry {{}, {}, {}, {{'t', 'z', 'm'}}}, // Central Atlas Tamazight - LanguageCodeEntry {{}, {}, {}, {{'c', 'k', 'b'}}}, // Central Kurdish - LanguageCodeEntry {{}, {}, {}, {{'c', 'c', 'p'}}}, // Chakma - LanguageCodeEntry {{{'c', 'h'}}, {{'c', 'h', 'a'}}, {{'c', 'h', 'a'}}, {{'c', 'h', 'a'}}}, // Chamorro - LanguageCodeEntry {{{'c', 'e'}}, {{'c', 'h', 'e'}}, {{'c', 'h', 'e'}}, {{'c', 'h', 'e'}}}, // Chechen - LanguageCodeEntry {{}, {{'c', 'h', 'r'}}, {{'c', 'h', 'r'}}, {{'c', 'h', 'r'}}}, // Cherokee - LanguageCodeEntry {{}, {}, {}, {{'c', 'i', 'c'}}}, // Chickasaw - LanguageCodeEntry {{}, {}, {}, {{'c', 'g', 'g'}}}, // Chiga - LanguageCodeEntry {{{'z', 'h'}}, {{'c', 'h', 'i'}}, {{'z', 'h', 'o'}}, {{'z', 'h', 'o'}}}, // Chinese - LanguageCodeEntry {{{'c', 'u'}}, {{'c', 'h', 'u'}}, {{'c', 'h', 'u'}}, {{'c', 'h', 'u'}}}, // Church - LanguageCodeEntry {{{'c', 'v'}}, {{'c', 'h', 'v'}}, {{'c', 'h', 'v'}}, {{'c', 'h', 'v'}}}, // Chuvash - LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'h'}}}, // Colognian - LanguageCodeEntry {{}, {{'c', 'o', 'p'}}, {{'c', 'o', 'p'}}, {{'c', 'o', 'p'}}}, // Coptic - LanguageCodeEntry {{{'k', 'w'}}, {{'c', 'o', 'r'}}, {{'c', 'o', 'r'}}, {{'c', 'o', 'r'}}}, // Cornish - LanguageCodeEntry {{{'c', 'o'}}, {{'c', 'o', 's'}}, {{'c', 'o', 's'}}, {{'c', 'o', 's'}}}, // Corsican - LanguageCodeEntry {{{'c', 'r'}}, {{'c', 'r', 'e'}}, {{'c', 'r', 'e'}}, {{'c', 'r', 'e'}}}, // Cree - LanguageCodeEntry {{{'h', 'r'}}, {{'h', 'r', 'v'}}, {{'h', 'r', 'v'}}, {{'h', 'r', 'v'}}}, // Croatian - LanguageCodeEntry {{{'c', 's'}}, {{'c', 'z', 'e'}}, {{'c', 'e', 's'}}, {{'c', 'e', 's'}}}, // Czech - LanguageCodeEntry {{{'d', 'a'}}, {{'d', 'a', 'n'}}, {{'d', 'a', 'n'}}, {{'d', 'a', 'n'}}}, // Danish - LanguageCodeEntry {{{'d', 'v'}}, {{'d', 'i', 'v'}}, {{'d', 'i', 'v'}}, {{'d', 'i', 'v'}}}, // Divehi - LanguageCodeEntry {{}, {{'d', 'o', 'i'}}, {{'d', 'o', 'i'}}, {{'d', 'o', 'i'}}}, // Dogri - LanguageCodeEntry {{}, {{'d', 'u', 'a'}}, {{'d', 'u', 'a'}}, {{'d', 'u', 'a'}}}, // Duala - LanguageCodeEntry {{{'n', 'l'}}, {{'d', 'u', 't'}}, {{'n', 'l', 'd'}}, {{'n', 'l', 'd'}}}, // Dutch - LanguageCodeEntry {{{'d', 'z'}}, {{'d', 'z', 'o'}}, {{'d', 'z', 'o'}}, {{'d', 'z', 'o'}}}, // Dzongkha - LanguageCodeEntry {{}, {}, {}, {{'e', 'b', 'u'}}}, // Embu - LanguageCodeEntry {{{'e', 'n'}}, {{'e', 'n', 'g'}}, {{'e', 'n', 'g'}}, {{'e', 'n', 'g'}}}, // English - LanguageCodeEntry {{}, {{'m', 'y', 'v'}}, {{'m', 'y', 'v'}}, {{'m', 'y', 'v'}}}, // Erzya - LanguageCodeEntry {{{'e', 'o'}}, {{'e', 'p', 'o'}}, {{'e', 'p', 'o'}}, {{'e', 'p', 'o'}}}, // Esperanto - LanguageCodeEntry {{{'e', 't'}}, {{'e', 's', 't'}}, {{'e', 's', 't'}}, {{'e', 's', 't'}}}, // Estonian - LanguageCodeEntry {{{'e', 'e'}}, {{'e', 'w', 'e'}}, {{'e', 'w', 'e'}}, {{'e', 'w', 'e'}}}, // Ewe - LanguageCodeEntry {{}, {{'e', 'w', 'o'}}, {{'e', 'w', 'o'}}, {{'e', 'w', 'o'}}}, // Ewondo - LanguageCodeEntry {{{'f', 'o'}}, {{'f', 'a', 'o'}}, {{'f', 'a', 'o'}}, {{'f', 'a', 'o'}}}, // Faroese - LanguageCodeEntry {{{'f', 'j'}}, {{'f', 'i', 'j'}}, {{'f', 'i', 'j'}}, {{'f', 'i', 'j'}}}, // Fijian - LanguageCodeEntry {{}, {{'f', 'i', 'l'}}, {{'f', 'i', 'l'}}, {{'f', 'i', 'l'}}}, // Filipino - LanguageCodeEntry {{{'f', 'i'}}, {{'f', 'i', 'n'}}, {{'f', 'i', 'n'}}, {{'f', 'i', 'n'}}}, // Finnish - LanguageCodeEntry {{{'f', 'r'}}, {{'f', 'r', 'e'}}, {{'f', 'r', 'a'}}, {{'f', 'r', 'a'}}}, // French - LanguageCodeEntry {{}, {{'f', 'u', 'r'}}, {{'f', 'u', 'r'}}, {{'f', 'u', 'r'}}}, // Friulian - LanguageCodeEntry {{{'f', 'f'}}, {{'f', 'u', 'l'}}, {{'f', 'u', 'l'}}, {{'f', 'u', 'l'}}}, // Fulah - LanguageCodeEntry {{{'g', 'd'}}, {{'g', 'l', 'a'}}, {{'g', 'l', 'a'}}, {{'g', 'l', 'a'}}}, // Gaelic - LanguageCodeEntry {{}, {{'g', 'a', 'a'}}, {{'g', 'a', 'a'}}, {{'g', 'a', 'a'}}}, // Ga - LanguageCodeEntry {{{'g', 'l'}}, {{'g', 'l', 'g'}}, {{'g', 'l', 'g'}}, {{'g', 'l', 'g'}}}, // Galician - LanguageCodeEntry {{{'l', 'g'}}, {{'l', 'u', 'g'}}, {{'l', 'u', 'g'}}, {{'l', 'u', 'g'}}}, // Ganda - LanguageCodeEntry {{}, {{'g', 'e', 'z'}}, {{'g', 'e', 'z'}}, {{'g', 'e', 'z'}}}, // Geez - LanguageCodeEntry {{{'k', 'a'}}, {{'g', 'e', 'o'}}, {{'k', 'a', 't'}}, {{'k', 'a', 't'}}}, // Georgian - LanguageCodeEntry {{{'d', 'e'}}, {{'g', 'e', 'r'}}, {{'d', 'e', 'u'}}, {{'d', 'e', 'u'}}}, // German - LanguageCodeEntry {{}, {{'g', 'o', 't'}}, {{'g', 'o', 't'}}, {{'g', 'o', 't'}}}, // Gothic - LanguageCodeEntry {{{'e', 'l'}}, {{'g', 'r', 'e'}}, {{'e', 'l', 'l'}}, {{'e', 'l', 'l'}}}, // Greek - LanguageCodeEntry {{{'g', 'n'}}, {{'g', 'r', 'n'}}, {{'g', 'r', 'n'}}, {{'g', 'r', 'n'}}}, // Guarani - LanguageCodeEntry {{{'g', 'u'}}, {{'g', 'u', 'j'}}, {{'g', 'u', 'j'}}, {{'g', 'u', 'j'}}}, // Gujarati - LanguageCodeEntry {{}, {}, {}, {{'g', 'u', 'z'}}}, // Gusii - LanguageCodeEntry {{{'h', 't'}}, {{'h', 'a', 't'}}, {{'h', 'a', 't'}}, {{'h', 'a', 't'}}}, // Haitian - LanguageCodeEntry {{{'h', 'a'}}, {{'h', 'a', 'u'}}, {{'h', 'a', 'u'}}, {{'h', 'a', 'u'}}}, // Hausa - LanguageCodeEntry {{}, {{'h', 'a', 'w'}}, {{'h', 'a', 'w'}}, {{'h', 'a', 'w'}}}, // Hawaiian - LanguageCodeEntry {{{'h', 'e'}}, {{'h', 'e', 'b'}}, {{'h', 'e', 'b'}}, {{'h', 'e', 'b'}}}, // Hebrew - LanguageCodeEntry {{{'h', 'z'}}, {{'h', 'e', 'r'}}, {{'h', 'e', 'r'}}, {{'h', 'e', 'r'}}}, // Herero - LanguageCodeEntry {{{'h', 'i'}}, {{'h', 'i', 'n'}}, {{'h', 'i', 'n'}}, {{'h', 'i', 'n'}}}, // Hindi - LanguageCodeEntry {{{'h', 'o'}}, {{'h', 'm', 'o'}}, {{'h', 'm', 'o'}}, {{'h', 'm', 'o'}}}, // Hiri Motu - LanguageCodeEntry {{{'h', 'u'}}, {{'h', 'u', 'n'}}, {{'h', 'u', 'n'}}, {{'h', 'u', 'n'}}}, // Hungarian - LanguageCodeEntry {{{'i', 's'}}, {{'i', 'c', 'e'}}, {{'i', 's', 'l'}}, {{'i', 's', 'l'}}}, // Icelandic - LanguageCodeEntry {{{'i', 'o'}}, {{'i', 'd', 'o'}}, {{'i', 'd', 'o'}}, {{'i', 'd', 'o'}}}, // Ido - LanguageCodeEntry {{{'i', 'g'}}, {{'i', 'b', 'o'}}, {{'i', 'b', 'o'}}, {{'i', 'b', 'o'}}}, // Igbo - LanguageCodeEntry {{}, {{'s', 'm', 'n'}}, {{'s', 'm', 'n'}}, {{'s', 'm', 'n'}}}, // Inari Sami - LanguageCodeEntry {{{'i', 'd'}}, {{'i', 'n', 'd'}}, {{'i', 'n', 'd'}}, {{'i', 'n', 'd'}}}, // Indonesian - LanguageCodeEntry {{}, {{'i', 'n', 'h'}}, {{'i', 'n', 'h'}}, {{'i', 'n', 'h'}}}, // Ingush - LanguageCodeEntry {{{'i', 'a'}}, {{'i', 'n', 'a'}}, {{'i', 'n', 'a'}}, {{'i', 'n', 'a'}}}, // Interlingua - LanguageCodeEntry {{{'i', 'e'}}, {{'i', 'l', 'e'}}, {{'i', 'l', 'e'}}, {{'i', 'l', 'e'}}}, // Interlingue - LanguageCodeEntry {{{'i', 'u'}}, {{'i', 'k', 'u'}}, {{'i', 'k', 'u'}}, {{'i', 'k', 'u'}}}, // Inuktitut - LanguageCodeEntry {{{'i', 'k'}}, {{'i', 'p', 'k'}}, {{'i', 'p', 'k'}}, {{'i', 'p', 'k'}}}, // Inupiaq - LanguageCodeEntry {{{'g', 'a'}}, {{'g', 'l', 'e'}}, {{'g', 'l', 'e'}}, {{'g', 'l', 'e'}}}, // Irish - LanguageCodeEntry {{{'i', 't'}}, {{'i', 't', 'a'}}, {{'i', 't', 'a'}}, {{'i', 't', 'a'}}}, // Italian - LanguageCodeEntry {{{'j', 'a'}}, {{'j', 'p', 'n'}}, {{'j', 'p', 'n'}}, {{'j', 'p', 'n'}}}, // Japanese - LanguageCodeEntry {{{'j', 'v'}}, {{'j', 'a', 'v'}}, {{'j', 'a', 'v'}}, {{'j', 'a', 'v'}}}, // Javanese - LanguageCodeEntry {{}, {}, {}, {{'k', 'a', 'j'}}}, // Jju - LanguageCodeEntry {{}, {}, {}, {{'d', 'y', 'o'}}}, // Jola Fonyi - LanguageCodeEntry {{}, {}, {}, {{'k', 'e', 'a'}}}, // Kabuverdianu - LanguageCodeEntry {{}, {{'k', 'a', 'b'}}, {{'k', 'a', 'b'}}, {{'k', 'a', 'b'}}}, // Kabyle - LanguageCodeEntry {{}, {}, {}, {{'k', 'k', 'j'}}}, // Kako - LanguageCodeEntry {{{'k', 'l'}}, {{'k', 'a', 'l'}}, {{'k', 'a', 'l'}}, {{'k', 'a', 'l'}}}, // Kalaallisut - LanguageCodeEntry {{}, {}, {}, {{'k', 'l', 'n'}}}, // Kalenjin - LanguageCodeEntry {{}, {{'k', 'a', 'm'}}, {{'k', 'a', 'm'}}, {{'k', 'a', 'm'}}}, // Kamba - LanguageCodeEntry {{{'k', 'n'}}, {{'k', 'a', 'n'}}, {{'k', 'a', 'n'}}, {{'k', 'a', 'n'}}}, // Kannada - LanguageCodeEntry {{{'k', 'r'}}, {{'k', 'a', 'u'}}, {{'k', 'a', 'u'}}, {{'k', 'a', 'u'}}}, // Kanuri - LanguageCodeEntry {{{'k', 's'}}, {{'k', 'a', 's'}}, {{'k', 'a', 's'}}, {{'k', 'a', 's'}}}, // Kashmiri - LanguageCodeEntry {{{'k', 'k'}}, {{'k', 'a', 'z'}}, {{'k', 'a', 'z'}}, {{'k', 'a', 'z'}}}, // Kazakh - LanguageCodeEntry {{}, {}, {}, {{'k', 'e', 'n'}}}, // Kenyang - LanguageCodeEntry {{{'k', 'm'}}, {{'k', 'h', 'm'}}, {{'k', 'h', 'm'}}, {{'k', 'h', 'm'}}}, // Khmer - LanguageCodeEntry {{}, {}, {}, {{'q', 'u', 'c'}}}, // Kiche - LanguageCodeEntry {{{'k', 'i'}}, {{'k', 'i', 'k'}}, {{'k', 'i', 'k'}}, {{'k', 'i', 'k'}}}, // Kikuyu - LanguageCodeEntry {{{'r', 'w'}}, {{'k', 'i', 'n'}}, {{'k', 'i', 'n'}}, {{'k', 'i', 'n'}}}, // Kinyarwanda - LanguageCodeEntry {{{'k', 'v'}}, {{'k', 'o', 'm'}}, {{'k', 'o', 'm'}}, {{'k', 'o', 'm'}}}, // Komi - LanguageCodeEntry {{{'k', 'g'}}, {{'k', 'o', 'n'}}, {{'k', 'o', 'n'}}, {{'k', 'o', 'n'}}}, // Kongo - LanguageCodeEntry {{}, {{'k', 'o', 'k'}}, {{'k', 'o', 'k'}}, {{'k', 'o', 'k'}}}, // Konkani - LanguageCodeEntry {{{'k', 'o'}}, {{'k', 'o', 'r'}}, {{'k', 'o', 'r'}}, {{'k', 'o', 'r'}}}, // Korean - LanguageCodeEntry {{}, {}, {}, {{'k', 'f', 'o'}}}, // Koro - LanguageCodeEntry {{}, {}, {}, {{'s', 'e', 's'}}}, // Koyraboro Senni - LanguageCodeEntry {{}, {}, {}, {{'k', 'h', 'q'}}}, // Koyra Chiini - LanguageCodeEntry {{}, {{'k', 'p', 'e'}}, {{'k', 'p', 'e'}}, {{'k', 'p', 'e'}}}, // Kpelle - LanguageCodeEntry {{{'k', 'j'}}, {{'k', 'u', 'a'}}, {{'k', 'u', 'a'}}, {{'k', 'u', 'a'}}}, // Kuanyama - LanguageCodeEntry {{{'k', 'u'}}, {{'k', 'u', 'r'}}, {{'k', 'u', 'r'}}, {{'k', 'u', 'r'}}}, // Kurdish - LanguageCodeEntry {{}, {}, {}, {{'n', 'm', 'g'}}}, // Kwasio - LanguageCodeEntry {{{'k', 'y'}}, {{'k', 'i', 'r'}}, {{'k', 'i', 'r'}}, {{'k', 'i', 'r'}}}, // Kyrgyz - LanguageCodeEntry {{}, {}, {}, {{'l', 'k', 't'}}}, // Lakota - LanguageCodeEntry {{}, {}, {}, {{'l', 'a', 'g'}}}, // Langi - LanguageCodeEntry {{{'l', 'o'}}, {{'l', 'a', 'o'}}, {{'l', 'a', 'o'}}, {{'l', 'a', 'o'}}}, // Lao - LanguageCodeEntry {{{'l', 'a'}}, {{'l', 'a', 't'}}, {{'l', 'a', 't'}}, {{'l', 'a', 't'}}}, // Latin - LanguageCodeEntry {{{'l', 'v'}}, {{'l', 'a', 'v'}}, {{'l', 'a', 'v'}}, {{'l', 'a', 'v'}}}, // Latvian - LanguageCodeEntry {{}, {{'l', 'e', 'z'}}, {{'l', 'e', 'z'}}, {{'l', 'e', 'z'}}}, // Lezghian - LanguageCodeEntry {{{'l', 'i'}}, {{'l', 'i', 'm'}}, {{'l', 'i', 'm'}}, {{'l', 'i', 'm'}}}, // Limburgish - LanguageCodeEntry {{{'l', 'n'}}, {{'l', 'i', 'n'}}, {{'l', 'i', 'n'}}, {{'l', 'i', 'n'}}}, // Lingala - LanguageCodeEntry {{}, {}, {}, {{'l', 'z', 'h'}}}, // Literary Chinese - LanguageCodeEntry {{{'l', 't'}}, {{'l', 'i', 't'}}, {{'l', 'i', 't'}}, {{'l', 'i', 't'}}}, // Lithuanian - LanguageCodeEntry {{}, {{'j', 'b', 'o'}}, {{'j', 'b', 'o'}}, {{'j', 'b', 'o'}}}, // Lojban - LanguageCodeEntry {{}, {{'d', 's', 'b'}}, {{'d', 's', 'b'}}, {{'d', 's', 'b'}}}, // Lower Sorbian - LanguageCodeEntry {{}, {{'n', 'd', 's'}}, {{'n', 'd', 's'}}, {{'n', 'd', 's'}}}, // Low German - LanguageCodeEntry {{{'l', 'u'}}, {{'l', 'u', 'b'}}, {{'l', 'u', 'b'}}, {{'l', 'u', 'b'}}}, // Luba Katanga - LanguageCodeEntry {{}, {{'s', 'm', 'j'}}, {{'s', 'm', 'j'}}, {{'s', 'm', 'j'}}}, // Lule Sami - LanguageCodeEntry {{}, {{'l', 'u', 'o'}}, {{'l', 'u', 'o'}}, {{'l', 'u', 'o'}}}, // Luo - LanguageCodeEntry {{{'l', 'b'}}, {{'l', 't', 'z'}}, {{'l', 't', 'z'}}, {{'l', 't', 'z'}}}, // Luxembourgish - LanguageCodeEntry {{}, {}, {}, {{'l', 'u', 'y'}}}, // Luyia - LanguageCodeEntry {{{'m', 'k'}}, {{'m', 'a', 'c'}}, {{'m', 'k', 'd'}}, {{'m', 'k', 'd'}}}, // Macedonian - LanguageCodeEntry {{}, {}, {}, {{'j', 'm', 'c'}}}, // Machame - LanguageCodeEntry {{}, {{'m', 'a', 'i'}}, {{'m', 'a', 'i'}}, {{'m', 'a', 'i'}}}, // Maithili - LanguageCodeEntry {{}, {}, {}, {{'m', 'g', 'h'}}}, // Makhuwa Meetto - LanguageCodeEntry {{}, {}, {}, {{'k', 'd', 'e'}}}, // Makonde - LanguageCodeEntry {{{'m', 'g'}}, {{'m', 'l', 'g'}}, {{'m', 'l', 'g'}}, {{'m', 'l', 'g'}}}, // Malagasy - LanguageCodeEntry {{{'m', 'l'}}, {{'m', 'a', 'l'}}, {{'m', 'a', 'l'}}, {{'m', 'a', 'l'}}}, // Malayalam - LanguageCodeEntry {{{'m', 's'}}, {{'m', 'a', 'y'}}, {{'m', 's', 'a'}}, {{'m', 's', 'a'}}}, // Malay - LanguageCodeEntry {{{'m', 't'}}, {{'m', 'l', 't'}}, {{'m', 'l', 't'}}, {{'m', 'l', 't'}}}, // Maltese - LanguageCodeEntry {{}, {{'m', 'a', 'n'}}, {{'m', 'a', 'n'}}, {{'m', 'a', 'n'}}}, // Mandingo - LanguageCodeEntry {{}, {{'m', 'n', 'i'}}, {{'m', 'n', 'i'}}, {{'m', 'n', 'i'}}}, // Manipuri - LanguageCodeEntry {{{'g', 'v'}}, {{'g', 'l', 'v'}}, {{'g', 'l', 'v'}}, {{'g', 'l', 'v'}}}, // Manx - LanguageCodeEntry {{{'m', 'i'}}, {{'m', 'a', 'o'}}, {{'m', 'r', 'i'}}, {{'m', 'r', 'i'}}}, // Maori - LanguageCodeEntry {{}, {{'a', 'r', 'n'}}, {{'a', 'r', 'n'}}, {{'a', 'r', 'n'}}}, // Mapuche - LanguageCodeEntry {{{'m', 'r'}}, {{'m', 'a', 'r'}}, {{'m', 'a', 'r'}}, {{'m', 'a', 'r'}}}, // Marathi - LanguageCodeEntry {{{'m', 'h'}}, {{'m', 'a', 'h'}}, {{'m', 'a', 'h'}}, {{'m', 'a', 'h'}}}, // Marshallese - LanguageCodeEntry {{}, {{'m', 'a', 's'}}, {{'m', 'a', 's'}}, {{'m', 'a', 's'}}}, // Masai - LanguageCodeEntry {{}, {}, {}, {{'m', 'z', 'n'}}}, // Mazanderani - LanguageCodeEntry {{}, {{'m', 'e', 'n'}}, {{'m', 'e', 'n'}}, {{'m', 'e', 'n'}}}, // Mende - LanguageCodeEntry {{}, {}, {}, {{'m', 'e', 'r'}}}, // Meru - LanguageCodeEntry {{}, {}, {}, {{'m', 'g', 'o'}}}, // Meta - LanguageCodeEntry {{}, {{'m', 'o', 'h'}}, {{'m', 'o', 'h'}}, {{'m', 'o', 'h'}}}, // Mohawk - LanguageCodeEntry {{{'m', 'n'}}, {{'m', 'o', 'n'}}, {{'m', 'o', 'n'}}, {{'m', 'o', 'n'}}}, // Mongolian - LanguageCodeEntry {{}, {}, {}, {{'m', 'f', 'e'}}}, // Morisyen - LanguageCodeEntry {{}, {}, {}, {{'m', 'u', 'a'}}}, // Mundang - LanguageCodeEntry {{}, {{'m', 'u', 's'}}, {{'m', 'u', 's'}}, {{'m', 'u', 's'}}}, // Muscogee - LanguageCodeEntry {{}, {}, {}, {{'n', 'a', 'q'}}}, // Nama - LanguageCodeEntry {{{'n', 'a'}}, {{'n', 'a', 'u'}}, {{'n', 'a', 'u'}}, {{'n', 'a', 'u'}}}, // Nauru - LanguageCodeEntry {{{'n', 'v'}}, {{'n', 'a', 'v'}}, {{'n', 'a', 'v'}}, {{'n', 'a', 'v'}}}, // Navajo - LanguageCodeEntry {{{'n', 'g'}}, {{'n', 'd', 'o'}}, {{'n', 'd', 'o'}}, {{'n', 'd', 'o'}}}, // Ndonga - LanguageCodeEntry {{{'n', 'e'}}, {{'n', 'e', 'p'}}, {{'n', 'e', 'p'}}, {{'n', 'e', 'p'}}}, // Nepali - LanguageCodeEntry {{}, {{'n', 'e', 'w'}}, {{'n', 'e', 'w'}}, {{'n', 'e', 'w'}}}, // Newari - LanguageCodeEntry {{}, {}, {}, {{'n', 'n', 'h'}}}, // Ngiemboon - LanguageCodeEntry {{}, {}, {}, {{'j', 'g', 'o'}}}, // Ngomba - LanguageCodeEntry {{}, {}, {}, {{'p', 'c', 'm'}}}, // Nigerian Pidgin - LanguageCodeEntry {{}, {{'n', 'q', 'o'}}, {{'n', 'q', 'o'}}, {{'n', 'q', 'o'}}}, // Nko - LanguageCodeEntry {{}, {}, {}, {{'l', 'r', 'c'}}}, // Northern Luri - LanguageCodeEntry {{{'s', 'e'}}, {{'s', 'm', 'e'}}, {{'s', 'm', 'e'}}, {{'s', 'm', 'e'}}}, // Northern Sami - LanguageCodeEntry {{}, {{'n', 's', 'o'}}, {{'n', 's', 'o'}}, {{'n', 's', 'o'}}}, // Northern Sotho - LanguageCodeEntry {{{'n', 'd'}}, {{'n', 'd', 'e'}}, {{'n', 'd', 'e'}}, {{'n', 'd', 'e'}}}, // North Ndebele - LanguageCodeEntry {{{'n', 'b'}}, {{'n', 'o', 'b'}}, {{'n', 'o', 'b'}}, {{'n', 'o', 'b'}}}, // Norwegian Bokmal - LanguageCodeEntry {{{'n', 'n'}}, {{'n', 'n', 'o'}}, {{'n', 'n', 'o'}}, {{'n', 'n', 'o'}}}, // Norwegian Nynorsk - LanguageCodeEntry {{}, {}, {}, {{'n', 'u', 's'}}}, // Nuer - LanguageCodeEntry {{{'n', 'y'}}, {{'n', 'y', 'a'}}, {{'n', 'y', 'a'}}, {{'n', 'y', 'a'}}}, // Nyanja - LanguageCodeEntry {{}, {{'n', 'y', 'n'}}, {{'n', 'y', 'n'}}, {{'n', 'y', 'n'}}}, // Nyankole - LanguageCodeEntry {{{'o', 'c'}}, {{'o', 'c', 'i'}}, {{'o', 'c', 'i'}}, {{'o', 'c', 'i'}}}, // Occitan - LanguageCodeEntry {{{'o', 'r'}}, {{'o', 'r', 'i'}}, {{'o', 'r', 'i'}}, {{'o', 'r', 'i'}}}, // Odia - LanguageCodeEntry {{{'o', 'j'}}, {{'o', 'j', 'i'}}, {{'o', 'j', 'i'}}, {{'o', 'j', 'i'}}}, // Ojibwa - LanguageCodeEntry {{}, {{'s', 'g', 'a'}}, {{'s', 'g', 'a'}}, {{'s', 'g', 'a'}}}, // Old Irish - LanguageCodeEntry {{}, {{'n', 'o', 'n'}}, {{'n', 'o', 'n'}}, {{'n', 'o', 'n'}}}, // Old Norse - LanguageCodeEntry {{}, {{'p', 'e', 'o'}}, {{'p', 'e', 'o'}}, {{'p', 'e', 'o'}}}, // Old Persian - LanguageCodeEntry {{{'o', 'm'}}, {{'o', 'r', 'm'}}, {{'o', 'r', 'm'}}, {{'o', 'r', 'm'}}}, // Oromo - LanguageCodeEntry {{}, {{'o', 's', 'a'}}, {{'o', 's', 'a'}}, {{'o', 's', 'a'}}}, // Osage - LanguageCodeEntry {{{'o', 's'}}, {{'o', 's', 's'}}, {{'o', 's', 's'}}, {{'o', 's', 's'}}}, // Ossetic - LanguageCodeEntry {{}, {{'p', 'a', 'l'}}, {{'p', 'a', 'l'}}, {{'p', 'a', 'l'}}}, // Pahlavi - LanguageCodeEntry {{}, {{'p', 'a', 'u'}}, {{'p', 'a', 'u'}}, {{'p', 'a', 'u'}}}, // Palauan - LanguageCodeEntry {{{'p', 'i'}}, {{'p', 'l', 'i'}}, {{'p', 'l', 'i'}}, {{'p', 'l', 'i'}}}, // Pali - LanguageCodeEntry {{}, {{'p', 'a', 'p'}}, {{'p', 'a', 'p'}}, {{'p', 'a', 'p'}}}, // Papiamento - LanguageCodeEntry {{{'p', 's'}}, {{'p', 'u', 's'}}, {{'p', 'u', 's'}}, {{'p', 'u', 's'}}}, // Pashto - LanguageCodeEntry {{{'f', 'a'}}, {{'p', 'e', 'r'}}, {{'f', 'a', 's'}}, {{'f', 'a', 's'}}}, // Persian - LanguageCodeEntry {{}, {{'p', 'h', 'n'}}, {{'p', 'h', 'n'}}, {{'p', 'h', 'n'}}}, // Phoenician - LanguageCodeEntry {{{'p', 'l'}}, {{'p', 'o', 'l'}}, {{'p', 'o', 'l'}}, {{'p', 'o', 'l'}}}, // Polish - LanguageCodeEntry {{{'p', 't'}}, {{'p', 'o', 'r'}}, {{'p', 'o', 'r'}}, {{'p', 'o', 'r'}}}, // Portuguese - LanguageCodeEntry {{}, {}, {}, {{'p', 'r', 'g'}}}, // Prussian - LanguageCodeEntry {{{'p', 'a'}}, {{'p', 'a', 'n'}}, {{'p', 'a', 'n'}}, {{'p', 'a', 'n'}}}, // Punjabi - LanguageCodeEntry {{{'q', 'u'}}, {{'q', 'u', 'e'}}, {{'q', 'u', 'e'}}, {{'q', 'u', 'e'}}}, // Quechua - LanguageCodeEntry {{{'r', 'o'}}, {{'r', 'u', 'm'}}, {{'r', 'o', 'n'}}, {{'r', 'o', 'n'}}}, // Romanian - LanguageCodeEntry {{{'r', 'm'}}, {{'r', 'o', 'h'}}, {{'r', 'o', 'h'}}, {{'r', 'o', 'h'}}}, // Romansh - LanguageCodeEntry {{}, {}, {}, {{'r', 'o', 'f'}}}, // Rombo - LanguageCodeEntry {{{'r', 'n'}}, {{'r', 'u', 'n'}}, {{'r', 'u', 'n'}}, {{'r', 'u', 'n'}}}, // Rundi - LanguageCodeEntry {{{'r', 'u'}}, {{'r', 'u', 's'}}, {{'r', 'u', 's'}}, {{'r', 'u', 's'}}}, // Russian - LanguageCodeEntry {{}, {}, {}, {{'r', 'w', 'k'}}}, // Rwa - LanguageCodeEntry {{}, {}, {}, {{'s', 's', 'y'}}}, // Saho - LanguageCodeEntry {{}, {{'s', 'a', 'h'}}, {{'s', 'a', 'h'}}, {{'s', 'a', 'h'}}}, // Sakha - LanguageCodeEntry {{}, {}, {}, {{'s', 'a', 'q'}}}, // Samburu - LanguageCodeEntry {{{'s', 'm'}}, {{'s', 'm', 'o'}}, {{'s', 'm', 'o'}}, {{'s', 'm', 'o'}}}, // Samoan - LanguageCodeEntry {{{'s', 'g'}}, {{'s', 'a', 'g'}}, {{'s', 'a', 'g'}}, {{'s', 'a', 'g'}}}, // Sango - LanguageCodeEntry {{}, {}, {}, {{'s', 'b', 'p'}}}, // Sangu - LanguageCodeEntry {{{'s', 'a'}}, {{'s', 'a', 'n'}}, {{'s', 'a', 'n'}}, {{'s', 'a', 'n'}}}, // Sanskrit - LanguageCodeEntry {{}, {{'s', 'a', 't'}}, {{'s', 'a', 't'}}, {{'s', 'a', 't'}}}, // Santali - LanguageCodeEntry {{{'s', 'c'}}, {{'s', 'r', 'd'}}, {{'s', 'r', 'd'}}, {{'s', 'r', 'd'}}}, // Sardinian - LanguageCodeEntry {{}, {}, {}, {{'s', 'a', 'z'}}}, // Saurashtra - LanguageCodeEntry {{}, {}, {}, {{'s', 'e', 'h'}}}, // Sena - LanguageCodeEntry {{{'s', 'r'}}, {{'s', 'r', 'p'}}, {{'s', 'r', 'p'}}, {{'s', 'r', 'p'}}}, // Serbian - LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'b'}}}, // Shambala - LanguageCodeEntry {{{'s', 'n'}}, {{'s', 'n', 'a'}}, {{'s', 'n', 'a'}}, {{'s', 'n', 'a'}}}, // Shona - LanguageCodeEntry {{{'i', 'i'}}, {{'i', 'i', 'i'}}, {{'i', 'i', 'i'}}, {{'i', 'i', 'i'}}}, // Sichuan Yi - LanguageCodeEntry {{}, {{'s', 'c', 'n'}}, {{'s', 'c', 'n'}}, {{'s', 'c', 'n'}}}, // Sicilian - LanguageCodeEntry {{}, {{'s', 'i', 'd'}}, {{'s', 'i', 'd'}}, {{'s', 'i', 'd'}}}, // Sidamo - LanguageCodeEntry {{}, {}, {}, {{'s', 'z', 'l'}}}, // Silesian - LanguageCodeEntry {{{'s', 'd'}}, {{'s', 'n', 'd'}}, {{'s', 'n', 'd'}}, {{'s', 'n', 'd'}}}, // Sindhi - LanguageCodeEntry {{{'s', 'i'}}, {{'s', 'i', 'n'}}, {{'s', 'i', 'n'}}, {{'s', 'i', 'n'}}}, // Sinhala - LanguageCodeEntry {{}, {{'s', 'm', 's'}}, {{'s', 'm', 's'}}, {{'s', 'm', 's'}}}, // Skolt Sami - LanguageCodeEntry {{{'s', 'k'}}, {{'s', 'l', 'o'}}, {{'s', 'l', 'k'}}, {{'s', 'l', 'k'}}}, // Slovak - LanguageCodeEntry {{{'s', 'l'}}, {{'s', 'l', 'v'}}, {{'s', 'l', 'v'}}, {{'s', 'l', 'v'}}}, // Slovenian - LanguageCodeEntry {{}, {}, {}, {{'x', 'o', 'g'}}}, // Soga - LanguageCodeEntry {{{'s', 'o'}}, {{'s', 'o', 'm'}}, {{'s', 'o', 'm'}}, {{'s', 'o', 'm'}}}, // Somali - LanguageCodeEntry {{}, {}, {}, {{'s', 'd', 'h'}}}, // Southern Kurdish - LanguageCodeEntry {{}, {{'s', 'm', 'a'}}, {{'s', 'm', 'a'}}, {{'s', 'm', 'a'}}}, // Southern Sami - LanguageCodeEntry {{{'s', 't'}}, {{'s', 'o', 't'}}, {{'s', 'o', 't'}}, {{'s', 'o', 't'}}}, // Southern Sotho - LanguageCodeEntry {{{'n', 'r'}}, {{'n', 'b', 'l'}}, {{'n', 'b', 'l'}}, {{'n', 'b', 'l'}}}, // South Ndebele - LanguageCodeEntry {{{'e', 's'}}, {{'s', 'p', 'a'}}, {{'s', 'p', 'a'}}, {{'s', 'p', 'a'}}}, // Spanish - LanguageCodeEntry {{}, {{'z', 'g', 'h'}}, {{'z', 'g', 'h'}}, {{'z', 'g', 'h'}}}, // Standard Moroccan Tamazight - LanguageCodeEntry {{{'s', 'u'}}, {{'s', 'u', 'n'}}, {{'s', 'u', 'n'}}, {{'s', 'u', 'n'}}}, // Sundanese - LanguageCodeEntry {{{'s', 'w'}}, {{'s', 'w', 'a'}}, {{'s', 'w', 'a'}}, {{'s', 'w', 'a'}}}, // Swahili - LanguageCodeEntry {{{'s', 's'}}, {{'s', 's', 'w'}}, {{'s', 's', 'w'}}, {{'s', 's', 'w'}}}, // Swati - LanguageCodeEntry {{{'s', 'v'}}, {{'s', 'w', 'e'}}, {{'s', 'w', 'e'}}, {{'s', 'w', 'e'}}}, // Swedish - LanguageCodeEntry {{}, {{'g', 's', 'w'}}, {{'g', 's', 'w'}}, {{'g', 's', 'w'}}}, // Swiss German - LanguageCodeEntry {{}, {{'s', 'y', 'r'}}, {{'s', 'y', 'r'}}, {{'s', 'y', 'r'}}}, // Syriac - LanguageCodeEntry {{}, {}, {}, {{'s', 'h', 'i'}}}, // Tachelhit - LanguageCodeEntry {{{'t', 'y'}}, {{'t', 'a', 'h'}}, {{'t', 'a', 'h'}}, {{'t', 'a', 'h'}}}, // Tahitian - LanguageCodeEntry {{}, {}, {}, {{'b', 'l', 't'}}}, // Tai Dam - LanguageCodeEntry {{}, {}, {}, {{'d', 'a', 'v'}}}, // Taita - LanguageCodeEntry {{{'t', 'g'}}, {{'t', 'g', 'k'}}, {{'t', 'g', 'k'}}, {{'t', 'g', 'k'}}}, // Tajik - LanguageCodeEntry {{{'t', 'a'}}, {{'t', 'a', 'm'}}, {{'t', 'a', 'm'}}, {{'t', 'a', 'm'}}}, // Tamil - LanguageCodeEntry {{}, {}, {}, {{'t', 'r', 'v'}}}, // Taroko - LanguageCodeEntry {{}, {}, {}, {{'t', 'w', 'q'}}}, // Tasawaq - LanguageCodeEntry {{{'t', 't'}}, {{'t', 'a', 't'}}, {{'t', 'a', 't'}}, {{'t', 'a', 't'}}}, // Tatar - LanguageCodeEntry {{{'t', 'e'}}, {{'t', 'e', 'l'}}, {{'t', 'e', 'l'}}, {{'t', 'e', 'l'}}}, // Telugu - LanguageCodeEntry {{}, {}, {}, {{'t', 'e', 'o'}}}, // Teso - LanguageCodeEntry {{{'t', 'h'}}, {{'t', 'h', 'a'}}, {{'t', 'h', 'a'}}, {{'t', 'h', 'a'}}}, // Thai - LanguageCodeEntry {{{'b', 'o'}}, {{'t', 'i', 'b'}}, {{'b', 'o', 'd'}}, {{'b', 'o', 'd'}}}, // Tibetan - LanguageCodeEntry {{}, {{'t', 'i', 'g'}}, {{'t', 'i', 'g'}}, {{'t', 'i', 'g'}}}, // Tigre - LanguageCodeEntry {{{'t', 'i'}}, {{'t', 'i', 'r'}}, {{'t', 'i', 'r'}}, {{'t', 'i', 'r'}}}, // Tigrinya - LanguageCodeEntry {{}, {{'t', 'k', 'l'}}, {{'t', 'k', 'l'}}, {{'t', 'k', 'l'}}}, // Tokelau - LanguageCodeEntry {{}, {{'t', 'p', 'i'}}, {{'t', 'p', 'i'}}, {{'t', 'p', 'i'}}}, // Tok Pisin - LanguageCodeEntry {{{'t', 'o'}}, {{'t', 'o', 'n'}}, {{'t', 'o', 'n'}}, {{'t', 'o', 'n'}}}, // Tongan - LanguageCodeEntry {{{'t', 's'}}, {{'t', 's', 'o'}}, {{'t', 's', 'o'}}, {{'t', 's', 'o'}}}, // Tsonga - LanguageCodeEntry {{{'t', 'n'}}, {{'t', 's', 'n'}}, {{'t', 's', 'n'}}, {{'t', 's', 'n'}}}, // Tswana - LanguageCodeEntry {{{'t', 'r'}}, {{'t', 'u', 'r'}}, {{'t', 'u', 'r'}}, {{'t', 'u', 'r'}}}, // Turkish - LanguageCodeEntry {{{'t', 'k'}}, {{'t', 'u', 'k'}}, {{'t', 'u', 'k'}}, {{'t', 'u', 'k'}}}, // Turkmen - LanguageCodeEntry {{}, {{'t', 'v', 'l'}}, {{'t', 'v', 'l'}}, {{'t', 'v', 'l'}}}, // Tuvalu - LanguageCodeEntry {{}, {}, {}, {{'k', 'c', 'g'}}}, // Tyap - LanguageCodeEntry {{}, {{'u', 'g', 'a'}}, {{'u', 'g', 'a'}}, {{'u', 'g', 'a'}}}, // Ugaritic - LanguageCodeEntry {{{'u', 'k'}}, {{'u', 'k', 'r'}}, {{'u', 'k', 'r'}}, {{'u', 'k', 'r'}}}, // Ukrainian - LanguageCodeEntry {{}, {{'h', 's', 'b'}}, {{'h', 's', 'b'}}, {{'h', 's', 'b'}}}, // Upper Sorbian - LanguageCodeEntry {{{'u', 'r'}}, {{'u', 'r', 'd'}}, {{'u', 'r', 'd'}}, {{'u', 'r', 'd'}}}, // Urdu - LanguageCodeEntry {{{'u', 'g'}}, {{'u', 'i', 'g'}}, {{'u', 'i', 'g'}}, {{'u', 'i', 'g'}}}, // Uyghur - LanguageCodeEntry {{{'u', 'z'}}, {{'u', 'z', 'b'}}, {{'u', 'z', 'b'}}, {{'u', 'z', 'b'}}}, // Uzbek - LanguageCodeEntry {{}, {{'v', 'a', 'i'}}, {{'v', 'a', 'i'}}, {{'v', 'a', 'i'}}}, // Vai - LanguageCodeEntry {{{'v', 'e'}}, {{'v', 'e', 'n'}}, {{'v', 'e', 'n'}}, {{'v', 'e', 'n'}}}, // Venda - LanguageCodeEntry {{{'v', 'i'}}, {{'v', 'i', 'e'}}, {{'v', 'i', 'e'}}, {{'v', 'i', 'e'}}}, // Vietnamese - LanguageCodeEntry {{{'v', 'o'}}, {{'v', 'o', 'l'}}, {{'v', 'o', 'l'}}, {{'v', 'o', 'l'}}}, // Volapuk - LanguageCodeEntry {{}, {}, {}, {{'v', 'u', 'n'}}}, // Vunjo - LanguageCodeEntry {{{'w', 'a'}}, {{'w', 'l', 'n'}}, {{'w', 'l', 'n'}}, {{'w', 'l', 'n'}}}, // Walloon - LanguageCodeEntry {{}, {}, {}, {{'w', 'a', 'e'}}}, // Walser - LanguageCodeEntry {{}, {}, {}, {{'w', 'b', 'p'}}}, // Warlpiri - LanguageCodeEntry {{{'c', 'y'}}, {{'w', 'e', 'l'}}, {{'c', 'y', 'm'}}, {{'c', 'y', 'm'}}}, // Welsh - LanguageCodeEntry {{}, {}, {}, {{'b', 'g', 'n'}}}, // Western Balochi - LanguageCodeEntry {{{'f', 'y'}}, {{'f', 'r', 'y'}}, {{'f', 'r', 'y'}}, {{'f', 'r', 'y'}}}, // Western Frisian - LanguageCodeEntry {{}, {{'w', 'a', 'l'}}, {{'w', 'a', 'l'}}, {{'w', 'a', 'l'}}}, // Wolaytta - LanguageCodeEntry {{{'w', 'o'}}, {{'w', 'o', 'l'}}, {{'w', 'o', 'l'}}, {{'w', 'o', 'l'}}}, // Wolof - LanguageCodeEntry {{{'x', 'h'}}, {{'x', 'h', 'o'}}, {{'x', 'h', 'o'}}, {{'x', 'h', 'o'}}}, // Xhosa - LanguageCodeEntry {{}, {}, {}, {{'y', 'a', 'v'}}}, // Yangben - LanguageCodeEntry {{{'y', 'i'}}, {{'y', 'i', 'd'}}, {{'y', 'i', 'd'}}, {{'y', 'i', 'd'}}}, // Yiddish - LanguageCodeEntry {{{'y', 'o'}}, {{'y', 'o', 'r'}}, {{'y', 'o', 'r'}}, {{'y', 'o', 'r'}}}, // Yoruba - LanguageCodeEntry {{}, {}, {}, {{'d', 'j', 'e'}}}, // Zarma - LanguageCodeEntry {{{'z', 'a'}}, {{'z', 'h', 'a'}}, {{'z', 'h', 'a'}}, {{'z', 'h', 'a'}}}, // Zhuang - LanguageCodeEntry {{{'z', 'u'}}, {{'z', 'u', 'l'}}, {{'z', 'u', 'l'}}, {{'z', 'u', 'l'}}}, // Zulu - LanguageCodeEntry {{}, {}, {}, {{'k', 'g', 'p'}}}, // Kaingang - LanguageCodeEntry {{}, {}, {}, {{'y', 'r', 'l'}}}, // Nheengatu - LanguageCodeEntry {{}, {}, {}, {{'b', 'g', 'c'}}}, // Haryanvi - LanguageCodeEntry {{}, {{'f', 'r', 'r'}}, {{'f', 'r', 'r'}}, {{'f', 'r', 'r'}}}, // Northern Frisian - LanguageCodeEntry {{}, {{'r', 'a', 'j'}}, {{'r', 'a', 'j'}}, {{'r', 'a', 'j'}}}, // Rajasthani - LanguageCodeEntry {{}, {{'m', 'd', 'f'}}, {{'m', 'd', 'f'}}, {{'m', 'd', 'f'}}}, // Moksha - LanguageCodeEntry {{}, {}, {}, {{'t', 'o', 'k'}}}, // Toki Pona - LanguageCodeEntry {{}, {}, {}, {{'p', 'i', 's'}}}, // Pijin - LanguageCodeEntry {{}, {}, {}, {{'a', 'n', 'n'}}}, // Obolo + LanguageCodeEntry {{}, {'u', 'n', 'd'}, {'u', 'n', 'd'}, {'u', 'n', 'd'}}, // AnyLanguage + LanguageCodeEntry {{}, {'u', 'n', 'd'}, {'u', 'n', 'd'}, {'u', 'n', 'd'}}, // C + LanguageCodeEntry {{'a', 'b'}, {'a', 'b', 'k'}, {'a', 'b', 'k'}, {'a', 'b', 'k'}}, // Abkhazian + LanguageCodeEntry {{'a', 'a'}, {'a', 'a', 'r'}, {'a', 'a', 'r'}, {'a', 'a', 'r'}}, // Afar + LanguageCodeEntry {{'a', 'f'}, {'a', 'f', 'r'}, {'a', 'f', 'r'}, {'a', 'f', 'r'}}, // Afrikaans + LanguageCodeEntry {{}, {}, {}, {'a', 'g', 'q'}}, // Aghem + LanguageCodeEntry {{'a', 'k'}, {'a', 'k', 'a'}, {'a', 'k', 'a'}, {'a', 'k', 'a'}}, // Akan + LanguageCodeEntry {{}, {'a', 'k', 'k'}, {'a', 'k', 'k'}, {'a', 'k', 'k'}}, // Akkadian + LanguageCodeEntry {{}, {}, {}, {'b', 's', 's'}}, // Akoose + LanguageCodeEntry {{'s', 'q'}, {'a', 'l', 'b'}, {'s', 'q', 'i'}, {'s', 'q', 'i'}}, // Albanian + LanguageCodeEntry {{}, {}, {}, {'a', 's', 'e'}}, // American Sign Language + LanguageCodeEntry {{'a', 'm'}, {'a', 'm', 'h'}, {'a', 'm', 'h'}, {'a', 'm', 'h'}}, // Amharic + LanguageCodeEntry {{}, {'e', 'g', 'y'}, {'e', 'g', 'y'}, {'e', 'g', 'y'}}, // Ancient Egyptian + LanguageCodeEntry {{}, {'g', 'r', 'c'}, {'g', 'r', 'c'}, {'g', 'r', 'c'}}, // Ancient Greek + LanguageCodeEntry {{'a', 'r'}, {'a', 'r', 'a'}, {'a', 'r', 'a'}, {'a', 'r', 'a'}}, // Arabic + LanguageCodeEntry {{'a', 'n'}, {'a', 'r', 'g'}, {'a', 'r', 'g'}, {'a', 'r', 'g'}}, // Aragonese + LanguageCodeEntry {{}, {'a', 'r', 'c'}, {'a', 'r', 'c'}, {'a', 'r', 'c'}}, // Aramaic + LanguageCodeEntry {{'h', 'y'}, {'a', 'r', 'm'}, {'h', 'y', 'e'}, {'h', 'y', 'e'}}, // Armenian + LanguageCodeEntry {{'a', 's'}, {'a', 's', 'm'}, {'a', 's', 'm'}, {'a', 's', 'm'}}, // Assamese + LanguageCodeEntry {{}, {'a', 's', 't'}, {'a', 's', 't'}, {'a', 's', 't'}}, // Asturian + LanguageCodeEntry {{}, {}, {}, {'a', 's', 'a'}}, // Asu + LanguageCodeEntry {{}, {}, {}, {'c', 'c', 'h'}}, // Atsam + LanguageCodeEntry {{'a', 'v'}, {'a', 'v', 'a'}, {'a', 'v', 'a'}, {'a', 'v', 'a'}}, // Avaric + LanguageCodeEntry {{'a', 'e'}, {'a', 'v', 'e'}, {'a', 'v', 'e'}, {'a', 'v', 'e'}}, // Avestan + LanguageCodeEntry {{'a', 'y'}, {'a', 'y', 'm'}, {'a', 'y', 'm'}, {'a', 'y', 'm'}}, // Aymara + LanguageCodeEntry {{'a', 'z'}, {'a', 'z', 'e'}, {'a', 'z', 'e'}, {'a', 'z', 'e'}}, // Azerbaijani + LanguageCodeEntry {{}, {}, {}, {'k', 's', 'f'}}, // Bafia + LanguageCodeEntry {{}, {'b', 'a', 'n'}, {'b', 'a', 'n'}, {'b', 'a', 'n'}}, // Balinese + LanguageCodeEntry {{'b', 'm'}, {'b', 'a', 'm'}, {'b', 'a', 'm'}, {'b', 'a', 'm'}}, // Bambara + LanguageCodeEntry {{}, {}, {}, {'b', 'a', 'x'}}, // Bamun + LanguageCodeEntry {{'b', 'n'}, {'b', 'e', 'n'}, {'b', 'e', 'n'}, {'b', 'e', 'n'}}, // Bangla + LanguageCodeEntry {{}, {'b', 'a', 's'}, {'b', 'a', 's'}, {'b', 'a', 's'}}, // Basaa + LanguageCodeEntry {{'b', 'a'}, {'b', 'a', 'k'}, {'b', 'a', 'k'}, {'b', 'a', 'k'}}, // Bashkir + LanguageCodeEntry {{'e', 'u'}, {'b', 'a', 'q'}, {'e', 'u', 's'}, {'e', 'u', 's'}}, // Basque + LanguageCodeEntry {{}, {}, {}, {'b', 'b', 'c'}}, // Batak Toba + LanguageCodeEntry {{'b', 'e'}, {'b', 'e', 'l'}, {'b', 'e', 'l'}, {'b', 'e', 'l'}}, // Belarusian + LanguageCodeEntry {{}, {'b', 'e', 'm'}, {'b', 'e', 'm'}, {'b', 'e', 'm'}}, // Bemba + LanguageCodeEntry {{}, {}, {}, {'b', 'e', 'z'}}, // Bena + LanguageCodeEntry {{}, {'b', 'h', 'o'}, {'b', 'h', 'o'}, {'b', 'h', 'o'}}, // Bhojpuri + LanguageCodeEntry {{'b', 'i'}, {'b', 'i', 's'}, {'b', 'i', 's'}, {'b', 'i', 's'}}, // Bislama + LanguageCodeEntry {{}, {'b', 'y', 'n'}, {'b', 'y', 'n'}, {'b', 'y', 'n'}}, // Blin + LanguageCodeEntry {{}, {}, {}, {'b', 'r', 'x'}}, // Bodo + LanguageCodeEntry {{'b', 's'}, {'b', 'o', 's'}, {'b', 'o', 's'}, {'b', 'o', 's'}}, // Bosnian + LanguageCodeEntry {{'b', 'r'}, {'b', 'r', 'e'}, {'b', 'r', 'e'}, {'b', 'r', 'e'}}, // Breton + LanguageCodeEntry {{}, {'b', 'u', 'g'}, {'b', 'u', 'g'}, {'b', 'u', 'g'}}, // Buginese + LanguageCodeEntry {{'b', 'g'}, {'b', 'u', 'l'}, {'b', 'u', 'l'}, {'b', 'u', 'l'}}, // Bulgarian + LanguageCodeEntry {{'m', 'y'}, {'b', 'u', 'r'}, {'m', 'y', 'a'}, {'m', 'y', 'a'}}, // Burmese + LanguageCodeEntry {{}, {}, {}, {'y', 'u', 'e'}}, // Cantonese + LanguageCodeEntry {{'c', 'a'}, {'c', 'a', 't'}, {'c', 'a', 't'}, {'c', 'a', 't'}}, // Catalan + LanguageCodeEntry {{}, {'c', 'e', 'b'}, {'c', 'e', 'b'}, {'c', 'e', 'b'}}, // Cebuano + LanguageCodeEntry {{}, {}, {}, {'t', 'z', 'm'}}, // Central Atlas Tamazight + LanguageCodeEntry {{}, {}, {}, {'c', 'k', 'b'}}, // Central Kurdish + LanguageCodeEntry {{}, {}, {}, {'c', 'c', 'p'}}, // Chakma + LanguageCodeEntry {{'c', 'h'}, {'c', 'h', 'a'}, {'c', 'h', 'a'}, {'c', 'h', 'a'}}, // Chamorro + LanguageCodeEntry {{'c', 'e'}, {'c', 'h', 'e'}, {'c', 'h', 'e'}, {'c', 'h', 'e'}}, // Chechen + LanguageCodeEntry {{}, {'c', 'h', 'r'}, {'c', 'h', 'r'}, {'c', 'h', 'r'}}, // Cherokee + LanguageCodeEntry {{}, {}, {}, {'c', 'i', 'c'}}, // Chickasaw + LanguageCodeEntry {{}, {}, {}, {'c', 'g', 'g'}}, // Chiga + LanguageCodeEntry {{'z', 'h'}, {'c', 'h', 'i'}, {'z', 'h', 'o'}, {'z', 'h', 'o'}}, // Chinese + LanguageCodeEntry {{'c', 'u'}, {'c', 'h', 'u'}, {'c', 'h', 'u'}, {'c', 'h', 'u'}}, // Church + LanguageCodeEntry {{'c', 'v'}, {'c', 'h', 'v'}, {'c', 'h', 'v'}, {'c', 'h', 'v'}}, // Chuvash + LanguageCodeEntry {{}, {}, {}, {'k', 's', 'h'}}, // Colognian + LanguageCodeEntry {{}, {'c', 'o', 'p'}, {'c', 'o', 'p'}, {'c', 'o', 'p'}}, // Coptic + LanguageCodeEntry {{'k', 'w'}, {'c', 'o', 'r'}, {'c', 'o', 'r'}, {'c', 'o', 'r'}}, // Cornish + LanguageCodeEntry {{'c', 'o'}, {'c', 'o', 's'}, {'c', 'o', 's'}, {'c', 'o', 's'}}, // Corsican + LanguageCodeEntry {{'c', 'r'}, {'c', 'r', 'e'}, {'c', 'r', 'e'}, {'c', 'r', 'e'}}, // Cree + LanguageCodeEntry {{'h', 'r'}, {'h', 'r', 'v'}, {'h', 'r', 'v'}, {'h', 'r', 'v'}}, // Croatian + LanguageCodeEntry {{'c', 's'}, {'c', 'z', 'e'}, {'c', 'e', 's'}, {'c', 'e', 's'}}, // Czech + LanguageCodeEntry {{'d', 'a'}, {'d', 'a', 'n'}, {'d', 'a', 'n'}, {'d', 'a', 'n'}}, // Danish + LanguageCodeEntry {{'d', 'v'}, {'d', 'i', 'v'}, {'d', 'i', 'v'}, {'d', 'i', 'v'}}, // Divehi + LanguageCodeEntry {{}, {'d', 'o', 'i'}, {'d', 'o', 'i'}, {'d', 'o', 'i'}}, // Dogri + LanguageCodeEntry {{}, {'d', 'u', 'a'}, {'d', 'u', 'a'}, {'d', 'u', 'a'}}, // Duala + LanguageCodeEntry {{'n', 'l'}, {'d', 'u', 't'}, {'n', 'l', 'd'}, {'n', 'l', 'd'}}, // Dutch + LanguageCodeEntry {{'d', 'z'}, {'d', 'z', 'o'}, {'d', 'z', 'o'}, {'d', 'z', 'o'}}, // Dzongkha + LanguageCodeEntry {{}, {}, {}, {'e', 'b', 'u'}}, // Embu + LanguageCodeEntry {{'e', 'n'}, {'e', 'n', 'g'}, {'e', 'n', 'g'}, {'e', 'n', 'g'}}, // English + LanguageCodeEntry {{}, {'m', 'y', 'v'}, {'m', 'y', 'v'}, {'m', 'y', 'v'}}, // Erzya + LanguageCodeEntry {{'e', 'o'}, {'e', 'p', 'o'}, {'e', 'p', 'o'}, {'e', 'p', 'o'}}, // Esperanto + LanguageCodeEntry {{'e', 't'}, {'e', 's', 't'}, {'e', 's', 't'}, {'e', 's', 't'}}, // Estonian + LanguageCodeEntry {{'e', 'e'}, {'e', 'w', 'e'}, {'e', 'w', 'e'}, {'e', 'w', 'e'}}, // Ewe + LanguageCodeEntry {{}, {'e', 'w', 'o'}, {'e', 'w', 'o'}, {'e', 'w', 'o'}}, // Ewondo + LanguageCodeEntry {{'f', 'o'}, {'f', 'a', 'o'}, {'f', 'a', 'o'}, {'f', 'a', 'o'}}, // Faroese + LanguageCodeEntry {{'f', 'j'}, {'f', 'i', 'j'}, {'f', 'i', 'j'}, {'f', 'i', 'j'}}, // Fijian + LanguageCodeEntry {{}, {'f', 'i', 'l'}, {'f', 'i', 'l'}, {'f', 'i', 'l'}}, // Filipino + LanguageCodeEntry {{'f', 'i'}, {'f', 'i', 'n'}, {'f', 'i', 'n'}, {'f', 'i', 'n'}}, // Finnish + LanguageCodeEntry {{'f', 'r'}, {'f', 'r', 'e'}, {'f', 'r', 'a'}, {'f', 'r', 'a'}}, // French + LanguageCodeEntry {{}, {'f', 'u', 'r'}, {'f', 'u', 'r'}, {'f', 'u', 'r'}}, // Friulian + LanguageCodeEntry {{'f', 'f'}, {'f', 'u', 'l'}, {'f', 'u', 'l'}, {'f', 'u', 'l'}}, // Fulah + LanguageCodeEntry {{'g', 'd'}, {'g', 'l', 'a'}, {'g', 'l', 'a'}, {'g', 'l', 'a'}}, // Gaelic + LanguageCodeEntry {{}, {'g', 'a', 'a'}, {'g', 'a', 'a'}, {'g', 'a', 'a'}}, // Ga + LanguageCodeEntry {{'g', 'l'}, {'g', 'l', 'g'}, {'g', 'l', 'g'}, {'g', 'l', 'g'}}, // Galician + LanguageCodeEntry {{'l', 'g'}, {'l', 'u', 'g'}, {'l', 'u', 'g'}, {'l', 'u', 'g'}}, // Ganda + LanguageCodeEntry {{}, {'g', 'e', 'z'}, {'g', 'e', 'z'}, {'g', 'e', 'z'}}, // Geez + LanguageCodeEntry {{'k', 'a'}, {'g', 'e', 'o'}, {'k', 'a', 't'}, {'k', 'a', 't'}}, // Georgian + LanguageCodeEntry {{'d', 'e'}, {'g', 'e', 'r'}, {'d', 'e', 'u'}, {'d', 'e', 'u'}}, // German + LanguageCodeEntry {{}, {'g', 'o', 't'}, {'g', 'o', 't'}, {'g', 'o', 't'}}, // Gothic + LanguageCodeEntry {{'e', 'l'}, {'g', 'r', 'e'}, {'e', 'l', 'l'}, {'e', 'l', 'l'}}, // Greek + LanguageCodeEntry {{'g', 'n'}, {'g', 'r', 'n'}, {'g', 'r', 'n'}, {'g', 'r', 'n'}}, // Guarani + LanguageCodeEntry {{'g', 'u'}, {'g', 'u', 'j'}, {'g', 'u', 'j'}, {'g', 'u', 'j'}}, // Gujarati + LanguageCodeEntry {{}, {}, {}, {'g', 'u', 'z'}}, // Gusii + LanguageCodeEntry {{'h', 't'}, {'h', 'a', 't'}, {'h', 'a', 't'}, {'h', 'a', 't'}}, // Haitian + LanguageCodeEntry {{'h', 'a'}, {'h', 'a', 'u'}, {'h', 'a', 'u'}, {'h', 'a', 'u'}}, // Hausa + LanguageCodeEntry {{}, {'h', 'a', 'w'}, {'h', 'a', 'w'}, {'h', 'a', 'w'}}, // Hawaiian + LanguageCodeEntry {{'h', 'e'}, {'h', 'e', 'b'}, {'h', 'e', 'b'}, {'h', 'e', 'b'}}, // Hebrew + LanguageCodeEntry {{'h', 'z'}, {'h', 'e', 'r'}, {'h', 'e', 'r'}, {'h', 'e', 'r'}}, // Herero + LanguageCodeEntry {{'h', 'i'}, {'h', 'i', 'n'}, {'h', 'i', 'n'}, {'h', 'i', 'n'}}, // Hindi + LanguageCodeEntry {{'h', 'o'}, {'h', 'm', 'o'}, {'h', 'm', 'o'}, {'h', 'm', 'o'}}, // Hiri Motu + LanguageCodeEntry {{'h', 'u'}, {'h', 'u', 'n'}, {'h', 'u', 'n'}, {'h', 'u', 'n'}}, // Hungarian + LanguageCodeEntry {{'i', 's'}, {'i', 'c', 'e'}, {'i', 's', 'l'}, {'i', 's', 'l'}}, // Icelandic + LanguageCodeEntry {{'i', 'o'}, {'i', 'd', 'o'}, {'i', 'd', 'o'}, {'i', 'd', 'o'}}, // Ido + LanguageCodeEntry {{'i', 'g'}, {'i', 'b', 'o'}, {'i', 'b', 'o'}, {'i', 'b', 'o'}}, // Igbo + LanguageCodeEntry {{}, {'s', 'm', 'n'}, {'s', 'm', 'n'}, {'s', 'm', 'n'}}, // Inari Sami + LanguageCodeEntry {{'i', 'd'}, {'i', 'n', 'd'}, {'i', 'n', 'd'}, {'i', 'n', 'd'}}, // Indonesian + LanguageCodeEntry {{}, {'i', 'n', 'h'}, {'i', 'n', 'h'}, {'i', 'n', 'h'}}, // Ingush + LanguageCodeEntry {{'i', 'a'}, {'i', 'n', 'a'}, {'i', 'n', 'a'}, {'i', 'n', 'a'}}, // Interlingua + LanguageCodeEntry {{'i', 'e'}, {'i', 'l', 'e'}, {'i', 'l', 'e'}, {'i', 'l', 'e'}}, // Interlingue + LanguageCodeEntry {{'i', 'u'}, {'i', 'k', 'u'}, {'i', 'k', 'u'}, {'i', 'k', 'u'}}, // Inuktitut + LanguageCodeEntry {{'i', 'k'}, {'i', 'p', 'k'}, {'i', 'p', 'k'}, {'i', 'p', 'k'}}, // Inupiaq + LanguageCodeEntry {{'g', 'a'}, {'g', 'l', 'e'}, {'g', 'l', 'e'}, {'g', 'l', 'e'}}, // Irish + LanguageCodeEntry {{'i', 't'}, {'i', 't', 'a'}, {'i', 't', 'a'}, {'i', 't', 'a'}}, // Italian + LanguageCodeEntry {{'j', 'a'}, {'j', 'p', 'n'}, {'j', 'p', 'n'}, {'j', 'p', 'n'}}, // Japanese + LanguageCodeEntry {{'j', 'v'}, {'j', 'a', 'v'}, {'j', 'a', 'v'}, {'j', 'a', 'v'}}, // Javanese + LanguageCodeEntry {{}, {}, {}, {'k', 'a', 'j'}}, // Jju + LanguageCodeEntry {{}, {}, {}, {'d', 'y', 'o'}}, // Jola Fonyi + LanguageCodeEntry {{}, {}, {}, {'k', 'e', 'a'}}, // Kabuverdianu + LanguageCodeEntry {{}, {'k', 'a', 'b'}, {'k', 'a', 'b'}, {'k', 'a', 'b'}}, // Kabyle + LanguageCodeEntry {{}, {}, {}, {'k', 'k', 'j'}}, // Kako + LanguageCodeEntry {{'k', 'l'}, {'k', 'a', 'l'}, {'k', 'a', 'l'}, {'k', 'a', 'l'}}, // Kalaallisut + LanguageCodeEntry {{}, {}, {}, {'k', 'l', 'n'}}, // Kalenjin + LanguageCodeEntry {{}, {'k', 'a', 'm'}, {'k', 'a', 'm'}, {'k', 'a', 'm'}}, // Kamba + LanguageCodeEntry {{'k', 'n'}, {'k', 'a', 'n'}, {'k', 'a', 'n'}, {'k', 'a', 'n'}}, // Kannada + LanguageCodeEntry {{'k', 'r'}, {'k', 'a', 'u'}, {'k', 'a', 'u'}, {'k', 'a', 'u'}}, // Kanuri + LanguageCodeEntry {{'k', 's'}, {'k', 'a', 's'}, {'k', 'a', 's'}, {'k', 'a', 's'}}, // Kashmiri + LanguageCodeEntry {{'k', 'k'}, {'k', 'a', 'z'}, {'k', 'a', 'z'}, {'k', 'a', 'z'}}, // Kazakh + LanguageCodeEntry {{}, {}, {}, {'k', 'e', 'n'}}, // Kenyang + LanguageCodeEntry {{'k', 'm'}, {'k', 'h', 'm'}, {'k', 'h', 'm'}, {'k', 'h', 'm'}}, // Khmer + LanguageCodeEntry {{}, {}, {}, {'q', 'u', 'c'}}, // Kiche + LanguageCodeEntry {{'k', 'i'}, {'k', 'i', 'k'}, {'k', 'i', 'k'}, {'k', 'i', 'k'}}, // Kikuyu + LanguageCodeEntry {{'r', 'w'}, {'k', 'i', 'n'}, {'k', 'i', 'n'}, {'k', 'i', 'n'}}, // Kinyarwanda + LanguageCodeEntry {{'k', 'v'}, {'k', 'o', 'm'}, {'k', 'o', 'm'}, {'k', 'o', 'm'}}, // Komi + LanguageCodeEntry {{'k', 'g'}, {'k', 'o', 'n'}, {'k', 'o', 'n'}, {'k', 'o', 'n'}}, // Kongo + LanguageCodeEntry {{}, {'k', 'o', 'k'}, {'k', 'o', 'k'}, {'k', 'o', 'k'}}, // Konkani + LanguageCodeEntry {{'k', 'o'}, {'k', 'o', 'r'}, {'k', 'o', 'r'}, {'k', 'o', 'r'}}, // Korean + LanguageCodeEntry {{}, {}, {}, {'k', 'f', 'o'}}, // Koro + LanguageCodeEntry {{}, {}, {}, {'s', 'e', 's'}}, // Koyraboro Senni + LanguageCodeEntry {{}, {}, {}, {'k', 'h', 'q'}}, // Koyra Chiini + LanguageCodeEntry {{}, {'k', 'p', 'e'}, {'k', 'p', 'e'}, {'k', 'p', 'e'}}, // Kpelle + LanguageCodeEntry {{'k', 'j'}, {'k', 'u', 'a'}, {'k', 'u', 'a'}, {'k', 'u', 'a'}}, // Kuanyama + LanguageCodeEntry {{'k', 'u'}, {'k', 'u', 'r'}, {'k', 'u', 'r'}, {'k', 'u', 'r'}}, // Kurdish + LanguageCodeEntry {{}, {}, {}, {'n', 'm', 'g'}}, // Kwasio + LanguageCodeEntry {{'k', 'y'}, {'k', 'i', 'r'}, {'k', 'i', 'r'}, {'k', 'i', 'r'}}, // Kyrgyz + LanguageCodeEntry {{}, {}, {}, {'l', 'k', 't'}}, // Lakota + LanguageCodeEntry {{}, {}, {}, {'l', 'a', 'g'}}, // Langi + LanguageCodeEntry {{'l', 'o'}, {'l', 'a', 'o'}, {'l', 'a', 'o'}, {'l', 'a', 'o'}}, // Lao + LanguageCodeEntry {{'l', 'a'}, {'l', 'a', 't'}, {'l', 'a', 't'}, {'l', 'a', 't'}}, // Latin + LanguageCodeEntry {{'l', 'v'}, {'l', 'a', 'v'}, {'l', 'a', 'v'}, {'l', 'a', 'v'}}, // Latvian + LanguageCodeEntry {{}, {'l', 'e', 'z'}, {'l', 'e', 'z'}, {'l', 'e', 'z'}}, // Lezghian + LanguageCodeEntry {{'l', 'i'}, {'l', 'i', 'm'}, {'l', 'i', 'm'}, {'l', 'i', 'm'}}, // Limburgish + LanguageCodeEntry {{'l', 'n'}, {'l', 'i', 'n'}, {'l', 'i', 'n'}, {'l', 'i', 'n'}}, // Lingala + LanguageCodeEntry {{}, {}, {}, {'l', 'z', 'h'}}, // Literary Chinese + LanguageCodeEntry {{'l', 't'}, {'l', 'i', 't'}, {'l', 'i', 't'}, {'l', 'i', 't'}}, // Lithuanian + LanguageCodeEntry {{}, {'j', 'b', 'o'}, {'j', 'b', 'o'}, {'j', 'b', 'o'}}, // Lojban + LanguageCodeEntry {{}, {'d', 's', 'b'}, {'d', 's', 'b'}, {'d', 's', 'b'}}, // Lower Sorbian + LanguageCodeEntry {{}, {'n', 'd', 's'}, {'n', 'd', 's'}, {'n', 'd', 's'}}, // Low German + LanguageCodeEntry {{'l', 'u'}, {'l', 'u', 'b'}, {'l', 'u', 'b'}, {'l', 'u', 'b'}}, // Luba Katanga + LanguageCodeEntry {{}, {'s', 'm', 'j'}, {'s', 'm', 'j'}, {'s', 'm', 'j'}}, // Lule Sami + LanguageCodeEntry {{}, {'l', 'u', 'o'}, {'l', 'u', 'o'}, {'l', 'u', 'o'}}, // Luo + LanguageCodeEntry {{'l', 'b'}, {'l', 't', 'z'}, {'l', 't', 'z'}, {'l', 't', 'z'}}, // Luxembourgish + LanguageCodeEntry {{}, {}, {}, {'l', 'u', 'y'}}, // Luyia + LanguageCodeEntry {{'m', 'k'}, {'m', 'a', 'c'}, {'m', 'k', 'd'}, {'m', 'k', 'd'}}, // Macedonian + LanguageCodeEntry {{}, {}, {}, {'j', 'm', 'c'}}, // Machame + LanguageCodeEntry {{}, {'m', 'a', 'i'}, {'m', 'a', 'i'}, {'m', 'a', 'i'}}, // Maithili + LanguageCodeEntry {{}, {}, {}, {'m', 'g', 'h'}}, // Makhuwa Meetto + LanguageCodeEntry {{}, {}, {}, {'k', 'd', 'e'}}, // Makonde + LanguageCodeEntry {{'m', 'g'}, {'m', 'l', 'g'}, {'m', 'l', 'g'}, {'m', 'l', 'g'}}, // Malagasy + LanguageCodeEntry {{'m', 'l'}, {'m', 'a', 'l'}, {'m', 'a', 'l'}, {'m', 'a', 'l'}}, // Malayalam + LanguageCodeEntry {{'m', 's'}, {'m', 'a', 'y'}, {'m', 's', 'a'}, {'m', 's', 'a'}}, // Malay + LanguageCodeEntry {{'m', 't'}, {'m', 'l', 't'}, {'m', 'l', 't'}, {'m', 'l', 't'}}, // Maltese + LanguageCodeEntry {{}, {'m', 'a', 'n'}, {'m', 'a', 'n'}, {'m', 'a', 'n'}}, // Mandingo + LanguageCodeEntry {{}, {'m', 'n', 'i'}, {'m', 'n', 'i'}, {'m', 'n', 'i'}}, // Manipuri + LanguageCodeEntry {{'g', 'v'}, {'g', 'l', 'v'}, {'g', 'l', 'v'}, {'g', 'l', 'v'}}, // Manx + LanguageCodeEntry {{'m', 'i'}, {'m', 'a', 'o'}, {'m', 'r', 'i'}, {'m', 'r', 'i'}}, // Maori + LanguageCodeEntry {{}, {'a', 'r', 'n'}, {'a', 'r', 'n'}, {'a', 'r', 'n'}}, // Mapuche + LanguageCodeEntry {{'m', 'r'}, {'m', 'a', 'r'}, {'m', 'a', 'r'}, {'m', 'a', 'r'}}, // Marathi + LanguageCodeEntry {{'m', 'h'}, {'m', 'a', 'h'}, {'m', 'a', 'h'}, {'m', 'a', 'h'}}, // Marshallese + LanguageCodeEntry {{}, {'m', 'a', 's'}, {'m', 'a', 's'}, {'m', 'a', 's'}}, // Masai + LanguageCodeEntry {{}, {}, {}, {'m', 'z', 'n'}}, // Mazanderani + LanguageCodeEntry {{}, {'m', 'e', 'n'}, {'m', 'e', 'n'}, {'m', 'e', 'n'}}, // Mende + LanguageCodeEntry {{}, {}, {}, {'m', 'e', 'r'}}, // Meru + LanguageCodeEntry {{}, {}, {}, {'m', 'g', 'o'}}, // Meta + LanguageCodeEntry {{}, {'m', 'o', 'h'}, {'m', 'o', 'h'}, {'m', 'o', 'h'}}, // Mohawk + LanguageCodeEntry {{'m', 'n'}, {'m', 'o', 'n'}, {'m', 'o', 'n'}, {'m', 'o', 'n'}}, // Mongolian + LanguageCodeEntry {{}, {}, {}, {'m', 'f', 'e'}}, // Morisyen + LanguageCodeEntry {{}, {}, {}, {'m', 'u', 'a'}}, // Mundang + LanguageCodeEntry {{}, {'m', 'u', 's'}, {'m', 'u', 's'}, {'m', 'u', 's'}}, // Muscogee + LanguageCodeEntry {{}, {}, {}, {'n', 'a', 'q'}}, // Nama + LanguageCodeEntry {{'n', 'a'}, {'n', 'a', 'u'}, {'n', 'a', 'u'}, {'n', 'a', 'u'}}, // Nauru + LanguageCodeEntry {{'n', 'v'}, {'n', 'a', 'v'}, {'n', 'a', 'v'}, {'n', 'a', 'v'}}, // Navajo + LanguageCodeEntry {{'n', 'g'}, {'n', 'd', 'o'}, {'n', 'd', 'o'}, {'n', 'd', 'o'}}, // Ndonga + LanguageCodeEntry {{'n', 'e'}, {'n', 'e', 'p'}, {'n', 'e', 'p'}, {'n', 'e', 'p'}}, // Nepali + LanguageCodeEntry {{}, {'n', 'e', 'w'}, {'n', 'e', 'w'}, {'n', 'e', 'w'}}, // Newari + LanguageCodeEntry {{}, {}, {}, {'n', 'n', 'h'}}, // Ngiemboon + LanguageCodeEntry {{}, {}, {}, {'j', 'g', 'o'}}, // Ngomba + LanguageCodeEntry {{}, {}, {}, {'p', 'c', 'm'}}, // Nigerian Pidgin + LanguageCodeEntry {{}, {'n', 'q', 'o'}, {'n', 'q', 'o'}, {'n', 'q', 'o'}}, // Nko + LanguageCodeEntry {{}, {}, {}, {'l', 'r', 'c'}}, // Northern Luri + LanguageCodeEntry {{'s', 'e'}, {'s', 'm', 'e'}, {'s', 'm', 'e'}, {'s', 'm', 'e'}}, // Northern Sami + LanguageCodeEntry {{}, {'n', 's', 'o'}, {'n', 's', 'o'}, {'n', 's', 'o'}}, // Northern Sotho + LanguageCodeEntry {{'n', 'd'}, {'n', 'd', 'e'}, {'n', 'd', 'e'}, {'n', 'd', 'e'}}, // North Ndebele + LanguageCodeEntry {{'n', 'b'}, {'n', 'o', 'b'}, {'n', 'o', 'b'}, {'n', 'o', 'b'}}, // Norwegian Bokmal + LanguageCodeEntry {{'n', 'n'}, {'n', 'n', 'o'}, {'n', 'n', 'o'}, {'n', 'n', 'o'}}, // Norwegian Nynorsk + LanguageCodeEntry {{}, {}, {}, {'n', 'u', 's'}}, // Nuer + LanguageCodeEntry {{'n', 'y'}, {'n', 'y', 'a'}, {'n', 'y', 'a'}, {'n', 'y', 'a'}}, // Nyanja + LanguageCodeEntry {{}, {'n', 'y', 'n'}, {'n', 'y', 'n'}, {'n', 'y', 'n'}}, // Nyankole + LanguageCodeEntry {{'o', 'c'}, {'o', 'c', 'i'}, {'o', 'c', 'i'}, {'o', 'c', 'i'}}, // Occitan + LanguageCodeEntry {{'o', 'r'}, {'o', 'r', 'i'}, {'o', 'r', 'i'}, {'o', 'r', 'i'}}, // Odia + LanguageCodeEntry {{'o', 'j'}, {'o', 'j', 'i'}, {'o', 'j', 'i'}, {'o', 'j', 'i'}}, // Ojibwa + LanguageCodeEntry {{}, {'s', 'g', 'a'}, {'s', 'g', 'a'}, {'s', 'g', 'a'}}, // Old Irish + LanguageCodeEntry {{}, {'n', 'o', 'n'}, {'n', 'o', 'n'}, {'n', 'o', 'n'}}, // Old Norse + LanguageCodeEntry {{}, {'p', 'e', 'o'}, {'p', 'e', 'o'}, {'p', 'e', 'o'}}, // Old Persian + LanguageCodeEntry {{'o', 'm'}, {'o', 'r', 'm'}, {'o', 'r', 'm'}, {'o', 'r', 'm'}}, // Oromo + LanguageCodeEntry {{}, {'o', 's', 'a'}, {'o', 's', 'a'}, {'o', 's', 'a'}}, // Osage + LanguageCodeEntry {{'o', 's'}, {'o', 's', 's'}, {'o', 's', 's'}, {'o', 's', 's'}}, // Ossetic + LanguageCodeEntry {{}, {'p', 'a', 'l'}, {'p', 'a', 'l'}, {'p', 'a', 'l'}}, // Pahlavi + LanguageCodeEntry {{}, {'p', 'a', 'u'}, {'p', 'a', 'u'}, {'p', 'a', 'u'}}, // Palauan + LanguageCodeEntry {{'p', 'i'}, {'p', 'l', 'i'}, {'p', 'l', 'i'}, {'p', 'l', 'i'}}, // Pali + LanguageCodeEntry {{}, {'p', 'a', 'p'}, {'p', 'a', 'p'}, {'p', 'a', 'p'}}, // Papiamento + LanguageCodeEntry {{'p', 's'}, {'p', 'u', 's'}, {'p', 'u', 's'}, {'p', 'u', 's'}}, // Pashto + LanguageCodeEntry {{'f', 'a'}, {'p', 'e', 'r'}, {'f', 'a', 's'}, {'f', 'a', 's'}}, // Persian + LanguageCodeEntry {{}, {'p', 'h', 'n'}, {'p', 'h', 'n'}, {'p', 'h', 'n'}}, // Phoenician + LanguageCodeEntry {{'p', 'l'}, {'p', 'o', 'l'}, {'p', 'o', 'l'}, {'p', 'o', 'l'}}, // Polish + LanguageCodeEntry {{'p', 't'}, {'p', 'o', 'r'}, {'p', 'o', 'r'}, {'p', 'o', 'r'}}, // Portuguese + LanguageCodeEntry {{}, {}, {}, {'p', 'r', 'g'}}, // Prussian + LanguageCodeEntry {{'p', 'a'}, {'p', 'a', 'n'}, {'p', 'a', 'n'}, {'p', 'a', 'n'}}, // Punjabi + LanguageCodeEntry {{'q', 'u'}, {'q', 'u', 'e'}, {'q', 'u', 'e'}, {'q', 'u', 'e'}}, // Quechua + LanguageCodeEntry {{'r', 'o'}, {'r', 'u', 'm'}, {'r', 'o', 'n'}, {'r', 'o', 'n'}}, // Romanian + LanguageCodeEntry {{'r', 'm'}, {'r', 'o', 'h'}, {'r', 'o', 'h'}, {'r', 'o', 'h'}}, // Romansh + LanguageCodeEntry {{}, {}, {}, {'r', 'o', 'f'}}, // Rombo + LanguageCodeEntry {{'r', 'n'}, {'r', 'u', 'n'}, {'r', 'u', 'n'}, {'r', 'u', 'n'}}, // Rundi + LanguageCodeEntry {{'r', 'u'}, {'r', 'u', 's'}, {'r', 'u', 's'}, {'r', 'u', 's'}}, // Russian + LanguageCodeEntry {{}, {}, {}, {'r', 'w', 'k'}}, // Rwa + LanguageCodeEntry {{}, {}, {}, {'s', 's', 'y'}}, // Saho + LanguageCodeEntry {{}, {'s', 'a', 'h'}, {'s', 'a', 'h'}, {'s', 'a', 'h'}}, // Sakha + LanguageCodeEntry {{}, {}, {}, {'s', 'a', 'q'}}, // Samburu + LanguageCodeEntry {{'s', 'm'}, {'s', 'm', 'o'}, {'s', 'm', 'o'}, {'s', 'm', 'o'}}, // Samoan + LanguageCodeEntry {{'s', 'g'}, {'s', 'a', 'g'}, {'s', 'a', 'g'}, {'s', 'a', 'g'}}, // Sango + LanguageCodeEntry {{}, {}, {}, {'s', 'b', 'p'}}, // Sangu + LanguageCodeEntry {{'s', 'a'}, {'s', 'a', 'n'}, {'s', 'a', 'n'}, {'s', 'a', 'n'}}, // Sanskrit + LanguageCodeEntry {{}, {'s', 'a', 't'}, {'s', 'a', 't'}, {'s', 'a', 't'}}, // Santali + LanguageCodeEntry {{'s', 'c'}, {'s', 'r', 'd'}, {'s', 'r', 'd'}, {'s', 'r', 'd'}}, // Sardinian + LanguageCodeEntry {{}, {}, {}, {'s', 'a', 'z'}}, // Saurashtra + LanguageCodeEntry {{}, {}, {}, {'s', 'e', 'h'}}, // Sena + LanguageCodeEntry {{'s', 'r'}, {'s', 'r', 'p'}, {'s', 'r', 'p'}, {'s', 'r', 'p'}}, // Serbian + LanguageCodeEntry {{}, {}, {}, {'k', 's', 'b'}}, // Shambala + LanguageCodeEntry {{'s', 'n'}, {'s', 'n', 'a'}, {'s', 'n', 'a'}, {'s', 'n', 'a'}}, // Shona + LanguageCodeEntry {{'i', 'i'}, {'i', 'i', 'i'}, {'i', 'i', 'i'}, {'i', 'i', 'i'}}, // Sichuan Yi + LanguageCodeEntry {{}, {'s', 'c', 'n'}, {'s', 'c', 'n'}, {'s', 'c', 'n'}}, // Sicilian + LanguageCodeEntry {{}, {'s', 'i', 'd'}, {'s', 'i', 'd'}, {'s', 'i', 'd'}}, // Sidamo + LanguageCodeEntry {{}, {}, {}, {'s', 'z', 'l'}}, // Silesian + LanguageCodeEntry {{'s', 'd'}, {'s', 'n', 'd'}, {'s', 'n', 'd'}, {'s', 'n', 'd'}}, // Sindhi + LanguageCodeEntry {{'s', 'i'}, {'s', 'i', 'n'}, {'s', 'i', 'n'}, {'s', 'i', 'n'}}, // Sinhala + LanguageCodeEntry {{}, {'s', 'm', 's'}, {'s', 'm', 's'}, {'s', 'm', 's'}}, // Skolt Sami + LanguageCodeEntry {{'s', 'k'}, {'s', 'l', 'o'}, {'s', 'l', 'k'}, {'s', 'l', 'k'}}, // Slovak + LanguageCodeEntry {{'s', 'l'}, {'s', 'l', 'v'}, {'s', 'l', 'v'}, {'s', 'l', 'v'}}, // Slovenian + LanguageCodeEntry {{}, {}, {}, {'x', 'o', 'g'}}, // Soga + LanguageCodeEntry {{'s', 'o'}, {'s', 'o', 'm'}, {'s', 'o', 'm'}, {'s', 'o', 'm'}}, // Somali + LanguageCodeEntry {{}, {}, {}, {'s', 'd', 'h'}}, // Southern Kurdish + LanguageCodeEntry {{}, {'s', 'm', 'a'}, {'s', 'm', 'a'}, {'s', 'm', 'a'}}, // Southern Sami + LanguageCodeEntry {{'s', 't'}, {'s', 'o', 't'}, {'s', 'o', 't'}, {'s', 'o', 't'}}, // Southern Sotho + LanguageCodeEntry {{'n', 'r'}, {'n', 'b', 'l'}, {'n', 'b', 'l'}, {'n', 'b', 'l'}}, // South Ndebele + LanguageCodeEntry {{'e', 's'}, {'s', 'p', 'a'}, {'s', 'p', 'a'}, {'s', 'p', 'a'}}, // Spanish + LanguageCodeEntry {{}, {'z', 'g', 'h'}, {'z', 'g', 'h'}, {'z', 'g', 'h'}}, // Standard Moroccan Tamazight + LanguageCodeEntry {{'s', 'u'}, {'s', 'u', 'n'}, {'s', 'u', 'n'}, {'s', 'u', 'n'}}, // Sundanese + LanguageCodeEntry {{'s', 'w'}, {'s', 'w', 'a'}, {'s', 'w', 'a'}, {'s', 'w', 'a'}}, // Swahili + LanguageCodeEntry {{'s', 's'}, {'s', 's', 'w'}, {'s', 's', 'w'}, {'s', 's', 'w'}}, // Swati + LanguageCodeEntry {{'s', 'v'}, {'s', 'w', 'e'}, {'s', 'w', 'e'}, {'s', 'w', 'e'}}, // Swedish + LanguageCodeEntry {{}, {'g', 's', 'w'}, {'g', 's', 'w'}, {'g', 's', 'w'}}, // Swiss German + LanguageCodeEntry {{}, {'s', 'y', 'r'}, {'s', 'y', 'r'}, {'s', 'y', 'r'}}, // Syriac + LanguageCodeEntry {{}, {}, {}, {'s', 'h', 'i'}}, // Tachelhit + LanguageCodeEntry {{'t', 'y'}, {'t', 'a', 'h'}, {'t', 'a', 'h'}, {'t', 'a', 'h'}}, // Tahitian + LanguageCodeEntry {{}, {}, {}, {'b', 'l', 't'}}, // Tai Dam + LanguageCodeEntry {{}, {}, {}, {'d', 'a', 'v'}}, // Taita + LanguageCodeEntry {{'t', 'g'}, {'t', 'g', 'k'}, {'t', 'g', 'k'}, {'t', 'g', 'k'}}, // Tajik + LanguageCodeEntry {{'t', 'a'}, {'t', 'a', 'm'}, {'t', 'a', 'm'}, {'t', 'a', 'm'}}, // Tamil + LanguageCodeEntry {{}, {}, {}, {'t', 'r', 'v'}}, // Taroko + LanguageCodeEntry {{}, {}, {}, {'t', 'w', 'q'}}, // Tasawaq + LanguageCodeEntry {{'t', 't'}, {'t', 'a', 't'}, {'t', 'a', 't'}, {'t', 'a', 't'}}, // Tatar + LanguageCodeEntry {{'t', 'e'}, {'t', 'e', 'l'}, {'t', 'e', 'l'}, {'t', 'e', 'l'}}, // Telugu + LanguageCodeEntry {{}, {}, {}, {'t', 'e', 'o'}}, // Teso + LanguageCodeEntry {{'t', 'h'}, {'t', 'h', 'a'}, {'t', 'h', 'a'}, {'t', 'h', 'a'}}, // Thai + LanguageCodeEntry {{'b', 'o'}, {'t', 'i', 'b'}, {'b', 'o', 'd'}, {'b', 'o', 'd'}}, // Tibetan + LanguageCodeEntry {{}, {'t', 'i', 'g'}, {'t', 'i', 'g'}, {'t', 'i', 'g'}}, // Tigre + LanguageCodeEntry {{'t', 'i'}, {'t', 'i', 'r'}, {'t', 'i', 'r'}, {'t', 'i', 'r'}}, // Tigrinya + LanguageCodeEntry {{}, {'t', 'k', 'l'}, {'t', 'k', 'l'}, {'t', 'k', 'l'}}, // Tokelau + LanguageCodeEntry {{}, {'t', 'p', 'i'}, {'t', 'p', 'i'}, {'t', 'p', 'i'}}, // Tok Pisin + LanguageCodeEntry {{'t', 'o'}, {'t', 'o', 'n'}, {'t', 'o', 'n'}, {'t', 'o', 'n'}}, // Tongan + LanguageCodeEntry {{'t', 's'}, {'t', 's', 'o'}, {'t', 's', 'o'}, {'t', 's', 'o'}}, // Tsonga + LanguageCodeEntry {{'t', 'n'}, {'t', 's', 'n'}, {'t', 's', 'n'}, {'t', 's', 'n'}}, // Tswana + LanguageCodeEntry {{'t', 'r'}, {'t', 'u', 'r'}, {'t', 'u', 'r'}, {'t', 'u', 'r'}}, // Turkish + LanguageCodeEntry {{'t', 'k'}, {'t', 'u', 'k'}, {'t', 'u', 'k'}, {'t', 'u', 'k'}}, // Turkmen + LanguageCodeEntry {{}, {'t', 'v', 'l'}, {'t', 'v', 'l'}, {'t', 'v', 'l'}}, // Tuvalu + LanguageCodeEntry {{}, {}, {}, {'k', 'c', 'g'}}, // Tyap + LanguageCodeEntry {{}, {'u', 'g', 'a'}, {'u', 'g', 'a'}, {'u', 'g', 'a'}}, // Ugaritic + LanguageCodeEntry {{'u', 'k'}, {'u', 'k', 'r'}, {'u', 'k', 'r'}, {'u', 'k', 'r'}}, // Ukrainian + LanguageCodeEntry {{}, {'h', 's', 'b'}, {'h', 's', 'b'}, {'h', 's', 'b'}}, // Upper Sorbian + LanguageCodeEntry {{'u', 'r'}, {'u', 'r', 'd'}, {'u', 'r', 'd'}, {'u', 'r', 'd'}}, // Urdu + LanguageCodeEntry {{'u', 'g'}, {'u', 'i', 'g'}, {'u', 'i', 'g'}, {'u', 'i', 'g'}}, // Uyghur + LanguageCodeEntry {{'u', 'z'}, {'u', 'z', 'b'}, {'u', 'z', 'b'}, {'u', 'z', 'b'}}, // Uzbek + LanguageCodeEntry {{}, {'v', 'a', 'i'}, {'v', 'a', 'i'}, {'v', 'a', 'i'}}, // Vai + LanguageCodeEntry {{'v', 'e'}, {'v', 'e', 'n'}, {'v', 'e', 'n'}, {'v', 'e', 'n'}}, // Venda + LanguageCodeEntry {{'v', 'i'}, {'v', 'i', 'e'}, {'v', 'i', 'e'}, {'v', 'i', 'e'}}, // Vietnamese + LanguageCodeEntry {{'v', 'o'}, {'v', 'o', 'l'}, {'v', 'o', 'l'}, {'v', 'o', 'l'}}, // Volapuk + LanguageCodeEntry {{}, {}, {}, {'v', 'u', 'n'}}, // Vunjo + LanguageCodeEntry {{'w', 'a'}, {'w', 'l', 'n'}, {'w', 'l', 'n'}, {'w', 'l', 'n'}}, // Walloon + LanguageCodeEntry {{}, {}, {}, {'w', 'a', 'e'}}, // Walser + LanguageCodeEntry {{}, {}, {}, {'w', 'b', 'p'}}, // Warlpiri + LanguageCodeEntry {{'c', 'y'}, {'w', 'e', 'l'}, {'c', 'y', 'm'}, {'c', 'y', 'm'}}, // Welsh + LanguageCodeEntry {{}, {}, {}, {'b', 'g', 'n'}}, // Western Balochi + LanguageCodeEntry {{'f', 'y'}, {'f', 'r', 'y'}, {'f', 'r', 'y'}, {'f', 'r', 'y'}}, // Western Frisian + LanguageCodeEntry {{}, {'w', 'a', 'l'}, {'w', 'a', 'l'}, {'w', 'a', 'l'}}, // Wolaytta + LanguageCodeEntry {{'w', 'o'}, {'w', 'o', 'l'}, {'w', 'o', 'l'}, {'w', 'o', 'l'}}, // Wolof + LanguageCodeEntry {{'x', 'h'}, {'x', 'h', 'o'}, {'x', 'h', 'o'}, {'x', 'h', 'o'}}, // Xhosa + LanguageCodeEntry {{}, {}, {}, {'y', 'a', 'v'}}, // Yangben + LanguageCodeEntry {{'y', 'i'}, {'y', 'i', 'd'}, {'y', 'i', 'd'}, {'y', 'i', 'd'}}, // Yiddish + LanguageCodeEntry {{'y', 'o'}, {'y', 'o', 'r'}, {'y', 'o', 'r'}, {'y', 'o', 'r'}}, // Yoruba + LanguageCodeEntry {{}, {}, {}, {'d', 'j', 'e'}}, // Zarma + LanguageCodeEntry {{'z', 'a'}, {'z', 'h', 'a'}, {'z', 'h', 'a'}, {'z', 'h', 'a'}}, // Zhuang + LanguageCodeEntry {{'z', 'u'}, {'z', 'u', 'l'}, {'z', 'u', 'l'}, {'z', 'u', 'l'}}, // Zulu + LanguageCodeEntry {{}, {}, {}, {'k', 'g', 'p'}}, // Kaingang + LanguageCodeEntry {{}, {}, {}, {'y', 'r', 'l'}}, // Nheengatu + LanguageCodeEntry {{}, {}, {}, {'b', 'g', 'c'}}, // Haryanvi + LanguageCodeEntry {{}, {'f', 'r', 'r'}, {'f', 'r', 'r'}, {'f', 'r', 'r'}}, // Northern Frisian + LanguageCodeEntry {{}, {'r', 'a', 'j'}, {'r', 'a', 'j'}, {'r', 'a', 'j'}}, // Rajasthani + LanguageCodeEntry {{}, {'m', 'd', 'f'}, {'m', 'd', 'f'}, {'m', 'd', 'f'}}, // Moksha + LanguageCodeEntry {{}, {}, {}, {'t', 'o', 'k'}}, // Toki Pona + LanguageCodeEntry {{}, {}, {}, {'p', 'i', 's'}}, // Pijin + LanguageCodeEntry {{}, {}, {}, {'a', 'n', 'n'}}, // Obolo }; static constexpr unsigned char script_code_list[] = diff --git a/src/corelib/text/qlocale_p.h b/src/corelib/text/qlocale_p.h index fdf6889748..aa9fc59bd4 100644 --- a/src/corelib/text/qlocale_p.h +++ b/src/corelib/text/qlocale_p.h @@ -483,7 +483,7 @@ public: [[nodiscard]] QByteArray bcp47Name(char separator = '-') const; - [[nodiscard]] inline QLatin1StringView + [[nodiscard]] inline std::array<char, 4> languageCode(QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode) const { return languageToCode(QLocale::Language(m_data->m_language_id), codeTypes); @@ -494,7 +494,7 @@ public: { return territoryToCode(QLocale::Territory(m_data->m_territory_id)); } [[nodiscard]] static const QLocalePrivate *get(const QLocale &l) { return l.d; } - [[nodiscard]] static QLatin1StringView + [[nodiscard]] static std::array<char, 4> languageToCode(QLocale::Language language, QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode); [[nodiscard]] static QLatin1StringView scriptToCode(QLocale::Script script); |