1. Schreiben Sie unter Berücksichtigung der Lokalisierung
Verwenden Sie nicht echo
oder print()
, um eine Textausgabe zu erstellen, sondern verwenden Sie stattdessen die WordPress-Funktionen __()
und _e()
:
/** Not localization friendly */
echo "Welcome to my plugin";
// OR
print("Welcome to my plugin");
/** Localization friendly */
_e('Welcome to my plugin', 'my-plugin');
// OR
$my_text = __('Welcome to my plugin', 'my-plugin');
echo $my_text;
_e()
und __()
liefert die Übersetzung - in der aktuellen Sprache - des als erster Parameter angegebenen Textes. _e()
gibt den Text aus und __()
gibt ihn zurück.
Der zweite Parameter ist die Textdomäne , mit der Sie WordPress mitteilen, dass der als erster Parameter angegebene Text zu diesem Plugin gehört. Sie können einen beliebigen Namen verwenden, aber ich bevorzuge die Verwendung desselben Namens, den ich für das Plugin verwendet habe datei verzeichnis finde ich intuitiver.
Wie kann man dynamischen Text wie "Hallo <Benutzername>" ausgeben?
Mit __()
und sprintf()
:
/** Get the username */
$username = 'Magictrick';
/** Not localization friendly */
echo "Hello $username";
/** Localization friendly */
printf(__('Hello %s', 'my-plugin'), $username);
// OR
$my_text = sprintf(__('Hello %s', 'my-plugin'), $username);
echo $my_text;
2. Bereiten Sie die .pot / .po / .mo-Dateien vor
Definitionen
- Die .pot-Datei : wird vom Plugin-Entwickler zur Verfügung gestellt und dient als Ausgangspunkt für die Erstellung neuer Übersetzungen, WordPress verwendet sie nicht.
- Eine .po-Datei : Ist eine Übersetzungsdatei, die Sie oder eine andere Person gestartet und möglicherweise vervollständigt haben. WordPress verwendet sie nicht.
- AMO-Datei : Wird automatisch von Poedit erstellt, wenn Sie eine PO-Datei speichern. Mit diesen Dateien können Sie sie nur hochladen oder erneut hochladen, wenn Sie eine PO-Datei erstellen oder aktualisieren. WordPress ruft Übersetzungen aus .mo-Dateien ab .
Öffnen Sie Poedit und erstellen Sie einen neuen Katalog (Datei ›Neuer Katalog ...) mit diesen Einstellungen:
- Projektinfo: Verwenden Sie Ihre (oder Ihre Team-) Informationen. Die Sprache und das Land sollten mit der Standardsprache Ihres Plugins übereinstimmen
- Pfade:
- Basispfad:
.
- Pfade: alles entfernen & hinzufügen
..
(wir speichern die Sprachdatei in einem Plugin-Unterverzeichnis namens languages)
- Stichwörter: Alles entfernen & hinzufügen
__
und_e
Speichern Sie den Katalog als/my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot
und durchsuchen Sie Ihre Plugin-Dateien nach übersetzbarem Text, indem Sie auf die Schaltfläche Aktualisieren klicken. Wenn das Update abgeschlossen ist, schließen Sie diesen Katalog, und Sie müssen diese Datei erst aktualisieren, wenn Sie Ihrem Plugin neue übersetzbare Zeichenfolgen (dh in __()
oder eingeschlossen _e()
) hinzufügen .
Jetzt erstellen wir die erste Übersetzung (ich werde fr_FR verwenden):
Mit Podeit , erstellen einen Katalog von einer POT - Datei
(Datei> Neuer Katalog aus POT - Datei ...) :
- Projektinfo: Verwenden Sie Ihre (oder Ihre Team-) Informationen, ändern Sie die Sprache und das Land , ich werde Französisch und Frankreich verwenden
- Pfade: Nicht ändern
- Stichwörter: Nicht chagen
Speichern Sie den Katalog als . Übersetzen Sie einige oder alle Zeichenfolgen. Speichern Sie die PO-Datei erneut./my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po
laden Sie die PO- und hoch.
Beachten Sie, dass beim Speichern einer PO-Datei eine MO-Datei mit demselben Namen erstellt wird. Der Dateiname der PO-Datei ist ausschlaggebend . Er setzt sich aus der Verkettung der Plugin-Textdomäne (my-plugin) und dem Sprachgebietsschema zusammen. fr_FR), benennen Sie Ihre .po-Dateien für Plugins immer wie folgt : [textdomain] - [locale] .po , hier einige Beispiele:
- Italienisch / Italien:
wpcf7-it_IT.po
- Portugiesisch (Brasilien:
wpcf7-pt_BR.po
- Arabisch:
wpcf7-ar.po
... ja!
Wenn das Plugin mit neuem Text aktualisiert wird , aktualisieren Sie die PO- Datei, übersetzen Sie neue Zeichenfolgen und laden Sie die .PO- und .MO-Dateien erneut hoch Dateien erneut
3. Weisen Sie das Plugin an, übersetzten Text für die aktuelle Sprache zu laden
Irgendwo in Ihrem Plugin müssen Sie WordPress anweisen, Ihre .mo-Datei zu verwenden. Verwenden Sie dazu den folgenden Code am Anfang Ihrer Plugin-Datei:
function my_plugin_init() {
load_plugin_textdomain( 'my-plugin', false, 'my-plugin/languages' );
}
add_action('init', 'my_plugin_init');
Ersetzen Sie my-plugin
mit Ihrem Plugin-Namen im 1. und 3. Parameter desload_plugin_textdomain
Funktion .
4. Testen und Beheben von Problemen
Einige Gründe, die möglicherweise nicht funktionieren:
- Zeichenfolgen werden nicht in die POT- oder PO-Datei importiert
- → Falsche Katalogeinstellungen (Pfad oder Schlüsselwörter oder beides)
- Text wird auf der WordPress-Site nicht übersetzt
- → .mo-Datei für diese Sprache fehlt oder hat einen falschen Dateinamen
- → Textdomäne nicht verwendet (ersetzen
_e('my text')
durch_e('my text', 'my-plugin')
)
- → Textdomain nicht geladen (Beispiel oben mit den richtigen Parametern verwenden, WP warnt Sie nicht vor Fehlern)
Nabils Antwort ist ziemlich vollständig, aber es gibt eine einfache Variante:
Ihr Plugin befindet sich im WordPress.org-Plugin-Repository
Sie möchten, dass Ihr Plugin nur mit WordPress 4.6 oder höher funktioniert.
Die Schritte sind diese:
Fügen Sie in der readme.txt-Datei Ihres Plugins Folgendes hinzu
Requires at least: 4.6
. Siehe https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/Falls noch nicht geschehen, laden Sie Ihr Plugin in das WordPress-Plugin-Repository hoch. Siehe https://wordpress.org/plugins/developers/add/ .
Finden Sie die Slug / Text-Domain Ihres Plugins. Gehen Sie dazu auf die Seite Ihres Plugins im WordPress-Plugin-Repository. Die URL lautet https://wordpress.org/plugins/your-plugin-slug/ . Der letzte Teil der URL, "your-plugin-slug", ist der Slug Ihres Plugins. Das verwenden Sie für die Textdomäne der Übersetzungsfunktionen.
Verwenden Sie die Übersetzungsfunktionen von WordPress in Ihrem Plugin (wie
__e(‘hello’, ‘my-plugin-domain’);
). Stellen Sie einfach sicher, dass Sie die richtige Plugin-Textdomäne verwenden, die Sie im vorherigen Schritt erworben haben. Weitere Informationen finden Sie unter https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/ .Wenn Sie die obigen Schritte ausführen, kümmert sich WordPress um:
(Antwort von meinem Blog-Post hier: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )
quelle