Next.js i18n SEO

Next.js i18n SEO: routing, metadata, hreflang, and sitemaps

A framework guide for building multilingual Next.js pages that are server-rendered, indexable, internally linked, and clear to search engines.

/ La respuesta corta

Next.js i18n SEO is not only about translating strings. It is the combined system of locale routing, server-rendered content, translated metadata, canonical URLs, hreflang relationships, internal links, and sitemap discovery.

/ 01

Enrutamiento

Elija un modelo de ruta que los motores de búsqueda puedan rastrear.

La configuración regional debe formar parte de la URL o la estructura del dominio, no solo ser una cookie o una preferencia del navegador. Los diseños de App Router permiten compartir la estructura de la página al tiempo que se resuelve el contenido para la configuración regional.

  • Use /fr/page, fr.example.com/page, or a documented country-domain model.
  • Avoid serving multiple languages from one URL based only on detection.
  • Keep route and locale validation in one boundary.
A locale-aware App Router
app/
  [locale]/
    products/
      [slug]/
        page.js
        opengraph-image.js
    layout.js
    sitemap.js

// /fr/products/widget
// /de/products/widget
/ 02

Representación

Resuelva el contenido del idioma antes de la respuesta.

La copia estática de la interfaz, el contenido de la base de datos, las respuestas de la API y los metadatos deben coincidir con la configuración regional activa. Los componentes del servidor y las herramientas auxiliares del servidor explicitan esta relación y mantienen las credenciales alejadas del navegador.

  • Use stable translation keys for runtime values.
  • Forward the locale from Next.js to separate APIs.
  • Return source-language content when a translation is not ready.
Resolve dynamic content on the server
const copy = await altified.resolve(locale, [
  { key: `product.${product.id}.name`, defaultValue: product.name },
  { key: `product.${product.id}.description`, defaultValue: product.description },
]);
/ 03

Metadatos

Mantén alineados los títulos, las descripciones, los textos canónicos y los alternativos.

Una página en francés debe tener metadatos en francés y una URL canónica en francés. Genere sus alternativas de idioma a partir de los mismos datos de ruta utilizados para renderizar la página, de modo que una ruta renombrada o no publicada no cree enlaces obsoletos.

  • Translate title and description fields.
  • Add a self-canonical URL for every locale page.
  • Add reciprocal alternates for the complete published language set.
Locale-aware page metadata
export async function generateMetadata({ params }) {
  const { locale, slug } = await params;
  const product = await getProduct(slug);
  const path = `/products/${product.slug}`;

  return {
    title: product.seoTitle[locale],
    description: product.seoDescription[locale],
    alternates: {
      canonical: `https://example.com/${locale}${path}`,
      languages: {
        en: `https://example.com/en${path}`,
        fr: `https://example.com/fr${path}`,
        de: `https://example.com/de${path}`,
      },
    },
  };
}
/ 04

Descubrimiento

Enlace y envíe el conjunto completo de idiomas.

Los enlaces internos, el mapa del sitio y un mapa del sitio traducido complementario deben apuntar a las rutas publicadas reales. No utilice un mapa del sitio traducido para ocultar rutas de aplicación faltantes o metadatos dañados.

  • Link language versions from navigation or a language switcher.
  • Include dynamic pages in the site-owned sitemap.
  • Submit the relevant sitemap URLs in Search Console.

Lista de verificación de producción

Verifique la experiencia lingüística antes del lanzamiento.

  • Locale routing is deterministic.
  • Pages render the selected language on the server.
  • Metadata is translated and route-aware.
  • Canonicals and hreflang agree.
  • Dynamic routes are included in the sitemap.
  • Language pages link to each other and to the source-language page.

Preguntas frecuentes

Preguntas que se hacen los equipos antes de implementar el SEO multilingüe.

What is the most important Next.js i18n SEO decision?

Primero, elige un modelo de URL rastreable. Una vez que cada idioma tenga una URL estable, puedes alinear la representación, los metadatos, el atributo hreflang, los enlaces internos y los mapas del sitio en torno a ella.

Can the App Router share one page across languages?

Sí. Un segmento de localización y diseños compartidos pueden reutilizar la estructura de la página al tiempo que resuelven el contenido, los metadatos y los datos de ruta específicos del idioma.

Does a client-side language switcher provide SEO by itself?

No. El selector ayuda a los usuarios a navegar, pero los motores de búsqueda aún necesitan URL de idioma directas que devuelvan el contenido y los metadatos correctos generados por el servidor.