Files
Greenlens/greenlns-landing/context/LangContext.tsx
2026-07-10 13:27:29 +02:00

41 lines
1.0 KiB
TypeScript

'use client'
import { createContext, useContext, useState, useEffect, ReactNode } from 'react'
import { Lang, translations } from '@/lib/i18n'
interface LangCtx {
lang: Lang
setLang: (l: Lang) => void
t: typeof translations.de
}
const LangContext = createContext<LangCtx>({
lang: 'de',
setLang: () => {},
t: translations.de,
})
export function LangProvider({ children, initialLang }: { children: ReactNode; initialLang: Lang }) {
const [lang, setLangState] = useState<Lang>(initialLang)
useEffect(() => {
document.documentElement.lang = initialLang
setLangState(initialLang)
}, [initialLang])
const setLang = (l: Lang) => {
document.cookie = `lang=${l};path=/;max-age=31536000;SameSite=Lax`
// Update <html lang> for the current page visit without a full reload
document.documentElement.lang = l
setLangState(l)
}
return (
<LangContext.Provider value={{ lang, setLang, t: translations[lang] }}>
{children}
</LangContext.Provider>
)
}
export const useLang = () => useContext(LangContext)