it-swarm.com.de

Wie mache ich eine WordPress-Plugin-Übersetzung fertig?

Was ist der beste Weg, um ein Plugin zu erstellen, das für die Übersetzung bereit ist?

Es muss nicht von Anfang an übersetzt werden, sondern einfach zu übersetzen sein, damit andere Entwickler aus verschiedenen Kulturen am Lokalisierungsprozess des Plugins teilnehmen können.

19
Nabil Kadimi

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;

Mit _e() und __() wird der als erster Parameter angegebene Text in die aktuelle Sprache übersetzt. _e() gibt den Text aus, während __() ihn zurückgibt.

Der zweite Parameter ist die Textdomäne . Sie teilen WordPress damit mit, 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 Da ich für die Plugin-Datei von Verzeichnis verwendet habe, finde ich es 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.
  • A.mo-Datei : wird automatisch von Poedit erstellt, wenn Sie eine .po-Datei speichern. Sie können diese Dateien nur hochladen oder erneut hochladen, wenn Sie eine .po-Datei erstellen oder aktualisieren. WordPress ruft Übersetzungen aus .mo-Dateien ab .

Öffne Poedit und erstelle 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: Alle entfernen & __ und _e hinzufügen

Speichere den Katalog als /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin.pot und scanne deine Plugin-Dateien nach übersetzbarem Text, indem du den Update-Button drückst. Wenn das Update abgeschlossen ist, schließen Sie diesen Katalog und müssen diese Datei erst aktualisieren, wenn Sie Ihrem Plugin neue übersetzbare Zeichenfolgen (d. H. In __() oder _e() enthalten) hinzufügen.

Jetzt erstellen wir die erste Übersetzung (ich werde fr_FR verwenden):

Mit Podeit , einen Katalog aus einer POT-Datei erstellen (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 der Katalog als /my_wordpress_blog/wp-content/plugins/my-plugin/languages/my-plugin-fr_FR.po. Übersetzen Sie einige oder alle Zeichenfolgen, save die PO-Datei erneut, upload sowohl die PO- als auch die MO-Datei.

Beachten Sie, dass beim Speichern einer .po-Datei eine .mo-Datei mit demselben Namen erstellt wird: der Dateiname der .po-Datei ist entscheidend , er setzt sich aus der Verkettung der Plugin-Textdomäne (my-plugin ) und das Sprachgebietsschema (fr_FR) benennen Sie Ihre .po-Dateien für Plugins immer so: [Textdomäne] - [Gebietsschema] .po , hier einige Beispiele:

  • Italienisch/Italien: wpcf7-it_IT.po
  • Portugiesisch/Brasilien: wpcf7-pt_BR.po
  • Arabisch: wpcf7-ar.po... Ja!

Immer wenn das Plugin mit neuem Text aktualisiert wird, update the po file, translate new strings und laden Sie die .po und .mo Dateien erneut hoch

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 durch Ihren Plugin-Namen im 1. und 3. Parameter der Funktion load_plugin_textdomain.

4. Testen und Beheben von Problemen

Einige Gründe, die möglicherweise nicht funktionieren:

  • Strings werden nicht in die .pot- oder .po-Datei Importiert
    • → Falsche Katalogeinstellungen (Pfad oder Schlüsselwörter oder beides)
  • Text ist auf der WordPress-Site nicht übersetzt
    • → .mo-Datei für diese Sprache fehlt oder hat einen falschen Dateinamen
    • → Textdomäne nicht verwendet (_e('my text') durch _e('my text', 'my-plugin') ersetzen)
    • → Textdomain nicht geladen (Beispiel oben mit den richtigen Parametern verwenden, WP warnt nicht vor Fehlern)
36
Nabil Kadimi

Nabils Antwort ist ziemlich vollständig, aber es gibt eine einfache Variante:

  1. Ihr Plugin befindet sich im WordPress.org-Plugin-Repository

  2. Sie möchten, dass Ihr Plugin nur mit WordPress 4.6 oder höher funktioniert.

Die Schritte sind diese:

  1. Fügen Sie in der readme.txt-Datei Ihres Plugins Requires at least: 4.6 hinzu. Siehe https://developer.wordpress.org/plugins/wordpress-org/how-your-readme-txt-works/

  2. falls noch nicht geschehen, laden Sie Ihr Plugin in das WordPress-Plugin-Repository hoch. Siehe https://wordpress.org/plugins/developers/add/ .

  3. Suchen 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. Dies verwenden Sie für die Textdomäne der Übersetzungsfunktionen.

  4. 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:

  • Durchsuchen Sie Ihr Plugin nach allen übersetzbaren Zeichenfolgen (keine Notwendigkeit, Poedit oder etwas anderes zu installieren und auszuführen)
  • Machen Sie es jedem leicht, Übersetzungen Ihres Plugins auf translate.wordpress.org beizusteuern (Sie müssen weder eine eigene Website für die Übersetzung Ihres Plugins haben, noch einen benutzerdefinierten Prozess für Übersetzer, um Ihnen ihre Übersetzungen vorzulegen).
  • wenn jemand Ihr Plugin verwendet, prüft WordPress, ob es in seine Sprache übersetzt wurde, und zeigt es gegebenenfalls in seiner Sprache an (Sie oder sie müssen die Übersetzungsdateien nicht auf ihre Website laden).

(Antwort von meinem Blog-Post hier: https://cmljnelson.blog/2019/01/01/the-really-lazy-way-to-translate-a-wordpress-plugin/ )

2
thespacecamel