Update CLDR Windows timezone data to v44.1

The recent change to IANA ID lists extracted for Windows adds new IANA
IDs to various zones and shuffles the order in some cases, leading to
changes in offsets throughout the related tables (and two test-case
that lose an expected entry that was an alias for one of its
others). This is caused by CLDR doing a clean-up of its zone
information, deprecating some old names, combining some synonymous
zones and reversing some aliases to better match the IANA DB. As a
result, some prior expect-fail tests now pass.

The code that reads the tables is insensitive to order after the first
entry in each list; and the first entries only change where they were
CLDR's ID for a zone, replaced by the modern IANA ID, which is what we
should be using. Various aliases are omitted from lists, but can be
looked up via the alias table.

[ChangeLog][Third-Party Code] Updated timezone data from the Unicode
Common Locale Data Repository (CLDR) to v44.1 to match QLocale's data.

Change-Id: I8d89bef7370b93572a3dcf61f6713d4f21963e3d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Edward Welbourne 2024-02-01 15:32:49 +01:00
parent 48ab909c5d
commit 5f63885e84
2 changed files with 1357 additions and 1344 deletions

File diff suppressed because it is too large Load Diff

View File

@ -753,9 +753,6 @@ void tst_QTimeZone::aliasMatches()
QVERIFY(zone.aliasMatches(iana));
QVERIFY(peer.aliasMatches(peer.id()));
QVERIFY(peer.aliasMatches(alias));
QEXPECT_FAIL("Currie=Hobart", "Needs update to CLDR v44.1", Abort);
QEXPECT_FAIL("Uzhgorod=Kyiv", "Needs update to CLDR v44.1", Abort);
QEXPECT_FAIL("Zaporozhye=Kyiv", "Needs update to CLDR v44.1", Abort);
QVERIFY(zone.aliasMatches(peer.id()));
QVERIFY(zone.aliasMatches(alias));
QVERIFY(peer.aliasMatches(zone.id()));
@ -1035,7 +1032,7 @@ void tst_QTimeZone::windowsId()
Current Windows zones for "Central Standard Time":
Region IANA Id(s)
Default "America/Chicago"
Canada "America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Resolute"
Canada "America/Winnipeg America/Rankin_Inlet America/Resolute"
Mexico "America/Matamoros"
USA "America/Chicago America/Indiana/Knox America/Indiana/Tell_City America/Menominee"
"America/North_Dakota/Beulah America/North_Dakota/Center"
@ -1067,8 +1064,8 @@ void tst_QTimeZone::windowsId()
"America/Chicago", "America/Indiana/Knox", "America/Indiana/Tell_City",
"America/Matamoros", "America/Menominee", "America/North_Dakota/Beulah",
"America/North_Dakota/Center", "America/North_Dakota/New_Salem",
"America/Ojinaga", "America/Rainy_River", "America/Rankin_Inlet",
"America/Resolute", "America/Winnipeg", "CST6CDT"
"America/Ojinaga", "America/Rankin_Inlet", "America/Resolute",
"America/Winnipeg", "CST6CDT"
};
QCOMPARE(QTimeZone::windowsIdToIanaIds("Central Standard Time"), list);
}
@ -1081,7 +1078,7 @@ void tst_QTimeZone::windowsId()
{
// Check valid country returns list in preference order
const QList<QByteArray> list = {
"America/Winnipeg", "America/Rainy_River", "America/Rankin_Inlet", "America/Resolute"
"America/Winnipeg", "America/Rankin_Inlet", "America/Resolute"
};
QCOMPARE(QTimeZone::windowsIdToIanaIds("Central Standard Time", QLocale::Canada), list);
}