Configurar la internacionalización (i18n) en Next.js App Router

Monta un sitio Next.js multidioma con rutas por idioma, detección del idioma, diccionarios en servidor, selector de idioma, hreflang y formato de fechas y precios por región. Pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Incluye 5 variables personalizables y se copia gratis en un clic.

Avanzado · Código · Pendiente de revisión editorial

Prompt

Actúa como desarrollador sénior de Next.js con experiencia en sitios multidioma y SEO internacional.

Contexto:
- Idiomas: {{idiomas}}
- Idioma por defecto: {{idioma_defecto}}
- Estrategia de URL: {{estrategia_url}}
- Enfoque: {{enfoque}}
- Origen de los textos: {{origen_textos}}

Antes de escribir código, confírmame la versión de Next.js y si el proyecto ya tiene rutas existentes que haya que mantener; si no lo sé, indica qué supones.

Entregables:
1. Estructura de carpetas con el segmento `[locale]` y cómo encajan layout, páginas y metadatos.
2. El archivo de middleware (o su equivalente en tu versión) que detecta el idioma con la cookie elegida por el usuario y la cabecera Accept-Language, y redirige según {{estrategia_url}} sin crear bucles.
3. Carga de diccionarios en el servidor, con claves tipadas para que TypeScript avise de las que falten, y una estrategia de respaldo al idioma por defecto.
4. Un selector de idioma accesible que conserve la ruta actual y guarde la preferencia.
5. Metadatos SEO: `lang` en el elemento html, URL canónica y alternativas hreflang (incluida x-default) en cada página, y generateStaticParams para prerenderizar cada idioma.
6. Formato de fechas, números, monedas y plurales con Intl o con las utilidades de {{enfoque}}.
7. Una lista de comprobaciones antes de publicar.

Restricciones:
- No traduzcas el contenido real: deja los textos de ejemplo como [COMPLETAR] por idioma.
- No redirijas a los rastreadores solo por la IP ni ocultes contenido según el país.
- Mantén el texto de la interfaz fuera de los componentes, en los diccionarios.

Formato: un bloque de código por archivo con su ruta y una nota breve sobre cada decisión.

Cómo usarlo

  1. Indica los idiomas, el de por defecto y si quieres prefijo en todas las URL. 2. Elige librería o diccionarios propios. 3. Crea los archivos en una rama, comprueba las redirecciones y valida hreflang con una herramienta de SEO antes de publicar.

Ejemplo de uso

Idiomas: es, en, fr · Por defecto: es · URL: prefijo excepto el idioma por defecto · Enfoque: next-intl · Textos: archivos JSON en el repositorio.

Resultado de ejemplo

Supuesto: Next.js 15 y next-intl 4. La carpeta de rutas queda como app/[locale]/layout.tsx y app/[locale]/page.tsx.

Enrutado, middleware y carga de mensajes

// src/i18n/routing.ts
import { defineRouting } from 'next-intl/routing';

export const routing = defineRouting({
  locales: ['es', 'en', 'fr'],
  defaultLocale: 'es',
  localePrefix: 'as-needed', // /sobre-nosotros (es), /en/..., /fr/...
});

// src/middleware.ts
import createMiddleware from 'next-intl/middleware';
import { routing } from './i18n/routing';

export default createMiddleware(routing);
export const config = { matcher: ['/((?!api|_next|_vercel|.*\\..*).*)'] };

// src/i18n/request.ts
import { getRequestConfig } from 'next-intl/server';
import { hasLocale } from 'next-intl';
import { routing } from './routing';

export default getRequestConfig(async ({ requestLocale }) => {
  const requested = await requestLocale;
  const locale = hasLocale(routing.locales, requested) ? requested : routing.defaultLocale;
  return { locale, messages: (await import(`../../messages/${locale}.json`)).default };
});

El middleware lee primero la cookie NEXT_LOCALE y después Accept-Language; con as-needed, el español no lleva prefijo y no se generan bucles de redirección. Los textos viven en messages/es.json, en.json y fr.json con valores [COMPLETAR]…

Datos clave

Categoría
Programación y desarrollo · Next.js
Tipo de resultado
Código
Nivel
Avanzado
Pensado para
ChatGPT, Claude, Gemini y Microsoft Copilot
Verificado en
Pendiente de verificación editorial
Variables
Idiomas, Idioma por defecto, Estrategia de URL, Enfoque y Origen de los textos
Idioma
Español
Precio
Gratis, sin registro
Actualizado
07/11/2026

Preguntas frecuentes

¿Es mejor next-intl o diccionarios propios?

Con pocos textos y sin plurales complejos, unos diccionarios propios bastan. Si necesitas plurales, formato ICU, traducciones en componentes de cliente y tipado de claves, una librería como next-intl ahorra trabajo.

¿Debo redirigir automáticamente según el idioma del navegador?

Es razonable en la primera visita, pero respeta siempre la elección guardada del usuario y deja que cada URL de idioma sea accesible directamente. Así los buscadores pueden rastrear todas las versiones.

¿Para qué sirve x-default en hreflang?

Indica a los buscadores qué página mostrar cuando ningún idioma coincide con el del usuario, normalmente la del idioma por defecto o un selector de idioma.

¿Para qué sirve este prompt?

Monta un sitio Next.js multidioma con rutas por idioma, detección del idioma, diccionarios en servidor, selector de idioma, hreflang y formato de fechas y precios por región.

¿Con qué herramientas de IA funciona?

Está pensado para ChatGPT, Claude, Gemini y Microsoft Copilot. Todavía no lo hemos verificado en estas herramientas, por lo que los resultados pueden variar entre ellas.

¿Cómo personalizo el prompt?

Pulsa «Personalizar» y rellena las variables (Idiomas, Idioma por defecto, Estrategia de URL, Enfoque y Origen de los textos). El texto se actualiza al instante y después puedes copiarlo con un clic. Los valores se guardan solo en tu navegador.

¿Necesito experiencia para usarlo?

Es de nivel avanzado: está pensado para personas con experiencia en el tema que sepan evaluar y ajustar el resultado.

¿Este prompt es gratis?

Sí. Todos los prompts de HomeCasa Prompts son gratuitos, sin registro ni suscripción. Puedes usarlos también en proyectos profesionales.

¿Puedo fiarme del resultado de la IA?

Úsalo como un borrador de calidad: revisa siempre datos, cifras y afirmaciones importantes antes de publicarlos o tomar decisiones.

Prompts relacionados