In einem früheren Beitrag habe ich die Grundlagen der WordPress -Internationalisierung (abgekürzt als i18n) behandelt. So installieren Sie eine lokalisierte Version von WordPress und wie eine vorhandene WordPress -Site problemlos in eine lokalisierte Version konvertiert werden kann.
In diesem Artikel werde ich Sie durch den Prozess der Internationalisierung von WordPress -Plugins führen. Der Prozess ist nicht schwierig und sobald das Wissen erworben ist, können Sie Ihre WordPress -Plugins leicht in andere Sprachen übersetzt.
Im Laufe der Jahre neigen Entwickler dazu, die Bedeutung dieser Begriffe zu missbrauchen - Internationalisierung und Lokalisierung.
Es ist bemerkenswert, dass die Internationalisierung oft als i18n abgekürzt wird (weil es 18 Buchstaben zwischen dem 'I' und dem 'n') und die Lokalisierung als L10N (weil es 10 Buchstaben zwischen 'L' und 'L' und vorhanden ist das 'n'.)
Die Antwort ist einfach; WordPress wird auf der ganzen Welt in vielen verschiedenen Sprachen verwendet. Wenn Plugins internationalisiert werden, ziehen sie ein größeres Publikum aus anderen Teilen der Welt an, das offensichtlich mit dem Plugin in ihrer eigenen Sprache profitieren würde.
Als Entwickler haben Sie möglicherweise keine Zeit, lokalisierte Versionen Ihres Plugins bereitzustellen, da Sie keine anderen Sprachen sprechen. Wenn Sie Ihr Plugin jedoch internationalisiert, lassen Sie die Tür für andere offen, um Lokalisierung zu erstellen, ohne unbedingt den Quellcode zu ändern.
Nachdem wir mit dem Konzept der Plugin -Internationalisierung und -Lokalisierung vertraut sind, tauchen wir in den Prozess der Übersetzung ein.
Der erste Schritt, um ein Plugin -translatable zu erstellen, besteht darin, die Übersetzungsheader in die Plugin -Headers aufzunehmen.
Die Übersetzungsheader sind die Textdomäne und der Domänenpfad.
Die Textdomäne wird verwendet, um den gesamten Text zu einem Plugin zu bezeichnen. Es ist eine eindeutige Kennung, die sicherstellt, dass WordPress zwischen allen geladenen Übersetzungen unterscheiden kann. Dies erhöht die Portabilität und spielt mit bereits vorhandenen WordPress -Tools besser.
Die Textdomäne muss mit der Schnecke des Plugins übereinstimmen. Wenn Ihr Plugin beispielsweise eine einzelne Datei namens sample-plugin.php ist oder in einem Ordner namens Sample-Plugin die Textdomäne enthalten ist.
eine Notiz zur TextdomäneErinnerst du dich, dass die Textdomäne mit dem Plugin -Slug übereinstimmen muss? Das mag doch nicht wahr sein. Ich habe ein kurzes Experiment mit einem meiner Plugins durchgeführt, anstatt der Plugin -Schnecke, habe ich einen einzigartigen Text verwendet und es funktionierte ohne Probleme.
Moral: Stellen Sie sicher
Der Domänenpfad ist der Ordner WordPress sucht nach den .mo -Übersetzungsdateien.
sucht WordPress standardmäßig das Plugin -Verzeichnis nach den zu verwendenden Übersetzungsdateien. Wenn Sie die Übersetzungsdatei im Stammordner Ihres Plugins haben, können Sie Ihre Plugin -Struktur unorganisieren.
Wenn Sie beispielsweise die Übersetzungsdateien in einem Ordner aufbewahren möchten; /Sprachen, Sie müssen WordPress mit dem Domänenpfad -Header darüber informieren.
unten finden Sie ein typischer Header eines WordPress -Plugins, einschließlich der der Übersetzung.
Textdomäne laden
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
unten finden Sie die Funktionssynopsis.
Der erste Parameter $ Domain sollte die Textdomäne sein. Der $ ABS_REL_PATH wurde veraltet und sollte auf False festgelegt werden. Schließlich ist $ plugin_rel_path der relative Pfad zu Übersetzungsdateien.
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Wenn sich die Übersetzungs -MO -Dateien im Verzeichnis des Plugins befinden, verwenden Sie wie folgt:
Wenn die Übersetzungs -MO -Dateien im Subdad -Verzeichnis des Plugins im Plugin enthalten sind. Verwenden Sie wie folgt:
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Sie rufen nicht nur die Funktion load_plugin_textdomain auf, sie sollte auch in Ihrem Plugin aufgerufen werden
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
Tauchgang in Plugin i18n
<span>function load_plugin_textdomain() { </span> <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); </span><span>} </span> <span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
Bitte beachten Sie: Die Zeichenfolge ESPW-Plugin wird in diesem Tutorial als Textdomäne verwendet.
Um eine in Ihrem Plugin übersetzbare Zeichenfolge zu erstellen, wickeln Sie die ursprüngliche Zeichenfolge wie folgt in einen Funktionsaufruf __ () ein:
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
Wenn Sie den String an den Browser anstelle des Echo -Sprachkonstrukts wiederholen möchten, verwenden Sie die Funktion _e:
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Als PHP- und WordPress -Entwickler gehe ich davon aus, dass Sie wissen, was Platzhalter sind. Sie können schnell durch die PHP -Dokumentation von Sprintf und Printf () überfliegen, um weitere Informationen zu erhalten.
Wenn Sie Variablen in Zeichenfolgen verwenden, wie im folgenden Beispiel, sollten Sie Platzhalter verwenden.
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Der richtige Weg ist die Verwendung der FunctionF () -Funktion wie folgt:
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );</span>
Durch den Code einiger Plugins, die im WordPress -Plugin -Repository gehostet werden, sehe ich Dinge wie folgt:
<span>function load_plugin_textdomain() { </span> <span>load_plugin_textdomain( 'espw-plugin', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); </span><span>} </span> <span>add_action( 'plugins_loaded', 'load_plugin_textdomain' );</span>
<span>$text = __( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
Obwohl die Zeichenfolgen jetzt übersetzbar sind, wird die PHP -Variable $ City auch übersetzbar.
Dies ist eine schlechte Praxis, da ein Übersetzer die Variable fälschlicherweise verändern oder böswilligen Code in die Plugin -Codebasis injizieren kann, und dies wird letztendlich die Plugin -Fehlfunktion verursachen.
Die Sprintf -Funktion ähnelt dem Printf darin, dass sie die Zeichenfolge mit Platzhaltern formatieren, während Printf eine formatierte Zeichenfolge ausgibt. Die Sprintf gibt die Zeichenfolge zurück.
Beispiel: Der folgende Code zuweist der Variablen $ Text eine formatierte Zeichenfolge.
<span>_e( 'Hello, SitePoint Readers!', 'espw-plugin' );</span>
einschließlich HTML in translatable Zeichenfolgen hängt vom Kontext ab.
Ein Beispiel ist ein Link (getrennt von ihm umgeben,
<span>echo 'Your city is $city.'</span>
<span>printf( </span> <span>__( 'Your city is %s.', 'espw-plugin' ), </span> <span>$city </span><span>);</span>
Eine Zeichenfolge, die sich ändert, wenn sich die Anzahl der Elemente ändert, kann mit der Funktion _n () internationalisiert werden.
Diese Funktion akzeptiert 4 Argumente, nämlich:
Sehen wir uns einige Beispiele an, um zu verstehen, wie die Funktion _n () funktioniert.
Auf Englisch haben Sie "einen Kommentar" und "zwei Kommentare". In anderen Sprachen können Sie mehrere Pluralformen haben.
Der folgende Code zeigt, wie ein solches Szenario mit der Funktion _n () verarbeitet wird.
<span>echo __('Your city is $city', 'espw-plugin');</span>
Code Erläuterung Der obige Code besteht aus diesen drei Funktionen - printf, _n und number_format_i18n.
Für die einfache Assimilation wird der Funktionscode mit jeder erläuterten Funktionskomponente zerlegt.
<span><span><?php </span></span><span><span>/* </span></span><span><span> Plugin Name: Enable Shortcode and PHP in Text widget </span></span><span><span> Plugin URI: http://w3guy.com/shortcode-php-support-wordpress-text-widget/ </span></span><span><span> Description: Enable shortcode support and execute PHP in WordPress's Text Widget </span></span><span><span> Author: Agbonghama Collins </span></span><span><span> Version: 1.2 </span></span><span><span> Author URI: http://w3guy.com </span></span><span><span> Text Domain: espw-plugin </span></span><span><span> Domain Path: /languages/ </span></span><span><span> */</span></span>
Das erste Argument, das an die _n -Funktion übergeben wird, ist der Text, der angezeigt wird, wenn die Anzahl der Kommentare einzigartig ist.
Der zweite ist der Text, der angezeigt wird, wenn die Anzahl der Kommentare größer als eins ist.
Der Platzhalter %s enthält den Wert von number_format_i18n (get_comments_number ()), der in Kürze erklärt wird.
Das dritte Argument get_comments_number () wird als eine Funktion angenommen, die die Kommentarzahl zurückgibt.
Wenn es 1 zurückgibt, wird das erste Argument ein Kommentar von printf ausgegeben. Andernfalls wird das zweite Argument %S -Kommentare zurückgegeben, wenn es größer als 1.
istBitte beachten Sie: Der Platzhalter %s wird durch die Ganzzahl ersetzt, die durch number_format_i18n (get_compultment_number ()) zurückgegeben wird, was das zweite Argument ist, das an die Printf -Funktion übergeben wird.
Schließlich ist das vierte Argument die Übersetzung Textdomäne .
Die Funktionsnummer_Format_I18n () konvertiert die Kommentarzahl in Format basierend auf dem Gebietsschema. Weitere Informationen finden Sie in der Dokumentation.
Ähnlich wie bei der Number_Format_I18n () ist das Datum_I18n, das das Datum im lokalisierten Format basierend auf dem Zeitstempel abruft.
Noch auf der Funktion _n () ist unten eine weitere Demonstration, wie die Funktion funktioniert.
<span><span><?php load_plugin_textdomain( $domain, $abs_rel_path, $plugin_rel_path ) ?></span></span>
Wenn die Variable $ count 1 zurückgibt, wird der von uns gelöschte Text eine Spam -Nachricht angezeigt. Wenn es jedoch größer als 1 ist, haben wir %d Spam -Nachrichten gelöscht, wobei der Platzhalter %d durch den Ganzzahlwert von $ count ersetzt wurde.
Manchmal wird in mehreren Kontexten ein Begriff verwendet, obwohl er ein und das gleiche Wort in Englisch ist, das er in anderen Sprachen unterschiedlich übersetzt werden muss.
Zum Beispiel kann der Wort Beitrag sowohl als Verb wie in "HIER -Klicken Sie hier, um Ihren Kommentar zu veröffentlichen" und als Substantiv "diesen Beitrag bearbeiten" verwendet werden.
In solchen Fällen sollte die Funktion _x oder _ex verwendet werden.
Es ähnelt __ () und _e (), aber es hat ein zusätzliches Argument - $ context.
<span>load_plugin_textdomain( 'espw-plugin', false, dirname( plugin_basename( __FILE__ ) ) );</span>
Verwenden dieser Methode in beiden Fällen erhalten wir den String -Kommentar für die Originalversion, aber die Übersetzer sehen zwei Kommentare für die Übersetzung, jeweils im verschiedenen Kontext.
Wenn die von der Funktion _x () übersetzbaren Zeichenfolgen durch ein Übersetzungswerkzeug wie Poedit analysiert werden, liefert das Kontextargument dem Übersetzer im Kontext einen Hinweis.
Auf Deutsch ist der Posten als Substantiv Beitrag, während ein Verb wörtlich ist.unten finden Sie ein Screenshot von Poedit, in dem der String-Post in Deutsch übersetzt wird, mit dem Kontext quadratische Verspottung.
6. Übersetzungszeichenfolgen
WordPress hat eine Reihe von Funktionen zur Validierung und Bereinigung von Daten.
Unter den Liste befinden sich Funktionen für die Fluchtübersetzungstexte - ESC_HTML (), ESC_HTML_E (), ESC_HTML_X (), ESC_ATTR (), ESC_ATTR_E () und ESC_TTR_X (). Sie können weitere Informationen zu jeder dieser Funktionen unter WordPress Codex erhalten.
Ich muss nicht jeden von diesen erklären, aber was sie tun, ist im Grunde entkommen translatable Texte.
Eines der Ziele von WordPress ist es, Benutzern auf der ganzen Welt die Veröffentlichung von Inhalten zu erleichtern. Als Plugin -Entwickler können Sie den Veröffentlichungsprozess für Benutzer weiter erleichtern, wenn Sie Ihre Plugins internationalisieren.
Der erste Teil dieses Tutorials ging im Wesentlichen um alles, was Sie über Plugin i18n wissen müssen.
Der abschließende Teil wird ein Durchgang darüber sein, wie man eine Plugin-Übersetzung fertig machen und lernen, wie man ein Plugin für eine neue Sprache lokalisiert.
Ich hoffe, Sie haben aus diesem Tutorial etwas Neues gelernt.
Happy Coding!
Wie funktioniert WordPress i18n? Machen Sie die Textzeichenfolgen Ihres Plugins in andere Sprachen. Dies wird erreicht, indem diese Textzeichenfolgen in eine spezielle Funktion eingewickelt werden, die es ermöglicht, übersetzt zu werden. WordPress verwendet das GNU GetText-Lokalisierungs-Framework für diesen Zweck, der eine Reihe von Tools zum Übersetzen des Textes bietet. Die Plugin-Übersetzungsbereitschaft umfasst mehrere Schritte. Zunächst müssen Sie Ihr Plugin Internationalization durch einwickeln, indem Sie alle Textzeichenfolgen in die Funktion __ () oder _e () einwickeln. Als nächstes müssen Sie eine .POT -Datei (tragbare Objektvorlage) erstellen, die alle übersetzbaren Zeichenfolgen aus Ihrem Plugin enthält. Diese Datei wird als Vorlage zum Erstellen von .po- (tragbarem Objekt) und .MO -Dateien (Maschinenobjekt) verwendet, die die übersetzten Zeichenfolgen enthalten.
Die Funktionen __ () und _e () werden beide in WordPress i18N verwendet, um Textzeichenfolgen übersetzbar zu machen. Der Hauptunterschied zwischen ihnen besteht darin, dass __ () die übersetzte Zeichenfolge zurückgibt, während _e () die übersetzte Zeichenfolge direkt widerspiegelt oder ausgibt. Daher würden Sie __ () verwenden, wenn Sie die übersetzte Zeichenfolge in einer Variablen speichern möchten, und _e (), wenn Sie die übersetzte Zeichenfolge dem Benutzer anzeigen möchten.
Welche Tools können ich für WordPress i18n verwenden? Poedit und Loco -Translate sind beliebte Tools zum Erstellen und Verwalten von Übersetzungsdateien. Glotpress, ein webbasiertes Übersetzungstool, wird auch von der WordPress-Community verwendet, um WordPress-Kern, Plugins und Themen zu übersetzen. Kann Ihr WordPress -Plugin auf Übersetzungsbereitschaft testen, indem Sie die Sprache in Ihren WordPress -Einstellungen ändern und überprüfen, ob die Textzeichenfolgen des Plugins korrekt übersetzt werden. Sie können auch ein Tool wie das WordPress i18N -Checker -Plugin verwenden, das Ihr Plugin auf allgemeine I18N -Fehler überprüft.
Das obige ist der detaillierte Inhalt vonWordPress I18N: Machen Sie Ihre Plugin -Übersetzung fertig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!