Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección
El contenido de esta página ha sido traducido con una IA.
Ver la última versión del contenido original en inglésSi tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.
Enlace de GitHub a la documentaciónCopiar el Markdown del documento a la portapapeles
Traduce tu sitio web Next.js 15 usando next-intl con Intlayer | Internacionalización (i18n)
Esta guía te lleva a través de las mejores prácticas de next-intl en una aplicación Next.js 15 (App Router), y muestra cómo superponer Intlayer para una gestión y automatización robusta de traducciones.
Consulta la comparación en next-i18next vs next-intl vs Intlayer.
- Para juniors: sigue las secciones paso a paso para obtener una aplicación multilingüe funcional.
- Para desarrolladores de nivel medio: presta atención a la optimización del payload y la separación servidor/cliente.
- Para seniors: ten en cuenta la generación estática, middleware, integración SEO y hooks de automatización.
Lo que cubriremos:
- Configuración y estructura de archivos
- Optimización de la carga de mensajes
- Uso de componentes cliente y servidor
- Metadatos, sitemap, robots para SEO
- Middleware para enrutamiento por locale
- Añadir Intlayer encima (CLI y automatización)
Configura tu aplicación usando next-intl
Instala las dependencias de next-intl -
Copiar el código al portapapeles
Copiar el código al portapapeles
Configuración y carga de contenido
Carga solo los namespaces que tus rutas necesitan y valida los locales desde el principio. Mantén los componentes del servidor síncronos cuando sea posible y envía solo los mensajes requeridos al cliente.
Copiar el código al portapapeles
Copiar el código al portapapeles
Copiar el código al portapapeles
Uso en un componente cliente
Tomemos un ejemplo de un componente cliente que renderiza un contador.
Traducciones (misma estructura; cárgalas en los mensajes de next-intl como prefieras)
Copiar el código al portapapeles
Copiar el código al portapapeles
Componente cliente
Copiar el código al portapapeles
No olvides añadir el mensaje "about" en el mensaje cliente de la página (solo incluya los namespaces que su cliente realmente necesite).
Uso en un componente servidor
Este componente UI es un componente servidor y puede ser renderizado dentro de un componente cliente (página → cliente → servidor). Manténgalo síncrono pasando cadenas precomputadas.
Copiar el código al portapapeles
Notas:
- Calcule
formattedCountdel lado del servidor (por ejemplo,const initialFormattedCount = format.number(0)). - Evite pasar funciones u objetos no serializables a los componentes servidor.
Copiar el código al portapapeles
Copiar el código al portapapeles
Copiar el código al portapapeles
Middleware para el enrutamiento por locales
Agrega un middleware para manejar la detección y el enrutamiento por locales:
Copiar el código al portapapeles
Mejores prácticas
- Configurar html
langydir: Ensrc/app/[locale]/layout.tsx, calculadirmediantegetLocaleDirection(locale)y establece<html lang={locale} dir={dir}>. - Dividir mensajes por namespace: Organiza JSON por locale y namespace (por ejemplo,
common.json,about.json). - Minimiza la carga en el cliente: En las páginas, envía solo los namespaces requeridos a
NextIntlClientProvider(por ejemplo,pick(messages, ['common', 'about'])). - Prefiere páginas estáticas: Exporta
export const dynamic = 'force-static'y genera parámetros estáticos para todos loslocales. - Componentes de servidor síncronos: Pasa cadenas precomputadas (etiquetas traducidas, números formateados) en lugar de llamadas asíncronas o funciones no serializables.
Implementar Intlayer sobre next-intl
Instala las dependencias de intlayer:
Copiar el código al portapapeles
Crea el archivo de configuración de intlayer:
Copiar el código al portapapeles
Agrega los scripts en package.json:
Copiar el código al portapapeles
Notas:
intlayer fill: utiliza tu proveedor de IA para completar las traducciones faltantes basándose en los locales configurados.intlayer test: verifica traducciones faltantes o inválidas (úsalo en CI).
Puedes configurar argumentos y proveedores; consulta Intlayer CLI.