SEO
This commit is contained in:
@@ -15,26 +15,13 @@ const LangContext = createContext<LangCtx>({
|
||||
t: translations.de,
|
||||
})
|
||||
|
||||
function getInitialLang(): Lang {
|
||||
if (typeof document === 'undefined') return 'de'
|
||||
const pathname = window.location.pathname
|
||||
if (pathname === '/') return 'de'
|
||||
if (pathname === '/en' || pathname.startsWith('/en/')) return 'en'
|
||||
if (pathname === '/de' || pathname.startsWith('/de/')) return 'de'
|
||||
if (pathname === '/es' || pathname.startsWith('/es/')) return 'es'
|
||||
const match = document.cookie.match(/(?:^|;\s*)lang=([^;]+)/)
|
||||
const val = match?.[1]
|
||||
return val === 'en' || val === 'es' || val === 'de' ? val : 'de'
|
||||
}
|
||||
|
||||
export function LangProvider({ children }: { children: ReactNode }) {
|
||||
const [lang, setLangState] = useState<Lang>('de')
|
||||
export function LangProvider({ children, initialLang }: { children: ReactNode; initialLang: Lang }) {
|
||||
const [lang, setLangState] = useState<Lang>(initialLang)
|
||||
|
||||
useEffect(() => {
|
||||
const initialLang = getInitialLang()
|
||||
document.documentElement.lang = initialLang
|
||||
setLangState(initialLang)
|
||||
}, [])
|
||||
}, [initialLang])
|
||||
|
||||
const setLang = (l: Lang) => {
|
||||
document.cookie = `lang=${l};path=/;max-age=31536000;SameSite=Lax`
|
||||
|
||||
Reference in New Issue
Block a user