import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react'; import { translations, Language, TranslationStructure } from './translations'; interface LanguageContextProps { language: Language; setLanguage: (lang: Language) => void; t: (path: string, params?: Record) => string; } const LanguageContext = createContext(undefined); export const LanguageProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const [language, setLanguageState] = useState('en'); useEffect(() => { const savedLang = localStorage.getItem('plexsync-language') as Language; if (savedLang && translations[savedLang]) { setLanguageState(savedLang); } }, []); const setLanguage = (lang: Language) => { setLanguageState(lang); localStorage.setItem('plexsync-language', lang); }; const t = (path: string, params?: Record): string => { const keys = path.split('.'); let current: any = translations[language]; for (const key of keys) { if (current[key] === undefined) { console.warn(`Missing translation for key: ${path} in language: ${language}`); return path; } current = current[key]; } let text = current as string; if (params) { Object.entries(params).forEach(([key, value]) => { text = text.replace(`{${key}}`, String(value)); }); } return text; }; return ( {children} ); }; export const useLanguage = () => { const context = useContext(LanguageContext); if (!context) { throw new Error('useLanguage must be used within a LanguageProvider'); } return context; };