Internationalisierung von WordPress-Projekten Die Einführung

Vor einigen Jahren schrieb ich über den Prozess der Internationalisierung von WordPress-basierten Projekten. Ich denke, es gibt Zeiten, in denen Tutorials nicht unbedingt aktualisiert, aktualisiert oder erneut aktualisiert werden müssen, aber es gibt andere Zeiten, in denen wir alle davon profitieren können, das Thema erneut zu lesen.

Schließlich ändert sich die Software von Jahr zu Jahr, und wir sammeln auch Erfahrung, wenn wir mit einer bestimmten Software weiterarbeiten. WordPress ist nicht anders. 

Beginnend mit diesem Artikel und bis zum nächsten Satz von Artikeln werden wir uns Folgendes ansehen:

  • Was bedeutet Internationalisierung im Kontext von WordPress
  • Wie können wir unsere Arbeit internationalisieren?
  • Wie unterscheiden sich Internationalisierung und Lokalisierung?
  • Tools, die für die Lokalisierung verfügbar sind
  • wie man Inhalte internationalisiert, die in JavaScript enthalten sind
  • und mehr

Wir werden sogar ein kleines, wenn auch funktionelles WordPress-Plugin entwickeln, mit dem wir die oben aufgeführten Punkte praktisch demonstrieren können.

Bevor wir beginnen, ist es jedoch wichtig zu verstehen, was Internationalisierung ist und was WordPress auf diese Weise bietet. Darüber hinaus gibt es ein paar Tricks, die Sie überraschen können, insbesondere wenn Sie ein erfahrener Programmierer sind.

Lassen Sie uns, nachdem dies als Umriss dieser Serie festgelegt wurde, ein gutes Verständnis für die Internationalisierung unserer Arbeit in WordPress erlangen.

Was ist Internationalisierung??

Der WordPress-Codex ist immer einer der besten Ausgangspunkte, wenn Sie mehr über ein bestimmtes Thema erfahren möchten. Folgendes bietet es auf dem Weg der Internationalisierung (was wir auch als i18n abkürzen können, nur für den Fall, dass Sie es so geschrieben sehen):

Internationalisierung ist der Prozess der Entwicklung Ihres Plugins, so dass es leicht in andere Sprachen übersetzt werden kann.

Darüber hinaus beschreibt der Codex genau, warum dies wichtig ist:

Da WordPress auf der ganzen Welt verwendet wird, ist es ratsam, ein WordPress-Plugin so zu erstellen, dass es problemlos in die gewünschte Sprache übersetzt werden kann. Als Entwickler haben Sie möglicherweise keine einfache Möglichkeit, Lokalisierungen für alle Benutzer bereitzustellen. Sie sprechen vielleicht nicht deren Sprache. Jeder Entwickler kann jedoch ein Design erfolgreich internationalisieren, damit andere Benutzer eine Lokalisierung erstellen können, ohne den Quellcode selbst ändern zu müssen.

Es macht Sinn, richtig? WordPress betreibt etwa ein Viertel des Webs und wird weltweit eingesetzt. Warum sollte die Arbeit, die wir zur Verfügung stellen, in der Muttersprache bleiben, die wir sprechen??

Das heißt nicht, dass es keine Zeiten gibt, in denen dies in Ordnung ist. Zum Beispiel, wenn Sie eine Lösung für jemanden und Sie erstellen kennt Wenn sie zusammen mit einer kleinen Gruppe die Anwendung verwenden, ist es sinnvoll, sie in der Muttersprache des Clients zu belassen.

Wenn Sie jedoch etwas für die breite Verbreitung aufbauen, besteht kein Zweifel, dass Sie Ihre Arbeit internationalisieren sollten.

Kurz gesagt: Internationalisierung ist der Prozess, durch den wir sicherstellen, dass unsere Arbeit in eine andere Sprache übersetzt werden kann.

Vergessen Sie alles, was Sie über Variablen wissen

Später in diesem Artikel werden wir uns die Funktionen der WordPress-API ansehen, um sicherzustellen, dass unsere PHP-Strings ordnungsgemäß internationalisiert werden. Aber es gibt eine unglaublich wichtige Einschränkung, an die Sie sich erinnern müssen.

Erinnern Sie sich noch daran, wann Sie zum ersten Mal Variablen in welcher Programmiersprache gelernt haben? Es war großartig, richtig? Sie können eine Variable einmal definieren und diese Variable an jeder anderen Stelle im Code anstelle der Zeichenfolge (oder eines beliebigen anderen Werts) wiederverwenden, sodass Sie sich nicht wiederholen müssen. 

Tatsächlich ist es Teil des Kerns der Programmierung, nicht wahr??

Das DRY-Prinzip lautet: "Jedes Wissen muss eine einzige, eindeutige, autoritative Repräsentation innerhalb eines Systems haben."

Ich stimme dieser Definition absolut, fast eindeutig zu. Bei der Internationalisierung von Strings in WordPress müssen wir jedoch eine Ausnahme machen. Sie werden den Grund für einen Moment sehen, aber ich habe mich entschieden, diesen Abschnitt hier aufzunehmen, um mögliche zukünftige Fehler zu vermeiden. Ich habe mich auch entschieden, dies zu erwähnen, damit Sie nicht danach fragen, ob Sie versuchen möchten, Variablen im Kontext der Internationalisierungs-API in den zukünftigen Kontaktpunkten zu verwenden.

Wenn Sie sich jetzt daran erinnern, werden Sie diese Hürde später vermeiden.

Die Internationalisierungs-API

An dieser Stelle können wir uns die Funktionen ansehen, die WordPress bietet. Wir werden sie in diesem Artikel nicht zur Arbeit bringen, aber wir werden uns die Funktionsnamen ansehen, wie sie verwendet werden und wofür sie in einem größeren Kontext verwendet werden.

Ab dem nächsten Artikel werden wir sie einsetzen. Schauen wir uns erst einmal an, was verfügbar ist.

  • __ () ist wohl die beliebteste oder am häufigsten verwendete Internationalisierungsfunktion, die Sie in WordPress finden. Diese Funktion akzeptiert eine einzige zu übersetzende Zeichenfolge und die Textdomäne, zu der sie gehört. Es sollte niemals einschließen etwas außer einer Zeichenfolge (dh kein HTML, kein JavaScript usw.).
  • _e () ist der obigen Funktion ähnlich, aber anstatt nur die übersetzte Version des Strings abzurufen, wird das Ergebnis der Übersetzung auch auf dem Bildschirm angezeigt.
  • _x (): leider da sind Zeiten, in denen eine bestimmte Zeichenfolge die falsche Übersetzung zurückgibt. In diesem Fall ist die Verwendung dieser Funktion hilfreich, insbesondere wenn Sie den Kontext angeben, in dem die Zeichenfolge übersetzt wurde. Dadurch wird sichergestellt, dass die beabsichtigte Version der Zeichenfolge zurückgegeben wird.
  • _Ex(), so wie _e () und _x () Wie oben angegeben, wird sichergestellt, dass die korrekte Übersetzung der Zeichenfolge auf der Grundlage des angegebenen Kontexts auf dem Bildschirm angezeigt wird, sodass die falsche Version nicht zur Laufzeit ausgewählt wird.
  • _n () ist eine nette Funktion, weil WordPress die einzelne oder mehrere Versionen der angegebenen Anzahl basierend auf der verwendeten Nummer auswählen kann. Dies bedeutet, dass wir als Entwickler Strings sowohl für die Einzel- als auch für die Mehrfachversion bereitstellen müssen, damit die Übersetzer sie zusammen mit der tatsächlichen Anzahl übersetzen können. Aber es macht die Arbeit mit internationalisierten Zahlen viel einfacher als ohne.
  • _nx () An diesem Punkt sollte klar sein, wie es funktioniert. Es ist eine Kombination aus _n () die wir gerade geteilt haben und _x () das war oben abgedeckt. Dies bedeutet, dass die Übersetzung wie erwartet angezeigt wird, wenn Sie die Singular- und Pluralform der angegebenen Zahl zusammen mit der richtigen Textdomäne richtig angegeben haben.
  • _n_noop () sollte denen, die mit Informatik oder Computertechnik vertraut sind, etwas vertraut vorkommen. Ein NOP ist die Abkürzung für "no operation" und in diesem Fall wurden mehrere Zeichenfolgen übersetzt, die wir nicht unbedingt zu einem bestimmten Zeitpunkt verwenden möchten, aber möglicherweise später abrufen möchten. Kurz gesagt, der Übersetzer kann die Übersetzung bereitstellen und wir können auswählen, wann er verwendet werden soll.
  • _nx_noop () ist eine Kombination aus der obigen Funktion und der _x () Funktion, die wir schon so oft gesehen haben. Dies ermöglicht uns den Zugriff auf eine Übersetzung für eine bestimmte Textdomäne, ohne sie tatsächlich übersetzen zu müssen.
  • translate_noop_plural () liest etwas anders als die bisher untersuchten Funktionen, aber die Implementierung ist recht einfach: Diese Funktion liefert eine Übersetzung des Ergebnisses von _n_noop () und _nx_noop ().  Bei dieser Funktion ist zu beachten, dass das erste Argument ein Array mit den einzelnen und mehreren Schlüsseln ist, die aus den oben genannten Funktionen stammen.
  • esc_html __ () ist sehr ähnlich __ (), Es ist jedoch für die Verwendung in HTML-Tags vorgesehen. Das heißt, es ist nicht dazu gedacht Übersetzen HTML-Tags, aber es ist dazu gedacht, die Übersetzung zu packen und für eine sichere Verwendung im HTML-Kontext zu schützen.
  • esc_html_e () ist genauso wie die Funktion darüber und fast genau wie die _e () Funktion, die wir oben angeschaut haben; Es soll jedoch verwendet werden, um das Ergebnis der Übersetzung auf dem Bildschirm anzuzeigen.
  • esc_html_x () An diesem Punkt sollte klar sein, wie oft wir gesehen haben _x () wird in anderen Funktionen verwendet. Kurz gesagt wird dies dasselbe tun wie _x (), Der Text wird jedoch im gettext-Kontext bereitgestellt und für die sichere Verwendung in HTML vorbereitet.
  • esc_attr__ () wird verwendet, um die angegebene Zeichenfolge zu übernehmen und ordnungsgemäß zu entgehen, damit sie sicher als Attribut wie das Attribut verwendet werden kann Titel Attribut eines Bildes.
  • esc_attr_e () zeigt den übersetzten Text mit einer zusätzlichen Kodierung aller Zeichen an, z. B. größer als, kleiner als, kaufmännisches Und und Anführungszeichen. Dies ist eine weitere Funktion, die im Kontext eines Attributs eines anderen Elements verwendet werden soll.
  • esc_attr_x () holt die Übersetzung, entgeht sie und rendert sie im Kontext des Attributs eines Elements. Wenn keine Übersetzung bereitgestellt wurde, wird die während der Entwicklungszeit bereitgestellte Standardzeichenfolge verwendet.
  • number_format_18n () ist eine leistungsstarke Funktion, besonders wenn Sie mit einer Vielzahl von Gebietsschemas arbeiten. Wenn Sie beispielsweise mit einer Zahl arbeiten und "1.000" rendern möchten, geben Sie keinen zweiten Parameter für diese Funktion an. Wenn Sie jedoch mit Währungen oder Dezimalstellen arbeiten, sollten Sie als zweites Argument '2' übergeben, damit zwei Ziffern nach einer Dezimalstelle angehängt werden.
  • date_i18n () ist eine weitere leistungsstarke Funktion, mit der Sie das Datum in einem lokalisierten Format abrufen können, das auf dem angegebenen Zeitstempel basiert. Um mehr über diese bestimmte Funktion, ihre Parameter und Beispiele zu ihrer Verwendung zu erfahren, lesen Sie bitte die Codex-Seite.

Erinnern Sie sich in dem obigen Abschnitt, in dem ich darüber gesprochen habe, die Verwendung von Variablen zu vermeiden? Dies ist, wo das nützlich ist. Wie Sie sicherlich bemerkt haben, enthält jede der oben genannten Funktionen zwei Parameter:

  1. die Zeichenfolge, die übersetzt werden kann
  2. die Textdomäne der Zeichenfolge

Die Textdomäne bezieht sich auf eine einzigartige Beziehung zwischen dem WordPress-Plugin oder dem WordPress-Design, WordPress und dem Übersetzer. Letztendlich soll sichergestellt werden, dass der Übersetzer eine Übersetzung der Zeichenfolge bereitstellen kann, ohne die Übersetzung von zu überschreiben Ein weiterer Zeichenfolge an anderer Stelle in WordPress (oder einer anderen Lösung eines Drittanbieters).

Letztendlich ist es am besten, den Slug des Plugins als Textdomäne zu verwenden. Darüber hinaus sollte dieser Parameter immer eine Zeichenfolge und keine Variable sein. Unabhängig davon, wie oft Sie es eingeben müssen, speichern Sie es nicht in einer Variablen. Geben Sie einfach die Textdomäne als zweiten Parameter der Funktion ein.

Das hat mit der Funktionsweise von Übersetzungswerkzeugen zu tun, und wir werden uns dies in einem zukünftigen Artikel genauer ansehen.

Fazit

Und das ist die Grundvoraussetzung für die Internationalisierungsfunktionen. Wenn Sie immer noch etwas verwirrt sind, wie Sie einige davon in Ihrer Arbeit anwenden können, machen Sie sich keine Sorgen. Es gibt noch mehr zu erklärende Erklärungen und praktische Demos.

Wir haben zum Beispiel kurz das Konzept von Gettext angesprochen, oder? Und was ist mit JavaScript? Was ist außerdem mit den Tools, die wir zur Verfügung stellen, damit andere unsere Zeichenketten übersetzen können? Woher wissen wir, dass sie richtig funktionieren??

All dies wird in dieser Serie behandelt. Aber bevor wir dort ankamen, mussten wir mit den Grundlagen beginnen. Also haben wir das gemacht. Im nächsten Artikel werden wir ein wenig über Gettext und einige der verfügbaren Tools sprechen.

Danach konzentrieren wir uns auf das eigentliche Schreiben von Code (einschließlich JavaScript) und darauf, wie alles in den Kontext unserer eigenen WordPress-Plugins passt.

Wenn Sie nach anderen Dienstprogrammen suchen, die Sie dabei unterstützen, Ihr wachsendes Werkzeugset für WordPress aufzubauen, oder beispielsweise Code, um WordPress zu lernen und sich mit WordPress vertraut zu machen, sollten Sie nicht vergessen, was wir zur Verfügung haben Envato Market.

Wenn Sie mehr über WordPress aus Entwicklungsperspektive erfahren möchten, beachten Sie, dass ich ausschließlich mit WordPress arbeite und häufig darüber schreibe. Sie finden alle meine Kurse und Tutorials auf meiner Profilseite. Sie können mir auf meinem Blog und / oder Twitter unter @tommcfarlin folgen, wo ich über Softwareentwicklung im Kontext von WordPress spreche.

Zögern Sie nicht, Fragen oder Kommentare in den untenstehenden Feed zu schreiben, und ich werde versuchen, auf jeden von ihnen zu antworten.