Cuando un usuario selecciona el idioma preferido, lo guardo en una cookie NEXT_LOCALE. En la página de índice, la cookie NEXT_LOCALE sabe redirigir al usuario al idioma preferido, pero si el usuario proviene de un enlace externo como un correo electrónico o un boletín como apple.com/ startup no redirige al usuario al idioma preferido. ¿Hay alguna manera de hacer esto sin afectar el SEO?
//next-18nnext.config.js module.exports = { i18n: { defaultLocale: 'en', locales: ['en', 'fr'], }, react: { useSuspense: false }, };===============ACTUALIZAR===============
Mi selector de idioma y la configuración de la cookie:
const LanguageSwitcher = () => { const router = useRouter(); const { locale, pathname } = router; useEffect(() => { if (locale === 'fr') { document.cookie = `NEXT_LOCALE=fr`; } }, []); const activeClass = (lang) => (lang === locale) && 'active'; return ( <> <Link href={ pathname } locale="en"> <LanguageLink className={ activeClass('en') }> EN </LanguageLink> </Link> <LanguageSeparator> | </LanguageSeparator> <Link href={ pathname } locale="fr"> <LanguageLink className={ activeClass('fr') }> FR </LanguageLink> </Link> </> ); };Y en mi _app.js
const languageCookie = getCookie('NEXT_LOCALE'); useEffect(() => { if (languageCookie === 'fr') { router.push(`${languageCookie}${pathname}`); } }, []);Pero con esta implementación, la página se carga por un segundo en 'en' y luego se redirige al idioma de las cookies.
¿Debo tomar la cookie en getStaticProps de cada página?
Avíseme si debo compartir más código o cualquier otra información.
¡Gracias!