/
zxclovly
/
LUME
Обзор
Документация
Войти
/
zxclovly
/
LUME
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/contexts/LanguageContext.tsx
44 строки
1 KB
lovlygod
chore: prepare frontend for vercel
12 мар 2026, 00:05
12 мар 2026, 00:05
ce263e7
Код
Авторство
О чём код?
import { useState, useEffect, createContext, useContext, ReactNode } from "react"; import { translations, Language, getTranslation } from "@/i18n/translations"; interface LanguageContextType { language: Language; setLanguage: (lang: Language) => void; t: (key: string, params?: Record<string, string | number | boolean>) => string; } const LanguageContext = createContext<LanguageContextType | undefined>(undefined); export function LanguageProvider({ children }: { children: ReactNode }) { const [language, setLanguageState] = useState<Language>(() => { const saved = localStorage.getItem("language") as Language | null; return saved || "ru"; }); useEffect(() => { localStorage.setItem("language", language); document.documentElement.lang = language; }, [language]); const setLanguage = (lang: Language) => { setLanguageState(lang); }; const t = (key: string, params?: Record<string, string | number | boolean>): string => { return getTranslation(language, key, params); }; return ( <LanguageContext.Provider value={{ language, setLanguage, t }}> {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; }