wisperlink-app / src /contexts /language-context.tsx
looda3131's picture
طيب استخدم هذا كخيار اضافي ايضا open router : sk-or-v1-0688df4786526b1cc
0ccd641
'use client';
import React, { createContext, useContext, useState, useEffect } from 'react';
import { Language, translations } from '@/lib/translations';
export type AIEngine = 'primary' | 'fallback' | 'advanced';
interface LanguageContextType {
lang: Language;
setLang: (lang: Language) => void;
aiEngine: AIEngine;
setAiEngine: (engine: AIEngine) => void;
t: typeof translations.ar;
}
const LanguageContext = createContext<LanguageContextType | undefined>(undefined);
export const LanguageProvider = ({ children }: { children: React.ReactNode }) => {
const [lang, setLangState] = useState<Language>('ar');
const [aiEngine, setAiEngineState] = useState<AIEngine>('primary');
useEffect(() => {
const savedLang = localStorage.getItem('proto-lang') as Language;
if (savedLang) setLangState(savedLang);
const savedEngine = localStorage.getItem('proto-ai-engine') as AIEngine;
if (savedEngine) setAiEngineState(savedEngine);
// ضبط اتجاه النص
document.documentElement.dir = (savedLang || 'ar') === 'ar' ? 'rtl' : 'ltr';
document.documentElement.lang = (savedLang || 'ar');
}, []);
const setLang = (newLang: Language) => {
setLangState(newLang);
localStorage.setItem('proto-lang', newLang);
document.documentElement.dir = newLang === 'ar' ? 'rtl' : 'ltr';
document.documentElement.lang = newLang;
};
const setAiEngine = (newEngine: AIEngine) => {
setAiEngineState(newEngine);
localStorage.setItem('proto-ai-engine', newEngine);
console.log(`[SETTINGS]: AI Engine switched to: ${newEngine}`);
};
const t = translations[lang];
return (
<LanguageContext.Provider value={{ lang, setLang, aiEngine, setAiEngine, t }}>
{children}
</LanguageContext.Provider>
);
};
export const useLanguage = () => {
const context = useContext(LanguageContext);
if (!context) throw new Error('useLanguage must be used within LanguageProvider');
return context;
};