'use client' import { useEffect, useState } from 'react' import { PUBLIC_SITE_LANGUAGE_COOKIE, type PublicSiteLanguage } from '@/lib/i18n' import { SHARED_LANGUAGE_COOKIE, SHARED_LANGUAGE_KEY, writeScopedPreference } from '@/lib/preferences' const labels: Record = { en: 'Language', fr: 'Langue', ar: 'اللغة', } export default function PublicLanguageSwitcher({ currentLanguage, }: { currentLanguage: PublicSiteLanguage }) { const [language, setLanguage] = useState(currentLanguage) useEffect(() => { setLanguage(currentLanguage) }, [currentLanguage]) useEffect(() => { document.documentElement.lang = language document.documentElement.dir = language === 'ar' ? 'rtl' : 'ltr' writeScopedPreference(SHARED_LANGUAGE_KEY, language, ['public-site-language']) }, [language]) function handleChange(nextLanguage: PublicSiteLanguage) { setLanguage(nextLanguage) document.cookie = `${SHARED_LANGUAGE_COOKIE}=${nextLanguage}; path=/; max-age=31536000; samesite=lax` document.cookie = `${PUBLIC_SITE_LANGUAGE_COOKIE}=${nextLanguage}; path=/; max-age=31536000; samesite=lax` window.location.reload() } return (
{labels[language]} {(['en', 'fr', 'ar'] as PublicSiteLanguage[]).map((value) => { const active = value === language return ( ) })}
) }