|
|
import React, { createContext, useContext, useState, useEffect } from 'react'; |
|
|
|
|
|
const LanguageContext = createContext(); |
|
|
|
|
|
export const useLanguage = () => { |
|
|
const context = useContext(LanguageContext); |
|
|
if (!context) { |
|
|
throw new Error('useLanguage must be used within a LanguageProvider'); |
|
|
} |
|
|
return context; |
|
|
}; |
|
|
|
|
|
export const LanguageProvider = ({ children }) => { |
|
|
const [currentLanguage, setCurrentLanguage] = useState('en'); |
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
const savedLanguage = localStorage.getItem('preferredLanguage') || 'en'; |
|
|
setCurrentLanguage(savedLanguage); |
|
|
}, []); |
|
|
|
|
|
const changeLanguage = (newLanguage) => { |
|
|
if (newLanguage !== currentLanguage) { |
|
|
setCurrentLanguage(newLanguage); |
|
|
localStorage.setItem('preferredLanguage', newLanguage); |
|
|
|
|
|
|
|
|
window.dispatchEvent(new CustomEvent('languageChange', { |
|
|
detail: { newLanguage } |
|
|
})); |
|
|
} |
|
|
}; |
|
|
|
|
|
const value = { |
|
|
currentLanguage, |
|
|
changeLanguage, |
|
|
t: (key) => { |
|
|
|
|
|
const translations = { |
|
|
'en': { |
|
|
'language.english': 'English', |
|
|
'language.urdu': 'Urdu', |
|
|
'toggle.language': 'Toggle Language' |
|
|
}, |
|
|
'ur': { |
|
|
'language.english': 'انگریزی', |
|
|
'language.urdu': 'اردو', |
|
|
'toggle.language': 'زبان تبدیل کریں' |
|
|
} |
|
|
}; |
|
|
|
|
|
return translations[currentLanguage]?.[key] || key; |
|
|
} |
|
|
}; |
|
|
|
|
|
return ( |
|
|
<LanguageContext.Provider value={value}> |
|
|
{children} |
|
|
</LanguageContext.Provider> |
|
|
); |
|
|
}; |