Documentación / Next.js
Next.js i18n para el App Router, automatizado
Localiza una aplicación Next.js App Router: los componentes del servidor obtienen un traductor esperado, los componentes del cliente useTranslation, y el idioma sigue una cookie. Un comando o una solicitud de extracción.
Cómo funciona
Los archivos en app/ sin 'use client' son componentes del servidor, que no pueden llamar a hooks. En su lugar, obtienen const { t } = await getTranslation() de un módulo i18n.server generado que lee la cookie lang y luego Accept-Language.
Los componentes del cliente conservan useTranslation(), y el layout raíz les pasa el mismo idioma, por lo que una página se renderiza en un idioma en el servidor y el cliente.
Antes y después
La salida real del motor para este archivo. En una ejecución real, el modelo alojado nombra las claves a partir del contexto.
export default function Home() {
return (
<main>
<h1>Ship in every language</h1>
<p>Start a free trial today.</p>
</main>
);
}import { useTranslation } from 'react-i18next';
export default function Home() {
const { t } = useTranslation();
return (
<main>
<h1>{t('home.ship_in_every_language')}</h1>
<p>{t('home.start_a_free_trial_today')}</p>
</main>
);
}{
"home": {
"ship_in_every_language": "Ship in every language",
"start_a_free_trial_today": "Start a free trial today."
}
}Lo que añade la configuración
La primera ejecución configura react-i18next (servidor y cliente) si el proyecto aún no lo tiene:
i18nextyreact-i18next,src/i18n.tsyi18n.server.ts- Un
<I18nProvider>alrededor del layout raíz, y<html lang>que sigue el idioma - Un selector de idioma que establece la cookie y actualiza, para que los componentes del servidor se vuelvan a renderizar
- Un
proxy.tsque sirve/es/aboutcon la página/abouten español, y enlaceshreflangentre idiomas, para que los motores de búsqueda indexen cada uno
Ejecutarlo
La CLI necesita Node.js 22 o posterior.
npm install --save-dev localize-dev
npx localize-dev login
# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de
# Or open a pull request instead
npx localize-dev pr -l es,fr,deO añade la GitHub Action y obtén una pull request en cada push. Pruébalo primero en tu propio código en el playground.