import { extractLocaleFromCookie, setLocale as setParaglideLocale, type Locale } from '$lib/paraglide/runtime'; import { setDefaultOptions } from 'date-fns'; import { z } from 'zod/v4'; export async function setLocale(locale: Locale, reload = true) { await setLocaleForLibraries(locale); setParaglideLocale(locale, { reload }); document.documentElement.lang = locale; } export async function setLocaleForLibraries( locale: Locale = (extractLocaleFromCookie() as Locale) || 'en' ) { let dateFnsLocale: string = locale; if (dateFnsLocale === 'en') { dateFnsLocale = 'en-US'; // datefns doesn't have 'en' } const [zodResult, dateFnsResult] = await Promise.allSettled([ import(`../../../node_modules/zod/v4/locales/${locale}.js`), import(`../../../node_modules/date-fns/locale/${dateFnsLocale}.js`) ]); if (zodResult.status === 'fulfilled') { z.config(zodResult.value.default()); } else { console.warn(`Failed to load zod locale for ${locale}:`, zodResult.reason); } if (dateFnsResult.status === 'fulfilled') { setDefaultOptions({ locale: dateFnsResult.value.default }); } else { console.warn(`Failed to load date-fns locale for ${locale}:`, dateFnsResult.reason); } }