import React, { createContext, useContext, useState, ReactNode } from 'react'; import { translations, Language, TranslationKey } from '../i18n/translations'; interface I18nContextType { language: Language; setLanguage: (lang: Language) => void; t: (key: TranslationKey) => string; } const I18nContext = createContext(undefined); export const I18nProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const [language, setLanguage] = useState(() => { const stored = localStorage.getItem('language') as Language; return stored === 'zh' || stored === 'en' || stored === 'ja' || stored === 'ko' ? stored : 'en'; }); const handleSetLanguage = (lang: Language) => { setLanguage(lang); localStorage.setItem('language', lang); }; const t = (key: TranslationKey): string => { return translations[language][key] || key; }; return ( {children} ); }; export const useI18n = () => { const context = useContext(I18nContext); if (!context) { throw new Error('useI18n must be used within I18nProvider'); } return context; };