mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-03-27 17:56:36 +00:00
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
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 });
|
|
}
|
|
|
|
export async function setLocaleForLibraries(
|
|
locale: Locale = (extractLocaleFromCookie() as Locale) || 'en'
|
|
) {
|
|
const [zodResult, dateFnsResult] = await Promise.allSettled([
|
|
import(`../../../node_modules/zod/v4/locales/${locale}.js`),
|
|
import(`../../../node_modules/date-fns/locale/${locale}.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);
|
|
}
|
|
}
|