import fr from './locales/fr.json' assert { type: 'json' }; import en from './locales/en.json' assert { type: 'json' }; const LOCALES = { fr, en }; const SUPPORTED = Object.keys(LOCALES); const STORAGE_KEY = 'cv_lang'; let currentLocale = localStorage.getItem(STORAGE_KEY) || 'fr'; if (!SUPPORTED.includes(currentLocale)) currentLocale = 'fr'; function resolve(obj, path) { return path.split('.').reduce((acc, key) => acc?.[key], obj); } export function t(key, params = {}) { const messages = LOCALES[currentLocale] ?? LOCALES.fr; let str = resolve(messages, key) ?? resolve(LOCALES.fr, key) ?? key; return str.replace(/\{(\w+)\}/g, (_, k) => params[k] ?? `{${k}}`); } export function getLocale() { return currentLocale; } export function setLocale(lang) { if (!SUPPORTED.includes(lang)) return; currentLocale = lang; localStorage.setItem(STORAGE_KEY, lang); document.documentElement.lang = lang; document.dispatchEvent(new CustomEvent('localechange', { detail: { lang } })); } export function getSupportedLocales() { return SUPPORTED; }