Startseite » News » Mehrsprachig » Lokalisierung der WordPress-Themes

Lokalisierung der WordPress-Themes

June 3rd, 2009 nach

Um mehrsprachige WordPress-Seiten zu betreiben, müssen sowohl die Inhalte als auch das Theme lokalisiert werden. In diesem Post beschreibe ich, was wir getan haben, um unser eigenes Theme für wpml.org vollständig zu lokalisieren.

Zu dem gesamten Vorgang für die Theme-Lokalisierung gehören:

  1. Identifizieren und Markieren der Texte, die übersetzt werden müssen.
  2. Abrufen aller Texte zur Übersetzung.
  3. Übersetzen der Texte.
  4. Verwenden der Übersetzung, wenn das Theme in verschiedenen Sprachen angezeigt wird.

WordPress benutzt für seine eigene Lokalisierung GetText, also ist es nur natürlich, dass wir auf dieselbe Lösung zurückgreifen, um das Theme zu lokalisieren.

Die Texte übersetzbar machen

Normalerweise gehören zu WordPress-Themes einige Texte. Sehen wir uns zum Beispiel comments.php an. Das Formular, in dem man Kommentare hinterlassen kann, fragt den Namen, die E-Mail-Adresse und die Webseite des Besuchers ab und beinhaltet einen Versenden-Button.

Übersetzung plus Echo

Hier ist eine stark vereinfachte Version des Felds, das den Vornamen abfragt:

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" />
Name <?php if ($req) echo ('(erforderlich)'); ?>

Der String ‘Name‘ muss übersetzt werden und auch der String ‘erforderlich‘ (welcher optional ist). Um es GetText zu ermöglichen, Übersetzungen für diese Strings bereitzustellen, nehmen wir sie in den Echo-Befehl von GetText mit auf _e().

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" />
<?php _e('Name', 'wpml_theme'); ?> <?php if ($req) _e('(erforderlich)', '
wpml_theme'); ?>

Sehen Sie den Unterschied?

Übersetzung ohne Echo

Wenn Sie kein Echo für den String brauchen (wenn dieser beispielsweise das Argument einer Funktion ist), sollten Sie den __()-Befehl benutzen. Dieser ähnelt _e(), erzeugt aber kein Echo der Übersetzung. In der Anzeige der Anzahl der Kommentare verwenden wir beispielsweise:

Original:

<?php comments_number('Keine Antworten', Eine Antwort', '% Antworten');?>

Nach Verwendung des GetText-Befehls:

<?php comments_number(__( 'Keine Antworten', '
wpml_theme'), __('Eine Antwort', 'wpml_theme'), __('% Antworten', 'wpml_theme'));?>

Das zweite Argument in diesen beiden Befehlen ist die Domain des Texts. Mit dieser können die Texte im richtigen Kontext übersetzt werden. Wenn Plugins oder sogar WordPress selbst dieselben Strings enthalten, die in einem anderen Kontext verwendet werden, stellt GetText die richtige Übersetzung zur Verfügung, denn wir haben die Domain unseres Texts (wpml_theme) angegeben.

Übersetzung mit Parametern

Manchmal haben Texte Parameter. Zum Beispiel der Text, in dem steht, wer einen Post geschrieben hat:

von <?php echo(ucwords(the_author('', false)) ); ?>

Wir können das Wort ‘von’ nicht allein übersetzen. Es sollten vollständige Sätze oder zumindest Phrasen übersetzt werden. Der Übersetzer muss ‘von JEMANDEM‘ übersetzen (und wir ergänzen später, wer dieser Jemand ist). Dazu verwenden wir einen Parameter.

<?php printf(__('von %s', '
wpml_theme'), ucwords(the_author('', false))); ?>

Jetzt wird der Übersetzer ‘von %s’ als ganze Phrase übersetzen. Wir verwenden die __()-Funktion, um den String zu übersetzen und die printf-Anweisung, um den Namen des Verfassers wieder in den String einzugeben.

Abrufen der Texte zur Übersetzung

Sobald alle Texte in Ihrem Theme mit GetText-Befehlen versehen sind, ist es Zeit, sie in einer einzigen Datei abzurufen, die wir später übersetzen werden.

Lassen Sie mich Ihnen poedit vorstellen. Das ist ein Programm, das .po- (portable object – tragbares Objekt) Dateien erstellen und übersetzen und sie anschließend in .mo (Maschinenobjekt)-Dateien verwandeln kann, welche dann von WordPress importiert und zur Übersetzung des Themes benutzt werden können.

poedit kann viele verschiedene Dateitypen durchsuchen, einschließlich C, CPP, PHP und weitere. Aber anstatt poedit zu verwenden, machen wir es ein bisschen anders – und viel einfacher.

Um unser eigenes Theme zu lokalisieren, haben wir unseren PHP in .po-Datei-Converter benutzt. Es ist ein kostenloses Tool, mit dem Sie eine ZIP-Datei hochladen können, die Ihr Theme enthält. Der Converter wird sofort eine .po-Datei erstellen, die Sie herunterladen können. Diese Datei brauchen Sie, um mit der Übersetzung zu beginnen.

Übersetzen der Texte

Jetzt, wo Sie eine .po- (oder .pot. – Portable Object Template – Template für tragbare Objekte) Datei haben, ist es Zeit, diese übersetzen zu lassen. Jede .po-Datei beinhaltet Strings und ihre Übersetzung in eine einzige Sprache, also brauchen Sie so viele .po-Dateien wie Sprachen, in die Sie das Theme übersetzen. Dann können Sie aus jeder .po-Datei die entsprechende .mo-Datei (die WordPress braucht) erstellen.

Wenn Sie mit Übersetzern zusammen arbeiten, senden Sie ihnen einfach die .po-Dateien. Jeder Übersetzer übersetzt diese dann und sendet sie Ihnen zurück.

Wir haben die Übersetzung in alle Sprachen gleichzeitig erstellen lassen. Die Übersetzung wurde wieder von unserem eigenen Übersetzungsdienst ausgeführt.

So funktioniert’s:

  1. Erstellen Sie einen Account bei ICanLocalize (das ist kostenlos).
  2. Erstellen Sie ein neues Textressourcen-Projekt (immer noch kostenlos).
  3. Laden Sie die .po-Datei hoch und wählen Sie aus, in welche Sprachen übersetzt werden soll.
  4. Das System zählt die Wörter in der Datei und bittet um die Bezahlung. Die Bezahlung wird mit 0,09 USD * Wörter * Sprachen berechnet. Zum Beispiel hat uns die Übersetzung unseres eigenen Themes ins Spanische und Deutsche $30 gekostet (insgesamt).
  5. Übersetzer erstellen die Übersetzung.
  6. Sie laden die übersetzten .po-Dateien hoch (eine .po-Datei pro Sprache), die bereit sind, um von WordPress verwendet zu werden.

Verwenden der Übersetzung in WordPress

Jetzt, wo Sie eine .po-Datei pro haben, müssen Sie die entsprechenden .mo-Dateien erstellen, die WordPress benutzen kann.

Öffnen Sie jede .po-Datei in poedit und klicken Sie einfach auf Speichern. poedit wird die .mo-Datei für jede .po-Datei, die Sie speichern, erstellen. Das geschieht sofort.

Die Namen der .mo-Dateien sind wichtig. Alle .mo-Dateien werden im Ordner des Themes abgespeichert und ihre Namen geben an, in welche Sprache sie übersetzt werden sollen. Sie können einen beliebigen Namen wählen, aber es empfiehlt sich wirklich, die Standardkonvention zur Benennung des Gebietsschemas zu befolgen Sprache_Land (jeweils in zwei Buchstaben). Um zum Beispiel die deutsche (Deutschland) Übersetzung bereit zu stellen, nennen Sie sie de_DE.mo.

Zu Ihrer Information können Sie sich die von WordPress verwendeten Namen der Gebietsschemata im WordPress i18n-Projekt ansehen. Denken Sie daran, dass einige Übersetzungen direkt von WordPress zur Verfügung gestellt werden müssen, darum ist es unbedingt erforderlich, dieselben Namen zu benutzen.

Wo Sie die .mo-Dateien platzieren sollten

Zwei .mo-Dateisätze sind nötig, um Ihr Theme vollständig übersetzen zu lassen:

  • Die .mo-Dateien Ihres Themes
  • Die .mo-Dateien von WordPress

Bisher haben wir uns nur über die .mo-Dateien Ihres Themes unterhalten. Sie müssen diese in denselben Ordner platzieren wie Ihr Theme.

Um die WordPress .mo-Dateien zu erhalten, machen Sie Folgendes:

  1. Rufen Sie das WordPress i18n-Projekt auf.
  2. Navigieren Sie zu der Sprache, die Sie brauchen.
  3. In diesem Sprachordner navigieren Sie zu  tags/WP_VERSION/messages.
  4. Sie werden sowohl .mo als auch .po-Dateien finden. Laden Sie die .mo-Datei herunter und speichern Sie sie im Sprachenverzeichnis von WordPress. Normalerweise befindet sich dieses in wp-includes/languages. Wenn dieses Verzeichnis nicht existiert, müssen Sie es erstellen.

Wählen Sie den Namen des Gebietsschemas für jede Sprache

Zum Schluss müssen Sie WPML sagen, wie das Gebietsschema für jede Sprache heißt.

WPML Theme-Lokalisierung

WPML Theme-Lokalisierung

  1. Loggen Sie sich in WordPress ein.
  2. Klicken Sie auf den WPML-Adminbereich
  3. Scrollen Sie zu ‘Theme-Lokalisierung‘ herunter und klappen Sie diese aus.
  4. Geben Sie für jede Sprache den Namen des Gebietsschemas ein (zum Beispiel de_DE für Deutschland).

Wenn Sie speichern, wird WPML überprüfen, ob die .mo-Dateien sowohl in dem Theme-Verzeichnis als auch in dem Sprachenverzeichnis von WordPress existieren. Wenn irgendeine dieser Dateien fehlt, sehen Sie eine Warnung, aber Sie können immer noch speichern.

Besuchen Sie jetzt Ihre Seite in verschiedenen Sprachen und Sie werden sehen, dass sie richtig angezeigt wird. Nicht nur die Posts und Seiten, sondern alles in dem Theme sollte vollständig lokalisiert sein.

Zusammenfassung

Das war ein ziemlich langer Artikel, darum ist es toll zu sehen, dass Sie es bis hier geschafft haben.

Auch wenn es ein ziemlich komplizierter Vorgang zu sein scheint, ist es wirklich einfach, mehrsprachige Themes zu erstellen. Es ist eine gute Idee, alle Ihre Themes so zu gestalten, das sie bereit sind, übersetzt zu werden. Dies ist nicht nur eine leistungsstarke Funktion zum Werbung machen, sondern spart Ihren Kunden wirklich Zeit. Diese werden es mehr als zu schätzen wissen, wenn sie beginnen, die Inhalte ihrer Seiten übersetzen zu lassen.

Der Wert eines Premium-Themes kann sich dramatisch erhöhen, wenn es bereits in mehreren Sprachen veröffentlicht wird, und mit einer .pot-Datei wird es einfach, es in noch weitere Sprachen übersetzen zu lassen. Die meisten Texte sind für verschiedene Themes gültig, also muss nur minimal Zeit investiert werden und die Datei kann später immer wieder benutzt werden.

6 Antworten zu “Lokalisierung der WordPress-Themes”

  1. bernd says:

    Das Plugin “CodeStyling Localization” von Heiko Rabe ist eine tolle Ergänzung zu dem Beschriebenen, die vieles einfacher macht:

    Now you can freely manage, edit and modify your WordPress language translation files (*.po / *.mo) as usual. You won’t need any additional editor have been installed. Also supports WPMU plugins, if WPMU versions has been detected.

    • amir says:

      Vielen Dank, Bernd, für deinen Vorschlag.

      Wir haben vor kurzem WPML eine ähnliche Funktion hinzu gefügt. Mit dieser kannst du Themenstrings direkt auf der WordPress Admin-Seite übersetzen.

  2. Leka Korster says:

    Theoretisch ist dies eine praktische Geschichte, ich frag mich nur, ob das auf Dauer umsetzbar sein wird.

  3. sami says:

    Super, vielen Dank!

  4. ara1 says:

    Danke für deinen Vorschlag

  5. trans66 says:

    Vielen Dank, Bernd, für deinen Vorschlag.

Eine Antwort hinterlassen

Bitte hinterlassen Sie hier nur Kommentare über diese Seite.
Technischen Support finden Sie in unserem Forum, in dem Sie auch Vorschläge zu Funktionen los werden können. Wir warten auf Sie!

Sie können diese Tags verwenden:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


queries in 0.907 seconds.