Next.js hreflang

Next.js hreflang: implement language alternatives in the App Router

A practical guide to locale routes, reciprocal hreflang links, translated metadata, and dynamic pages in a Next.js App Router application.

Die kurze Antwort

Hreflang works when every language version has its own crawlable URL, identifies the complete language set, and links back to the other versions. In Next.js, generate those relationships with route-aware metadata instead of relying on browser language detection alone.

/ 01

Beginnen wir mit URLs

Jeder Sprachversion einen stabilen Weg geben

Verwenden Sie eine Routenstruktur wie /fr/pricing oder /de/products/widget. Die Seite sollte direkt erreichbar sein, die entsprechende Sprache serverseitig darstellen und auch dann gültig bleiben, wenn ein Crawler sie ohne Browser-Cookies oder eine Accept-Language-Einstellung anfordert.

  • Keep one canonical URL per language version.
  • Use stable slugs or a documented localized-slug strategy for dynamic pages.
  • Return a real 200 response for every published language route.
App Router route shape
app/
  [locale]/
    products/
      [slug]/
        page.js
        opengraph-image.js
    layout.js
    sitemap.js

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

Metadaten generieren

Gegenseitige Sprachbeziehungen schaffen

Next.js-Metadaten unterstützen ein `alternatives.languages`-Objekt. Generieren Sie für jede Gebietsschemaseite denselben vollständigen Sprachsatz, sodass die englische, französische und deutsche Version alle aufeinander verweisen.

  • Include the current page in its own language map.
  • Use fully qualified HTTPS URLs in production.
  • Keep language codes consistent with the locale values used by your application.
generateMetadata with Altified
import { headers } from "next/headers";
import { altified } from "@/lib/altified";

export async function generateMetadata() {
  const locale = (await headers()).get("x-altified-locale") || "en";

  return altified.translatedMetadata({
    locale,
    path: "/pricing",
    origin: "https://example.com",
    locales: ["en", "fr", "de"],
    title: "Pricing",
    description: "Plans for your product.",
  });
}
/ 03

Inhalt rendern

Stellen Sie sicher, dass die Seitensprache mit der URL übereinstimmt.

Hreflang ist kein Übersetzungsmechanismus. Die Seite unter /fr/products/widget muss französische Inhalte, Metadaten, Navigation, strukturierte Daten und relevante dynamische Werte darstellen. Die aktive Sprache muss ermittelt werden, bevor die Antwort den Browser erreicht.

  • Translate titles, descriptions, Open Graph fields, and visible headings together.
  • Forward the active locale to backend APIs.
  • Use source-language fallbacks while a translation is pending.
Forward the active locale
const response = await altifiedFetch(BACKEND_URL + path);

// The active Altified locale is forwarded to the backend.
const product = await response.json();
/ 04

Cluster validieren

Vor dem Start beide Richtungen prüfen.

Suchmaschinen können unvollständige oder widersprüchliche Sprachcluster ignorieren. Testen Sie jede veröffentlichte Sprachseite, überprüfen Sie den gerenderten Head-Bereich und stellen Sie sicher, dass die Links reziprok sind und jede Seite eine selbstkanonische URL besitzt.

  • English points to French, German, and English.
  • French points to English, German, and French.
  • Each canonical uses the same language as the page content.
  • Unpublished or incomplete locales are not advertised as live alternatives.

/ Produktionscheckliste

Überprüfen Sie die Spracherfahrung vor dem Start.

  • Every locale has a direct, crawlable URL.
  • Every language page returns translated content and metadata.
  • Hreflang links are reciprocal.
  • Canonicals are self-referential in the page language.
  • Dynamic product and article routes are included.
  • The site sitemap contains the language URL set.

Häufig gestellte Fragen

Fragen, die sich Teams vor der Implementierung von mehrsprachiger SEO stellen.

Does Next.js generate hreflang automatically?

Next.js stellt Metadaten-APIs für alternative Sprachen bereit, Ihre Anwendung muss jedoch die korrekten Gebietsschema-URLs und die Sprachzuordnung bereitstellen.

Should hreflang URLs be absolute?

Verwenden Sie in den Produktionsmetadaten und Sitemaps vollständig qualifizierte HTTPS-URLs, damit die Sprachbeziehungen eindeutig sind.

Do I still need canonical tags when using hreflang?

Ja. Hreflang beschreibt äquivalente Sprach- oder Regionalversionen; jede lokalisierte Seite sollte dennoch ihre eigene kanonische URL angeben.