Strings per Polylang übersetzbar machen

Ich nutze auf allsky-rodgau.de das Tool „Polylang“ um den Blog auf deutsch und englisch anzubieten. Polylang ermöglicht neben der relativ simplen Erstellung von Übersetzungen für Blogposts auch die Übersetzung individueller Textbausteine in Plugins und Themes, die nicht automatisch durch WordPress oder Theme-Sprachdateien abgedeckt werden. Dazu müssen Strings explizit registriert werden, damit sie im Backend unter „String-Übersetzung“ erscheinen und für jede Sprache gepflegt werden können.

Warum Strings registrieren?

Hart codierte oder dynamisch generierte Texte werden von WordPress nicht automatisch in PO/MO-Dateien übertragen. Polylang benötigt daher eine Registrierung, damit es diese Texte erkennt und übersetzbar macht. Dies ist besonders wichtig für Themes und Plugins, die viele statische UI-Elemente enthalten.

Strings mit pll_register_string registrieren

Der zentrale Mechanismus ist die Funktion pll_register_string. Sie sollte einmalig beim Initialisieren des Themes oder Plugins ausgeführt werden.

function mytheme_register_strings() {
    pll_register_string(
        'header_tagline',
        'Your sky. Your data. Your view.',
        'Theme Header'
    );
}
add_action('init', 'mytheme_register_strings');

Nach der Registrierung wird der String im Polylang-Backend sichtbar und lässt sich dort sprachspezifisch anpassen.

Strings im Theme oder Plugin ausgeben

Zur Ausgabe eines übersetzten Strings dient pll__. Diese Funktion liefert die jeweils passende Sprachversion zurück.

echo pll__( 'Your sky. Your data. Your view.' );

Alternativ kann pll_e genutzt werden, das den Text direkt ausgibt:

pll_e( 'Your sky. Your data. Your view.' );

Strings strukturieren und gruppieren

Der dritte Parameter von pll_register_string definiert die String-Gruppe. Sie dient der Ordnung bei vielen Textbausteinen und erleichtert die Arbeit im Backend.

pll_register_string(
    'footer_disclaimer',
    'Allsky images are updated automatically every few minutes.',
    'Livepage'
);

pll_register_string(
    'button_label_more',
    'Learn more',
    'Buttons'
);

Die Reihenfolge ist also immer:

String in der functions.php o.ä. registrieren:

function mytheme_register_strings() { 
    pll_register_string( 
        'welcome_message', 
        'Welcome to my Allsky project!', 
        'Frontend Texts' 
    ); 
} add_action('init', 'mytheme_register_strings');

Und dann das Theme oder Plugin an der entsprechenden Stelle anpassen, um diesen auszugeben:

<div class="welcome-text"> 
    <h2> 
        <?php echo pll__( 'Welcome to my Allsky project!' ); ?> 
    </h2> 
</div>

Eine klare Struktur sorgt für bessere Wartbarkeit, gerade bei größeren Themes.

Auch möglich: Dynamische Strings registrieren

Auch Texte aus Theme-Optionen oder dem Customizer können übersetzbar gemacht werden. Voraussetzung ist ein definierter Default-Wert.

function mytheme_register_dynamic_strings() {
    $cta_text = get_option('mytheme_cta_text', 'Start exploring now');
    pll_register_string('cta_text', $cta_text, 'Theme Options');
}
add_action('init', 'mytheme_register_dynamic_strings');

Damit lassen sich auch nutzerdefinierte Frontend-Elemente mehrsprachig abbilden.

Sinnvolle Tipps:

  • Strings sinnvoll benennen, eindeutige Schlüssel verwenden
  • Gruppen klar segmentieren (Header, Footer, Buttons, Systemtexte)
  • Registrierung niemals innerhalb von Templates oder Schleifen ausführen
  • Nach Änderungen in Themes oder Plugins prüfen, ob neue Strings registriert werden müssen

Hat dir dieser Beitrag gefallen?

Du kannst allsky-rodgau.de mit einem kleinen Kaffee auf BuyMeACoffee unterstützen.

Jetzt Kaffee spendieren!