import { browser } from '$app/environment';
import fr, { type Dict } from './fr';
import gcf from './gcf';

export type Lang = 'fr' | 'gcf';

const dicts: Record<Lang, Dict> = { fr, gcf };
const STORAGE_KEY = 'jwe-lang';

let lang = $state<Lang>('fr');

/** Dictionnaire courant — fonction réactive : lit le `$state`, donc les templates se mettent à jour. */
export function t(): Dict {
	return dicts[lang];
}

export function getLang(): Lang {
	return lang;
}

export function setLang(next: Lang): void {
	lang = next;
	if (browser) {
		localStorage.setItem(STORAGE_KEY, next);
		document.documentElement.lang = next;
	}
}

/** À appeler une fois au montage du layout : restaure la langue persistée. */
export function initLang(): void {
	if (!browser) return;
	const saved = localStorage.getItem(STORAGE_KEY);
	if (saved === 'fr' || saved === 'gcf') {
		setLang(saved);
	} else {
		document.documentElement.lang = lang;
	}
}
