main
tsx 35 lines 942 Bytes
Raw
1 import { createContext, useContext, useState, ReactNode } from "react";
2 import { translations, SupportedLanguage, Translation } from "../utils/i18n";
3
4 interface LanguageContextType {
5 lang: SupportedLanguage;
6 setLang: (lang: SupportedLanguage) => void;
7 t: Translation;
8 }
9
10 const LanguageContext = createContext<LanguageContextType | undefined>(
11 undefined,
12 );
13
14 interface LanguageProviderProps {
15 children: ReactNode;
16 }
17
18 export function LanguageProvider({ children }: LanguageProviderProps) {
19 const [lang, setLang] = useState<SupportedLanguage>("en");
20 const t = translations[lang];
21
22 return (
23 <LanguageContext.Provider value={{ lang, setLang, t }}>
24 {children}
25 </LanguageContext.Provider>
26 );
27 }
28
29 export function useLang(): LanguageContextType {
30 const context = useContext(LanguageContext);
31 if (context === undefined) {
32 throw new Error("useLang must be used within a LanguageProvider");
33 }
34 return context;
35 }