"use client"; import { useState, useEffect, createContext, useContext, ReactNode } from "react"; export type Locale = "es" | "en" | "ca"; const LOCALE_STORAGE_KEY = "arbret-locale"; const DEFAULT_LOCALE: Locale = "es"; interface LanguageContextType { locale: Locale; setLocale: (locale: Locale) => void; } const LanguageContext = createContext(undefined); export function LanguageProvider({ children }: { children: ReactNode }) { const [locale, setLocaleState] = useState(DEFAULT_LOCALE); const [isHydrated, setIsHydrated] = useState(false); // Load locale from localStorage on mount useEffect(() => { const stored = localStorage.getItem(LOCALE_STORAGE_KEY); console.log("[useLanguage] Loading locale from localStorage:", stored); if (stored && (stored === "es" || stored === "en" || stored === "ca")) { console.log("[useLanguage] Setting locale to:", stored); setLocaleState(stored as Locale); } else { console.log("[useLanguage] No valid stored locale, using default:", DEFAULT_LOCALE); } setIsHydrated(true); }, []); // Update HTML lang attribute when locale changes useEffect(() => { if (isHydrated) { document.documentElement.lang = locale; } }, [locale, isHydrated]); const setLocale = (newLocale: Locale) => { setLocaleState(newLocale); localStorage.setItem(LOCALE_STORAGE_KEY, newLocale); document.documentElement.lang = newLocale; }; return ( {children} ); } export function useLanguage() { const context = useContext(LanguageContext); if (context === undefined) { throw new Error("useLanguage must be used within a LanguageProvider"); } return context; }