From 7851f708a3dd43fc1e0e9dd784e7dfe9a70915b2 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Wed, 8 Sep 2021 21:42:54 -0700 Subject: [PATCH] ICU-21581 integrate CLDR release-40-alpha3 to ICU trunk --- icu4c/source/common/uloc_keytype.cpp | 5 - icu4c/source/data/build.xml | 5 +- icu4c/source/data/misc/metaZones.txt | 160 ++++++++++++++++++ icu4c/source/data/misc/timezoneTypes.txt | 158 ----------------- icu4c/source/i18n/zonemeta.cpp | 12 +- .../core/src/com/ibm/icu/impl/ZoneMeta.java | 15 +- .../com/ibm/icu/impl/locale/KeyTypeData.java | 6 - icu4j/main/shared/data/icudata.jar | 2 +- icu4j/main/shared/data/icutzdata.jar | 4 +- icu4j/main/shared/data/testdata.jar | 4 +- .../main/resources/ldml2icu_supplemental.txt | 1 + 11 files changed, 174 insertions(+), 198 deletions(-) diff --git a/icu4c/source/common/uloc_keytype.cpp b/icu4c/source/common/uloc_keytype.cpp index ed76ffa01f3..c289ebe76ff 100644 --- a/icu4c/source/common/uloc_keytype.cpp +++ b/icu4c/source/common/uloc_keytype.cpp @@ -222,11 +222,6 @@ initFromResourceBundle(UErrorCode& sts) { if (U_FAILURE(sts)) { break; } - // TODO: For now we skip loading entries mapping to metazone short ids, - // which have 4 characters. - if (isTZ && uBcpTypeId.length() == 4) { - continue; - } // empty value indicates that BCP type is same with the legacy type. const char* bcpTypeId = legacyTypeId; diff --git a/icu4c/source/data/build.xml b/icu4c/source/data/build.xml index bcc07bd655d..a7efc0675b1 100644 --- a/icu4c/source/data/build.xml +++ b/icu4c/source/data/build.xml @@ -58,12 +58,13 @@ - + - + + diff --git a/icu4c/source/data/misc/metaZones.txt b/icu4c/source/data/misc/metaZones.txt index 6865d9e31a9..d17ce06b1d5 100644 --- a/icu4c/source/data/misc/metaZones.txt +++ b/icu4c/source/data/misc/metaZones.txt @@ -711,6 +711,166 @@ metaZones:table(nofallback){ 001{"America/Whitehorse"} } } + metazoneIds{ + acre{"Acre"} + afce{"Africa_Central"} + afea{"Africa_Eastern"} + afgh{"Afghanistan"} + afso{"Africa_Southern"} + afwe{"Africa_Western"} + alam{"Almaty"} + alas{"Alaska"} + amaz{"Amazon"} + amce{"America_Central"} + amea{"America_Eastern"} + ammo{"America_Mountain"} + ampa{"America_Pacific"} + anad{"Anadyr"} + apia{"Apia"} + aqta{"Aqtau"} + aqto{"Aqtobe"} + arab{"Arabian"} + arge{"Argentina"} + arme{"Armenia"} + arwe{"Argentina_Western"} + atla{"Atlantic"} + auce{"Australia_Central"} + aucw{"Australia_CentralWestern"} + auea{"Australia_Eastern"} + auwe{"Australia_Western"} + azer{"Azerbaijan"} + azor{"Azores"} + bang{"Bangladesh"} + bhut{"Bhutan"} + boli{"Bolivia"} + bras{"Brasilia"} + brun{"Brunei"} + case{"Casey"} + cave{"Cape_Verde"} + cham{"Chamorro"} + chat{"Chatham"} + chil{"Chile"} + chin{"China"} + choi{"Choibalsan"} + chri{"Christmas"} + coco{"Cocos"} + colo{"Colombia"} + cook{"Cook"} + cuba{"Cuba"} + davi{"Davis"} + dumo{"DumontDUrville"} + east{"Easter"} + eati{"East_Timor"} + ecua{"Ecuador"} + euce{"Europe_Central"} + euea{"Europe_Eastern"} + eufe{"Europe_Further_Eastern"} + euwe{"Europe_Western"} + falk{"Falkland"} + fiji{"Fiji"} + frgu{"French_Guiana"} + frso{"French_Southern"} + gala{"Galapagos"} + gamb{"Gambier"} + geor{"Georgia"} + giis{"Gilbert_Islands"} + grea{"Greenland_Eastern"} + grwe{"Greenland_Western"} + guam{"Guam"} + gulf{"Gulf"} + guya{"Guyana"} + haal{"Hawaii_Aleutian"} + hoko{"Hong_Kong"} + hovd{"Hovd"} + ince{"Indonesia_Central"} + indi{"India"} + indo{"Indochina"} + inea{"Indonesia_Eastern"} + inoc{"Indian_Ocean"} + inwe{"Indonesia_Western"} + iran{"Iran"} + irku{"Irkutsk"} + isra{"Israel"} + japa{"Japan"} + kaea{"Kazakhstan_Eastern"} + kamc{"Kamchatka"} + kawe{"Kazakhstan_Western"} + kore{"Korea"} + kosr{"Kosrae"} + kras{"Krasnoyarsk"} + kyrg{"Kyrgystan"} + lank{"Lanka"} + liis{"Line_Islands"} + loho{"Lord_Howe"} + maca{"Macau"} + macq{"Macquarie"} + maga{"Magadan"} + mais{"Marshall_Islands"} + mala{"Malaysia"} + mald{"Maldives"} + marq{"Marquesas"} + maur{"Mauritius"} + maws{"Mawson"} + meno{"Mexico_Northwest"} + mepa{"Mexico_Pacific"} + mgmt{"GMT"} + mong{"Mongolia"} + mosc{"Moscow"} + myan{"Myanmar"} + naur{"Nauru"} + neca{"New_Caledonia"} + nepa{"Nepal"} + newf{"Newfoundland"} + neze{"New_Zealand"} + niue{"Niue"} + noma{"North_Mariana"} + norf{"Norfolk"} + noro{"Noronha"} + novo{"Novosibirsk"} + omsk{"Omsk"} + paki{"Pakistan"} + pala{"Palau"} + pang{"Papua_New_Guinea"} + para{"Paraguay"} + peru{"Peru"} + phil{"Philippines"} + phis{"Phoenix_Islands"} + pimi{"Pierre_Miquelon"} + pitc{"Pitcairn"} + pona{"Ponape"} + pyon{"Pyongyang"} + qyzy{"Qyzylorda"} + reun{"Reunion"} + roth{"Rothera"} + sakh{"Sakhalin"} + sama{"Samara"} + samo{"Samoa"} + seyc{"Seychelles"} + sing{"Singapore"} + soge{"South_Georgia"} + solo{"Solomon"} + suri{"Suriname"} + syow{"Syowa"} + tahi{"Tahiti"} + taip{"Taipei"} + taji{"Tajikistan"} + toke{"Tokelau"} + tong{"Tonga"} + truk{"Truk"} + turk{"Turkmenistan"} + tuva{"Tuvalu"} + urug{"Uruguay"} + uzbe{"Uzbekistan"} + vanu{"Vanuatu"} + vene{"Venezuela"} + vlad{"Vladivostok"} + volg{"Volgograd"} + vost{"Vostok"} + wake{"Wake"} + wall{"Wallis"} + yaku{"Yakutsk"} + yeka{"Yekaterinburg"} + } metazoneInfo{ "Africa:Abidjan"{ { diff --git a/icu4c/source/data/misc/timezoneTypes.txt b/icu4c/source/data/misc/timezoneTypes.txt index a1d4fd708ed..faa02981920 100644 --- a/icu4c/source/data/misc/timezoneTypes.txt +++ b/icu4c/source/data/misc/timezoneTypes.txt @@ -606,168 +606,10 @@ timezoneTypes:table(nofallback){ "Pacific:Truk"{"fmtkk"} "Pacific:Wake"{"umawk"} "Pacific:Wallis"{"wfmau"} - Acre{"acre"} - Afghanistan{"afgh"} - Africa_Central{"afce"} - Africa_Eastern{"afea"} - Africa_Southern{"afso"} - Africa_Western{"afwe"} - Alaska{"alas"} - Almaty{"alam"} - Amazon{"amaz"} - America_Central{"amce"} - America_Eastern{"amea"} - America_Mountain{"ammo"} - America_Pacific{"ampa"} - Anadyr{"anad"} - Apia{"apia"} - Aqtau{"aqta"} - Aqtobe{"aqto"} - Arabian{"arab"} - Argentina{"arge"} - Argentina_Western{"arwe"} - Armenia{"arme"} - Atlantic{"atla"} - Australia_Central{"auce"} - Australia_CentralWestern{"aucw"} - Australia_Eastern{"auea"} - Australia_Western{"auwe"} - Azerbaijan{"azer"} - Azores{"azor"} - Bangladesh{"bang"} - Bhutan{"bhut"} - Bolivia{"boli"} - Brasilia{"bras"} - Brunei{"brun"} CST6CDT{"cst6cdt"} - Cape_Verde{"cave"} - Casey{"case"} - Chamorro{"cham"} - Chatham{"chat"} - Chile{"chil"} - China{"chin"} - Choibalsan{"choi"} - Christmas{"chri"} - Cocos{"coco"} - Colombia{"colo"} - Cook{"cook"} - Cuba{"cuba"} - Davis{"davi"} - DumontDUrville{"dumo"} EST5EDT{"est5edt"} - East_Timor{"eati"} - Easter{"east"} - Ecuador{"ecua"} - Europe_Central{"euce"} - Europe_Eastern{"euea"} - Europe_Further_Eastern{"eufe"} - Europe_Western{"euwe"} - Falkland{"falk"} - Fiji{"fiji"} - French_Guiana{"frgu"} - French_Southern{"frso"} - GMT{"mgmt"} - Galapagos{"gala"} - Gambier{"gamb"} - Georgia{"geor"} - Gilbert_Islands{"giis"} - Greenland_Eastern{"grea"} - Greenland_Western{"grwe"} - Guam{"guam"} - Gulf{"gulf"} - Guyana{"guya"} - Hawaii_Aleutian{"haal"} - Hong_Kong{"hoko"} - Hovd{"hovd"} - India{"indi"} - Indian_Ocean{"inoc"} - Indochina{"indo"} - Indonesia_Central{"ince"} - Indonesia_Eastern{"inea"} - Indonesia_Western{"inwe"} - Iran{"iran"} - Irkutsk{"irku"} - Israel{"isra"} - Japan{"japa"} - Kamchatka{"kamc"} - Kazakhstan_Eastern{"kaea"} - Kazakhstan_Western{"kawe"} - Korea{"kore"} - Kosrae{"kosr"} - Krasnoyarsk{"kras"} - Kyrgystan{"kyrg"} - Lanka{"lank"} - Line_Islands{"liis"} - Lord_Howe{"loho"} MST7MDT{"mst7mdt"} - Macau{"maca"} - Macquarie{"macq"} - Magadan{"maga"} - Malaysia{"mala"} - Maldives{"mald"} - Marquesas{"marq"} - Marshall_Islands{"mais"} - Mauritius{"maur"} - Mawson{"maws"} - Mexico_Northwest{"meno"} - Mexico_Pacific{"mepa"} - Mongolia{"mong"} - Moscow{"mosc"} - Myanmar{"myan"} - Nauru{"naur"} - Nepal{"nepa"} - New_Caledonia{"neca"} - New_Zealand{"neze"} - Newfoundland{"newf"} - Niue{"niue"} - Norfolk{"norf"} - Noronha{"noro"} - North_Mariana{"noma"} - Novosibirsk{"novo"} - Omsk{"omsk"} PST8PDT{"pst8pdt"} - Pakistan{"paki"} - Palau{"pala"} - Papua_New_Guinea{"pang"} - Paraguay{"para"} - Peru{"peru"} - Philippines{"phil"} - Phoenix_Islands{"phis"} - Pierre_Miquelon{"pimi"} - Pitcairn{"pitc"} - Ponape{"pona"} - Pyongyang{"pyon"} - Qyzylorda{"qyzy"} - Reunion{"reun"} - Rothera{"roth"} - Sakhalin{"sakh"} - Samara{"sama"} - Samoa{"samo"} - Seychelles{"seyc"} - Singapore{"sing"} - Solomon{"solo"} - South_Georgia{"soge"} - Suriname{"suri"} - Syowa{"syow"} - Tahiti{"tahi"} - Taipei{"taip"} - Tajikistan{"taji"} - Tokelau{"toke"} - Tonga{"tong"} - Truk{"truk"} - Turkmenistan{"turk"} - Tuvalu{"tuva"} - Uruguay{"urug"} - Uzbekistan{"uzbe"} - Vanuatu{"vanu"} - Venezuela{"vene"} - Vladivostok{"vlad"} - Volgograd{"volg"} - Vostok{"vost"} - Wake{"wake"} - Wallis{"wall"} - Yakutsk{"yaku"} - Yekaterinburg{"yeka"} } } } diff --git a/icu4c/source/i18n/zonemeta.cpp b/icu4c/source/i18n/zonemeta.cpp index 6af2231c777..b8afa4760f1 100644 --- a/icu4c/source/i18n/zonemeta.cpp +++ b/icu4c/source/i18n/zonemeta.cpp @@ -290,13 +290,9 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) { UResourceBundle *rb = ures_getByKey(top, gTypeMapTag, NULL, &tmpStatus); ures_getByKey(rb, gTimezoneTag, rb, &tmpStatus); ures_getByKey(rb, id, rb, &tmpStatus); - int32_t bcp47StrLen = 0; - ures_getString(rb, &bcp47StrLen, &tmpStatus); - if (U_SUCCESS(tmpStatus) && bcp47StrLen!=4) { + if (U_SUCCESS(tmpStatus)) { // type entry (canonical) found // the input is the canonical ID. resolve to const UChar* - // TODO: For now we skip entries mapping to metazone short ids, - // which have 4 characters. canonicalID = TimeZone::findID(tzid); isInputCanonical = TRUE; } @@ -937,11 +933,7 @@ ZoneMeta::getShortIDFromCanonical(const UChar* canonicalID) { ures_getByKey(rb, gTimezoneTag, rb, &status); shortID = ures_getStringByKey(rb, tzidKey, NULL, &status); ures_close(rb); - if (U_FAILURE(status) || (shortID!=nullptr && u_strlen(shortID)==4)) { - // TODO: For now we skip entries mapping to metazone short ids, - // which have 4 characters. - return NULL; - } + return shortID; } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java index 158002f7ed2..5858b480dda 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java @@ -401,13 +401,9 @@ public final class ZoneMeta { UResourceBundle typeMap = keyTypeData.get("typeMap"); UResourceBundle typeKeys = typeMap.get("timezone"); try { - UResourceBundle canonicalEntry = typeKeys.get(tzidKey); - if (canonicalEntry.getString().length() != 4) { - // The given tzid is available in the canonical list - // TODO: For now we skip entries mapping to metazone short ids, - // which have 4 characters. - canonical = tzid; - } + /* UResourceBundle canonicalEntry = */ typeKeys.get(tzidKey); + // The given tzid is available in the canonical list + canonical = tzid; } catch (MissingResourceException e) { // fall through } @@ -884,11 +880,6 @@ public final class ZoneMeta { } catch (MissingResourceException e) { // fall through } - if (shortID!=null && shortID.length()==4) { - // TODO: For now we skip entries mapping to metazone short ids, - // which have 4 characters. - return null; - } return shortID; } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java index baa03b2fa5a..50033b3aab9 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/KeyTypeData.java @@ -340,12 +340,6 @@ public class KeyTypeData { String legacyTypeId = typeMapEntry.getKey(); String bcpTypeId = typeMapEntry.getString(); - // TODO: For now we skip loading entries mapping to metazone short ids, - // which have 4 characters. - if (isTZ && bcpTypeId.length() == 4) { - continue; - } - // special types final char first = legacyTypeId.charAt(0); final boolean isSpecialType = '9' < first && first < 'a' && bcpTypeId.length() == 0; diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar index 2cec2471314..81a0b1a8008 100644 --- a/icu4j/main/shared/data/icudata.jar +++ b/icu4j/main/shared/data/icudata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87b44d8bdf19a56188c51fb4348630396dba560115cd0918f7a89c8d2871a26e +oid sha256:3f402b4fe975401f04a882d775a758d929fe8bc8f48e5343b28f2f52eb02bac8 size 13626217 diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar index 5a6d9bbc0fa..e3df589a761 100644 --- a/icu4j/main/shared/data/icutzdata.jar +++ b/icu4j/main/shared/data/icutzdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abfd47aefce01f45015382e67784908314aac96327071f50768bd2e52b4ad18f -size 96724 +oid sha256:8e10ef2bda758384c97b0f278d73fce925d09c8409908f8e5b465a01c5078010 +size 96207 diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar index b5f74dee612..0425dd7a2b9 100644 --- a/icu4j/main/shared/data/testdata.jar +++ b/icu4j/main/shared/data/testdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1db5e252cd48bb0610d5d2e84ca24de565e4014a9679ea9246b999d5bc0e74b5 -size 826093 +oid sha256:4f0d0fe4550696a62d531ba62608520481f31795390cfc21c813f952938c73c0 +size 826071 diff --git a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt index 9caef9eadc6..4685ba2dc62 100644 --- a/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt +++ b/tools/cldr/cldr-to-icu/src/main/resources/ldml2icu_supplemental.txt @@ -231,6 +231,7 @@ //supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$3 "$2" "9999-12-31 23:59" //supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@from="(%A)"][@to="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<$2> ; values=$4 "$2" "$3" //supplementalData/metaZones/metazoneInfo/timezone[@type="(%W)"]/usesMetazone[@to="(%A)"][@mzone="(%W)"] ; /metazoneInfo/"$1"/<1970-01-01 00:00> ; values=$3 "1970-01-01 00:00" "$2" +//supplementalData/metaZones/metazoneIds/metazoneId[@shortId="(%A)"][@longId="(%A)"][@deprecated="false"] ; /metazoneIds/$1 ; values=$2 //supplementalData/primaryZones/primaryZone[@iso3166="(%W)"] ; /primaryZones/$1 ; values={value}