"use client" import { createContext, useContext, useState, useEffect, ReactNode } from 'react' type Language = 'en' | 'de' interface Translations { [key: string]: { [key: string]: string | Translations } } interface LanguageContextType { language: Language setLanguage: (lang: Language) => void t: (key: string) => string toggleLanguage: () => void } const LanguageContext = createContext(undefined) // Import translations const translations: Record = { en: require('../locales/en.json'), de: require('../locales/de.json') } export function LanguageProvider({ children }: { children: ReactNode }) { const [language, setLanguage] = useState('de') // Load saved language from localStorage useEffect(() => { const savedLanguage = localStorage.getItem('language') as Language if (savedLanguage && (savedLanguage === 'en' || savedLanguage === 'de')) { setLanguage(savedLanguage) } }, []) // Save language to localStorage when it changes useEffect(() => { localStorage.setItem('language', language) }, [language]) // Translation function const t = (key: string): string => { const keys = key.split('.') let value: any = translations[language] for (const k of keys) { value = value?.[k] } return value || key } // Toggle between languages const toggleLanguage = () => { setLanguage(prev => prev === 'en' ? 'de' : 'en') } return ( {children} ) } export function useLanguage() { const context = useContext(LanguageContext) if (context === undefined) { throw new Error('useLanguage must be used within a LanguageProvider') } return context }