In 5 Kardinal Sins von WordPress Theme Development haben wir kurz über die Bedeutung der Internationalisierung von Themes und Plugins gesprochen, aber wir haben nicht darüber gesprochen Wie es zu tun.
Wenn Sie sich im kommerziellen Design oder im Plugin-Bereich befinden, wird fast erwartet, dass Ihre Arbeit mehrere Sprachen unterstützt. In diesem Artikel erfahren Sie, was Internationalisierung wirklich ist, warum dies wichtig ist und welche Schritte erforderlich sind, um Ihr Projekt zu internationalisieren.
Bei der Internationalisierung von WordPress-Projekten ist es vielleicht am schwierigsten, die Vorgehensweise zu verstehen. Die Internationalisierung eines WordPress-Projekts ist eigentlich ganz einfach.
Bevor Sie sich die Vorgehensweise ansehen, ist es wichtig, einen Blick auf die Bedeutung der Internationalisierung zu werfen und warum wir als Entwickler sich überhaupt darum kümmern sollten.
Einfach ausgedrückt ist Internationalisierung der Prozess, mit dem wir unser Thema für die Übersetzung vorbereiten. Dies bedeutet, dass zukünftige Benutzer (oder sogar Entwickler) das Projekt in jeder Sprache, in der es zur Entwicklung unserer Arbeit verwendet wurde, problemlos für jede Sprache übersetzen können. Die Internationalisierung erfordert das eigentlich nicht wir bieten die Übersetzungen an (obwohl die mehrsprachigen unter uns dies leicht tun könnten), nur dass wir die notwendigen Schritte unternehmen, damit zukünftige Übersetzer dies tun können.
Ich hätte vor Jahren gesagt, dass Internationalisierung nur dann durchgeführt werden sollte, wenn der Zielmarkt für Ihre Arbeit etwas anderes als Ihre Muttersprache ist. Dies ist jedoch nicht mehr der Fall. Dank des Internets können wir uns unterhalten, zusammenarbeiten, und mit Menschen aus der ganzen Welt kommunizieren. Das potenzielle Publikum für ein bestimmtes Projekt ist breiter als je zuvor.
Noch mehr, WordPress unterstützt eine große Anzahl moderner Websites. Zu diesem Zweck sollten wir global über unsere Arbeit nachdenken. Ich würde sagen, dass die Internationalisierung von kommerziellen Themen oder Plugins nicht mehr verhandelbar ist. Wenn die Plattform, auf der Ihre Arbeit aufgebaut ist, von einer Vielzahl von Sprachen verwendet wird - und WordPress - und diese Plattform eine saubere und einfache Möglichkeit bietet, ein Thema zu internationalisieren - und WordPress -, dann ist es eher eine Frage, warum ich es bin nicht Internationalisierung meiner Arbeit.
Wie bereits erwähnt, ist die Internationalisierung eines Themas eher eine Anstrengung beim Verstehen der Schlüsselfunktionen in der WordPress-API als der eigentliche Prozess der Textvorbereitung. Bevor wir uns ein konkretes Beispiel anschauen, definieren wir einige wichtige Begriffe und Funktionen: - Internationalisierungsschlüssel. Sie können sich dies als Kontext, Domäne oder eindeutige Kennung für Ihre Zeichenfolgen vorstellen.
Ungeachtet dessen ist dies ein einzelner, einzigartiger Wert, den WordPress verwendet, um den Text in Ihrem gesamten Thema zu internationalisieren. - __ ($ text, $ key) ist eine Funktion, die eine übersetzte Zeichenfolge zurückgibt. Diese Funktion kann die Zeichenfolge nicht anzeigen, drucken oder anzeigen. Es wird häufig verwendet, wenn eine weitere Operation für die übersetzte Zeichenfolge ausgeführt werden muss (z. B. die Übergabe an eine andere Funktion). Es akzeptiert zwei Argumente - die zu übersetzende Zeichenfolge und den Internationalisierungsschlüssel. - _e ($ text, $ key) ist eine Funktion, die die übersetzte Zeichenfolge tatsächlich wiedergibt.
Dies wird am besten verwendet, wenn Sie einen übersetzten Wert abrufen und an einer beliebigen Stelle in Ihrem Design oder Plugin anzeigen müssen. - load_theme_textdomain ($ domain, $ translation_directory), load_plugin_textdomain ($ domain, $ translation_directory) sind zwei Funktionen, die WordPress mitteilen, wo Sie nach Ihrem suchen Übersetzungen. Wir werden uns diese Funktionen kurz etwas genauer ansehen.
Im Moment wissen Sie einfach, dass jede Funktion den gleichen Zweck erfüllt, obwohl eine für Themes, eines für Plugins ist. Für den größten Teil ist dies alles, um zu verstehen, wie Sie Ihr Theme internationalisieren können. Von hier aus schauen wir uns genau an, was genau erforderlich ist, um diese Funktionen in die Praxis umzusetzen.
Werfen Sie einen Blick auf die Internationalisierung eines Themas, wie ein Standard-Markup aussieht:
Mein WordPress-Blog
Nur eine der besten Seiten im Internet
Dieser Absatz ist nur der beste Absatz, der in allen WordPress-Blogs im Internet vorhanden ist. Lesen Sie es und genießen Sie es.
Nichts spektakuläres, richtig? Sieht aus wie ein Standard-HTML-Teil (was alles ist, was es ist). Zugegeben, dies ist ein einfaches Beispiel, aber es genügt, um zu zeigen, wie man ein Thema internationalisiert.
Um diesen Text zu internationalisieren, müssen wir ermitteln, mit welchem eindeutigen Bezeichner wir unseren Text internationalisieren wollen - ich werde mit 'tutsplus' gehen. Zweitens verwenden wir die Funktion __e (), da der gesamte obige Text auf dem Bildschirm angezeigt wird. Der internationalisierte Code sollte sein:
Aber was ist mit Text, der übersetzt werden muss, bevor er auf dem Bildschirm angezeigt wird? Es ist nicht viel anders, aber werfen wir einen Blick darauf, wie wir Sidebars internationalisieren können.
Lassen Sie uns zunächst die Seitenleiste einrichten:
register_sidebar (array ('name' => 'Custom Sidebar', 'id' => 'sidebar'));
Als Referenz verwende ich die register_sidebar-Funktion, die über die WordPress-API verfügbar ist. Beachten Sie, dass der Name der Seitenleiste auf dem Bildschirm Widgets dargestellt wird. Daher müssen wir sie internationalisieren. Ein Array akzeptiert jedoch keinen Echo-String - es akzeptiert einen String-Wert.
In diesem Fall nutzen wir die Funktion __ ():
register_sidebar (array ('name' => __ ('Benutzerdefinierte Sidebar', 'tutsplus'), 'id' => 'sidebar'));
Leicht genug, huh?
Denken Sie daran, dass Internationalisierung nur für statischen Text gelten sollte. Es liegt nicht in der Verantwortung des Entwicklers, die Internationalisierung von Seiteninhalten, die Veröffentlichung von Inhalten usw. zu gewährleisten.
Nachdem Sie Ihr Thema durchgearbeitet und den Text, der internationalisiert werden muss, richtig behandelt haben, müssen Sie dem Thema oder Plugin mitteilen, wo die Internationalisierungsdateien zu finden sind. Wir werden uns dies in einem Moment genauer ansehen, aber zuerst empfehle ich immer, ein 'lang'-Verzeichnis im Stammverzeichnis des Designs oder des Plugin-Verzeichnisses anzulegen, um Internationalisierungsdateien zu speichern.
Erinnern Sie sich an die Funktionen load_theme_text_domain und die Funktionen load_plugin_text_domain von früher? Hier setzen wir sie ein. Wenn Sie mit einem Design arbeiten, müssen wir eine benutzerdefinierte Funktion definieren, die im after_setup_theme-Hook aufgerufen wird:
Funktion custom_theme_setup () // end custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');
Als Nächstes erklären wir der Funktion, wo die Übersetzungen lokalisiert werden sollen. Fügen Sie dem Thema dazu folgende Zeilen hinzu (beachten Sie die Kommentare, die erklären, was jede Zeile bewirkt):
function custom_theme_setup () // Ruft das Verzeichnis für die Internationalisierungsdateien ab $ lang_dir = get_template_directory (). '/ lang'); // Setze die Textdomäne des Themas mit dem eindeutigen Bezeichner von oben. Load_theme_textdomain ('tutsplus', $ lang_dir); // end custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');
Relativ einfach, oder? Bei Plugins ist es auch nicht viel anders. Ähnlich wie bei Themes platziere ich meine Plug-In-Internationalisierungsdateien immer in einem 'lang' -Unterverzeichnis. Zuerst müssen wir WordPress mitteilen, wo sich die Internationalisierungsdateien befinden. Vorausgesetzt, dass sich Ihr Verzeichnis in einem 'lang'-Verzeichnis befindet:
load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');
Der zweite Parameter, bei dem wir 'false' angegeben haben, ist notwendig, entspricht aber einer veralteten Funktion in WordPress.
Schließlich müssen wir festlegen, wo die Funktion load_plugin_textdomain aufgerufen werden soll. Wenn wir ein Widget schreiben, platziere ich normalerweise diesen Funktionsaufruf im Konstruktor:
class My_Custom_Widget function My_Custom_Widget () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /'); // Endkonstruktor // End My_Custom_Widget
Wenn wir ein Vanilla-Plugin schreiben, gibt es verschiedene Möglichkeiten, WordPress mitzuteilen, wo sich die Übersetzungsdateien befinden. Sie haben jedoch die Flexibilität, sich mit dem zu verbinden after_setup_theme
Funktion. Ähnlich wie beim obigen Themencode können Sie dies in Ihrem Plugin platzieren:
function custom_plugin_setup () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /'); // end custom_theme_setup add_action ('after_setup_theme', 'custom_plugin_setup');
An diesem Punkt ist Ihr Thema oder Plugin für die Internationalisierung bereit.
An diesem Punkt sind Sie tatsächlich fertig, aber es ist immer wert zu wissen, was erforderlich ist, um Ihre Arbeit anzunehmen und voranzukommen. Hier sind die zwei herausragenden Aufgaben, die Übersetzer normalerweise durchführen, um Ihr Thema zu übersetzen
Im Gegensatz zu einigen anderen Entwicklungsumgebungen ist es mit WordPress unglaublich einfach, Ihre Arbeit zu internationalisieren. Der schwierigste Teil besteht wohl darin, die Schlüsselfunktionen zu verstehen, die erforderlich sind, um Ihre Saiten auf die Internationalisierung vorzubereiten.
Darüber hinaus kann die Umgestaltung bestehender Arbeiten immer zeitaufwändig sein. Im Zusammenhang mit WordPress ist dies zwar mühsam, aber relativ einfach. Wenn Sie weitere Vorschläge oder Fragen zur Internationalisierung haben, können Sie diese gerne in den Kommentaren hinterlassen!