Wie du mehrsprachige WordPress-Websites erstellst: Ein Leitfaden für Entwickler

Teilen

Eine mehrsprachige WordPress-Website zu erstellen, bedeutet nicht nur, Texte zu übersetzen – es geht darum, Produkte zu entwickeln, die für alle funktionieren, überall auf der Welt.

Egal ob du ein Plugin entwickelst, ein eigenes Theme gestaltest oder Inhalte für ein globales Publikum verwaltest – deine gesamte Codebasis auf internationale Nutzung vorzubereiten, geht weit über einfache String-Übersetzungen hinaus.

Auf dem WordCamp Europe habe ich in meiner Session „Multilingual WordPress for Developers“ alles aufgeschlüsselt – mit Best Practices, Codebeispielen und Tipps, die Entwickler wirklich nutzen können. Schau dir das Video an oder lies die vereinfachte Zusammenfassung unten mit allen wichtigen Punkten – inklusive Code.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Erstmal: Was bitte ist i18n und L10n?

Du hast diese kryptischen Kürzel bestimmt schon gesehen – i18n, L10n, vielleicht auch g11n oder a11y.

Sie stehen für:

  • i18n = Internationalization (18 Buchstaben zwischen „i“ und „n“)
  • L10n = Localization
  • g11n = Globalization
  • a11y = Accessibility
  • p13n = Personalization

Der Unterschied?

Internationalization (i18n) ist unser Job als Devs – es geht darum, den Code vorzubereiten, damit er übersetzt werden kann.

Localization (L10n) ist der Moment, wo die Magie passiert – Übersetzer (oder Tools) passen die Inhalte an verschiedene Sprachen und Kulturen an.

Mach deinen Code übersetzbar (aber richtig!)

WordPress stellt uns eine Reihe von i18n-Funktionen bereit, um Strings übersetzbar zu machen. Die lassen sich grob in drei Kategorien einteilen:

Die Guten:

Nutze sie. Lerne sie. Liebe sie.

  • __() — der Klassiker: gibt einen übersetzten String zurück
  • _x() — fügt Kontext hinzu (z.B. „Save“ im Sinne von „Datei speichern” vs. „Einen Welpen retten“)
  • _n() — Plural-Unterstützung (1 Kommentar vs. 2 Kommentare)
<?php

$translated_string = __(
	'Demo__ Text',
	'multilingual-wp4devs'
);

$translated_string_with_context = _x(
	'Demo_x Text',
	'Demo Context',
	'multilingual-wp4devs'
);

$stars = wp_rand( 1, 5 );

_n(
	'%d star',
	'%d stars',
	$stars,
	'multilingual-wp4devs'
);

Die Schlechten:

  • _e() und _ex() — sie geben Strings direkt aus … aber ohne Escaping. Schlechte Idee.
  • Sie funktionieren, aber setze sie im produktiven Einsatz nur ein, wenn du die Ausgabe selbst sicherst.
<?php

// phpcs:ignore WordPress.Security.EscapeOutput.UnsafePrintingFunction
_e(
	'Demo_e Text',
	'multilingual-wp4devs'
);

// phpcs:ignore WordPress.Security.EscapeOutput.UnsafePrintingFunction
_ex(
	'Demo_x Text',
	'Demo Context',
	'multilingual-wp4devs'
);

Die Hässlichen (aber sicheren):

Diese Funktionen kombinieren Übersetzung und Escaping:

  • esc_html__(), esc_attr__()
  • esc_html_x(), esc_attr_x()
<?php

echo esc_html__( 'Demo__ Text', 'multilingual-wp4devs' );

echo esc_attr__( 'Demo__ Text', 'multilingual-wp4devs' );

esc_html_e( 'Demo_e Text', 'multilingual-wp4devs' );

esc_attr_e( 'Demo_e Text', 'multilingual-wp4devs' );

echo esc_html_x(
	'Demo_x Text',
	'Demo Context',
	'multilingual-wp4devs'
);

echo esc_attr_x(
	'Demo_x Text',
	'Demo Context',
	'multilingual-wp4devs'
);

Ja, sie sind etwas sperrig. Aber so bleibt deine Ausgabe sicher und der Code stabil.

Hilf den Übersetzer:innen, dir zu helfen

Eine gute Übersetzung ist nicht nur der String. Es geht um den Kontext.

Nutze Übersetzer-Kommentare:

<?php

$stars = wp_rand( 1, 5 );

$stars_str = sprintf(
	// translators: %d ist eine ganze Zahl für die Sternebewertung.
	_n( '%d star', '%d stars', $stars, 'multilingual-wp4devs' ),
	$stars
);

$demo_str = sprintf(
	// translators: %1$s kann ein beliebiges Zeichen sein, %2$s ist ein weiterer Platzhalter-String.
	__( 'Demo Content - %1$s and %2$s', 'multilingual-wp4devs' ),
	'A',
	'B'
);

Ohne diesen Kommentar weiß ein Übersetzer vielleicht nicht, was die Platzhalter bedeuten – das führt schnell zu falschen oder holprigen Übersetzungen, vor allem bei anderen Satzstrukturen.

Übersetzungsdateien: Hinter den Kulissen

Du hast deine Strings korrekt eingebaut und Kontext gegeben. Super! Doch wie kommen die Übersetzungen nun eigentlich aus dem Code auf den Bildschirm?

Hier ein Blick auf die verschiedenen Dateitypen und warum sie wichtig sind.

DateiWas sie macht
.potTemplate – Extract aller Strings
.poEditierbare Übersetzungsdatei
.moBinär-Version für Performance
.l10n.phpNeu in WP 6.5 – PHP-Übersetzungsdatei, schneller durch OPcache
.jsonJavaScript-Übersetzungen (JED-Format)

Pro-Tipp: Nutze WP-CLI, um Übersetzungsdateien zu generieren und zu prüfen:

# JavaScript-Strings aus PO-Datei extrahieren
# und als einzelne JSON-Dateien speichern.
wp i18n make-json

# MO-Dateien aus PO-Dateien erstellen.
wp i18n make-mo

# PHP-Dateien aus PO-Dateien erstellen.
wp i18n make-php

# POT-Datei für ein WordPress-Projekt anlegen.
wp i18n make-pot

# PO-Dateien mit POT-Datei abgleichen.
wp i18n update-po

Textdomain: Das Namespace für Übersetzungen

Jedes Plugin oder Theme sollte eine Textdomain definieren. So weiß WordPress, welche Übersetzungen geladen werden sollen.

Lade sie in deinem Plugin manuell:

<?php

/**
 * Der Hook 'init' sollte genutzt werden, um die Übersetzungen eines Plugins zu laden.
 *
 * Nicht 'plugins_loaded' verwenden, das erzeugt eine Warnung!
 */
add_action(
	'init',
	static function () {
		load_plugin_textdomain(
			'multilingual-wp4devs',
			false,
			__DIR__ . '/languages'
		);
	}
);

Oder lass WordPress das automatisch machen, wenn:

  • Dein Plugin auf WordPress.org ist (ab WP 4.6)
  • Oder du Text Domain und Domain Path Header (ab WP 6.8) definiert hast

Vergiss JavaScript nicht!

Modernes WordPress = modernes JavaScript. Das heißt: Auch dein JS braucht Übersetzungen.

Gute Nachrichten: WordPress hilft dir mit dem @wordpress/i18n-Package. Es markiert einen String als übersetzbar und holt den übersetzten Wert.

import { __ } from '@wordpress/i18n';
import { registerBlockType } from '@wordpress/blocks';

registerBlockType( 'lloc/multilingual-wp4devs', {
	apiVersion: 3,
	title: __( 'Simple Block', 'multilingual-wp4devs' ),
	category: 'widgets',

	edit: () => {
		return <p>{ __( 'Hello Editor', 'multilingual-wp4devs' ) }</p>;
	},

	save: () => {
		return <p>{ __( 'Dear Reader', 'multilingual-wp4devs' ) }</p>;
	},
} );

User-Einstellungen: Die unsichtbare mehrsprachige Ebene

Internationalisierung ist nicht nur eine Frage der Texte. Denke auch an:

  • Datumsformate
  • Zahlenformate
  • Zeitzonen
  • Währungen

WordPress erlaubt Usern die Sprachauswahl und Site-Admins können im Backend die Lokaleinstellungen vorgeben.

Respektiere das mit folgenden Funktionen:

<?php

$date = date_i18n(
	get_option( 'date_format' )
);

echo esc_html( $date );

$timestamp = mktime( 13, 42, 23, 7, 17, 2025 );
$date      = date_i18n(
	get_option( 'date_format' ),
	$timestamp
);

echo esc_html( $date );

So sieht das Datum bei jedem passend aus – egal welche Sprache oder Region gewählt ist.

Architektur: Wie du dein mehrsprachiges Projekt strukturierst, zählt

WordPress bietet (noch) keine Mehrsprachigkeit im Core. Deshalb liegt es an dir (und deinen Lieblingstools), wie du das umsetzt.

Das sind die drei häufigsten Ansätze, die Entwickler:innen aktuell nutzen:

AnsatzBeschreibungVorteileNachteile
Single SiteAlles in einer Installation, Übersetzungen gemeinsam gespeichert✅ Einfach, einheitlich
✅ Ein Dashboard
❌ Kann schnell chaotisch werden
❌ Plugin-/Vendor-Lock-in
MultisiteJede Sprache bekommt eine eigene Site (ideal für Trennung + Skalierung)✅ Saubere Trennung
✅ Sehr skalierbar
❌ Komplexer in der Verwaltung
❌ Inhaltssyn-chronisierung nötig
SaaSExterner Übersetzungsdienst wie Weglot oder TranslatePress✅ Schneller Start
✅ Automatische Übersetzung
❌ Weniger Kontrolle
❌ Laufende Kosten

Wenn du dich für das Multisite-Modell interessierst, glänzt das MultilingualPress Plugin von Syde besonders.

MultilingualPress verbindet separate Sites im Multisite-Netzwerk, organisiert die Sprachbeziehungen und integriert sich nahtlos in WordPress – ohne Inhalte zu duplizieren oder Workflows zu erzwingen. Eine starke Lösung für Entwickler:innen, die Skalierbarkeit, Flexibilität und Performance wollen.

Pro-Tipp: Mache eine kurze SWOT-Analyse (Stärken, Schwächen, Chancen, Risiken) für jeden Ansatz, bevor du dich entscheidest. Denke nicht nur an den Launch, sondern auch an Wartung und Wachstum in zwei, drei Jahren.

Best Practices für Multilingual WordPress im Überblick

Das solltest du tun:

  • Jeden String von Anfang an einbinden
  • Übersetzte Ausgaben escapen – nie davon ausgehen, dass sie sicher sind
  • Translator-Kommentare hinzufügen, um Missverständnisse zu vermeiden
  • Sowohl PHP- als auch JS-Übersetzungen abdecken
  • Die Architektur passend wählen
  • Mit unterschiedlichen Sprachen, Scripts und Lokalisierungen testen

Bereit für Multilingual?

Wenn du tiefer einsteigen, mit echtem Code experimentieren oder sehen willst, wie alles zusammenspielt, haben wir alles, was du für den Start brauchst.

Ein begleitendes Plugin mit allen Beispielen aus dieser Session findest du auf GitHub. Dort bekommst du praxisnahe Beispiele für String-Vorbereitung, die richtige Plugin-Struktur, JS-Übersetzungen und sichere Arbeit mit Inhalten. Hier geht’s direkt zum Plugin, oder besuche @realloc zum Ausprobieren, Testen oder Forken für deine eigenen Projekte.

Interesse an den Interna?

  • Alle PHP-i18n-Funktionen von WordPress findest du in wp-includes/l10n.php.
  • Für JavaScript liefert das @wordpress/i18n-Package alles, was du für Internationalisierung im modernen Frontend brauchst – und es wird im Block-Editor voll unterstützt.

Und wenn du an einem großen mehrsprachigen Projekt arbeitest oder Hilfe bei der Architekturplanung willst, schau mal bei Syde vorbei. Wir sind Europas größte WordPress-Agentur und die Macher von MultilingualPress, dem starken Plugin, das wahre Mehrsprachigkeit zu WordPress Multisite bringt. Wir unterstützen Unternehmen und Agenturen bei der Umsetzung maßgeschneiderter Multilingual-Lösungen: skalierbar, sicher und editorfreundlich. Von Strategie bis Umsetzung – wir zeigen dir, wie Multilingual WordPress richtig läuft.

Weitere Artikel