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 réponse courte

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

Routage

Choisissez un modèle de route que les moteurs de recherche peuvent explorer.

Les paramètres régionaux doivent faire partie de l'URL ou de la structure du domaine, et non pas seulement être un cookie ou une préférence du navigateur. Les modèles App Router permettent de partager la structure de la page tout en adaptant le contenu aux paramètres régionaux.

  • 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

Rendu

Réglez le problème de la langue avant la réponse.

L'interface statique, le contenu de la base de données, les réponses de l'API et les métadonnées doivent utiliser la langue active. Les composants serveur et les fonctions d'assistance côté serveur rendent cette correspondance explicite et empêchent les informations d'identification d'être accessibles au navigateur.

  • 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

Métadonnées

Veillez à ce que les titres, les descriptions, les URL canoniques et les URL alternatives soient alignés.

Une page en français doit comporter des métadonnées et une URL canonique en français. Générez ses alternatives linguistiques à partir des mêmes données de route utilisées pour afficher la page afin qu'une route renommée ou non publiée ne crée pas de liens obsolètes.

  • 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

Découverte

Liez et soumettez l'ensemble complet des langues

Les liens internes, le plan du site et un plan du site traduit supplémentaire doivent tous pointer vers des routes réellement publiées. N'utilisez pas un plan du site traduit pour masquer des routes manquantes ou des métadonnées erronées.

  • 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.

/ Liste de contrôle de production

Vérifiez l'expérience linguistique avant le lancement.

  • 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.

/ Foire aux questions

Questions que se posent les équipes avant de mettre en œuvre un référencement multilingue.

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

Choisissez d'abord un modèle d'URL indexable. Une fois que chaque langue dispose d'une URL stable, vous pouvez aligner le rendu, les métadonnées, les balises hreflang, les liens internes et les sitemaps autour de celle-ci.

Can the App Router share one page across languages?

Oui. Un segment de localisation et des mises en page partagées peuvent réutiliser la structure de la page tout en résolvant le contenu, les métadonnées et les données de routage spécifiques à la langue.

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

Non. Le sélecteur aide les utilisateurs à naviguer, mais les moteurs de recherche ont toujours besoin d'URL directes dans la langue qui renvoient le contenu et les métadonnées corrects rendus par le serveur.