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.
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.
| Datei | Was sie macht |
| .pot | Template – Extract aller Strings |
| .po | Editierbare Übersetzungsdatei |
| .mo | Binär-Version für Performance |
| .l10n.php | Neu in WP 6.5 – PHP-Übersetzungsdatei, schneller durch OPcache |
| .json | JavaScript-Ü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:
| Ansatz | Beschreibung | Vorteile | Nachteile |
| Single Site | Alles in einer Installation, Übersetzungen gemeinsam gespeichert | ✅ Einfach, einheitlich ✅ Ein Dashboard | ❌ Kann schnell chaotisch werden ❌ Plugin-/Vendor-Lock-in |
| Multisite | Jede Sprache bekommt eine eigene Site (ideal für Trennung + Skalierung) | ✅ Saubere Trennung ✅ Sehr skalierbar | ❌ Komplexer in der Verwaltung ❌ Inhaltssyn-chronisierung nötig |
| SaaS | Externer Ü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.
Mach deine Seite mehrsprachig

Weitere Artikel
-
Matt Mullenweg über KI, das offene Web und die Zukunft von WordPress
In diesem aufschlussreichen Gespräch ging es darum, wie KI WordPress verändert, warum Websites nach wie vor unverzichtbar sind, wie die Plattform den Anforderungen von Unternehmen gerecht wird – und sogar,
-
5 versteckte WordPress Performance-Fallen, die dich Conversions kosten
Enterprise-WordPress-Seiten können nach außen schnell wirken, während sie im Hintergrund still und leise Umsatz kosten. Dieser Guide zeigt dir, wie du diese versteckten Performance-Fallen vermeidest.
