'use client'; import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react'; // Import translation files import en from '@/translations/en.json'; import hi from '@/translations/hi.json'; import bn from '@/translations/bn.json'; import te from '@/translations/te.json'; import mr from '@/translations/mr.json'; import ta from '@/translations/ta.json'; import gu from '@/translations/gu.json'; import kn from '@/translations/kn.json'; import ml from '@/translations/ml.json'; import pa from '@/translations/pa.json'; import or from '@/translations/or.json'; import as from '@/translations/as.json'; const translations: Record = { en, hi, bn, te, mr, ta, gu, kn, ml, pa, or, as }; interface LanguageContextType { currentLanguage: string; setLanguage: (lang: string) => void; t: (key: string) => string; } const LanguageContext = createContext(undefined); export function LanguageProvider({ children }: { children: ReactNode }) { const [currentLanguage, setCurrentLanguage] = useState('en'); // Load saved language from localStorage useEffect(() => { const savedLang = localStorage.getItem('preferredLanguage'); if (savedLang && translations[savedLang]) { setCurrentLanguage(savedLang); } }, []); const setLanguage = (lang: string) => { setCurrentLanguage(lang); localStorage.setItem('preferredLanguage', lang); }; const t = (key: string): string => { const keys = key.split('.'); let value: any = translations[currentLanguage]; for (const k of keys) { if (value && typeof value === 'object') { value = value[k]; } else { // Fallback to English if translation not found value = translations.en; for (const fallbackKey of keys) { if (value && typeof value === 'object') { value = value[fallbackKey]; } else { return key; // Return key if not found } } return value || key; } } return value || key; }; return ( {children} ); } export function useLanguage() { const context = useContext(LanguageContext); if (context === undefined) { throw new Error('useLanguage must be used within a LanguageProvider'); } return context; }