From c80d581fed2acd7855ca31ac066544c78381bb2d Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Mon, 19 Oct 2026 13:33:32 -0700 Subject: [PATCH 1/2] Use the hour cycle of the locale in timestamps The date formatter used the Globalize skeleton "MMMMdhm", where "h" forces the 12-hour clock in every locale (e.g. "8. August um 4:41 PM" in German). Use "j", the preferred hour cycle of the locale. --- CHANGELOG.md | 1 + ...lization.fileUpload.polish.html.snap-1.png | Bin 9161 -> 9047 bytes .../html2/timestamp/absolute.hourCycle.html | 82 ++++++++++++++++++ .../absolute.hourCycle.html.snap-1.png | Bin 0 -> 5214 bytes .../absolute.hourCycle.html.snap-2.png | Bin 0 -> 5087 bytes .../scripts/createPrecompiledGlobalize.mjs | 2 +- packages/api/src/hooks/useDateFormatter.ts | 2 +- .../api/src/types/PrecompiledGlobalize.ts | 2 +- 8 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 __tests__/html2/timestamp/absolute.hourCycle.html create mode 100644 __tests__/html2/timestamp/absolute.hourCycle.html.snap-1.png create mode 100644 __tests__/html2/timestamp/absolute.hourCycle.html.snap-2.png diff --git a/CHANGELOG.md b/CHANGELOG.md index d32d8a4300..6f11d2a1b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ Legends: - Fixed the "Positive" card action button having less than 4.5:1 color contrast, fixes [#5713](https://github.com/microsoft/BotFramework-WebChat/issues/5713), in PR [#5905](https://github.com/microsoft/BotFramework-WebChat/pull/5905), by [@OEvgeny](https://github.com/OEvgeny) - Fixed screen readers announcing a single audio, video, or animation in a card as a list item, such as "1 of 1", fixes [#5722](https://github.com/microsoft/BotFramework-WebChat/issues/5722), in PR [#5903](https://github.com/microsoft/BotFramework-WebChat/pull/5903), by [@OEvgeny](https://github.com/OEvgeny) - Fixed video and animation cards disappearing in production builds when the video URL is relative or invalid, in PR [#5889](https://github.com/microsoft/BotFramework-WebChat/pull/5889), by [@OEvgeny](https://github.com/OEvgeny) +- Fixed timestamps always using the 12-hour clock, such as "4:41 PM" instead of "16:41" in German, in PR [#XXXX](https://github.com/microsoft/BotFramework-WebChat/pull/XXXX), by [@OEvgeny](https://github.com/OEvgeny) ## [4.19.2] - 2026-10-08 diff --git a/__tests__/html2/localization/localization.fileUpload.polish.html.snap-1.png b/__tests__/html2/localization/localization.fileUpload.polish.html.snap-1.png index 7520fee5ad1e72c2b7349ccfe4e20eb1071b6c41..9cc2723cb96f1f47bbc183ad7f1f02cd0a4ba45c 100644 GIT binary patch delta 6978 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 a#W{$g32ffPTs94S0@2pcSFce0_uc + + + + + + + + + + +
+ + + + diff --git a/__tests__/html2/timestamp/absolute.hourCycle.html.snap-1.png b/__tests__/html2/timestamp/absolute.hourCycle.html.snap-1.png new file mode 100644 index 0000000000000000000000000000000000000000..785449a586971be528364a6fbaf98a8851b0793b GIT binary patch literal 5214 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 literal 0 HcmV?d00001 diff --git a/__tests__/html2/timestamp/absolute.hourCycle.html.snap-2.png b/__tests__/html2/timestamp/absolute.hourCycle.html.snap-2.png new file mode 100644 index 0000000000000000000000000000000000000000..184c0b9347b8b792a0435436f05298824a9f5185 GIT binary patch literal 5087 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 st const [globalize] = useLocalizedGlobalize(); const formatDate = useMemo( - () => date => globalize.dateFormatter({ skeleton: 'MMMMdhm' })(new Date(date)), + () => date => globalize.dateFormatter({ skeleton: 'MMMMdjm' })(new Date(date)), [Date, globalize] ); diff --git a/packages/api/src/types/PrecompiledGlobalize.ts b/packages/api/src/types/PrecompiledGlobalize.ts index 4abd691877..2cabf189e6 100644 --- a/packages/api/src/types/PrecompiledGlobalize.ts +++ b/packages/api/src/types/PrecompiledGlobalize.ts @@ -1,5 +1,5 @@ type PrecompiledGlobalize = { - dateFormatter: ({ skeleton }: { skeleton: 'MMMMdhm' }) => string; + dateFormatter: ({ skeleton }: { skeleton: 'MMMMdjm' }) => string; relativeTimeFormatter: (format: 'hour' | 'minute') => string; unitFormatter: | ((unit: 'byte', options: { form: 'long' }) => string) From bbb7cb89aa6c627a825051b304d9bae06832fda7 Mon Sep 17 00:00:00 2001 From: Eugene Olonov Date: Mon, 19 Oct 2026 13:38:40 -0700 Subject: [PATCH 2/2] Add PR number to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f11d2a1b7..6ea94b2678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,7 @@ Legends: - Fixed the "Positive" card action button having less than 4.5:1 color contrast, fixes [#5713](https://github.com/microsoft/BotFramework-WebChat/issues/5713), in PR [#5905](https://github.com/microsoft/BotFramework-WebChat/pull/5905), by [@OEvgeny](https://github.com/OEvgeny) - Fixed screen readers announcing a single audio, video, or animation in a card as a list item, such as "1 of 1", fixes [#5722](https://github.com/microsoft/BotFramework-WebChat/issues/5722), in PR [#5903](https://github.com/microsoft/BotFramework-WebChat/pull/5903), by [@OEvgeny](https://github.com/OEvgeny) - Fixed video and animation cards disappearing in production builds when the video URL is relative or invalid, in PR [#5889](https://github.com/microsoft/BotFramework-WebChat/pull/5889), by [@OEvgeny](https://github.com/OEvgeny) -- Fixed timestamps always using the 12-hour clock, such as "4:41 PM" instead of "16:41" in German, in PR [#XXXX](https://github.com/microsoft/BotFramework-WebChat/pull/XXXX), by [@OEvgeny](https://github.com/OEvgeny) +- Fixed timestamps always using the 12-hour clock, such as "4:41 PM" instead of "16:41" in German, in PR [#5920](https://github.com/microsoft/BotFramework-WebChat/pull/5920), by [@OEvgeny](https://github.com/OEvgeny) ## [4.19.2] - 2026-10-08