diff --git a/CHANGELOG.md b/CHANGELOG.md index d32d8a4300..6ea94b2678 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 [#5920](https://github.com/microsoft/BotFramework-WebChat/pull/5920), 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 7520fee5ad..9cc2723cb9 100644 Binary files a/__tests__/html2/localization/localization.fileUpload.polish.html.snap-1.png and b/__tests__/html2/localization/localization.fileUpload.polish.html.snap-1.png differ diff --git a/__tests__/html2/timestamp/absolute.hourCycle.html b/__tests__/html2/timestamp/absolute.hourCycle.html new file mode 100644 index 0000000000..9d81918ee9 --- /dev/null +++ b/__tests__/html2/timestamp/absolute.hourCycle.html @@ -0,0 +1,82 @@ + + +
+ + + + + + + + + + + + + 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 0000000000..785449a586 Binary files /dev/null and b/__tests__/html2/timestamp/absolute.hourCycle.html.snap-1.png differ 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 0000000000..184c0b9347 Binary files /dev/null and b/__tests__/html2/timestamp/absolute.hourCycle.html.snap-2.png differ diff --git a/packages/api/scripts/createPrecompiledGlobalize.mjs b/packages/api/scripts/createPrecompiledGlobalize.mjs index 7f74ff2d64..11dd6de38d 100644 --- a/packages/api/scripts/createPrecompiledGlobalize.mjs +++ b/packages/api/scripts/createPrecompiledGlobalize.mjs @@ -27,7 +27,7 @@ import { fileURLToPath } from 'url'; return [ ...formattersAndParsers, ...[ - globalize.dateFormatter({ skeleton: 'MMMMdhm' }), + globalize.dateFormatter({ skeleton: 'MMMMdjm' }), globalize.pluralGenerator(), globalize.relativeTimeFormatter('hour'), globalize.relativeTimeFormatter('minute'), diff --git a/packages/api/src/hooks/useDateFormatter.ts b/packages/api/src/hooks/useDateFormatter.ts index ea8387dac7..e906f2faa9 100644 --- a/packages/api/src/hooks/useDateFormatter.ts +++ b/packages/api/src/hooks/useDateFormatter.ts @@ -10,7 +10,7 @@ export default function useDateFormatter(): (date: Date | number | string) => 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)