Wir hatten die Notwendigkeit, dass wir die Ausgabe eines Plugins in Englisch benötigten, entgegen der ansonsten rein einsprachig deutschen WordPress Homepage. Dies konnten wir via Shortcode realisieren.

Zu Demonstrationszwecken wollten wir einen Plugin-Content und das Ergebnis eines AJAX-Aufrufs in verschiedenen Sprachen ausgeben, um verschiedene Versionen das Contents auf unserer Homepage präsentieren zu können. Unsere Homepage ist nur einsprachig Deutsch, die zusätzliche Zielseite mit allem Text, wo das Plugin ausgegeben wird, sollte z.B. Englisch sein, und dementsprechend der Content des Plugins ebenfalls. Auf der ursprünglichen rein deutschen Schwesterseite hingegen sollte der Content sowie der Plugin-Content in Deutsch sein. Dazu wollten wir das System nicht unnötig um globale Mehrsprachigkeit aufblähen.

Warum dieser Kopfstand?

Unser Plugin ist im WordPress Verzeichnis und die englische Landingpage wird von dort aus aus der ganzen Welt aufgerufen. Da wir aber kein Vermarktungskonzept anstreben, wollen wir lediglich mit einer einfachen englischen Landingpage helfen.

Am Beispiel des folgenden Shortcodes wollen wir Ihnen zeigen, wie dies realisiert wurde.

Diesen Shortcode können wir jetzt mit dem Code [beispiel-shortcode]  auf unserer Seite ausgeben. Über den Übersetzungsmechanismus von WordPress wird der Text „Example Text“ automatisch durch den von uns hinterlegten Text „Beispieltext“ ersetzt, da unser WordPress in deutscher Spracheinstellung betrieben wird. Dies erreichen wir mit der Funktion __( );  von WordPress, der sich um die automatische Übersetzung des Textes kümmert. Auf diesen Übersetzungsmechanismus gehen wir hier ansonsten nicht näher ein und setzen voraus, dass das Plugin (so wie unseres) entsprechend für Mehrsprachigkeit programmiert wurde.

Wenn wir jetzt die Ausgabe des Plugins in einer anderen Sprache gestalten möchten, müssen wir zunächst ein Attribut hinzufügen, mit dem die gewünschte Sprache in den Shortcode eingefügt werden kann:

Damit können wir dem Shortcode jetzt ein Attribut mitgeben, in dem wir eine abweichende Sprache einstellen können: [beispiel-shortcode lang="en_US"] .

Um jetzt tatsächlich den Plugin-Content in einer anderen Sprache anzuzeigen, müssen wir nun auswerten, ob eine abweichende Sprache gesetzt wurde. Falls ja, muss die Spracheinstellung von WordPress dynamisch überschrieben werden, und die dazu passende Sprachdatei aus dem Plugin-Verzeichnis geladen werden. Dazu nutzen wir wieder Funktionen von WordPress selber:

Damit bekommen wir jetzt als Ergebnis trotz der deutschen Spracheinstellung im WordPress den Text „Example Text“ ausgegeben.

Darüber hinaus wollten wir auch noch das Ergebnis eines AJAX-Aufrufs, der aus der Ausgabe unseres Plugins heraus erfolgt, in der entsprechenden, benötigten Sprache zurück bekommen. Da die Ausgabetexte bereits in der richtigen Sprache vom PHP zurück gegeben werden sollen, müssen wir beim AJAX-Aufruf auch die gewünschte Sprache an unser PHP-Script mit übergeben.

Dazu haben wir im HTML-Code die Sprache in einem versteckten Textfeld hinterlegt: <input type="hidden" name="lang" id="lang" value="en_US"> . Diesen Wert übergeben wir dann beim AJAX-Aufruf mit. Dann verwenden wir den gleichen Code wie schon im vorherigen Beispiel, wobei wir statt auf $my_atts['lang']  auf $_POST['lang']  zugreifen.