Advertisement
  1. Code
  2. Theme Development

Übersetzung Ihr Thema

Scroll to top
Read Time: 10 min

German (Deutsch) translation by Tatsiana Bochkareva (you can also view the original English article)

Es ist sehr einfach, bei der Entwicklung Ihres WordPress-Themas die Augen vor anderen Sprachen zu verschließen, aber das ist eine sehr schlechte Angewohnheit und lenkt sofort einen ganzen Markt von WordPress-Benutzern und möglicherweise Tausende von Dollar an Einnahmeverlusten ab. Von den Top-10-Ländern, die Google nach "WordPress-Themen" durchsuchen, spricht nur eines Englisch (USA) und belegt den 9. Platz. Zum Zeitpunkt des Schreibens gibt es in der Themendatenbank von WordPress nur 269 Themen, die aus mehr als 1.500 Themen als übersetzungsfähig gekennzeichnet sind. Das sind nur 18% der Themen. Ich werde Ihnen zeigen, wie Sie Ihre zu einer von ihnen machen können.


Wie es funktioniert

Wenn Sie normalerweise ein Thema erstellen, codieren Sie einfach einen beliebigen Thementext wie die 404-Fehlermeldung in der 404.php-Datei oder Beschriftungen wie "comments:" oder "author:" fest. Wenn das WordPress des Benutzers beispielsweise deutsch ist, werden diese Textausschnitte weiterhin in englischer Sprache angezeigt. Die Lösung hierfür besteht darin, diese Anweisungen mit einer von vier WordPress-Funktionen zurückzugeben oder zu wiederholen, die darauf ausgelegt sind, auf eine Sprachdatei für den richtigen Text zu verweisen. Sobald Sie Ihren Text in diese Funktionen eingeschlossen haben, können Sie eine Datei erstellen, die alle Übersetzungen enthält, auf die bei jedem Laden des Themas verwiesen wird. Wir verwenden drei Übersetzungsdateien:

  • .pot (Portable Object Template) - Dies ist die Vorlagendatei, die einen Verweis auf jede Textzeichenfolge in Ihrem Thema enthält, die übersetzt werden muss. Diese Datei enthält keine Übersetzung. Es ist eine Klartextdatei.
  • .po (Portable Object) - Die aus der .pot-Datei erstellte .po enthält alle Ihre Zeichenfolgenreferenzen sowie deren Übersetzungen in eine bestimmte Sprache. Dies ist auch eine Klartextdatei, die bearbeitet werden kann.
  • .mo (Maschinenobjekt) - Eine binäre Version der .po-Datei. Durch die Verwendung von Maschinencode kann die Datei viel schneller als ihre Klartextalternative verwendet werden.

Schritt 1 Die vier Funktionen

Jede der vier Funktionen erfordert mindestens ein Argument, nämlich den zu übersetzenden Text. Die Funktionen sind:

  • __() - (zwei Unterstriche) Die Grundfunktion, die Sie die meiste Zeit verwenden werden. Es gibt den Text in der richtigen Sprache zurück.
  • _e() - Entspricht __(), außer dass der Text wiedergegeben wird, anstatt ihn zurückzugeben.
  • _n() - Wird verwendet, wenn der Text das Potenzial hat, Plural zu sein. Wenn Sie beispielsweise anzeigen möchten, wie viele Kommentare abgegeben wurden, möchten Sie möglicherweise entweder "X-Kommentare" oder "X-Kommentar" ausgeben, je nachdem, wie viele Kommentare vorhanden sind du hast.
  • _x() - Nützlich, wenn die Übersetzung des Wortes vom Kontext abhängt. "Post" kann je nach Kontext "ein Post (Substantiv)" oder "ein Post (Verb)" bedeuten. Für den Übersetzer ist es wichtig zu wissen, was Sie beim Übersetzen meinen, um genau zu sein. _x() wird hauptsächlich verwendet, wenn einzelne Wörter verwendet werden.

__() & _e()

Dies sind die einfachsten Übersetzungsfunktionen, die WordPress zu bieten hat. Schauen wir uns jeweils ein Beispiel an:

Beide Funktionen machen hier genau das Gleiche. Die Anweisung "Dies ist ein Beitrag" wird mit der .mo-Datei verglichen, falls vorhanden, und das Ergebnis zurückgegeben. __() und _e() erfordern nur die Übergabe eines Arguments. Dies ist der Text, den wir übersetzen möchten. Ein zweites optionales Argument ist verfügbar und wir werden später darauf zurückkommen. Der einzige Unterschied zwischen den beiden besteht darin, dass __() hier die echo-Anweisung benötigt. Schauen wir uns ein Beispiel an, in dem __() besser funktioniert als _e():

Anstatt eine Zeichenfolge an die Funktion the_content() zu übergeben, haben wir __() verwendet, damit der Text übersetzt werden kann. Wenn wir hier stattdessen _e() verwendet hätten, würde die Übersetzung von "Klicken Sie hier, um mehr zu lesen" in das Dokument übernommen, anstatt an the_content() übergeben zu werden, was alle möglichen nicht hilfreichen Probleme verursachen würde.

_n()

Was ist, wenn Sie eine Situation haben, in der der von Ihnen ausgegebene Text möglicherweise ein Plural oder ein Singular sein kann, wie im obigen Beispiel "X-Kommentare"? Anstatt dem Übersetzer zwei verschiedene Textzeichenfolgen zu geben, können Sie sagen, dass Sie ein einzelnes Textstück haben, das eine Übersetzung im Singular und im Plural benötigt. Die folgenden zwei Beispiele geben das gleiche Ergebnis an den Benutzer aus:

_n() erfordert drei Argumente. Die erste ist die Singularversion des Textes, die zweite ist der Plural und die dritte ist die Nummer, auf die er verweist. In diesem Fall ermittelt get_comments_number(), wie viele Kommentare sich in einem Beitrag befinden, und _n() wählt dann den entsprechenden zu verwendenden Text aus.

_x() & _ex()

Angenommen, Sie übersetzen eine .pot-Datei und stoßen auf einen Eintrag "scroll". Wirst du das als "ein Stück gerolltes Papier" oder "die Website nach oben oder unten schwenken" interpretieren? Sie könnten wirklich einen Kontext gebrauchen, um zu beschreiben, in was Sie ihn übersetzen müssen. Diese Funktionen geben Ihnen diese Fähigkeit, indem sie ein zweites erforderliches Attribut haben, das nach einer kurzen Beschreibung zur Beschreibung der Phrase oder des Wortes fragt. Überprüfen Sie das folgende Beispiel:

Das Beispiel zeigt Ihnen den Unterschied zwischen _x() und _ex(). Es ist dasselbe e wie bei _e, die Funktion die Ausgabe wiedergeben zu lassen, anstatt sie zurückzugeben. Für beide ist unser erster Parameter unser zu übersetzender Text, und der zweite ist ein Kommentar oder eine Anmerkung zum Übersetzungstext, um zu verdeutlichen, was gemeint ist.

Fortgeschrittene Techniken

Angenommen, Sie haben eine Situation, in der der zu generierende Text aus einer Textzeichenfolge mit dem Ergebnis einer Funktion oder dem Wert einer Variablen besteht, die irgendwo darin abgelegt ist. Sie könnten versucht sein, so etwas zu korrigieren:

Wenn es darum geht, Ihre .pot-Datei zu erstellen, ignoriert POEdit dies, da keine Variable in der Mitte eines Satzes verwendet werden soll. Der Grund dafür ist, dass die Zeichenfolge, für die Sie das $color-Thema ausgewählt haben, an die .pot-Datei gesendet wird. Wenn Sie jedoch bei der Ausführung des Skripts nach der Übersetzung suchen, wird nach der Zeichenfolge gesucht, für die Sie das blaue Thema ausgewählt haben was es nicht finden wird. Was ist, wenn wir dies stattdessen tun:

Das Skript kann jetzt die Übersetzungen abrufen, aber jetzt ist es zu schwierig zu übersetzen, da der Satz aufgebrochen wurde. Dieser Satz ist möglicherweise nicht einmal in einige Sprachen mit stark unterschiedlicher Syntax übersetzbar, z. B. in Deutsch, wo das Wort für "gewählt" am Ende des Satzes erscheint. Sie müssten sich die Mühe machen, zu erklären, dass diese beiden separaten Textzeichenfolgen Teil einer sind und dass "Thema" möglicherweise überhaupt nicht in "Thema" übersetzt wird.

Die Lösung besteht darin, eine einzelne Textzeichenfolge mit einer für einfache Anführungszeichen geeigneten Syntax zu verwenden. Hier werden die Funktionen printf() oder sprintf() nützlich. Schauen wir uns an, wie unser Code aussehen muss:

Dies löst nicht nur alle unsere Probleme, die wir zuvor hatten, sondern es ist auch viel aufgeräumter und verwendet nur eine Codezeile. Die ersten Argumente der Funktionen printf() oder sprintf() sind die auszugebenden Zeichenfolgen, die mindestens einen Platzhalter enthalten, in diesem Fall %s (was "Zeichenfolge" bedeutet), und alle anderen Argumente sind Variablen, die innerhalb der Zeichenfolge platziert werden sollen Anfangszeichenfolge. Es gibt viele verschiedene Platzhalter, die Sie in Ihrer Zeichenfolge verwenden können, und eine vollständige Liste finden Sie unter sprintf im PHP-Handbuch. Beachten Sie, dass der Unterschied zwischen printf() und sprintf() _e() bzw. __() ähnlich ist.


Schritt 2 Einführung in POEdit

Nachdem Sie die gesamte Textausgabe Ihres Themas erfolgreich markiert haben, müssen Sie diese Informationen in einer .pot-Datei sammeln. POEdit ist ein fantastisches Programm, mit dem Sie Ihre .pot-Datei erstellen können. Außerdem bietet es eine benutzerfreundliche Benutzeroberfläche, mit der Sie Ihre .po-Datei und vor allem auch Ihre .mo-Dateien erstellen können.

Zunächst müssen Sie POEdit herunterladen, das Sie hier für Windows, Mac und Linux finden:http://www.poedit.net/download.php

Sobald POEdit installiert ist, können Sie Ihre .pot-Datei erstellen. Gehen Sie dazu zu Datei > Neuer Katalog. Sie erhalten ein Dialogfeld, in dem Sie einige grundlegende Informationen eingeben müssen. Die wesentlichen Elemente auf der Registerkarte "Projektinformationen" sind der Projektname und Ihre Sprache / Ihr Land. Sie müssen außerdem Folgendes in das Feld "Plural Forms" eingeben:

Pluralformen: nplurals=2; Plural=n != 1;

POEdit project infoPOEdit project infoPOEdit project info

Geben Sie auf der Registerkarte "Pfade" den Pfad ein, in dem sich die Dateien relativ zum Speicherziel dieser .pot-Datei befinden. Wenn Sie beispielsweise die .pot-Datei im Stammordner des Themas ablegen, geben Sie Folgendes ein . (Zeitraum). Wenn Sie die .pot-Datei in einem "Sprach" -Ordner im Themenstamm ablegen möchten, geben Sie .. (zwei Punkte) ein.

POEdit pathPOEdit pathPOEdit path

Als Nächstes müssen Sie POEdit mitteilen, nach welchen Schlüsselwörtern beim Scannen unserer Dateien gesucht werden soll. Geben Sie das folgende ein:

  • __
  • _e
  • _n:1,2
  • _x:1,2c
  • _ex:1,2c

Die Erweiterung :1,2 teilt POEdit mit, dass diese Schlüsselwörter aus zwei Teilen bestehen. Standardmäßig ist das zweite Argument der Plural, es sei denn, Sie geben das c an, was bedeutet, dass das zweite Argument ein Kommentar ist.

POEdit keywordsPOEdit keywordsPOEdit keywords

Du bist gut zu gehen! Klicken Sie auf "OK" und wählen Sie einen Ort zum Speichern Ihrer .pot-Datei. Denken Sie daran, dass es sich auf den zuvor definierten Pfad beziehen muss. POEdit durchsucht nun Ihre Dateien, findet alle Vorkommen Ihrer Übersetzungsfunktionen und speichert sie ohne Übersetzungen in Ihrer .pot-Datei. Wenn Sie nur die minimale Unterstützung für internationale Übersetzungen bieten möchten, können Sie Ihre .pot-Datei mit Ihrem Thema versenden und hier anhalten. Wenn Sie Ihr Thema jedoch selbst in eine andere Sprache übersetzen können, können Sie Ihr Thema mit einer vorgefertigten Übersetzung versenden wie in Schritt 3 beschrieben.


Schritt 3 Übersetzen und Erstellen Ihrer .po-Datei

POEdit translating singularPOEdit translating singularPOEdit translating singular
  1. Eine Liste aller zu übersetzenden Textzeichenfolgen
  2. Die aktuelle Zeichenfolge, die übersetzt wird
  3. Ihre Übersetzung der Zeichenfolge
POEdit translating pluralPOEdit translating pluralPOEdit translating plural
  1. Singular und Plural der aktuellen Zeichenfolge
  2. Registerkarten zum Wechseln zwischen Singular und Plural Ihrer Übersetzung
  3. Ihre Übersetzung

Nachdem Sie alle Zeichenfolgen in der .pot-Datei übersetzt haben, können Sie diese als .po-Datei speichern. Alle Zeichenfolgen, für die Sie keine Übersetzung bereitgestellt haben, werden in der Originalsprache angezeigt, wenn jemand Ihr Thema anzeigt.

Der Dateiname Ihrer .po ist entscheidend. Gettext verwendet den Standard ISO 639 für Sprachabkürzungen und ISO 3166 für Gebietsschemas. Wenn Ihre Übersetzung beispielsweise in amerikanischem Englisch verfasst ist, sieht Ihr Dateiname wie folgt aus: en-US.po. Auch hier ist die Kapitalisierung wichtig. Eine vollständige Liste der Sprach- und Ländercodes finden Sie unter diesen beiden Links:

Nach dem Speichern erstellt POEdit standardmäßig automatisch eine .mo-Datei neben Ihrer .po-Datei. Es wird empfohlen, alle drei Übersetzungsdateien in Ihr Thema aufzunehmen, damit die Benutzer ihre eigenen Übersetzungen erstellen und Ihre vorhandenen Übersetzungen problemlos bearbeiten können.


Schritt 4 Einrichten von WordPress

Lassen Sie uns noch einmal zusammenfassen, was Sie bisher getan haben. Sie haben WordPress den gesamten Text mitgeteilt, der übersetzt werden soll, und dann haben Sie POEdit verwendet, um jede Zeichenfolge zu sammeln und in eine .pot-Datei zu platzieren, die in eine .po- und .mo-Datei übersetzt werden kann. Diese Dateien sind dann in den Themendateien enthalten. Der letzte Schritt besteht darin, Ihr Thema zu komprimieren, zu installieren und WordPress mitzuteilen, welche .mo-Sprachdatei Sie verwenden möchten. Dies ist eine sehr einfache Prozedur, bei der Sie auf Ihre Datei wp-config.php zugreifen, die sich im Stammordner von WordPress befindet.

Ihre Datei sollte bereits define('WPLANG', ''); enthalten. Wenn dies nicht der Fall ist, können Sie es hinzufügen. Sie müssen lediglich Ihre Sprache und Ihren Gebietsschema-Code in die define einfügen. Wenn Sie Ihr Thema ins Deutsche übersetzen würden, hätten Sie Folgendes:

Ihre Internationalisierung ist abgeschlossen! Denken Sie daran, Ihre .pot-Datei in Ihr Thema aufzunehmen. Wenn Sie Ihr Thema in eine andere Sprache übersetzen konnten, sollten Sie auch die .po- und .mo-Dateien einschließen.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.