From ff8880537075fa5511bffbdea2d1a94a5f64f180 Mon Sep 17 00:00:00 2001 From: Joey Connor Date: Thu, 18 Jun 2026 15:45:42 +0100 Subject: [PATCH] fix(cy): set abbreviated am/pm to yb/yh instead of inheriting from root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The format/abbreviated and stand-alone/abbreviated am and pm entries for Welsh (cy) were ↑↑↑, causing ICU to inherit AM/PM from the root locale. Under ICU 77 (CLDR 47) this was masked by a lateral fallback that resolved ↑↑↑ at the abbreviated width to the locale's own wide entries (yb/yh). ICU 78 (CLDR 48) now resolves ↑↑↑ correctly against the parent locale, surfacing the gap. Fix: replace ↑↑↑ with explicit Welsh values yb (y bore, AM) and yh (yr hwyr, PM) in both format/abbreviated and stand-alone/abbreviated contexts, consistent with the existing wide entries. Also adds four datetime test cases (hm/hms × AM/PM) for locale cy to prevent silent regression. Identified via: commit f81989f8b (CLDR-18850 v48 vxml merge to main) --- common/main/cy.xml | 8 +-- common/testData/datetime/datetime.json | 80 ++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/common/main/cy.xml b/common/main/cy.xml index 535c6962956..7070d126a57 100644 --- a/common/main/cy.xml +++ b/common/main/cy.xml @@ -1702,9 +1702,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/ canol nos - ↑↑↑ + yb canol dydd - ↑↑↑ + yh y bore y prynhawn yr hwyr @@ -1731,9 +1731,9 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/ ↑↑↑ - ↑↑↑ + yb ↑↑↑ - ↑↑↑ + yh bore prynhawn ↑↑↑ diff --git a/common/testData/datetime/datetime.json b/common/testData/datetime/datetime.json index 06dbdc7c52b..f883e6d38f1 100644 --- a/common/testData/datetime/datetime.json +++ b/common/testData/datetime/datetime.json @@ -2886,5 +2886,85 @@ "locale": "ja-JP", "input": "2014-07-15T12:00Z[Etc/GMT]", "expected": "12:00:00" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hm", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T09:30:00Z[Etc/GMT]", + "expected": "9:30 yb" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hm", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T14:30:00Z[Etc/GMT]", + "expected": "2:30 yh" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hms", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T09:30:00Z[Etc/GMT]", + "expected": "9:30:00 yb" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hms", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T14:30:00Z[Etc/GMT]", + "expected": "2:30:00 yh" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hm", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T09:30:00Z[Etc/GMT]", + "expected": "9:30 yb" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hm", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T14:30:00Z[Etc/GMT]", + "expected": "2:30 yh" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hms", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T09:30:00Z[Etc/GMT]", + "expected": "9:30:00 yb" + }, + { + "semanticSkeleton": "T", + "semanticSkeletonLength": "short", + "classicalSkeleton": "hms", + "hourCycle": "H12", + "calendar": "gregorian", + "locale": "cy", + "input": "2024-07-01T14:30:00Z[Etc/GMT]", + "expected": "2:30:00 yh" } ]