'use client' import { createContext, useContext, useState, useEffect, ReactNode } from 'react' import { Language, DEFAULT_LANGUAGE, isRTL, t as translate } from './i18n' interface LanguageContextType { language: Language setLanguage: (lang: Language) => void t: (key: string) => string isRTL: boolean } const LanguageContext = createContext(undefined) const STORAGE_KEY = 'breakpilot-language' export function LanguageProvider({ children }: { children: ReactNode }) { const [language, setLanguageState] = useState(DEFAULT_LANGUAGE) const [mounted, setMounted] = useState(false) // Load language from localStorage on mount useEffect(() => { const stored = localStorage.getItem(STORAGE_KEY) if (stored && ['de', 'en', 'tr', 'ar', 'ru', 'uk', 'pl'].includes(stored)) { setLanguageState(stored as Language) } setMounted(true) }, []) // Update document direction for RTL languages useEffect(() => { if (mounted) { document.documentElement.dir = isRTL(language) ? 'rtl' : 'ltr' document.documentElement.lang = language } }, [language, mounted]) const setLanguage = (lang: Language) => { setLanguageState(lang) localStorage.setItem(STORAGE_KEY, lang) } const t = (key: string) => translate(key, language) const value: LanguageContextType = { language, setLanguage, t, isRTL: isRTL(language), } // Prevent hydration mismatch if (!mounted) { return ( {children} ) } return {children} } export function useLanguage() { const context = useContext(LanguageContext) if (context === undefined) { throw new Error('useLanguage must be used within a LanguageProvider') } return context }