diff --git a/src/pat/filemanager/src/utils/format.test.ts b/src/pat/filemanager/src/utils/format.test.ts index 7d03901c5..d6c1e38b7 100644 --- a/src/pat/filemanager/src/utils/format.test.ts +++ b/src/pat/filemanager/src/utils/format.test.ts @@ -15,6 +15,24 @@ describe("formatDate", () => { it("formats a real date string", () => { expect(formatDate(PAST)).not.toBe(""); }); + + it("respects the document language (es)", () => { + const originalLang = document.documentElement.lang; + document.documentElement.lang = "es"; + const formatted = formatDate(PAST); + // "ene" is the short month in Spanish for January (January 1st, 2020) + expect(formatted).toContain("ene"); + document.documentElement.lang = originalLang; + }); + + it("respects the document language (en)", () => { + const originalLang = document.documentElement.lang; + document.documentElement.lang = "en"; + const formatted = formatDate(PAST); + // "Jan" is the short month in English for January + expect(formatted).toContain("Jan"); + document.documentElement.lang = originalLang; + }); }); describe("formatSize", () => { diff --git a/src/pat/filemanager/src/utils/format.ts b/src/pat/filemanager/src/utils/format.ts index 825a2beac..443e63db8 100644 --- a/src/pat/filemanager/src/utils/format.ts +++ b/src/pat/filemanager/src/utils/format.ts @@ -10,10 +10,16 @@ function parseDate(value: unknown): Date | null { return Number.isNaN(date.getTime()) ? null : date; } +/** Detect the current UI language from the tag, normalized for Intl. */ +function getLang(): string { + if (typeof document === "undefined") return "en"; + return (document.documentElement.lang || "en").replace("_", "-"); +} + export function formatDate(value: unknown): string { const date = parseDate(value); if (!date) return ""; - return new Intl.DateTimeFormat(undefined, { + return new Intl.DateTimeFormat(getLang(), { year: "numeric", month: "short", day: "numeric",