From d04154833c44b55257f365072234a58eb599ef77 Mon Sep 17 00:00:00 2001 From: DraganBesevic Date: Tue, 13 Aug 2024 15:50:14 -0700 Subject: [PATCH] ICU-22723 Integrate CLDR 46 release alpha0, part 3, source files --- icu4c/source/i18n/number_longnames.cpp | 28 +++ icu4c/source/test/cintltst/ccaltst.c | 10 +- icu4c/source/test/cintltst/cdattst.c | 14 +- icu4c/source/test/cintltst/cldrtest.c | 8 + .../test/cintltst/crelativedateformattest.c | 44 ++-- icu4c/source/test/cintltst/creststn.c | 2 +- icu4c/source/test/intltest/dtfmttst.cpp | 76 +++---- icu4c/source/test/intltest/dtptngts.cpp | 6 +- icu4c/source/test/intltest/numfmtst.cpp | 2 +- icu4c/source/test/intltest/tztest.cpp | 7 +- .../format/GlobalizationPreferencesTest.java | 4 +- .../icu/dev/test/format/DateFormatTest.java | 76 +++---- .../icu/dev/test/format/MeasureUnitTest.java | 214 +++++++++++++++++- .../ibm/icu/dev/test/util/CurrencyTest.java | 4 +- .../ibm/icu/dev/test/util/ULocaleTest.java | 3 +- .../ibm/icu/impl/number/LongNameHandler.java | 17 ++ .../java/com/ibm/icu/util/MeasureUnit.java | 20 +- .../test/calendar/CalendarRegressionTest.java | 2 +- .../dev/test/calendar/IBMCalendarTest.java | 6 +- .../test/format/DateTimeGeneratorTest.java | 6 +- .../format/PersonNameConsistencyTest.java | 1 + .../format/RelativeDateTimeFormatterTest.java | 22 +- .../icu/dev/test/timezone/TimeZoneTest.java | 2 +- tools/cldr/cldr-to-icu/build-icu-data.xml | 16 +- 24 files changed, 432 insertions(+), 158 deletions(-) diff --git a/icu4c/source/i18n/number_longnames.cpp b/icu4c/source/i18n/number_longnames.cpp index f1b2e2a570f6..de6aad7c3e8a 100644 --- a/icu4c/source/i18n/number_longnames.cpp +++ b/icu4c/source/i18n/number_longnames.cpp @@ -9,6 +9,8 @@ #include "unicode/simpleformatter.h" #include "unicode/ures.h" +#include "unicode/plurrule.h" +#include "unicode/strenum.h" #include "ureslocs.h" #include "charstr.h" #include "uresimp.h" @@ -18,6 +20,7 @@ #include #include "cstring.h" #include "util.h" +#include "sharedpluralrules.h" using namespace icu; using namespace icu::number; @@ -519,10 +522,35 @@ void getCurrencyLongNameData(const Locale &locale, const CurrencyUnit ¤cy, // In ICU4J, this method gets a CurrencyData from CurrencyData.provider. // TODO(ICU4J): Implement this without going through CurrencyData, like in ICU4C? PluralTableSink sink(outArray); + // Here all outArray entries are bogus. LocalUResourceBundlePointer unitsBundle(ures_open(U_ICUDATA_CURR, locale.getName(), &status)); if (U_FAILURE(status)) { return; } ures_getAllChildrenWithFallback(unitsBundle.getAlias(), "CurrencyUnitPatterns", sink, status); if (U_FAILURE(status)) { return; } + // Here the outArray[] entries are filled in with any CurrencyUnitPatterns data for locale, + // or if there is no CurrencyUnitPatterns data for locale since the patterns all inherited + // from the "other" pattern in root (which is true for many locales in CLDR 46), then only + // the "other" entry has a currency pattern. So now what we do is: For all valid plural keywords + // for the locale, if the corresponding outArray[] entry is bogus, fill it in from the "other" + // entry. In the longer run, clients of this should instead consider using CurrencyPluralInfo + // (see i18n/unicode/currpinf.h). + UErrorCode localStatus = U_ZERO_ERROR; + const SharedPluralRules *pr = PluralRules::createSharedInstance( + locale, UPLURAL_TYPE_CARDINAL, localStatus); + if (U_SUCCESS(localStatus)) { + LocalPointer keywords((*pr)->getKeywords(localStatus), localStatus); + if (U_SUCCESS(localStatus)) { + const char* keyword; + while (((keyword = keywords->next(nullptr, localStatus)) != nullptr) && U_SUCCESS(localStatus)) { + int32_t index = StandardPlural::indexOrOtherIndexFromString(keyword); + if (index != StandardPlural::Form::OTHER && outArray[index].isBogus()) { + outArray[index].setTo(outArray[StandardPlural::Form::OTHER]); + } + } + } + pr->removeRef(); + } + for (int32_t i = 0; i < StandardPlural::Form::COUNT; i++) { UnicodeString &pattern = outArray[i]; if (pattern.isBogus()) { diff --git a/icu4c/source/test/cintltst/ccaltst.c b/icu4c/source/test/cintltst/ccaltst.c index 33d5c39bf2dd..7741d755ec80 100644 --- a/icu4c/source/test/cintltst/ccaltst.c +++ b/icu4c/source/test/cintltst/ccaltst.c @@ -99,9 +99,9 @@ static const UCalGetTypeTest ucalGetTypeTests[] = { { "th-TH-u-ca-gregory", UCAL_DEFAULT, "gregorian" }, { "ja_JP@calendar=japanese", UCAL_GREGORIAN, "gregorian" }, { "fr_CH", UCAL_DEFAULT, "gregorian" }, - { "fr_SA", UCAL_DEFAULT, "islamic-umalqura" }, - { "fr_CH@rg=sazzzz", UCAL_DEFAULT, "islamic-umalqura" }, - { "fr_CH@rg=sa14", UCAL_DEFAULT, "islamic-umalqura" }, + { "fr_SA", UCAL_DEFAULT, "gregorian" }, + { "fr_CH@rg=sazzzz", UCAL_DEFAULT, "gregorian" }, + { "fr_CH@rg=sa14", UCAL_DEFAULT, "gregorian" }, { "fr_CH@calendar=japanese;rg=sazzzz", UCAL_DEFAULT, "japanese" }, { "fr_CH@rg=twcyi", UCAL_DEFAULT, "gregorian" }, // test for ICU-22364 { "fr_CH@rg=ugw", UCAL_DEFAULT, "gregorian" }, // test for ICU-22364 @@ -1634,7 +1634,7 @@ static void TestGetKeywordValuesForLocale(void) { { "en@calendar=islamic", "gregorian", NULL, NULL, NULL, NULL }, { "zh_TW", "gregorian", "roc", "chinese", NULL, NULL }, { "ar_IR", "persian", "gregorian", "islamic", "islamic-civil", "islamic-tbla" }, - { "th@rg=SAZZZZ", "islamic-umalqura", "gregorian", "islamic", "islamic-rgsa", NULL }, + { "th@rg=SAZZZZ", "gregorian", "islamic-umalqura", "islamic", "islamic-rgsa", NULL }, // tests for ICU-22364 { "zh_CN@rg=TW", "gregorian", "chinese", NULL, NULL, NULL }, // invalid subdivision code @@ -2860,7 +2860,7 @@ TestGetIanaTimeZoneID(void) { {u"Europe/Zaporozhye", u"Europe/Kyiv"}, {u"Etc/GMT-1", u"Etc/GMT-1"}, {u"Etc/GMT+20", UNKNOWN}, - {u"PST8PDT", u"PST8PDT"}, + {u"PST8PDT", u"America/Los_Angeles"}, {u"GMT-08:00", UNKNOWN}, {0, 0} }; diff --git a/icu4c/source/test/cintltst/cdattst.c b/icu4c/source/test/cintltst/cdattst.c index ec2af5a0dd4e..cbea5085ff1d 100644 --- a/icu4c/source/test/cintltst/cdattst.c +++ b/icu4c/source/test/cintltst/cdattst.c @@ -2089,8 +2089,8 @@ static void TestHourCycle(void) { // test some locales for which we have data u"en_US", u"Tuesday, March 16, 1943 at 3:45:32 PM", u"en_CA", u"Tuesday, March 16, 1943 at 3:45:32 p.m.", - u"en_GB", u"Tuesday 16 March 1943 at 15:45:32", - u"en_AU", u"Tuesday 16 March 1943 at 3:45:32 pm", + u"en_GB", u"Tuesday, 16 March 1943 at 15:45:32", + u"en_AU", u"Tuesday, 16 March 1943 at 3:45:32 pm", // test a couple locales for which we don't have specific locale files (we should still get the correct hour cycle) u"en_CO", u"Tuesday, March 16, 1943 at 3:45:32 PM", u"en_MX", u"Tuesday, March 16, 1943 at 3:45:32 PM", @@ -2098,15 +2098,15 @@ static void TestHourCycle(void) { u"en_US@rg=GBzzzz", u"Tuesday, March 16, 1943 at 15:45:32", u"en_US@rg=CAzzzz", u"Tuesday, March 16, 1943 at 3:45:32 PM", u"en_CA@rg=USzzzz", u"Tuesday, March 16, 1943 at 3:45:32 p.m.", - u"en_GB@rg=USzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm", - u"en_GB@rg=CAzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm", - u"en_GB@rg=AUzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm", + u"en_GB@rg=USzzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm", + u"en_GB@rg=CAzzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm", + u"en_GB@rg=AUzzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm", // test that the hc ("hours") subtag does the right thing u"en_US@hours=h23", u"Tuesday, March 16, 1943 at 15:45:32", - u"en_GB@hours=h12", u"Tuesday 16 March 1943 at 3:45:32 pm", + u"en_GB@hours=h12", u"Tuesday, 16 March 1943 at 3:45:32 pm", // test that the rg and hc subtags do the right thing when used together u"en_US@rg=GBzzzz;hours=h12", u"Tuesday, March 16, 1943 at 3:45:32 PM", - u"en_GB@rg=USzzzz;hours=h23", u"Tuesday 16 March 1943 at 15:45:32", + u"en_GB@rg=USzzzz;hours=h23", u"Tuesday, 16 March 1943 at 15:45:32", }; for (int32_t i = 0; i < UPRV_LENGTHOF(testCases); i += 2) { diff --git a/icu4c/source/test/cintltst/cldrtest.c b/icu4c/source/test/cintltst/cldrtest.c index 77a2a51584c6..6f10c73c496b 100644 --- a/icu4c/source/test/cintltst/cldrtest.c +++ b/icu4c/source/test/cintltst/cldrtest.c @@ -1016,6 +1016,10 @@ static void VerifyTranslation(void) { log_knownIssue("CLDR-17203", "Some day names in kxv(_Deva)? use chars not in exemplars")) { end = 0; } + if (uprv_strncmp(currLoc,"ak",2) == 0 && + log_knownIssue("CLDR-17852", "Some month names in ax(_GH) use chars not in exemplars")) { + end = 0; + } for (idx = 0; idx < end; idx++) { const UChar *fromBundleStr = ures_getStringByIndex(resArray, idx, &langSize, &errorCode); @@ -1057,6 +1061,10 @@ static void VerifyTranslation(void) { log_knownIssue("CLDR-17203", "Some month names in kxv(_Deva)? use chars not in exemplars")) { end = 0; } + if (uprv_strncmp(currLoc,"ak",2) == 0 && + log_knownIssue("CLDR-17852", "Some month names in ax(_GH) use chars not in exemplars")) { + end = 0; + } for (idx = 0; idx < end; idx++) { const UChar *fromBundleStr = ures_getStringByIndex(resArray, idx, &langSize, &errorCode); diff --git a/icu4c/source/test/cintltst/crelativedateformattest.c b/icu4c/source/test/cintltst/crelativedateformattest.c index 7d6b3aff73f3..6f94fe45f62a 100644 --- a/icu4c/source/test/cintltst/crelativedateformattest.c +++ b/icu4c/source/test/cintltst/crelativedateformattest.c @@ -258,31 +258,31 @@ static const FieldsDat fr_attrDef_long_midSent_day[kNumOffsets*2] = { static const char* ak_decDef_long_stdAlon_sec[kNumOffsets*2] = { // falls back to root /* text numeric */ - "-5 s", "-5 s", /* -5 */ - "-2.2 s", "-2.2 s", /* -2.2 */ - "-2 s", "-2 s", /* -2 */ - "-1 s", "-1 s", /* -1 */ - "-0.7 s", "-0.7 s", /* -0.7 */ - "now", "-0 s", /* -0 */ - "now", "+0 s", /* 0 */ - "+0.7 s", "+0.7 s", /* 0.7 */ - "+1 s", "+1 s", /* 1 */ - "+2 s", "+2 s", /* 2 */ - "+5 s", "+5 s", /* 5 */ + "nnibuo 5 a atwam", "nnibuo 5 a atwam", /* -5 */ + "nnibuo 2.2 a atwam", "nnibuo 2.2 a atwam", /* -2.2 */ + "nnibuo 2 a atwam", "nnibuo 2 a atwam", /* -2 */ + "anibuo 1 a atwam", "anibuo 1 a atwam", /* -1 */ + "nnibuo 0.7 a atwam", "nnibuo 0.7 a atwam", /* -0.7 */ + "seesei", "anibuo 0 a atwam", /* -0 */ + "seesei", "anibuo 0 mu", /* 0 */ + "nnibuo 0.7 mu", "nnibuo 0.7 mu", /* 0.7 */ + "anibuo 1 mu", "anibuo 1 mu", /* 1 */ + "nnibuo 2 mu", "nnibuo 2 mu", /* 2 */ + "nnibuo 5 mu", "nnibuo 5 mu", /* 5 */ }; static const FieldsDat ak_attrDef_long_stdAlon_sec[kNumOffsets*2] = { - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 4}, {UDAT_REL_NUMERIC_FIELD, 1, 4}, - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 4}, {UDAT_REL_NUMERIC_FIELD, 1, 4}, - { -1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - { -1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 4}, {UDAT_REL_NUMERIC_FIELD, 1, 4}, - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, - {UDAT_REL_NUMERIC_FIELD, 1, 2}, {UDAT_REL_NUMERIC_FIELD, 1, 2}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 10}, {UDAT_REL_NUMERIC_FIELD, 7, 10}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 10}, {UDAT_REL_NUMERIC_FIELD, 7, 10}, + { -1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + { -1, -1, -1}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 10}, {UDAT_REL_NUMERIC_FIELD, 7, 10}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, + {UDAT_REL_NUMERIC_FIELD, 7, 8}, {UDAT_REL_NUMERIC_FIELD, 7, 8}, }; static const char* enIN_decDef_short_midSent_weds[kNumOffsets*2] = { diff --git a/icu4c/source/test/cintltst/creststn.c b/icu4c/source/test/cintltst/creststn.c index c3d935d4ba81..32ec58c82c77 100644 --- a/icu4c/source/test/cintltst/creststn.c +++ b/icu4c/source/test/cintltst/creststn.c @@ -2185,7 +2185,7 @@ static void TestFallback(void) UResourceBundle* myResB = ures_open(NULL,"no_NO_NY",&err); UResourceBundle* resLocID = ures_getByKey(myResB, "Version", NULL, &err); const UChar* version = NULL; - static const UChar versionStr[] = u"45"; // 45 in nn_NO or in a parent bundle/root + static const UChar versionStr[] = u"46"; // 45 in nn_NO or in a parent bundle/root if(U_FAILURE(err)) { log_data_err("Expected success when trying to test no_NO_NY aliased to nn_NO for Version " diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp index 2e49cf4d49d4..8476deb7d920 100644 --- a/icu4c/source/test/intltest/dtfmttst.cpp +++ b/icu4c/source/test/intltest/dtfmttst.cpp @@ -3309,68 +3309,68 @@ void DateFormatTest::TestTimeZoneDisplayName() { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-8", "-8:00" }, - { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, + { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u1353\\u1235\\u134a\\u12ad", "-8:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-7", "-7:00" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u120E\\u1235 \\u12A3\\u1295\\u1300\\u1208\\u1235", "America/Los_Angeles" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u120E\\u1235 \\u12A3\\u1295\\u1300\\u1208\\u1235", "America/Los_Angeles" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12d3\\u120d\\u1272 \\u130d\\u12d8 \\u1353\\u1235\\u134a\\u12ad", "-7:00" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u120e\\u1235 \\u12a3\\u1295\\u1300\\u1208\\u1235", "America/Los_Angeles" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u1353\\u1235\\u134a\\u12ad \\u130d\\u12d8", "America/Los_Angeles" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "-3:00" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1265\\u12C8\\u1296\\u1235 \\u12A3\\u12ED\\u1228\\u1235", "America/Buenos_Aires" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "America/Buenos_Aires" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "-3:00" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1265\\u12c8\\u1296\\u1235 \\u12a3\\u12ed\\u1228\\u1235", "America/Buenos_Aires" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "America/Buenos_Aires" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "-3:00" }, + { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1265\\u12C8\\u1296\\u1235 \\u12A3\\u12ED\\u1228\\u1235", "America/Buenos_Aires" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u121D\\u12F1\\u1265 \\u130D\\u12DC \\u12A3\\u122D\\u1300\\u1295\\u1272\\u1293", "America/Buenos_Aires" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "-3:00" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1265\\u12c8\\u1296\\u1235 \\u12a3\\u12ed\\u1228\\u1235", "America/Buenos_Aires" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a3\\u122d\\u1300\\u1295\\u1272\\u1293", "America/Buenos_Aires" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, - { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, + { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u130d\\u12d8 \\u12a9\\u1263", "-5:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u12A9\\u1263", "America/Havana" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u12A9\\u1263", "America/Havana" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12d3\\u120d\\u1272 \\u130d\\u12d8 \\u12a9\\u1263", "-4:00" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u12a9\\u1263", "America/Havana" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u12a9\\u1263 \\u130d\\u12d8", "America/Havana" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, - { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, + { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u1218\\u12d3\\u120d\\u1272 \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "+11:00" }, { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1232\\u12F5\\u1292", "Australia/Sydney" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u1232\\u12F5\\u1292", "Australia/Sydney" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u1218\\u12f0\\u1260\\u129b \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "+10:00" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1232\\u12f5\\u1292", "Australia/Sydney" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "Australia/Sydney" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, - { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, + { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u1218\\u12d3\\u120d\\u1272 \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "+11:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1232\\u12F5\\u1292", "Australia/Sydney" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u1232\\u12F5\\u1292", "Australia/Sydney" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u1218\\u12f0\\u1260\\u129b \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "+10:00" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1232\\u12f5\\u1292", "Australia/Sydney" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u121d\\u1265\\u122b\\u1253\\u12ca \\u12a3\\u12cd\\u1235\\u1275\\u122b\\u120d\\u12eb \\u130d\\u12d8", "Australia/Sydney" }, { "ti", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, { "ti", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, @@ -3380,8 +3380,8 @@ void DateFormatTest::TestTimeZoneDisplayName() { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u130D\\u12DC \\u12AD\\u1228\\u121D\\u1272 \\u1265\\u122A\\u1323\\u1295\\u12EB", "+1:00" }, - { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1265\\u122A\\u1323\\u1295\\u12EB", "Europe/London" }, - { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u1265\\u122A\\u1323\\u1295\\u12EB", "Europe/London" }, + { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1265\\u122a\\u1323\\u1295\\u12eb", "Europe/London" }, + { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u130d\\u12d8 \\u1265\\u122a\\u1323\\u1295\\u12eb", "Europe/London" }, { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, @@ -3398,13 +3398,13 @@ void DateFormatTest::TestTimeZoneDisplayName() { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, - { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, + { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u1205\\u1295\\u12f5 \\u130d\\u12d8", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u130D\\u12DC \\u1205\\u1295\\u12F2", "Alna/Calcutta" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u130D\\u12DC \\u1205\\u1295\\u12F2", "Asia/Calcutta" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u1205\\u1295\\u12f5 \\u130d\\u12d8", "+5:30" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u130d\\u12d8 \\u1205\\u1295\\u12f2", "Alna/Calcutta" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u1293\\u12ed \\u1218\\u12f0\\u1260\\u129b \\u1205\\u1295\\u12f5 \\u130d\\u12d8", "Asia/Calcutta" }, // Ticket#8589 Partial location name to use country name if the zone is the golden // zone for the time zone's country. @@ -5830,8 +5830,8 @@ void DateFormatTest::TestHourCycle() { // test some locales for which we have data { "en-us", u"Tuesday, March 16, 1943 at 3:45:32 PM" }, { "en-ca", u"Tuesday, March 16, 1943 at 3:45:32 p.m." }, - { "en-gb", u"Tuesday 16 March 1943 at 15:45:32" }, - { "en-au", u"Tuesday 16 March 1943 at 3:45:32 pm" }, + { "en-gb", u"Tuesday, 16 March 1943 at 15:45:32" }, + { "en-au", u"Tuesday, 16 March 1943 at 3:45:32 pm" }, // test a couple locales for which we don't have specific locale files (we should still get the correct hour cycle) { "en-co", u"Tuesday, March 16, 1943 at 3:45:32 PM" }, { "en-mx", u"Tuesday, March 16, 1943 at 3:45:32 PM" }, @@ -5839,15 +5839,15 @@ void DateFormatTest::TestHourCycle() { { "en-us-u-rg-gbzzzz", u"Tuesday, March 16, 1943 at 15:45:32" }, { "en-us-u-rg-cazzzz", u"Tuesday, March 16, 1943 at 3:45:32 PM" }, { "en-ca-u-rg-uszzzz", u"Tuesday, March 16, 1943 at 3:45:32 p.m." }, - { "en-gb-u-rg-uszzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" }, - { "en-gb-u-rg-cazzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" }, - { "en-gb-u-rg-auzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" }, + { "en-gb-u-rg-uszzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm" }, + { "en-gb-u-rg-cazzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm" }, + { "en-gb-u-rg-auzzzz", u"Tuesday, 16 March 1943 at 3:45:32 pm" }, // test that the hc ("hours") subtag does the right thing { "en-us-u-hc-h23", u"Tuesday, March 16, 1943 at 15:45:32" }, - { "en-gb-u-hc-h12", u"Tuesday 16 March 1943 at 3:45:32 pm" }, + { "en-gb-u-hc-h12", u"Tuesday, 16 March 1943 at 3:45:32 pm" }, // test that the rg and hc subtags do the right thing when used together { "en-us-u-rg-gbzzzz-hc-h12", u"Tuesday, March 16, 1943 at 3:45:32 PM" }, - { "en-gb-u-rg-uszzzz-hc-h23", u"Tuesday 16 March 1943 at 15:45:32" }, + { "en-gb-u-rg-uszzzz-hc-h23", u"Tuesday, 16 March 1943 at 15:45:32" }, }; for (int32_t i = 0; i < UPRV_LENGTHOF(TEST_CASES); i++) { diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp index bcec7c3f3769..2adaffd1e8e6 100644 --- a/icu4c/source/test/intltest/dtptngts.cpp +++ b/icu4c/source/test/intltest/dtptngts.cpp @@ -164,9 +164,9 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("1.1999"), // 00: yM (fixed expected result per ticket:6626:) UnicodeString("tammi 1999"), // 01: yMMM UnicodeString("13.1.1999"), // 02: yMd - UnicodeString("13. tammik. 1999"), // 03: yMMMd + UnicodeString("13.1.1999"), // 03: yMMMd UnicodeString("13.1."), // 04: Md - UnicodeString("13. tammik."), // 05: MMMd + UnicodeString("13.1."), // 05: MMMd UnicodeString("13. tammikuuta"), // 06: MMMMd UnicodeString("1. nelj. 1999"), // 07: yQQQ UnicodeString(u"11.58\u202Fip.", -1), // 08: hhmm @@ -174,7 +174,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) UnicodeString("23.58"), // 10: jjmm UnicodeString("58.59"), // 11: mmss UnicodeString("tammikuu 1999"), // 12: yyyyMMMM - UnicodeString("ke 13. tammik."), // 13: MMMEd -> EEE d. MMM + UnicodeString("ke 13.1."), // 13: MMMEd -> EEE d. MMM UnicodeString("ke 13."), // 14: Ed -> ccc d. UnicodeString("23.58.59,123"), // 15: jmmssSSS -> "H.mm.ss,SSS" UnicodeString("23.58"), // 16: JJmm diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp index 6ca31b8db658..5e86f1ec0f5b 100644 --- a/icu4c/source/test/intltest/numfmtst.cpp +++ b/icu4c/source/test/intltest/numfmtst.cpp @@ -2108,7 +2108,7 @@ void NumberFormatTest::TestCurrencyNames() { assertTrue("ucurr_getName (en_US default)", U_USING_DEFAULT_WARNING == ec || U_USING_FALLBACK_WARNING == ec, true); - ucurr_getName(CAD, "ti", UCURR_LONG_NAME, &isChoiceFormat, + ucurr_getName(CAD, "to", UCURR_LONG_NAME, &isChoiceFormat, &len, &ec); assertTrue("ucurr_getName (ti default)", U_USING_DEFAULT_WARNING == ec, true); diff --git a/icu4c/source/test/intltest/tztest.cpp b/icu4c/source/test/intltest/tztest.cpp index 9a1d1af8a3e6..9b8dc7701c23 100644 --- a/icu4c/source/test/intltest/tztest.cpp +++ b/icu4c/source/test/intltest/tztest.cpp @@ -1342,7 +1342,6 @@ TimeZoneTest::TestAliasedNames() {"Chile/Continental", "America/Santiago"}, {"Chile/EasterIsland", "Pacific/Easter"}, {"Cuba", "America/Havana"}, - {"EST", "Etc/GMT+5"}, {"Egypt", "Africa/Cairo"}, {"Eire", "Europe/Dublin"}, {"Etc/GMT+0", "Etc/GMT"}, @@ -1362,7 +1361,6 @@ TimeZoneTest::TestAliasedNames() {"GMT-0", "Etc/GMT"}, {"GMT0", "Etc/GMT"}, {"Greenwich", "Etc/GMT"}, - {"HST", "Etc/GMT+10"}, {"Hongkong", "Asia/Hong_Kong"}, {"Iceland", "Atlantic/Reykjavik"}, {"Iran", "Asia/Tehran"}, @@ -1371,7 +1369,6 @@ TimeZoneTest::TestAliasedNames() {"Japan", "Asia/Tokyo"}, {"Kwajalein", "Pacific/Kwajalein"}, {"Libya", "Africa/Tripoli"}, - {"MST", "Etc/GMT+7"}, {"Mexico/BajaNorte", "America/Tijuana"}, {"Mexico/BajaSur", "America/Mazatlan"}, {"Mexico/General", "America/Mexico_City"}, @@ -1454,7 +1451,7 @@ TimeZoneTest::TestAliasedNames() from->getDisplayName(fromName); to->getDisplayName(toName); if(fromName.compare(toName) != 0) { - errln("Fail: Expected "+toName+" but got " + fromName); + errln("Fail: Expected " + toName + " but got " + fromName + " for index: "+ i); } } delete from; @@ -2669,7 +2666,7 @@ void TimeZoneTest::TestGetIanaID() { {u"Europe/Zaporozhye", u"Europe/Kyiv"}, {u"Etc/GMT-1", u"Etc/GMT-1"}, {u"Etc/GMT+20", UNKNOWN}, - {u"PST8PDT", u"PST8PDT"}, + {u"PST8PDT", u"America/Los_Angeles"}, {u"GMT-08:00", UNKNOWN}, {nullptr, nullptr} }; diff --git a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java index 7831ea9582e0..503b9c18eac8 100644 --- a/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java +++ b/icu4j/main/collate/src/test/java/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java @@ -1222,7 +1222,7 @@ public void TestDateFormat() { // Date - full df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE); pattern = ((SimpleDateFormat)df).toPattern(); - if (!pattern.equals("EEEE d MMMM y")) { + if (!pattern.equals("EEEE, d MMMM y")) { errln("FAIL: FULL date pattern is " + pattern + " Expected: EEEE, d MMMM y"); } @@ -1278,7 +1278,7 @@ public void TestDateFormat() { // Date/Time - full df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_FULL); pattern = ((SimpleDateFormat)df).toPattern(); - if (!pattern.equals("EEEE d MMMM y 'at' HH:mm:ss zzzz")) { + if (!pattern.equals("EEEE, d MMMM y 'at' HH:mm:ss zzzz")) { errln("FAIL: FULL date/time pattern is " + pattern + " Expected: EEEE, d MMMM y 'at' HH:mm:ss zzzz"); } diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java index 4e9163fe45db..f972ee709cd1 100644 --- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java +++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/DateFormatTest.java @@ -1530,68 +1530,68 @@ public void TestTimeZoneInLocale() { { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-8", "-8:00" }, - { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, + { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u1353\u1235\u134a\u12ad", "-8:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-7", "-7:00" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u120E\u1235 \u12A3\u1295\u1300\u1208\u1235", "America/Los_Angeles" }, - { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u120E\u1235 \u12A3\u1295\u1300\u1208\u1235", "America/Los_Angeles" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12d3\u120d\u1272 \u130d\u12d8 \u1353\u1235\u134a\u12ad", "-7:00" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u120e\u1235 \u12a3\u1295\u1300\u1208\u1235", "America/Los_Angeles" }, + { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u1353\u1235\u134a\u12ad \u130d\u12d8", "America/Los_Angeles" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "-3:00" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "-3:00" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1265\u12C8\u1296\u1235 \u12A3\u12ED\u1228\u1235", "America/Buenos_Aires" }, - { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "America/Buenos_Aires" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "-3:00" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1265\u12c8\u1296\u1235 \u12a3\u12ed\u1228\u1235", "America/Buenos_Aires" }, + { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "America/Buenos_Aires" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "-3:00" }, + { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "-3:00" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1265\u12C8\u1296\u1235 \u12A3\u12ED\u1228\u1235", "America/Buenos_Aires" }, - { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u121D\u12F1\u1265 \u130D\u12DC \u12A3\u122D\u1300\u1295\u1272\u1293", "America/Buenos_Aires" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "-3:00" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1265\u12c8\u1296\u1235 \u12a3\u12ed\u1228\u1235", "America/Buenos_Aires" }, + { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a3\u122d\u1300\u1295\u1272\u1293", "America/Buenos_Aires" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, { "ti", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, - { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, + { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u130d\u12d8 \u12a9\u1263", "-5:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, { "ti", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u12A9\u1263", "America/Havana" }, - { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u12A9\u1263", "America/Havana" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12d3\u120d\u1272 \u130d\u12d8 \u12a9\u1263", "-4:00" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u12a9\u1263", "America/Havana" }, + { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u12a9\u1263 \u130d\u12d8", "America/Havana" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, - { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, + { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u1218\u12d3\u120d\u1272 \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "+11:00" }, { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1232\u12F5\u1292", "Australia/Sydney" }, - { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u1232\u12F5\u1292", "Australia/Sydney" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u1218\u12f0\u1260\u129b \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "+10:00" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1232\u12f5\u1292", "Australia/Sydney" }, + { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "Australia/Sydney" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, - { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, + { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u1218\u12d3\u120d\u1272 \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "+11:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1232\u12F5\u1292", "Australia/Sydney" }, - { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u1232\u12F5\u1292", "Australia/Sydney" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u1218\u12f0\u1260\u129b \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "+10:00" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1232\u12f5\u1292", "Australia/Sydney" }, + { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u121d\u1265\u122b\u1253\u12ca \u12a3\u12cd\u1235\u1275\u122b\u120d\u12eb \u130d\u12d8", "Australia/Sydney" }, { "ti", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, { "ti", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, @@ -1601,8 +1601,8 @@ public void TestTimeZoneInLocale() { { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\u130D\u12DC \u12AD\u1228\u121D\u1272 \u1265\u122A\u1323\u1295\u12EB", "+1:00" }, - { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1265\u122A\u1323\u1295\u12EB", "Europe/London" }, - { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u1265\u122A\u1323\u1295\u12EB", "Europe/London" }, + { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1265\u122a\u1323\u1295\u12eb", "Europe/London" }, + { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u130d\u12d8 \u1265\u122a\u1323\u1295\u12eb", "Europe/London" }, { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, @@ -1619,13 +1619,13 @@ public void TestTimeZoneInLocale() { { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, - { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, + { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u1205\u1295\u12f5 \u130d\u12d8", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u130D\u12DC \u1205\u1295\u12F2", "Asia/Calcutta" }, - { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u130D\u12DC \u1205\u1295\u12F2", "Asia/Calcutta" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u1205\u1295\u12f5 \u130d\u12d8", "+5:30" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u130d\u12d8 \u1205\u1295\u12f2", "Alna/Calcutta" }, + { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u1293\u12ed \u1218\u12f0\u1260\u129b \u1205\u1295\u12f5 \u130d\u12d8", "Asia/Calcutta" }, // Ticket#8589 Partial location name to use country name if the zone is the golden // zone for the time zone's country. @@ -5699,8 +5699,8 @@ public void TestHourCycle() { // test some locales for which we have data { "en-us", "Tuesday, March 16, 1943 at 3:45:32\u202fPM" }, { "en-ca", "Tuesday, March 16, 1943 at 3:45:32\u202fp.m." }, - { "en-gb", "Tuesday 16 March 1943 at 15:45:32" }, - { "en-au", "Tuesday 16 March 1943 at 3:45:32\u202fpm" }, + { "en-gb", "Tuesday, 16 March 1943 at 15:45:32" }, + { "en-au", "Tuesday, 16 March 1943 at 3:45:32\u202fpm" }, // test a couple locales for which we don't have specific locale files (we should still get the correct hour cycle) { "en-co", "Tuesday, March 16, 1943 at 3:45:32\u202fPM" }, { "en-mx", "Tuesday, March 16, 1943 at 3:45:32 PM" }, @@ -5708,15 +5708,15 @@ public void TestHourCycle() { { "en-us-u-rg-gbzzzz", "Tuesday, March 16, 1943 at 15:45:32" }, { "en-us-u-rg-cazzzz", "Tuesday, March 16, 1943 at 3:45:32\u202fPM" }, { "en-ca-u-rg-uszzzz", "Tuesday, March 16, 1943 at 3:45:32\u202fp.m." }, - { "en-gb-u-rg-uszzzz", "Tuesday 16 March 1943 at 3:45:32\u202fpm" }, - { "en-gb-u-rg-cazzzz", "Tuesday 16 March 1943 at 3:45:32\u202fpm" }, - { "en-gb-u-rg-auzzzz", "Tuesday 16 March 1943 at 3:45:32\u202fpm" }, + { "en-gb-u-rg-uszzzz", "Tuesday, 16 March 1943 at 3:45:32\u202fpm" }, + { "en-gb-u-rg-cazzzz", "Tuesday, 16 March 1943 at 3:45:32\u202fpm" }, + { "en-gb-u-rg-auzzzz", "Tuesday, 16 March 1943 at 3:45:32\u202fpm" }, // test that the hc ("hours") subtag does the right thing { "en-us-u-hc-h23", "Tuesday, March 16, 1943 at 15:45:32" }, - { "en-gb-u-hc-h12", "Tuesday 16 March 1943 at 3:45:32\u202fpm" }, + { "en-gb-u-hc-h12", "Tuesday, 16 March 1943 at 3:45:32\u202fpm" }, // test that the rg and hc subtags do the right thing when used together { "en-us-u-rg-gbzzzz-hc-h12", "Tuesday, March 16, 1943 at 3:45:32\u202fPM" }, - { "en-gb-u-rg-uszzzz-hc-h23", "Tuesday 16 March 1943 at 15:45:32" }, + { "en-gb-u-rg-uszzzz-hc-h23", "Tuesday, 16 March 1943 at 15:45:32" }, }; for (String[] testCase : TEST_CASES) { diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java index 1a29c1b536d7..06b4e4b3919a 100644 --- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java +++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/format/MeasureUnitTest.java @@ -85,7 +85,7 @@ public int compareTo(OrderedPair other) { } } - private static final String[] DRAFT_VERSIONS = {"73", "74"}; + private static final String[] DRAFT_VERSIONS = {"75", "76"}; private static final HashSet DRAFT_VERSION_SET = new HashSet<>(); @@ -326,10 +326,10 @@ public void testZZZ() { // various generateXXX calls go here, see // docs/processes/release/tasks/updating-measure-unit.md // use this test to run each of the following in succession - //generateConstants("74"); // for MeasureUnit.java, update generated MeasureUnit constants - //generateBackwardCompatibilityTest("74"); // for MeasureUnitTest.java, create TestCompatible74 - //generateCXXHConstants("74"); // for measunit.h, update generated createXXX methods - //generateCXXConstants(); // for measunit.cpp, update generated code + //generateConstants("76"); // for MeasureUnit.java, update generated MeasureUnit constants + //generateBackwardCompatibilityTest("76"); // for MeasureUnitTest.java, create TestCompatible74 + //generateCXXHConstants("76"); // for measunit.h, update generated createXXX methods + generateCXXConstants(); // for measunit.cpp, update generated code //generateCXXBackwardCompatibilityTest("74"); // for measfmttest.cpp, create TestCompatible74 //updateJAVAVersions("74"); // for MeasureUnitTest.java, JAVA_VERSIONS } @@ -2872,6 +2872,205 @@ public void TestCompatible74() { assertEquals("", 190, units.length); } + public void TestCompatible76() { + MeasureUnit[] units = { + MeasureUnit.G_FORCE, + MeasureUnit.METER_PER_SECOND_SQUARED, + MeasureUnit.ARC_MINUTE, + MeasureUnit.ARC_SECOND, + MeasureUnit.DEGREE, + MeasureUnit.RADIAN, + MeasureUnit.REVOLUTION_ANGLE, + MeasureUnit.ACRE, + MeasureUnit.DUNAM, + MeasureUnit.HECTARE, + MeasureUnit.SQUARE_CENTIMETER, + MeasureUnit.SQUARE_FOOT, + MeasureUnit.SQUARE_INCH, + MeasureUnit.SQUARE_KILOMETER, + MeasureUnit.SQUARE_METER, + MeasureUnit.SQUARE_MILE, + MeasureUnit.SQUARE_YARD, + MeasureUnit.ITEM, + MeasureUnit.KARAT, + MeasureUnit.MILLIGRAM_OFGLUCOSE_PER_DECILITER, + MeasureUnit.MILLIGRAM_PER_DECILITER, + MeasureUnit.MILLIMOLE_PER_LITER, + MeasureUnit.MOLE, + MeasureUnit.PERCENT, + MeasureUnit.PERMILLE, + MeasureUnit.PART_PER_MILLION, + MeasureUnit.PERMYRIAD, + MeasureUnit.PORTION_PER_1E9, + MeasureUnit.LITER_PER_100KILOMETERS, + MeasureUnit.LITER_PER_KILOMETER, + MeasureUnit.MILE_PER_GALLON, + MeasureUnit.MILE_PER_GALLON_IMPERIAL, + MeasureUnit.BIT, + MeasureUnit.BYTE, + MeasureUnit.GIGABIT, + MeasureUnit.GIGABYTE, + MeasureUnit.KILOBIT, + MeasureUnit.KILOBYTE, + MeasureUnit.MEGABIT, + MeasureUnit.MEGABYTE, + MeasureUnit.PETABYTE, + MeasureUnit.TERABIT, + MeasureUnit.TERABYTE, + MeasureUnit.CENTURY, + MeasureUnit.DAY, + MeasureUnit.DAY_PERSON, + MeasureUnit.DECADE, + MeasureUnit.HOUR, + MeasureUnit.MICROSECOND, + MeasureUnit.MILLISECOND, + MeasureUnit.MINUTE, + MeasureUnit.MONTH, + MeasureUnit.MONTH_PERSON, + MeasureUnit.NANOSECOND, + MeasureUnit.NIGHT, + MeasureUnit.QUARTER, + MeasureUnit.SECOND, + MeasureUnit.WEEK, + MeasureUnit.WEEK_PERSON, + MeasureUnit.YEAR, + MeasureUnit.YEAR_PERSON, + MeasureUnit.AMPERE, + MeasureUnit.MILLIAMPERE, + MeasureUnit.OHM, + MeasureUnit.VOLT, + MeasureUnit.BRITISH_THERMAL_UNIT, + MeasureUnit.CALORIE, + MeasureUnit.ELECTRONVOLT, + MeasureUnit.FOODCALORIE, + MeasureUnit.JOULE, + MeasureUnit.KILOCALORIE, + MeasureUnit.KILOJOULE, + MeasureUnit.KILOWATT_HOUR, + MeasureUnit.THERM_US, + MeasureUnit.KILOWATT_HOUR_PER_100_KILOMETER, + MeasureUnit.NEWTON, + MeasureUnit.POUND_FORCE, + MeasureUnit.GIGAHERTZ, + MeasureUnit.HERTZ, + MeasureUnit.KILOHERTZ, + MeasureUnit.MEGAHERTZ, + MeasureUnit.DOT, + MeasureUnit.DOT_PER_CENTIMETER, + MeasureUnit.DOT_PER_INCH, + MeasureUnit.EM, + MeasureUnit.MEGAPIXEL, + MeasureUnit.PIXEL, + MeasureUnit.PIXEL_PER_CENTIMETER, + MeasureUnit.PIXEL_PER_INCH, + MeasureUnit.ASTRONOMICAL_UNIT, + MeasureUnit.CENTIMETER, + MeasureUnit.DECIMETER, + MeasureUnit.EARTH_RADIUS, + MeasureUnit.FATHOM, + MeasureUnit.FOOT, + MeasureUnit.FURLONG, + MeasureUnit.INCH, + MeasureUnit.KILOMETER, + MeasureUnit.LIGHT_YEAR, + MeasureUnit.METER, + MeasureUnit.MICROMETER, + MeasureUnit.MILE, + MeasureUnit.MILE_SCANDINAVIAN, + MeasureUnit.MILLIMETER, + MeasureUnit.NANOMETER, + MeasureUnit.NAUTICAL_MILE, + MeasureUnit.PARSEC, + MeasureUnit.PICOMETER, + MeasureUnit.POINT, + MeasureUnit.SOLAR_RADIUS, + MeasureUnit.YARD, + MeasureUnit.CANDELA, + MeasureUnit.LUMEN, + MeasureUnit.LUX, + MeasureUnit.SOLAR_LUMINOSITY, + MeasureUnit.CARAT, + MeasureUnit.DALTON, + MeasureUnit.EARTH_MASS, + MeasureUnit.GRAIN, + MeasureUnit.GRAM, + MeasureUnit.KILOGRAM, + MeasureUnit.MICROGRAM, + MeasureUnit.MILLIGRAM, + MeasureUnit.OUNCE, + MeasureUnit.OUNCE_TROY, + MeasureUnit.POUND, + MeasureUnit.SOLAR_MASS, + MeasureUnit.STONE, + MeasureUnit.TON, + MeasureUnit.TONNE, + MeasureUnit.GIGAWATT, + MeasureUnit.HORSEPOWER, + MeasureUnit.KILOWATT, + MeasureUnit.MEGAWATT, + MeasureUnit.MILLIWATT, + MeasureUnit.WATT, + MeasureUnit.ATMOSPHERE, + MeasureUnit.BAR, + MeasureUnit.GASOLINE_ENERGY_DENSITY, + MeasureUnit.HECTOPASCAL, + MeasureUnit.INCH_HG, + MeasureUnit.KILOPASCAL, + MeasureUnit.MEGAPASCAL, + MeasureUnit.MILLIBAR, + MeasureUnit.MILLIMETER_OF_MERCURY, + MeasureUnit.PASCAL, + MeasureUnit.POUND_PER_SQUARE_INCH, + MeasureUnit.BEAUFORT, + MeasureUnit.KILOMETER_PER_HOUR, + MeasureUnit.KNOT, + MeasureUnit.LIGHT_SPEED, + MeasureUnit.METER_PER_SECOND, + MeasureUnit.MILE_PER_HOUR, + MeasureUnit.CELSIUS, + MeasureUnit.FAHRENHEIT, + MeasureUnit.GENERIC_TEMPERATURE, + MeasureUnit.KELVIN, + MeasureUnit.NEWTON_METER, + MeasureUnit.POUND_FOOT, + MeasureUnit.ACRE_FOOT, + MeasureUnit.BARREL, + MeasureUnit.BUSHEL, + MeasureUnit.CENTILITER, + MeasureUnit.CUBIC_CENTIMETER, + MeasureUnit.CUBIC_FOOT, + MeasureUnit.CUBIC_INCH, + MeasureUnit.CUBIC_KILOMETER, + MeasureUnit.CUBIC_METER, + MeasureUnit.CUBIC_MILE, + MeasureUnit.CUBIC_YARD, + MeasureUnit.CUP, + MeasureUnit.CUP_METRIC, + MeasureUnit.DECILITER, + MeasureUnit.DESSERT_SPOON, + MeasureUnit.DESSERT_SPOON_IMPERIAL, + MeasureUnit.DRAM, + MeasureUnit.DROP, + MeasureUnit.FLUID_OUNCE, + MeasureUnit.FLUID_OUNCE_IMPERIAL, + MeasureUnit.GALLON, + MeasureUnit.GALLON_IMPERIAL, + MeasureUnit.HECTOLITER, + MeasureUnit.JIGGER, + MeasureUnit.LITER, + MeasureUnit.MEGALITER, + MeasureUnit.MILLILITER, + MeasureUnit.PINCH, + MeasureUnit.PINT, + MeasureUnit.PINT_METRIC, + MeasureUnit.QUART, + MeasureUnit.QUART_IMPERIAL, + MeasureUnit.TABLESPOON, + MeasureUnit.TEASPOON, + }; + assertEquals("", 193, units.length); + } + @Test public void TestExamplesInDocs() { MeasureFormat fmtFr = MeasureFormat.getInstance( @@ -4672,6 +4871,11 @@ public void TestParseBuiltIns() { if (unit.getType() == "currency") { continue; } + + if (unit.getIdentifier().equals("portion-per-1e9")) { + logKnownIssue("ICU-22781", "Handle concentr/perbillion in ICU"); + continue; + } // Prove that all built-in units are parseable, except "generic" temperature // (and for now, beaufort units) diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java index 26c0615997bc..64492073bab4 100644 --- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java +++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/CurrencyTest.java @@ -345,7 +345,9 @@ public void TestCurrencyDisplayNames() { // known currency, behavior unchanged assertEquals("de_USD_name", "US-Dollar", cdn.getName("USD")); assertEquals("de_USD_symbol", "$", cdn.getSymbol("USD")); - assertEquals("de_USD_plural_other", "US-Dollar", cdn.getPluralName("USD", "other")); + if (!logKnownIssue("ICU-22856", "Problem with inheritance for plural rules in currencies")) { + assertEquals("de_USD_plural_other", "US-Dollar", cdn.getPluralName("USD", "other")); + } // known currency but unknown plural category assertNull("de_USD_plural_foo", cdn.getPluralName("USD", "foo")); diff --git a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java index 9346c2e05a71..cbde409b7382 100644 --- a/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java +++ b/icu4j/main/common_tests/src/test/java/com/ibm/icu/dev/test/util/ULocaleTest.java @@ -1231,7 +1231,6 @@ public Item(String dLoc, DisplayContext dia, DisplayContext cap, DisplayContext new Item("en", NM_STD, CAP_MID, LEN_FU, SUB_SU, "ur@numbers=arabext", "Urdu (Extended Arabic-Indic Digits)"), new Item("en", NM_STD, CAP_MID, LEN_SH, SUB_SU, "ur@numbers=arabext", "Urdu (X Arabic-Indic Digits)"), new Item("af", NM_STD, CAP_NON, LEN_FU, SUB_NO, "aa", "Afar"), - new Item("cs", NM_STD, CAP_NON, LEN_FU, SUB_NO, "vai", "vai"), // https://unicode-org.atlassian.net/browse/ICU-20870: new Item("en", NM_STD, CAP_MID, LEN_FU, SUB_SU, "fa_AF", "Persian (Afghanistan)" ), new Item("en", NM_STD, CAP_MID, LEN_FU, SUB_SU, "prs", "Dari" ), @@ -1672,7 +1671,7 @@ private void initHashtable() { h[1].put("japanese", "\u65E5\u672C\u65E5\u5386"); h[1].put("buddhist", "\u4F5B\u5386"); h[1].put("islamic", "伊斯兰历"); - h[1].put("islamic-civil", "伊斯兰希吉来日历"); + h[1].put("islamic-civil", "表格式伊斯兰历(民用纪元)"); h[1].put("hebrew", "\u5E0C\u4F2F\u6765\u65E5\u5386"); h[1].put("chinese", "\u519C\u5386"); h[1].put("gregorian", "\u516C\u5386"); diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/LongNameHandler.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/LongNameHandler.java index c3eb6bf8acf1..a53166d24820 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/LongNameHandler.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/number/LongNameHandler.java @@ -6,6 +6,7 @@ import java.util.EnumMap; import java.util.Map; import java.util.MissingResourceException; +import java.util.Set; import com.ibm.icu.impl.CurrencyData; import com.ibm.icu.impl.ICUData; @@ -440,6 +441,22 @@ private static void getCurrencyLongNameData(ULocale locale, Currency currency, S // In ICU4J, this method gets a CurrencyData from CurrencyData.provider. // TODO(ICU4J): Implement this without going through CurrencyData, like in ICU4C? Map data = CurrencyData.provider.getInstance(locale, true).getUnitPatterns(); + // Entries in the data map are filled in with any CurrencyUnitPatterns data for locale, + // or if there is no CurrencyUnitPatterns data for locale since the patterns all inherited + // from the "other" pattern in root (which is true for many locales in CLDR 46), then only + // the "other" entry has a currency pattern. So now what we do is: For all valid plural keywords + // for the locale, if the corresponding outArray[] entry is bogus, fill it in from the "other" + // entry. + PluralRules prules = PluralRules.forLocale(locale); + Set keywords = prules.getKeywords(); + String otherPattern = data.get("other"); + if (keywords != null && otherPattern!= null) { + for (String keyword: keywords) { + if (!keyword.equals("other") && !data.containsKey(keyword)) { + data.put(keyword, otherPattern); + } + } + } for (Map.Entry e : data.entrySet()) { String pluralKeyword = e.getKey(); int index = getIndex(pluralKeyword); diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java b/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java index 8f33dd4b0fc3..d1267528a3ef 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/util/MeasureUnit.java @@ -1081,6 +1081,12 @@ protected synchronized static MeasureUnit addUnit(String type, String unitName, */ public static final MeasureUnit PERMYRIAD = MeasureUnit.internalGetInstance("concentr", "permyriad"); + /** + * Constant for unit of concentr: portion-per-1e9 + * @draft ICU 76 + */ + public static final MeasureUnit PORTION_PER_1E9 = MeasureUnit.internalGetInstance("concentr", "portion-per-1e9"); + /** * Constant for unit of consumption: liter-per-100-kilometer * @stable ICU 56 @@ -1237,6 +1243,12 @@ protected synchronized static MeasureUnit addUnit(String type, String unitName, */ public static final MeasureUnit NANOSECOND = MeasureUnit.internalGetInstance("duration", "nanosecond"); + /** + * Constant for unit of duration: night + * @draft ICU 76 + */ + public static final MeasureUnit NIGHT = MeasureUnit.internalGetInstance("duration", "night"); + /** * Constant for unit of duration: quarter * @stable ICU 72 @@ -1745,7 +1757,7 @@ protected synchronized static MeasureUnit addUnit(String type, String unitName, /** * Constant for unit of pressure: gasoline-energy-density - * @draft ICU 74 + * @stable ICU 74 */ public static final MeasureUnit GASOLINE_ENERGY_DENSITY = MeasureUnit.internalGetInstance("pressure", "gasoline-energy-density"); @@ -1815,6 +1827,12 @@ protected synchronized static MeasureUnit addUnit(String type, String unitName, */ public static final MeasureUnit KNOT = MeasureUnit.internalGetInstance("speed", "knot"); + /** + * Constant for unit of speed: light-speed + * @draft ICU 76 + */ + public static final MeasureUnit LIGHT_SPEED = MeasureUnit.internalGetInstance("speed", "light-speed"); + /** * Constant for unit of speed: meter-per-second * @stable ICU 53 diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java index 9c0cec77be16..5124d722149c 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/CalendarRegressionTest.java @@ -2178,7 +2178,7 @@ public void TestGetKeywordValuesForLocale(){ {"en@calendar=islamic", "gregorian"}, {"zh_TW", "gregorian", "roc", "chinese"}, {"ar_IR", "persian", "gregorian", "islamic", "islamic-civil", "islamic-tbla"}, - {"th@rg=SAZZZZ", "islamic-umalqura", "gregorian", "islamic", "islamic-rgsa"}, + {"th@rg=SAZZZZ", "gregorian", "islamic-umalqura", "islamic", "islamic-rgsa"}, // tests for ICU-22364 { "zh_CN@rg=TW", "gregorian", "chinese" }, // invalid subdivision code diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java index 789161c255c2..e3611b53ecc1 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java @@ -1191,9 +1191,9 @@ public void TestTypes() { "buddhist", "gregorian", // iso8601 is a gregorian sub type "gregorian", - "islamic-umalqura", - "islamic-umalqura", - "islamic-umalqura", + "gregorian", + "gregorian", + "gregorian", "japanese", "gregorian", "gregorian", diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java index 1b74f10cdef1..236fd8bd1705 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java @@ -429,9 +429,9 @@ public void TestBasic() { new String[] {"yM", "1.1999"}, // (fixed expected result per ticket 6872<-6626) new String[] {"yMMM", "tammi 1999"}, // (fixed expected result per ticket 6872<-7007) new String[] {"yMd", "13.1.1999"}, - new String[] {"yMMMd", "13. tammik. 1999"}, + new String[] {"yMMMd", "13.1.1999"}, new String[] {"Md", "13.1."}, - new String[] {"MMMd", "13. tammik."}, + new String[] {"MMMd", "13.1."}, new String[] {"MMMMd", "13. tammikuuta"}, new String[] {"yQQQ", "1. nelj. 1999"}, new String[] {"hhmm", "11.58\u202Fip."}, @@ -439,7 +439,7 @@ public void TestBasic() { new String[] {"jjmm", "23.58"}, new String[] {"mmss", "58.59"}, new String[] {"yyyyMMMM", "tammikuu 1999"}, // (new item for testing 6872<-5702,7007) - new String[] {"MMMEd", "ke 13. tammik."}, + new String[] {"MMMEd", "ke 13.1."}, new String[] {"Ed", "ke 13."}, new String[] {"jmmssSSS", "23.58.59,123"}, new String[] {"JJmm", "23.58"}, diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PersonNameConsistencyTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PersonNameConsistencyTest.java index cd8b70d4d4e2..c078c52e0627 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PersonNameConsistencyTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/PersonNameConsistencyTest.java @@ -52,6 +52,7 @@ private static Map makeKnownIssuesList() { Map knownIssues = new HashMap<>(); // there are no current locales for which we have known issues + knownIssues.put("bal_Latn.txt", "CLDR-17874"); return knownIssues; } diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java index 67e79f31ab45..ad868ef1087d 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/format/RelativeDateTimeFormatterTest.java @@ -1027,17 +1027,17 @@ public void TestRelativeDateTimeUnitFormatters() { String[] ak_decDef_long_stdAlon_sec = { // falls back to root /* text numeric */ - "-5 s", "-5 s", /* -5 */ - "-2.2 s", "-2.2 s", /* -2.2 */ - "-2 s", "-2 s", /* -2 */ - "-1 s", "-1 s", /* -1 */ - "-0.7 s", "-0.7 s", /* -0.7 */ - "now", "-0 s", /* -0 */ - "now", "+0 s", /* 0 */ - "+0.7 s", "+0.7 s", /* 0.7 */ - "+1 s", "+1 s", /* 1 */ - "+2 s", "+2 s", /* 2 */ - "+5 s", "+5 s", /* 5 */ + "nnibuo 5 a atwam", "nnibuo 5 a atwam", /* -5 */ + "nnibuo 2.2 a atwam", "nnibuo 2.2 a atwam", /* -2.2 */ + "nnibuo 2 a atwam", "nnibuo 2 a atwam", /* -2 */ + "anibuo 1 a atwam", "anibuo 1 a atwam", /* -1 */ + "nnibuo 0.7 a atwam", "nnibuo 0.7 a atwam", /* -0.7 */ + "seesei", "anibuo 0 a atwam", /* -0 */ + "seesei", "anibuo 0 mu", /* 0 */ + "nnibuo 0.7 mu", "nnibuo 0.7 mu", /* 0.7 */ + "anibuo 1 mu", "anibuo 1 mu", /* 1 */ + "nnibuo 2 mu", "nnibuo 2 mu", /* 2 */ + "nnibuo 5 mu", "nnibuo 5 mu", /* 5 */ }; String[] enIN_decDef_short_midSent_sunday = { diff --git a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java index a8942514ecb2..8e36c8de2a1b 100644 --- a/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java +++ b/icu4j/main/core/src/test/java/com/ibm/icu/dev/test/timezone/TimeZoneTest.java @@ -2425,7 +2425,7 @@ public void TestGetIanaID() { {"Europe/Zaporozhye", "Europe/Kyiv"}, {"Etc/GMT-1", "Etc/GMT-1"}, {"Etc/GMT+20", UNKNOWN}, - {"PST8PDT", "PST8PDT"}, + {"PST8PDT", "America/Los_Angeles"}, {"GMT-08:00", UNKNOWN}, }; diff --git a/tools/cldr/cldr-to-icu/build-icu-data.xml b/tools/cldr/cldr-to-icu/build-icu-data.xml index a6c678794bab..f9bd00343d06 100644 --- a/tools/cldr/cldr-to-icu/build-icu-data.xml +++ b/tools/cldr/cldr-to-icu/build-icu-data.xml @@ -196,7 +196,7 @@ fa, ff, ff_Adlm, ff_CM, ff_GN, ff_MR, ff_SN, fi, fil, fo, fr, fur, fy // G - ga, gd, gl, gsw, gu, guz, gv + ga, gaa, gd, gl, gsw, gu, guz, gv // H ha, haw, he, hi, hi_Latn, hr, hsb, hu, hy @@ -208,7 +208,7 @@ ja, jgo, jmc, jv // K - ka, kab, kam, kde, kea, kgp, khq, ki, kk, kkj, kl, kln, km, kn, ko, kok, ks + ka, kab, kam, kde, kea, kgp, khq, ki, kk, kkj, kl, kln, km, kn, ko, kok, kok_Latn, ks ks_Deva, ks_IN, ksb, ksf, ksh, ku, kw, kxv, kxv_Deva, kxv_IN, kxv_Orya, kxv_Telu, ky // L @@ -219,7 +219,7 @@ mt, mua, my, mzn // N - naq, nb, nd, nds, ne, nl, nmg, nn, nnh, no, no_NO, no_NO_NY, nqo, nus, nyn + naq, nb, nd, nds, ne, nl, nmg, nn, nnh, no, no_NO, no_NO_NY, nqo, nso, nus, nyn // O oc, om, or, os @@ -236,10 +236,10 @@ // S sa, sah, saq, sat, sat_IN, sbp, sc, sd, sd_Deva, sd_IN, sd_PK, se, seh, ses, sg, sh, sh_BA, sh_CS, sh_YU shi, shi_Latn, shi_MA, si, sk, sl, smn, sn, so, sq, sr, sr_BA, sr_CS, sr_Cyrl_CS, sr_Cyrl_YU, sr_Latn - sr_Latn_CS, sr_Latn_YU, sr_ME, sr_RS, sr_XK, sr_YU, su, su_ID, sv, sw, syr, szl + sr_Latn_CS, sr_Latn_YU, sr_ME, sr_RS, sr_XK, sr_YU, st, su, su_ID, sv, sw, syr, szl // T - ta, te, teo, tg, th, ti, tk, tl, tl_PH, to, tok, tr, tt, twq, tzm + ta, te, teo, tg, th, ti, tk, tl, tl_PH, tn, to, tok, tr, tt, twq, tzm // U ug, uk, ur, uz, uz_AF, uz_Arab, uz_Cyrl, uz_UZ @@ -312,13 +312,13 @@ // K-P ka, kk, kl, km, kn, kok, ko, ku, ky, lb, lij, lkt, ln, lo, lt, lv, - mk, ml, mn, mo, mr, ms, mt, my, nb, nb_NO, ne, nl, nn, no, no_NO, + mk, ml, mn, mo, mr, ms, mt, my, nb, nb_NO, ne, nl, nn, no, no_NO, nso, om, or, pa_IN, pa, pa_Guru, pl, ps, pt, // R-T ro, ru, sa, se, sh_BA, sh_CS, sh, sh_YU, si, sk, sl, smn, sq, - sr_BA, sr_Cyrl_ME, sr_Latn, sr_ME, sr_RS, sr, sv, sw, - ta, te, th, tk, to, tr, + sr_BA, sr_Cyrl_ME, sr_Latn, sr_ME, sr_RS, sr, st, sv, sw, + ta, te, th, tk, tn, to, tr, // U-Z ug, uk, ur, uz, vi, wae, wo, xh, yi, yo, yue_CN, yue_Hans_CN, yue_Hans