Quran_Tech_Server / F_Pro /src /lib /languageContext.tsx
aboalaa147's picture
Initial deployment
eb6a2f9
Raw
History Blame Contribute Delete
1.3 kB
import { createContext, useContext, useState, ReactNode, useEffect } from 'react';
type Language = 'en' | 'ar';
interface LanguageContextType {
language: Language;
setLanguage: (lang: Language) => void;
isRTL: boolean;
}
const LanguageContext = createContext<LanguageContextType | undefined>(undefined);
export function LanguageProvider({ children }: { children: ReactNode }) {
const [language, setLanguageState] = useState<Language>(() => {
const saved = localStorage.getItem('appLanguage');
return (saved === 'ar' || saved === 'en') ? saved : 'en';
});
const setLanguage = (lang: Language) => {
setLanguageState(lang);
localStorage.setItem('appLanguage', lang);
};
useEffect(() => {
// Update document direction and lang attribute
document.documentElement.dir = language === 'ar' ? 'rtl' : 'ltr';
document.documentElement.lang = language;
}, [language]);
const isRTL = language === 'ar';
return (
<LanguageContext.Provider value={{ language, setLanguage, isRTL }}>
{children}
</LanguageContext.Provider>
);
}
export function useLanguage() {
const context = useContext(LanguageContext);
if (context === undefined) {
throw new Error('useLanguage must be used within a LanguageProvider');
}
return context;
}