Wie erstelle ich ein sprachunabhängiges WordPress-Theme (Teil 1)
Heute ist es ja nicht mehr so, dass wir auf einer Insel der seligen Leben und nur Englisch, Deutsch, Französisch oder was auch immer sprechen. Nein, heute sollte unsere WebSite schon in mehreren verschiedenen Sprachen vorliegen. Aber wie machen wir das ganze mit WordPress?
Ich habe mir gedacht ich stelle euch die Möglichkeiten in einer losen Artikelserie vor. Besonders hat mich in den letzten Wochen ein “Premium” Theme genervt, welches vorgab internationalisiert zu sein. Nach dem ich über 40 Arbeitsstunden investiert habe, klappte auch alles sauber. Hätten die Programmierer von Anfang an, ein paar Kleinigkeiten berücksichtigt, wäre alles viel leichter gegangen.
Aber fangen wir von vorne an. Zuerst ein grundlegender Gedanke: Wollen wir uns die Übersetzung des Blogs überhaupt antun oder verlassen wir uns wieder auf Tante Google (besser ein PlugIn für den Google Translator [EN])? Ich denke ein manuell übersetztes Blog zeigt einfach mehr Professionalität.
Also der nächste Gedanke: Wie gehen wir an die Übersetzung heran. WordPress bietet Funktionen für die Ausgabe von sprachunabhängigen Text. Also kein Problem, dass wir die verwenden. (Wir werden sie weiter unten kennenlernen.) Dafür müssen wir aber die Funktionen unseres Themes gut kennen. Dafür empfehle ich euch den Post von Sensei: Die Anatomie eines WordPress Themes.
Was brauchen wir jetzt noch? Ganz einfach! Wir durchsuchen denn QuellCode jeder einzelnen(!!) Datei nach Texten, die auf der WebSite erscheinen werden. Dazu müssen wir einerseits alle HTML-Elemente durchsuchen. Andererseits müssen wir die php-Befehle für die Ausgabe erkennen. Die HTML-Elemente sind leicht zu identifizieren, aber…
1. PHP-Befehle für die Ausgabe
Auch hier gibt es kein Problem es gibt nicht sehr viele. Der Befehl echo (PHP-Manual) gibt einen Text direkt aus. Das Kommando printf() (PHP-Manual) erzeugt eine formatierte Ausgabe direkt im Dokument. Und der Befehl sprintf() (PHP-Manual) erzeugt ebenfalls eine Ausgabe, gibt sie aber zur Verwendung in einer Variablen zurück.
2. Die Ausgabe-Funktionen von WordPress
Nun benötigen wir die beiden Entsprechungen in WordPress. Auch hier gibt es einen Unterschied. Wir können eine Funktion zur direkten Ausgabe und eine zur Weiterverwendung als Variable verwenden.
Die direkte Ausgabe eines übersetzten Textes
Dafür ist die Funktion _e($text, $namespace) (WordPress Codex [EN]) von WordPress zuständig. Die Funktion gibt den Text direkt in der Seite aus. Sie erwartet mindestens einen Parameter: $text. Dies ist der zu übersetzende Text. Wird keine Übersetzung gefunden, wird der Text direkt ausgegeben. Der zweite Parameter ist zur Konfliktvermeidung. Es könnte zwei verschiedene Übersetzungen für ein und denselben Begriff geben. Dann kannst Du mit $namespace bestimmen welcher verwendet wird. Wenn Du diesen Parameter nicht verwendest, verwendet WordPress automatisch ‘default’.
Den Text übersetzen, aber nicht ausgeben
Dies erledigt die WordPress-Funktion __($text, $namespace) (WordPress Codex [EN]). Die Parameter sind die gleichen wie bei der vorherigen Funktionen. Der einzige Unterschied ist, dass die Übersetzung nicht direkt geschrieben wird, sondern zur Verwendung in einer Variablen zurückgegeben wird.
3. Das Übersetzen von literalen Texten
Dies ist eigentlich der einfachste Teil. Schauen wir uns das ganze an einem Beispiel an. Wir haben folgenden Beispieltext in einer Datei gefunden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <li> <a href="/tools/fhour/" title="Der Stundenpreis des Freelancer">Tools</a> </li> <li class="seperator"> </li> <li> <a href="/bucher-vom-guru/" title="Bücher des Gurus">Bücher</a> </li> <li class="seperator"> </li> <li> <a href="/gurus-fotos/" title="Fotogalerie des Gurus">Fotos</a> </li> <li class="seperator"> </li> <li> <a href="/impressum/" title="Impressum des Blogs">Impressum</a> </li> |
Wir erkennen, dass in Zeile #2, #6, #10 und #14 direkte Text (literale Texte) stehen. Einmal im Attribut title und einmal im a-Element. Genau diese Texte müssen wir übersetzen. Dafür verwenden wir die Funktion _e() von WordPress. Wir übergeben den deutschen Text der Funktion, welche ihn übersetzt und erneut ausgibt. Das ganze sieht dann so aus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <li>
<a href="/tools/fhour/" title="<?php _e('Der Stundenpreis des Freelancer'); ?>">< ?php _e('Tools'); ?></a>
</li>
<li class="seperator"> </li>
<li>
<a href="/bucher-vom-guru/" title="<?php _e('Bücher des Gurus'); ?>">< ?php _e('Bücher'); ?></a>
</li>
<li class="seperator"> </li>
<li>
<a href="/gurus-fotos/" title="<?php _e('Fotogalerie des Gurus'); ?>">< ?php _e('Fotos'); ?></a>
</li>
<li class="seperator"> </li>
<li>
<a href="/impressum/" title="<?php _e('Impressum des Blogs'); ?>">< ?php _e('Impressum'); ?></a>
</li> |
Damit kannst Du fürs erste einiges an Deinem Thema erledigen. Durchforste deinen kompletten HTML-Markup und ersetze alle Texte nach obigen Schema. Im nächsten Teil werden wir erfahren, wie Texte mir variablen Parametern übersetzt werden.
Weitere Posts zu diesem Thema
- Wie erstelle ich ein sprachunabhängiges WordPress-Theme (Teil 2)

Im 1. Teil der Artikelserie haben wir ja erfahren wie wir die statischen HTML-Texte automatisch übersetzen lassen können. Heute kümmern wir uns um die [...] - Wie erstelle ich ein sprachunabhängiges WordPress-Theme (Teil 3)

Nun haben wir bereits alle HTML-Texte, wie im Teil 1 beschrieben, ersetzt. Mit dem 2. Teil der Serie haben wir alle Ausgaben, welche php erzeugt, umg [...] - Unterseiten in der Seiten-Hierarchie ohne PlugIn ein-/ausblenden

Da ich bei einem aktuellen Projekt, WordPress als ein einfaches CMS einsetze, bin ich auf folgendes Problem gestoßen: In der Seitenleiste sollen alle [...] - Die Datenbank von WordPress optimieren

Das ist eigentlich einfach. Wir rufen unser phpMyAdmin am Server auf und lassen die interne Optimierung durchlaufen. Da aber mySQL immer langsamer wi [...] - Ein eigenes Menü in WordPress

Seit neuestem - naja eigentlich schon länger - gibt es die benutzerdefinierten Menüs in WordPress. Aber irgendwie habe ich das Gefühl, die verwendet [...]





Seit 2007 wurden 1090 Posts veröffentlicht & kein Post wird erscheinen.
Es wurden 4625 Kommentare geschrieben & 216 TrackBacks gesetzt.
Es existieren zwei Antworten zu diesem Post
schrieb am 17. 3. 2011 um etwa 18 Uhr:Ein wirklich gelungener Artikel zum Thema Mehrsprachigkeit bei Wordpress - gleich gebookmarked! Herzliche Grüße, Torben Leuschner
schrieb am 27. 3. 2011 um etwa 15 Uhr:Wie praktisch dann kann ich da ja gleich einsteigen mit deiner Serie wenn ich das Theme soweit fertig habe :D
Es existieren zwei TrackBacks zu diesem Post