Tags: patch
diff -Nru icu-67.1/debian/changelog icu-67.1/debian/changelog --- icu-67.1/debian/changelog 2020-07-15 06:51:53.000000000 +0200 +++ icu-67.1/debian/changelog 2020-08-18 16:47:02.000000000 +0200 @@ -1,3 +1,10 @@ +icu (67.1-4) UNRELEASED; urgency=medium + + * debian/patches/Fix-addLikelySubtags-minimizeSubtags.patch: + - + + -- Marco Trevisan (TreviƱo) <[email protected]> Tue, 18 Aug 2020 16:47:02 +0200 + icu (67.1-3) unstable; urgency=medium * Don't run self-tests parallel until make-dfsg is fixed (closes: #964682). diff -Nru icu-67.1/debian/patches/Fix-addLikelySubtags-minimizeSubtags.patch icu-67.1/debian/patches/Fix-addLikelySubtags-minimizeSubtags.patch --- icu-67.1/debian/patches/Fix-addLikelySubtags-minimizeSubtags.patch 1970-01-01 01:00:00.000000000 +0100 +++ icu-67.1/debian/patches/Fix-addLikelySubtags-minimizeSubtags.patch 2020-08-18 16:46:24.000000000 +0200 @@ -0,0 +1,2412 @@ +From acbdd2e91b6d1076f920cad55cb154e84a24d3a2 Mon Sep 17 00:00:00 2001 +From: Frank Tang <[email protected]> +Date: Fri, 1 May 2020 22:13:37 +0000 +Subject: [PATCH] ICU-13786 Fix addLikelySubtags/minimizeSubtags + +See #1140 + +Bug-ICU: https://unicode-org.atlassian.net/browse/ICU-13786 +Origin: https://github.com/unicode-org/icu/pull/1140 +Applied-Upstream: Yes + +--- + icu4c/source/common/loclikely.cpp | 103 +- + icu4c/source/test/cintltst/cloctst.c | 2 +- + icu4c/source/test/intltest/loctest.cpp | 2118 ++++++++++++++++- + .../ibm/icu/dev/test/util/ULocaleTest.java | 44 + + 4 files changed, 2239 insertions(+), 28 deletions(-) + +--- a/source/common/loclikely.cpp ++++ b/source/common/loclikely.cpp +@@ -826,7 +826,7 @@ + } \ + } UPRV_BLOCK_MACRO_END + +-static void ++static UBool + _uloc_addLikelySubtags(const char* localeID, + icu::ByteSink& sink, + UErrorCode* err) { +@@ -897,15 +897,22 @@ + sink.Append(localeID, localIDLength); + } + +- return; ++ return success; + + error: + + if (!U_FAILURE(*err)) { + *err = U_ILLEGAL_ARGUMENT_ERROR; + } ++ return FALSE; + } + ++// Add likely subtags to the sink ++// return true if the value in the sink is produced by a match during the lookup ++// return false if the value in the sink is the same as input because there are ++// no match after the lookup. ++static UBool _ulocimp_addLikelySubtags(const char*, icu::ByteSink&, UErrorCode*); ++ + static void + _uloc_minimizeSubtags(const char* localeID, + icu::ByteSink& sink, +@@ -921,6 +928,7 @@ + const char* trailing = ""; + int32_t trailingLength = 0; + int32_t trailingIndex = 0; ++ UBool successGetMax = FALSE; + + if(U_FAILURE(*err)) { + goto error; +@@ -961,7 +969,7 @@ + { + icu::CharString base; + { +- icu::CharStringByteSink sink(&base); ++ icu::CharStringByteSink baseSink(&base); + createTagString( + lang, + langLength, +@@ -971,7 +979,7 @@ + regionLength, + NULL, + 0, +- sink, ++ baseSink, + err); + } + +@@ -980,8 +988,8 @@ + * from AddLikelySubtags. + **/ + { +- icu::CharStringByteSink sink(&maximizedTagBuffer); +- ulocimp_addLikelySubtags(base.data(), sink, err); ++ icu::CharStringByteSink maxSink(&maximizedTagBuffer); ++ successGetMax = _ulocimp_addLikelySubtags(base.data(), maxSink, err); + } + } + +@@ -989,13 +997,40 @@ + goto error; + } + ++ if (!successGetMax) { ++ /** ++ * If we got here, return the locale ID parameter unchanged. ++ **/ ++ const int32_t localeIDLength = (int32_t)uprv_strlen(localeID); ++ sink.Append(localeID, localeIDLength); ++ return; ++ } ++ ++ // In the following, the lang, script, region are referring to those in ++ // the maximizedTagBuffer, not the one in the localeID. ++ langLength = sizeof(lang); ++ scriptLength = sizeof(script); ++ regionLength = sizeof(region); ++ parseTagString( ++ maximizedTagBuffer.data(), ++ lang, ++ &langLength, ++ script, ++ &scriptLength, ++ region, ++ ®ionLength, ++ err); ++ if(U_FAILURE(*err)) { ++ goto error; ++ } ++ + /** + * Start first with just the language. + **/ + { + icu::CharString tagBuffer; + { +- icu::CharStringByteSink sink(&tagBuffer); ++ icu::CharStringByteSink tagSink(&tagBuffer); + createLikelySubtagsString( + lang, + langLength, +@@ -1005,14 +1040,15 @@ + 0, + NULL, + 0, +- sink, ++ tagSink, + err); + } + + if(U_FAILURE(*err)) { + goto error; + } +- else if (!tagBuffer.isEmpty() && uprv_strnicmp( ++ else if (!tagBuffer.isEmpty() && ++ uprv_strnicmp( + maximizedTagBuffer.data(), + tagBuffer.data(), + tagBuffer.length()) == 0) { +@@ -1039,7 +1075,7 @@ + + icu::CharString tagBuffer; + { +- icu::CharStringByteSink sink(&tagBuffer); ++ icu::CharStringByteSink tagSink(&tagBuffer); + createLikelySubtagsString( + lang, + langLength, +@@ -1049,14 +1085,15 @@ + regionLength, + NULL, + 0, +- sink, ++ tagSink, + err); + } + + if(U_FAILURE(*err)) { + goto error; + } +- else if (uprv_strnicmp( ++ else if (!tagBuffer.isEmpty() && ++ uprv_strnicmp( + maximizedTagBuffer.data(), + tagBuffer.data(), + tagBuffer.length()) == 0) { +@@ -1081,10 +1118,10 @@ + * since trying with all three subtags would only yield the + * maximal version that we already have. + **/ +- if (scriptLength > 0 && regionLength > 0) { ++ if (scriptLength > 0) { + icu::CharString tagBuffer; + { +- icu::CharStringByteSink sink(&tagBuffer); ++ icu::CharStringByteSink tagSink(&tagBuffer); + createLikelySubtagsString( + lang, + langLength, +@@ -1094,14 +1131,15 @@ + 0, + NULL, + 0, +- sink, ++ tagSink, + err); + } + + if(U_FAILURE(*err)) { + goto error; + } +- else if (uprv_strnicmp( ++ else if (!tagBuffer.isEmpty() && ++ uprv_strnicmp( + maximizedTagBuffer.data(), + tagBuffer.data(), + tagBuffer.length()) == 0) { +@@ -1123,10 +1161,19 @@ + + { + /** +- * If we got here, return the locale ID parameter. ++ * If we got here, return the max + trail. + **/ +- const int32_t localeIDLength = (int32_t)uprv_strlen(localeID); +- sink.Append(localeID, localeIDLength); ++ createTagString( ++ lang, ++ langLength, ++ script, ++ scriptLength, ++ region, ++ regionLength, ++ trailing, ++ trailingLength, ++ sink, ++ err); + return; + } + +@@ -1193,15 +1240,23 @@ + return reslen; + } + +-U_CAPI void U_EXPORT2 +-ulocimp_addLikelySubtags(const char* localeID, +- icu::ByteSink& sink, +- UErrorCode* status) { ++static UBool ++_ulocimp_addLikelySubtags(const char* localeID, ++ icu::ByteSink& sink, ++ UErrorCode* status) { + char localeBuffer[ULOC_FULLNAME_CAPACITY]; + + if (do_canonicalize(localeID, localeBuffer, sizeof localeBuffer, status)) { +- _uloc_addLikelySubtags(localeBuffer, sink, status); ++ return _uloc_addLikelySubtags(localeBuffer, sink, status); + } ++ return FALSE; ++} ++ ++U_CAPI void U_EXPORT2 ++ulocimp_addLikelySubtags(const char* localeID, ++ icu::ByteSink& sink, ++ UErrorCode* status) { ++ _ulocimp_addLikelySubtags(localeID, sink, status); + } + + U_CAPI int32_t U_EXPORT2 +--- a/source/test/cintltst/cloctst.c ++++ b/source/test/cintltst/cloctst.c +@@ -3653,7 +3653,7 @@ + "de_Latn_DE_POSIX_1901", + "de__POSIX_1901" + }, { +- "", ++ "zzz", + "" + }, { + "en_Latn_US@calendar=gregorian", +--- a/source/test/intltest/loctest.cpp ++++ b/source/test/intltest/loctest.cpp +@@ -1711,7 +1711,2111 @@ + "und_Moon_AQ", + "_Moon_AQ", + "_Moon_AQ" +- }, ++ }, { ++ "aa", ++ "aa_Latn_ET", ++ "aa" ++ }, { ++ "af", ++ "af_Latn_ZA", ++ "af" ++ }, { ++ "ak", ++ "ak_Latn_GH", ++ "ak" ++ }, { ++ "am", ++ "am_Ethi_ET", ++ "am" ++ }, { ++ "ar", ++ "ar_Arab_EG", ++ "ar" ++ }, { ++ "as", ++ "as_Beng_IN", ++ "as" ++ }, { ++ "az", ++ "az_Latn_AZ", ++ "az" ++ }, { ++ "be", ++ "be_Cyrl_BY", ++ "be" ++ }, { ++ "bg", ++ "bg_Cyrl_BG", ++ "bg" ++ }, { ++ "bn", ++ "bn_Beng_BD", ++ "bn" ++ }, { ++ "bo", ++ "bo_Tibt_CN", ++ "bo" ++ }, { ++ "bs", ++ "bs_Latn_BA", ++ "bs" ++ }, { ++ "ca", ++ "ca_Latn_ES", ++ "ca" ++ }, { ++ "ch", ++ "ch_Latn_GU", ++ "ch" ++ }, { ++ "chk", ++ "chk_Latn_FM", ++ "chk" ++ }, { ++ "cs", ++ "cs_Latn_CZ", ++ "cs" ++ }, { ++ "cy", ++ "cy_Latn_GB", ++ "cy" ++ }, { ++ "da", ++ "da_Latn_DK", ++ "da" ++ }, { ++ "de", ++ "de_Latn_DE", ++ "de" ++ }, { ++ "dv", ++ "dv_Thaa_MV", ++ "dv" ++ }, { ++ "dz", ++ "dz_Tibt_BT", ++ "dz" ++ }, { ++ "ee", ++ "ee_Latn_GH", ++ "ee" ++ }, { ++ "el", ++ "el_Grek_GR", ++ "el" ++ }, { ++ "en", ++ "en_Latn_US", ++ "en" ++ }, { ++ "es", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "et", ++ "et_Latn_EE", ++ "et" ++ }, { ++ "eu", ++ "eu_Latn_ES", ++ "eu" ++ }, { ++ "fa", ++ "fa_Arab_IR", ++ "fa" ++ }, { ++ "fi", ++ "fi_Latn_FI", ++ "fi" ++ }, { ++ "fil", ++ "fil_Latn_PH", ++ "fil" ++ }, { ++ "fj", ++ "fj_Latn_FJ", ++ "fj" ++ }, { ++ "fo", ++ "fo_Latn_FO", ++ "fo" ++ }, { ++ "fr", ++ "fr_Latn_FR", ++ "fr" ++ }, { ++ "fur", ++ "fur_Latn_IT", ++ "fur" ++ }, { ++ "ga", ++ "ga_Latn_IE", ++ "ga" ++ }, { ++ "gaa", ++ "gaa_Latn_GH", ++ "gaa" ++ }, { ++ "gl", ++ "gl_Latn_ES", ++ "gl" ++ }, { ++ "gn", ++ "gn_Latn_PY", ++ "gn" ++ }, { ++ "gu", ++ "gu_Gujr_IN", ++ "gu" ++ }, { ++ "ha", ++ "ha_Latn_NG", ++ "ha" ++ }, { ++ "haw", ++ "haw_Latn_US", ++ "haw" ++ }, { ++ "he", ++ "he_Hebr_IL", ++ "he" ++ }, { ++ "hi", ++ "hi_Deva_IN", ++ "hi" ++ }, { ++ "hr", ++ "hr_Latn_HR", ++ "hr" ++ }, { ++ "ht", ++ "ht_Latn_HT", ++ "ht" ++ }, { ++ "hu", ++ "hu_Latn_HU", ++ "hu" ++ }, { ++ "hy", ++ "hy_Armn_AM", ++ "hy" ++ }, { ++ "id", ++ "id_Latn_ID", ++ "id" ++ }, { ++ "ig", ++ "ig_Latn_NG", ++ "ig" ++ }, { ++ "ii", ++ "ii_Yiii_CN", ++ "ii" ++ }, { ++ "is", ++ "is_Latn_IS", ++ "is" ++ }, { ++ "it", ++ "it_Latn_IT", ++ "it" ++ }, { ++ "ja", ++ "ja_Jpan_JP", ++ "ja" ++ }, { ++ "ka", ++ "ka_Geor_GE", ++ "ka" ++ }, { ++ "kaj", ++ "kaj_Latn_NG", ++ "kaj" ++ }, { ++ "kam", ++ "kam_Latn_KE", ++ "kam" ++ }, { ++ "kk", ++ "kk_Cyrl_KZ", ++ "kk" ++ }, { ++ "kl", ++ "kl_Latn_GL", ++ "kl" ++ }, { ++ "km", ++ "km_Khmr_KH", ++ "km" ++ }, { ++ "kn", ++ "kn_Knda_IN", ++ "kn" ++ }, { ++ "ko", ++ "ko_Kore_KR", ++ "ko" ++ }, { ++ "kok", ++ "kok_Deva_IN", ++ "kok" ++ }, { ++ "kpe", ++ "kpe_Latn_LR", ++ "kpe" ++ }, { ++ "ku", ++ "ku_Latn_TR", ++ "ku" ++ }, { ++ "ky", ++ "ky_Cyrl_KG", ++ "ky" ++ }, { ++ "la", ++ "la_Latn_VA", ++ "la" ++ }, { ++ "ln", ++ "ln_Latn_CD", ++ "ln" ++ }, { ++ "lo", ++ "lo_Laoo_LA", ++ "lo" ++ }, { ++ "lt", ++ "lt_Latn_LT", ++ "lt" ++ }, { ++ "lv", ++ "lv_Latn_LV", ++ "lv" ++ }, { ++ "mg", ++ "mg_Latn_MG", ++ "mg" ++ }, { ++ "mh", ++ "mh_Latn_MH", ++ "mh" ++ }, { ++ "mk", ++ "mk_Cyrl_MK", ++ "mk" ++ }, { ++ "ml", ++ "ml_Mlym_IN", ++ "ml" ++ }, { ++ "mn", ++ "mn_Cyrl_MN", ++ "mn" ++ }, { ++ "mr", ++ "mr_Deva_IN", ++ "mr" ++ }, { ++ "ms", ++ "ms_Latn_MY", ++ "ms" ++ }, { ++ "mt", ++ "mt_Latn_MT", ++ "mt" ++ }, { ++ "my", ++ "my_Mymr_MM", ++ "my" ++ }, { ++ "na", ++ "na_Latn_NR", ++ "na" ++ }, { ++ "ne", ++ "ne_Deva_NP", ++ "ne" ++ }, { ++ "niu", ++ "niu_Latn_NU", ++ "niu" ++ }, { ++ "nl", ++ "nl_Latn_NL", ++ "nl" ++ }, { ++ "nn", ++ "nn_Latn_NO", ++ "nn" ++ }, { ++ "nr", ++ "nr_Latn_ZA", ++ "nr" ++ }, { ++ "nso", ++ "nso_Latn_ZA", ++ "nso" ++ }, { ++ "om", ++ "om_Latn_ET", ++ "om" ++ }, { ++ "or", ++ "or_Orya_IN", ++ "or" ++ }, { ++ "pa", ++ "pa_Guru_IN", ++ "pa" ++ }, { ++ "pa_Arab", ++ "pa_Arab_PK", ++ "pa_PK" ++ }, { ++ "pa_PK", ++ "pa_Arab_PK", ++ "pa_PK" ++ }, { ++ "pap", ++ "pap_Latn_AW", ++ "pap" ++ }, { ++ "pau", ++ "pau_Latn_PW", ++ "pau" ++ }, { ++ "pl", ++ "pl_Latn_PL", ++ "pl" ++ }, { ++ "ps", ++ "ps_Arab_AF", ++ "ps" ++ }, { ++ "pt", ++ "pt_Latn_BR", ++ "pt" ++ }, { ++ "rn", ++ "rn_Latn_BI", ++ "rn" ++ }, { ++ "ro", ++ "ro_Latn_RO", ++ "ro" ++ }, { ++ "ru", ++ "ru_Cyrl_RU", ++ "ru" ++ }, { ++ "rw", ++ "rw_Latn_RW", ++ "rw" ++ }, { ++ "sa", ++ "sa_Deva_IN", ++ "sa" ++ }, { ++ "se", ++ "se_Latn_NO", ++ "se" ++ }, { ++ "sg", ++ "sg_Latn_CF", ++ "sg" ++ }, { ++ "si", ++ "si_Sinh_LK", ++ "si" ++ }, { ++ "sid", ++ "sid_Latn_ET", ++ "sid" ++ }, { ++ "sk", ++ "sk_Latn_SK", ++ "sk" ++ }, { ++ "sl", ++ "sl_Latn_SI", ++ "sl" ++ }, { ++ "sm", ++ "sm_Latn_WS", ++ "sm" ++ }, { ++ "so", ++ "so_Latn_SO", ++ "so" ++ }, { ++ "sq", ++ "sq_Latn_AL", ++ "sq" ++ }, { ++ "sr", ++ "sr_Cyrl_RS", ++ "sr" ++ }, { ++ "ss", ++ "ss_Latn_ZA", ++ "ss" ++ }, { ++ "st", ++ "st_Latn_ZA", ++ "st" ++ }, { ++ "sv", ++ "sv_Latn_SE", ++ "sv" ++ }, { ++ "sw", ++ "sw_Latn_TZ", ++ "sw" ++ }, { ++ "ta", ++ "ta_Taml_IN", ++ "ta" ++ }, { ++ "te", ++ "te_Telu_IN", ++ "te" ++ }, { ++ "tet", ++ "tet_Latn_TL", ++ "tet" ++ }, { ++ "tg", ++ "tg_Cyrl_TJ", ++ "tg" ++ }, { ++ "th", ++ "th_Thai_TH", ++ "th" ++ }, { ++ "ti", ++ "ti_Ethi_ET", ++ "ti" ++ }, { ++ "tig", ++ "tig_Ethi_ER", ++ "tig" ++ }, { ++ "tk", ++ "tk_Latn_TM", ++ "tk" ++ }, { ++ "tkl", ++ "tkl_Latn_TK", ++ "tkl" ++ }, { ++ "tn", ++ "tn_Latn_ZA", ++ "tn" ++ }, { ++ "to", ++ "to_Latn_TO", ++ "to" ++ }, { ++ "tpi", ++ "tpi_Latn_PG", ++ "tpi" ++ }, { ++ "tr", ++ "tr_Latn_TR", ++ "tr" ++ }, { ++ "ts", ++ "ts_Latn_ZA", ++ "ts" ++ }, { ++ "tt", ++ "tt_Cyrl_RU", ++ "tt" ++ }, { ++ "tvl", ++ "tvl_Latn_TV", ++ "tvl" ++ }, { ++ "ty", ++ "ty_Latn_PF", ++ "ty" ++ }, { ++ "uk", ++ "uk_Cyrl_UA", ++ "uk" ++ }, { ++ "und", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_AD", ++ "ca_Latn_AD", ++ "ca_AD" ++ }, { ++ "und_AE", ++ "ar_Arab_AE", ++ "ar_AE" ++ }, { ++ "und_AF", ++ "fa_Arab_AF", ++ "fa_AF" ++ }, { ++ "und_AL", ++ "sq_Latn_AL", ++ "sq" ++ }, { ++ "und_AM", ++ "hy_Armn_AM", ++ "hy" ++ }, { ++ "und_AO", ++ "pt_Latn_AO", ++ "pt_AO" ++ }, { ++ "und_AR", ++ "es_Latn_AR", ++ "es_AR" ++ }, { ++ "und_AS", ++ "sm_Latn_AS", ++ "sm_AS" ++ }, { ++ "und_AT", ++ "de_Latn_AT", ++ "de_AT" ++ }, { ++ "und_AW", ++ "nl_Latn_AW", ++ "nl_AW" ++ }, { ++ "und_AX", ++ "sv_Latn_AX", ++ "sv_AX" ++ }, { ++ "und_AZ", ++ "az_Latn_AZ", ++ "az" ++ }, { ++ "und_Arab", ++ "ar_Arab_EG", ++ "ar" ++ }, { ++ "und_Arab_IN", ++ "ur_Arab_IN", ++ "ur_IN" ++ }, { ++ "und_Arab_PK", ++ "ur_Arab_PK", ++ "ur" ++ }, { ++ "und_Arab_SN", ++ "ar_Arab_SN", ++ "ar_SN" ++ }, { ++ "und_Armn", ++ "hy_Armn_AM", ++ "hy" ++ }, { ++ "und_BA", ++ "bs_Latn_BA", ++ "bs" ++ }, { ++ "und_BD", ++ "bn_Beng_BD", ++ "bn" ++ }, { ++ "und_BE", ++ "nl_Latn_BE", ++ "nl_BE" ++ }, { ++ "und_BF", ++ "fr_Latn_BF", ++ "fr_BF" ++ }, { ++ "und_BG", ++ "bg_Cyrl_BG", ++ "bg" ++ }, { ++ "und_BH", ++ "ar_Arab_BH", ++ "ar_BH" ++ }, { ++ "und_BI", ++ "rn_Latn_BI", ++ "rn" ++ }, { ++ "und_BJ", ++ "fr_Latn_BJ", ++ "fr_BJ" ++ }, { ++ "und_BN", ++ "ms_Latn_BN", ++ "ms_BN" ++ }, { ++ "und_BO", ++ "es_Latn_BO", ++ "es_BO" ++ }, { ++ "und_BR", ++ "pt_Latn_BR", ++ "pt" ++ }, { ++ "und_BT", ++ "dz_Tibt_BT", ++ "dz" ++ }, { ++ "und_BY", ++ "be_Cyrl_BY", ++ "be" ++ }, { ++ "und_Beng", ++ "bn_Beng_BD", ++ "bn" ++ }, { ++ "und_Beng_IN", ++ "bn_Beng_IN", ++ "bn_IN" ++ }, { ++ "und_CD", ++ "sw_Latn_CD", ++ "sw_CD" ++ }, { ++ "und_CF", ++ "fr_Latn_CF", ++ "fr_CF" ++ }, { ++ "und_CG", ++ "fr_Latn_CG", ++ "fr_CG" ++ }, { ++ "und_CH", ++ "de_Latn_CH", ++ "de_CH" ++ }, { ++ "und_CI", ++ "fr_Latn_CI", ++ "fr_CI" ++ }, { ++ "und_CL", ++ "es_Latn_CL", ++ "es_CL" ++ }, { ++ "und_CM", ++ "fr_Latn_CM", ++ "fr_CM" ++ }, { ++ "und_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_CO", ++ "es_Latn_CO", ++ "es_CO" ++ }, { ++ "und_CR", ++ "es_Latn_CR", ++ "es_CR" ++ }, { ++ "und_CU", ++ "es_Latn_CU", ++ "es_CU" ++ }, { ++ "und_CV", ++ "pt_Latn_CV", ++ "pt_CV" ++ }, { ++ "und_CY", ++ "el_Grek_CY", ++ "el_CY" ++ }, { ++ "und_CZ", ++ "cs_Latn_CZ", ++ "cs" ++ }, { ++ "und_Cyrl", ++ "ru_Cyrl_RU", ++ "ru" ++ }, { ++ "und_Cyrl_KZ", ++ "ru_Cyrl_KZ", ++ "ru_KZ" ++ }, { ++ "und_DE", ++ "de_Latn_DE", ++ "de" ++ }, { ++ "und_DJ", ++ "aa_Latn_DJ", ++ "aa_DJ" ++ }, { ++ "und_DK", ++ "da_Latn_DK", ++ "da" ++ }, { ++ "und_DO", ++ "es_Latn_DO", ++ "es_DO" ++ }, { ++ "und_DZ", ++ "ar_Arab_DZ", ++ "ar_DZ" ++ }, { ++ "und_Deva", ++ "hi_Deva_IN", ++ "hi" ++ }, { ++ "und_EC", ++ "es_Latn_EC", ++ "es_EC" ++ }, { ++ "und_EE", ++ "et_Latn_EE", ++ "et" ++ }, { ++ "und_EG", ++ "ar_Arab_EG", ++ "ar" ++ }, { ++ "und_EH", ++ "ar_Arab_EH", ++ "ar_EH" ++ }, { ++ "und_ER", ++ "ti_Ethi_ER", ++ "ti_ER" ++ }, { ++ "und_ES", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "und_ET", ++ "am_Ethi_ET", ++ "am" ++ }, { ++ "und_Ethi", ++ "am_Ethi_ET", ++ "am" ++ }, { ++ "und_Ethi_ER", ++ "am_Ethi_ER", ++ "am_ER" ++ }, { ++ "und_FI", ++ "fi_Latn_FI", ++ "fi" ++ }, { ++ "und_FM", ++ "en_Latn_FM", ++ "en_FM" ++ }, { ++ "und_FO", ++ "fo_Latn_FO", ++ "fo" ++ }, { ++ "und_FR", ++ "fr_Latn_FR", ++ "fr" ++ }, { ++ "und_GA", ++ "fr_Latn_GA", ++ "fr_GA" ++ }, { ++ "und_GE", ++ "ka_Geor_GE", ++ "ka" ++ }, { ++ "und_GF", ++ "fr_Latn_GF", ++ "fr_GF" ++ }, { ++ "und_GL", ++ "kl_Latn_GL", ++ "kl" ++ }, { ++ "und_GN", ++ "fr_Latn_GN", ++ "fr_GN" ++ }, { ++ "und_GP", ++ "fr_Latn_GP", ++ "fr_GP" ++ }, { ++ "und_GQ", ++ "es_Latn_GQ", ++ "es_GQ" ++ }, { ++ "und_GR", ++ "el_Grek_GR", ++ "el" ++ }, { ++ "und_GT", ++ "es_Latn_GT", ++ "es_GT" ++ }, { ++ "und_GU", ++ "en_Latn_GU", ++ "en_GU" ++ }, { ++ "und_GW", ++ "pt_Latn_GW", ++ "pt_GW" ++ }, { ++ "und_Geor", ++ "ka_Geor_GE", ++ "ka" ++ }, { ++ "und_Grek", ++ "el_Grek_GR", ++ "el" ++ }, { ++ "und_Gujr", ++ "gu_Gujr_IN", ++ "gu" ++ }, { ++ "und_Guru", ++ "pa_Guru_IN", ++ "pa" ++ }, { ++ "und_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "und_HN", ++ "es_Latn_HN", ++ "es_HN" ++ }, { ++ "und_HR", ++ "hr_Latn_HR", ++ "hr" ++ }, { ++ "und_HT", ++ "ht_Latn_HT", ++ "ht" ++ }, { ++ "und_HU", ++ "hu_Latn_HU", ++ "hu" ++ }, { ++ "und_Hani", ++ "zh_Hani_CN", ++ "zh_Hani" ++ }, { ++ "und_Hans", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_Hant", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Hebr", ++ "he_Hebr_IL", ++ "he" ++ }, { ++ "und_ID", ++ "id_Latn_ID", ++ "id" ++ }, { ++ "und_IL", ++ "he_Hebr_IL", ++ "he" ++ }, { ++ "und_IN", ++ "hi_Deva_IN", ++ "hi" ++ }, { ++ "und_IQ", ++ "ar_Arab_IQ", ++ "ar_IQ" ++ }, { ++ "und_IR", ++ "fa_Arab_IR", ++ "fa" ++ }, { ++ "und_IS", ++ "is_Latn_IS", ++ "is" ++ }, { ++ "und_IT", ++ "it_Latn_IT", ++ "it" ++ }, { ++ "und_JO", ++ "ar_Arab_JO", ++ "ar_JO" ++ }, { ++ "und_JP", ++ "ja_Jpan_JP", ++ "ja" ++ }, { ++ "und_Jpan", ++ "ja_Jpan_JP", ++ "ja" ++ }, { ++ "und_KG", ++ "ky_Cyrl_KG", ++ "ky" ++ }, { ++ "und_KH", ++ "km_Khmr_KH", ++ "km" ++ }, { ++ "und_KM", ++ "ar_Arab_KM", ++ "ar_KM" ++ }, { ++ "und_KP", ++ "ko_Kore_KP", ++ "ko_KP" ++ }, { ++ "und_KR", ++ "ko_Kore_KR", ++ "ko" ++ }, { ++ "und_KW", ++ "ar_Arab_KW", ++ "ar_KW" ++ }, { ++ "und_KZ", ++ "ru_Cyrl_KZ", ++ "ru_KZ" ++ }, { ++ "und_Khmr", ++ "km_Khmr_KH", ++ "km" ++ }, { ++ "und_Knda", ++ "kn_Knda_IN", ++ "kn" ++ }, { ++ "und_Kore", ++ "ko_Kore_KR", ++ "ko" ++ }, { ++ "und_LA", ++ "lo_Laoo_LA", ++ "lo" ++ }, { ++ "und_LB", ++ "ar_Arab_LB", ++ "ar_LB" ++ }, { ++ "und_LI", ++ "de_Latn_LI", ++ "de_LI" ++ }, { ++ "und_LK", ++ "si_Sinh_LK", ++ "si" ++ }, { ++ "und_LS", ++ "st_Latn_LS", ++ "st_LS" ++ }, { ++ "und_LT", ++ "lt_Latn_LT", ++ "lt" ++ }, { ++ "und_LU", ++ "fr_Latn_LU", ++ "fr_LU" ++ }, { ++ "und_LV", ++ "lv_Latn_LV", ++ "lv" ++ }, { ++ "und_LY", ++ "ar_Arab_LY", ++ "ar_LY" ++ }, { ++ "und_Laoo", ++ "lo_Laoo_LA", ++ "lo" ++ }, { ++ "und_Latn_ES", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "und_Latn_ET", ++ "en_Latn_ET", ++ "en_ET" ++ }, { ++ "und_Latn_GB", ++ "en_Latn_GB", ++ "en_GB" ++ }, { ++ "und_Latn_GH", ++ "ak_Latn_GH", ++ "ak" ++ }, { ++ "und_Latn_ID", ++ "id_Latn_ID", ++ "id" ++ }, { ++ "und_Latn_IT", ++ "it_Latn_IT", ++ "it" ++ }, { ++ "und_Latn_NG", ++ "en_Latn_NG", ++ "en_NG" ++ }, { ++ "und_Latn_TR", ++ "tr_Latn_TR", ++ "tr" ++ }, { ++ "und_Latn_ZA", ++ "en_Latn_ZA", ++ "en_ZA" ++ }, { ++ "und_MA", ++ "ar_Arab_MA", ++ "ar_MA" ++ }, { ++ "und_MC", ++ "fr_Latn_MC", ++ "fr_MC" ++ }, { ++ "und_MD", ++ "ro_Latn_MD", ++ "ro_MD" ++ }, { ++ "und_ME", ++ "sr_Latn_ME", ++ "sr_ME" ++ }, { ++ "und_MG", ++ "mg_Latn_MG", ++ "mg" ++ }, { ++ "und_MK", ++ "mk_Cyrl_MK", ++ "mk" ++ }, { ++ "und_ML", ++ "bm_Latn_ML", ++ "bm" ++ }, { ++ "und_MM", ++ "my_Mymr_MM", ++ "my" ++ }, { ++ "und_MN", ++ "mn_Cyrl_MN", ++ "mn" ++ }, { ++ "und_MO", ++ "zh_Hant_MO", ++ "zh_MO" ++ }, { ++ "und_MQ", ++ "fr_Latn_MQ", ++ "fr_MQ" ++ }, { ++ "und_MR", ++ "ar_Arab_MR", ++ "ar_MR" ++ }, { ++ "und_MT", ++ "mt_Latn_MT", ++ "mt" ++ }, { ++ "und_MV", ++ "dv_Thaa_MV", ++ "dv" ++ }, { ++ "und_MX", ++ "es_Latn_MX", ++ "es_MX" ++ }, { ++ "und_MY", ++ "ms_Latn_MY", ++ "ms" ++ }, { ++ "und_MZ", ++ "pt_Latn_MZ", ++ "pt_MZ" ++ }, { ++ "und_Mlym", ++ "ml_Mlym_IN", ++ "ml" ++ }, { ++ "und_Mymr", ++ "my_Mymr_MM", ++ "my" ++ }, { ++ "und_NC", ++ "fr_Latn_NC", ++ "fr_NC" ++ }, { ++ "und_NE", ++ "ha_Latn_NE", ++ "ha_NE" ++ }, { ++ "und_NG", ++ "en_Latn_NG", ++ "en_NG" ++ }, { ++ "und_NI", ++ "es_Latn_NI", ++ "es_NI" ++ }, { ++ "und_NL", ++ "nl_Latn_NL", ++ "nl" ++ }, { ++ "und_NO", ++ "nb_Latn_NO", ++ "nb" ++ }, { ++ "und_NP", ++ "ne_Deva_NP", ++ "ne" ++ }, { ++ "und_NR", ++ "en_Latn_NR", ++ "en_NR" ++ }, { ++ "und_OM", ++ "ar_Arab_OM", ++ "ar_OM" ++ }, { ++ "und_Orya", ++ "or_Orya_IN", ++ "or" ++ }, { ++ "und_PA", ++ "es_Latn_PA", ++ "es_PA" ++ }, { ++ "und_PE", ++ "es_Latn_PE", ++ "es_PE" ++ }, { ++ "und_PF", ++ "fr_Latn_PF", ++ "fr_PF" ++ }, { ++ "und_PG", ++ "tpi_Latn_PG", ++ "tpi" ++ }, { ++ "und_PH", ++ "fil_Latn_PH", ++ "fil" ++ }, { ++ "und_PL", ++ "pl_Latn_PL", ++ "pl" ++ }, { ++ "und_PM", ++ "fr_Latn_PM", ++ "fr_PM" ++ }, { ++ "und_PR", ++ "es_Latn_PR", ++ "es_PR" ++ }, { ++ "und_PS", ++ "ar_Arab_PS", ++ "ar_PS" ++ }, { ++ "und_PT", ++ "pt_Latn_PT", ++ "pt_PT" ++ }, { ++ "und_PW", ++ "pau_Latn_PW", ++ "pau" ++ }, { ++ "und_PY", ++ "gn_Latn_PY", ++ "gn" ++ }, { ++ "und_QA", ++ "ar_Arab_QA", ++ "ar_QA" ++ }, { ++ "und_RE", ++ "fr_Latn_RE", ++ "fr_RE" ++ }, { ++ "und_RO", ++ "ro_Latn_RO", ++ "ro" ++ }, { ++ "und_RS", ++ "sr_Cyrl_RS", ++ "sr" ++ }, { ++ "und_RU", ++ "ru_Cyrl_RU", ++ "ru" ++ }, { ++ "und_RW", ++ "rw_Latn_RW", ++ "rw" ++ }, { ++ "und_SA", ++ "ar_Arab_SA", ++ "ar_SA" ++ }, { ++ "und_SD", ++ "ar_Arab_SD", ++ "ar_SD" ++ }, { ++ "und_SE", ++ "sv_Latn_SE", ++ "sv" ++ }, { ++ "und_SG", ++ "en_Latn_SG", ++ "en_SG" ++ }, { ++ "und_SI", ++ "sl_Latn_SI", ++ "sl" ++ }, { ++ "und_SJ", ++ "nb_Latn_SJ", ++ "nb_SJ" ++ }, { ++ "und_SK", ++ "sk_Latn_SK", ++ "sk" ++ }, { ++ "und_SM", ++ "it_Latn_SM", ++ "it_SM" ++ }, { ++ "und_SN", ++ "fr_Latn_SN", ++ "fr_SN" ++ }, { ++ "und_SO", ++ "so_Latn_SO", ++ "so" ++ }, { ++ "und_SR", ++ "nl_Latn_SR", ++ "nl_SR" ++ }, { ++ "und_ST", ++ "pt_Latn_ST", ++ "pt_ST" ++ }, { ++ "und_SV", ++ "es_Latn_SV", ++ "es_SV" ++ }, { ++ "und_SY", ++ "ar_Arab_SY", ++ "ar_SY" ++ }, { ++ "und_Sinh", ++ "si_Sinh_LK", ++ "si" ++ }, { ++ "und_Syrc", ++ "syr_Syrc_IQ", ++ "syr" ++ }, { ++ "und_TD", ++ "fr_Latn_TD", ++ "fr_TD" ++ }, { ++ "und_TG", ++ "fr_Latn_TG", ++ "fr_TG" ++ }, { ++ "und_TH", ++ "th_Thai_TH", ++ "th" ++ }, { ++ "und_TJ", ++ "tg_Cyrl_TJ", ++ "tg" ++ }, { ++ "und_TK", ++ "tkl_Latn_TK", ++ "tkl" ++ }, { ++ "und_TL", ++ "pt_Latn_TL", ++ "pt_TL" ++ }, { ++ "und_TM", ++ "tk_Latn_TM", ++ "tk" ++ }, { ++ "und_TN", ++ "ar_Arab_TN", ++ "ar_TN" ++ }, { ++ "und_TO", ++ "to_Latn_TO", ++ "to" ++ }, { ++ "und_TR", ++ "tr_Latn_TR", ++ "tr" ++ }, { ++ "und_TV", ++ "tvl_Latn_TV", ++ "tvl" ++ }, { ++ "und_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Taml", ++ "ta_Taml_IN", ++ "ta" ++ }, { ++ "und_Telu", ++ "te_Telu_IN", ++ "te" ++ }, { ++ "und_Thaa", ++ "dv_Thaa_MV", ++ "dv" ++ }, { ++ "und_Thai", ++ "th_Thai_TH", ++ "th" ++ }, { ++ "und_Tibt", ++ "bo_Tibt_CN", ++ "bo" ++ }, { ++ "und_UA", ++ "uk_Cyrl_UA", ++ "uk" ++ }, { ++ "und_UY", ++ "es_Latn_UY", ++ "es_UY" ++ }, { ++ "und_UZ", ++ "uz_Latn_UZ", ++ "uz" ++ }, { ++ "und_VA", ++ "it_Latn_VA", ++ "it_VA" ++ }, { ++ "und_VE", ++ "es_Latn_VE", ++ "es_VE" ++ }, { ++ "und_VN", ++ "vi_Latn_VN", ++ "vi" ++ }, { ++ "und_VU", ++ "bi_Latn_VU", ++ "bi" ++ }, { ++ "und_WF", ++ "fr_Latn_WF", ++ "fr_WF" ++ }, { ++ "und_WS", ++ "sm_Latn_WS", ++ "sm" ++ }, { ++ "und_YE", ++ "ar_Arab_YE", ++ "ar_YE" ++ }, { ++ "und_YT", ++ "fr_Latn_YT", ++ "fr_YT" ++ }, { ++ "und_Yiii", ++ "ii_Yiii_CN", ++ "ii" ++ }, { ++ "ur", ++ "ur_Arab_PK", ++ "ur" ++ }, { ++ "uz", ++ "uz_Latn_UZ", ++ "uz" ++ }, { ++ "uz_AF", ++ "uz_Arab_AF", ++ "uz_AF" ++ }, { ++ "uz_Arab", ++ "uz_Arab_AF", ++ "uz_AF" ++ }, { ++ "ve", ++ "ve_Latn_ZA", ++ "ve" ++ }, { ++ "vi", ++ "vi_Latn_VN", ++ "vi" ++ }, { ++ "wal", ++ "wal_Ethi_ET", ++ "wal" ++ }, { ++ "wo", ++ "wo_Latn_SN", ++ "wo" ++ }, { ++ "wo_SN", ++ "wo_Latn_SN", ++ "wo" ++ }, { ++ "xh", ++ "xh_Latn_ZA", ++ "xh" ++ }, { ++ "yo", ++ "yo_Latn_NG", ++ "yo" ++ }, { ++ "zh", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "zh_Hani", ++ "zh_Hani_CN", ++ "zh_Hani" ++ }, { ++ "zh_Hant", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_MO", ++ "zh_Hant_MO", ++ "zh_MO" ++ }, { ++ "zh_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zu", ++ "zu_Latn_ZA", ++ "zu" ++ }, { ++ "und", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_ZZ", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "und_AQ", ++ "_Latn_AQ", ++ "_AQ" ++ }, { ++ "und_Zzzz", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_Zzzz_ZZ", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_Zzzz_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_Zzzz_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Zzzz_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "und_Zzzz_AQ", ++ "_Latn_AQ", ++ "_AQ" ++ }, { ++ "und_Latn", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_Latn_ZZ", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_Latn_CN", ++ "za_Latn_CN", ++ "za" ++ }, { ++ "und_Latn_TW", ++ "trv_Latn_TW", ++ "trv" ++ }, { ++ "und_Latn_HK", ++ "zh_Latn_HK", ++ "zh_Latn_HK" ++ }, { ++ "und_Latn_AQ", ++ "_Latn_AQ", ++ "_AQ" ++ }, { ++ "und_Hans", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_Hans_ZZ", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_Hans_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "und_Hans_TW", ++ "zh_Hans_TW", ++ "zh_Hans_TW" ++ }, { ++ "und_Hans_HK", ++ "zh_Hans_HK", ++ "zh_Hans_HK" ++ }, { ++ "und_Hans_AQ", ++ "zh_Hans_AQ", ++ "zh_AQ" ++ }, { ++ "und_Hant", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Hant_ZZ", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Hant_CN", ++ "zh_Hant_CN", ++ "zh_Hant_CN" ++ }, { ++ "und_Hant_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "und_Hant_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "und_Hant_AQ", ++ "zh_Hant_AQ", ++ "zh_Hant_AQ" ++ }, { ++ "und_Moon", ++ "en_Moon_US", ++ "en_Moon" ++ }, { ++ "und_Moon_ZZ", ++ "en_Moon_US", ++ "en_Moon" ++ }, { ++ "und_Moon_CN", ++ "zh_Moon_CN", ++ "zh_Moon" ++ }, { ++ "und_Moon_TW", ++ "zh_Moon_TW", ++ "zh_Moon_TW" ++ }, { ++ "und_Moon_HK", ++ "zh_Moon_HK", ++ "zh_Moon_HK" ++ }, { ++ "und_Moon_AQ", ++ "_Moon_AQ", ++ "_Moon_AQ" ++ }, { ++ "es", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_ZZ", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_CN", ++ "es_Latn_CN", ++ "es_CN" ++ }, { ++ "es_TW", ++ "es_Latn_TW", ++ "es_TW" ++ }, { ++ "es_HK", ++ "es_Latn_HK", ++ "es_HK" ++ }, { ++ "es_AQ", ++ "es_Latn_AQ", ++ "es_AQ" ++ }, { ++ "es_Zzzz", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_Zzzz_ZZ", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_Zzzz_CN", ++ "es_Latn_CN", ++ "es_CN" ++ }, { ++ "es_Zzzz_TW", ++ "es_Latn_TW", ++ "es_TW" ++ }, { ++ "es_Zzzz_HK", ++ "es_Latn_HK", ++ "es_HK" ++ }, { ++ "es_Zzzz_AQ", ++ "es_Latn_AQ", ++ "es_AQ" ++ }, { ++ "es_Latn", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_Latn_ZZ", ++ "es_Latn_ES", ++ "es" ++ }, { ++ "es_Latn_CN", ++ "es_Latn_CN", ++ "es_CN" ++ }, { ++ "es_Latn_TW", ++ "es_Latn_TW", ++ "es_TW" ++ }, { ++ "es_Latn_HK", ++ "es_Latn_HK", ++ "es_HK" ++ }, { ++ "es_Latn_AQ", ++ "es_Latn_AQ", ++ "es_AQ" ++ }, { ++ "es_Hans", ++ "es_Hans_ES", ++ "es_Hans" ++ }, { ++ "es_Hans_ZZ", ++ "es_Hans_ES", ++ "es_Hans" ++ }, { ++ "es_Hans_CN", ++ "es_Hans_CN", ++ "es_Hans_CN" ++ }, { ++ "es_Hans_TW", ++ "es_Hans_TW", ++ "es_Hans_TW" ++ }, { ++ "es_Hans_HK", ++ "es_Hans_HK", ++ "es_Hans_HK" ++ }, { ++ "es_Hans_AQ", ++ "es_Hans_AQ", ++ "es_Hans_AQ" ++ }, { ++ "es_Hant", ++ "es_Hant_ES", ++ "es_Hant" ++ }, { ++ "es_Hant_ZZ", ++ "es_Hant_ES", ++ "es_Hant" ++ }, { ++ "es_Hant_CN", ++ "es_Hant_CN", ++ "es_Hant_CN" ++ }, { ++ "es_Hant_TW", ++ "es_Hant_TW", ++ "es_Hant_TW" ++ }, { ++ "es_Hant_HK", ++ "es_Hant_HK", ++ "es_Hant_HK" ++ }, { ++ "es_Hant_AQ", ++ "es_Hant_AQ", ++ "es_Hant_AQ" ++ }, { ++ "es_Moon", ++ "es_Moon_ES", ++ "es_Moon" ++ }, { ++ "es_Moon_ZZ", ++ "es_Moon_ES", ++ "es_Moon" ++ }, { ++ "es_Moon_CN", ++ "es_Moon_CN", ++ "es_Moon_CN" ++ }, { ++ "es_Moon_TW", ++ "es_Moon_TW", ++ "es_Moon_TW" ++ }, { ++ "es_Moon_HK", ++ "es_Moon_HK", ++ "es_Moon_HK" ++ }, { ++ "es_Moon_AQ", ++ "es_Moon_AQ", ++ "es_Moon_AQ" ++ }, { ++ "zh", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_ZZ", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "zh_AQ", ++ "zh_Hans_AQ", ++ "zh_AQ" ++ }, { ++ "zh_Zzzz", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_Zzzz_ZZ", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_Zzzz_CN", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_Zzzz_TW", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_Zzzz_HK", ++ "zh_Hant_HK", ++ "zh_HK" ++ }, { ++ "zh_Zzzz_AQ", ++ "zh_Hans_AQ", ++ "zh_AQ" ++ }, { ++ "zh_Latn", ++ "zh_Latn_CN", ++ "zh_Latn" ++ }, { ++ "zh_Latn_ZZ", ++ "zh_Latn_CN", ++ "zh_Latn" ++ }, { ++ "zh_Latn_CN", ++ "zh_Latn_CN", ++ "zh_Latn" ++ }, { ++ "zh_Latn_TW", ++ "zh_Latn_TW", ++ "zh_Latn_TW" ++ }, { ++ "zh_Latn_HK", ++ "zh_Latn_HK", ++ "zh_Latn_HK" ++ }, { ++ "zh_Latn_AQ", ++ "zh_Latn_AQ", ++ "zh_Latn_AQ" ++ }, { ++ "zh_Hans", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_Hans_ZZ", ++ "zh_Hans_CN", ++ "zh" ++ }, { ++ "zh_Hans_TW", ++ "zh_Hans_TW", ++ "zh_Hans_TW" ++ }, { ++ "zh_Hans_HK", ++ "zh_Hans_HK", ++ "zh_Hans_HK" ++ }, { ++ "zh_Hans_AQ", ++ "zh_Hans_AQ", ++ "zh_AQ" ++ }, { ++ "zh_Hant", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_Hant_ZZ", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_Hant_CN", ++ "zh_Hant_CN", ++ "zh_Hant_CN" ++ }, { ++ "zh_Hant_AQ", ++ "zh_Hant_AQ", ++ "zh_Hant_AQ" ++ }, { ++ "zh_Moon", ++ "zh_Moon_CN", ++ "zh_Moon" ++ }, { ++ "zh_Moon_ZZ", ++ "zh_Moon_CN", ++ "zh_Moon" ++ }, { ++ "zh_Moon_CN", ++ "zh_Moon_CN", ++ "zh_Moon" ++ }, { ++ "zh_Moon_TW", ++ "zh_Moon_TW", ++ "zh_Moon_TW" ++ }, { ++ "zh_Moon_HK", ++ "zh_Moon_HK", ++ "zh_Moon_HK" ++ }, { ++ "zh_Moon_AQ", ++ "zh_Moon_AQ", ++ "zh_Moon_AQ" ++ }, { ++ "art", ++ "", ++ "" ++ }, { ++ "art_ZZ", ++ "", ++ "" ++ }, { ++ "art_CN", ++ "", ++ "" ++ }, { ++ "art_TW", ++ "", ++ "" ++ }, { ++ "art_HK", ++ "", ++ "" ++ }, { ++ "art_AQ", ++ "", ++ "" ++ }, { ++ "art_Zzzz", ++ "", ++ "" ++ }, { ++ "art_Zzzz_ZZ", ++ "", ++ "" ++ }, { ++ "art_Zzzz_CN", ++ "", ++ "" ++ }, { ++ "art_Zzzz_TW", ++ "", ++ "" ++ }, { ++ "art_Zzzz_HK", ++ "", ++ "" ++ }, { ++ "art_Zzzz_AQ", ++ "", ++ "" ++ }, { ++ "art_Latn", ++ "", ++ "" ++ }, { ++ "art_Latn_ZZ", ++ "", ++ "" ++ }, { ++ "art_Latn_CN", ++ "", ++ "" ++ }, { ++ "art_Latn_TW", ++ "", ++ "" ++ }, { ++ "art_Latn_HK", ++ "", ++ "" ++ }, { ++ "art_Latn_AQ", ++ "", ++ "" ++ }, { ++ "art_Hans", ++ "", ++ "" ++ }, { ++ "art_Hans_ZZ", ++ "", ++ "" ++ }, { ++ "art_Hans_CN", ++ "", ++ "" ++ }, { ++ "art_Hans_TW", ++ "", ++ "" ++ }, { ++ "art_Hans_HK", ++ "", ++ "" ++ }, { ++ "art_Hans_AQ", ++ "", ++ "" ++ }, { ++ "art_Hant", ++ "", ++ "" ++ }, { ++ "art_Hant_ZZ", ++ "", ++ "" ++ }, { ++ "art_Hant_CN", ++ "", ++ "" ++ }, { ++ "art_Hant_TW", ++ "", ++ "" ++ }, { ++ "art_Hant_HK", ++ "", ++ "" ++ }, { ++ "art_Hant_AQ", ++ "", ++ "" ++ }, { ++ "art_Moon", ++ "", ++ "" ++ }, { ++ "art_Moon_ZZ", ++ "", ++ "" ++ }, { ++ "art_Moon_CN", ++ "", ++ "" ++ }, { ++ "art_Moon_TW", ++ "", ++ "" ++ }, { ++ "art_Moon_HK", ++ "", ++ "" ++ }, { ++ "art_Moon_AQ", ++ "", ++ "" ++ }, { ++ "aae_Latn_IT", ++ "aae_Latn_IT", ++ "aae_Latn_IT" ++ }, { ++ "aae_Thai_CO", ++ "aae_Thai_CO", ++ "aae_Thai_CO" ++ }, { ++ "und_CW", ++ "pap_Latn_CW", ++ "pap_CW" ++ }, { ++ "zh_Hant", ++ "zh_Hant_TW", ++ "zh_TW" ++ }, { ++ "zh_Hani", ++ "zh_Hani_CN", ++ "zh_Hani" ++ }, { ++ "und", ++ "en_Latn_US", ++ "en" ++ }, { ++ "und_Thai", ++ "th_Thai_TH", ++ "th" ++ }, { ++ "und_419", ++ "es_Latn_419", ++ "es_419" ++ }, { ++ "und_150", ++ "ru_Cyrl_RU", ++ "ru" ++ }, { ++ "und_AT", ++ "de_Latn_AT", ++ "de_AT" ++ }, { ++ "und_US", ++ "en_Latn_US", ++ "en" ++ } + }; + + for (const auto& item : full_data) { +@@ -1720,7 +3824,11 @@ + Locale res(org); + res.addLikelySubtags(status); + status.errIfFailureAndReset("\"%s\"", org); +- assertEquals("addLikelySubtags", exp, res.getName()); ++ if (exp[0]) { ++ assertEquals("addLikelySubtags", exp, res.getName()); ++ } else { ++ assertEquals("addLikelySubtags", org, res.getName()); ++ } + } + + for (const auto& item : full_data) { +@@ -1729,7 +3837,11 @@ + Locale res(org); + res.minimizeSubtags(status); + status.errIfFailureAndReset("\"%s\"", org); +- assertEquals("minimizeSubtags", exp, res.getName()); ++ if (exp[0]) { ++ assertEquals("minimizeSubtags", exp, res.getName()); ++ } else { ++ assertEquals("minimizeSubtags", org, res.getName()); ++ } + } + } + diff -Nru icu-67.1/debian/patches/series icu-67.1/debian/patches/series --- icu-67.1/debian/patches/series 2020-04-04 11:49:40.000000000 +0200 +++ icu-67.1/debian/patches/series 2020-08-18 16:46:24.000000000 +0200 @@ -4,3 +4,4 @@ hurd-fix.diff layout-test-fix.patch #flaky-tests.patch +Fix-addLikelySubtags-minimizeSubtags.patch

