Dokumentation · Entwickler-Dokumentation
Internationalisierung für Entwickler
Dieses Dokument beschreibt, wie das ADP Car Market Hub-Plugin die Internationalisierung (i18n) für Übersetzer und Mitwirkende handhabt. Es behandelt die Textdomain, den Lademechanismus, die mit dem Plugin ausgelieferten Übersetzungsdateien, die Tools zur Generierung der POT-Datei und die Konventionen, die beim Hinzufügen neuer übersetzbarer Zeichenketten zu beachten sind.
Wann dieses Dokument zu verwenden ist
Lesen Sie dieses Dokument, wenn Sie Folgendes tun müssen:
- Eine neue übersetzbare Zeichenkette (String) zu PHP-, JavaScript- oder Template-Code hinzufügen.
- Die POT-Datei nach dem Hinzufügen von Zeichenketten neu generieren.
- Eine neue Sprachübersetzung für das Plugin bereitstellen.
- Verstehen, warum eine bestimmte Admin- oder Frontend-Zeichenkette übersetzt oder nicht übersetzt ist.
Hinweise für Übersetzer finden Sie unter README-i18n.md im Repository.
Übersicht
Das Plugin verwendet die Standard-WordPress-i18n-APIs (__(), _e(), _n(), _x(), esc_html__(), esc_attr__(), esc_html_e(), esc_attr_e(), …) mit einer einzigen Textdomain.
- Textdomain:
adp-car-market-hub. - Domain-Pfad:
/languages(im Plugin-Header deklariert). - Loader:
load_plugin_textdomain( 'adp-car-market-hub', false, '/languages' )wird von einer Funktion aufgerufen, die anplugins_loadedmit Priorität 1 angehängt ist, sodass Übersetzungen geladen werden, bevor die plugin-eigeneninit-Arbeiten ausgeführt werden.
JavaScript-Zeichenketten, die von den gebündelten Skripten des Plugins verwendet werden, werden in PHP vorübersetzt und über wp_localize_script() an JavaScript übergeben. Das Plugin verlässt sich derzeit nicht auf wp_set_script_translations() und den damit verbundenen JSON-Übersetzungs-Workflow.
Anforderungen oder Voraussetzungen
- Quelldateien, die unter Verwendung der WordPress-i18n-Funktionen mit
'adp-car-market-hub'als Textdomain geschrieben wurden. - Installiertes WP-CLI für die Neugenerierung der POT-Datei (das Hilfsskript verwendet
wp i18n make-pot). - Ein POEdit-kompatibler Editor (oder ein beliebiges Tool, das GNU gettext versteht) zur Bearbeitung von
.po-Dateien.
Mit dem Plugin ausgelieferte Übersetzungsdateien
Alle Übersetzungsdateien befinden sich unter /languages und folgen der Standard-WordPress-Namenskonvention.
| Datei | Zweck |
|---|---|
adp-car-market-hub.pot | Übersetzungsvorlage (Quelle für neue Übersetzungen). |
adp-car-market-hub-de_DE.po und .mo | Deutsch (Deutschland), informelle Anrede (Du). |
adp-car-market-hub-de_DE_formal.po und .mo | Deutsch (Deutschland), formelle Anrede (Sie). |
adp-car-market-hub-de_AT.po und .mo | Deutsch (Österreich). |
adp-car-market-hub-de_CH.po und .mo | Deutsch (Schweiz). |
adp-car-market-hub-fr_FR.po und .mo | Französisch (Frankreich). |
adp-car-market-hub-it_IT.po und .mo | Italienisch (Italien). |
adp-car-market-hub-es_ES.po und .mo | Spanisch (Spanien). |
adp-car-market-hub-nl_NL.po und .mo | Niederländisch (Niederlande). |
Jedes ausgelieferte Gebietsschema (Locale) enthält sowohl eine .po-Quelle als auch eine kompilierte .mo. Die obige Liste spiegelt die derzeit vorhandenen Dateien wider; überprüfen Sie den aktuellen Stand im Ordner /languages vor der Veröffentlichung.
Tools
POT-Datei neu generieren
Ein Hilfsskript wird im Verzeichnis bin/ des Repositories bereitgestellt. Es ruft den Befehl i18n make-pot von WP-CLI auf und schliesst Ordner aus, die nicht gescannt werden sollen (.git, node_modules, vendor, tests, bin).
Um es auszuführen:
- Stellen Sie sicher, dass WP-CLI installiert und über
PATHverfügbar ist. - Führen Sie das Skript vom Stammverzeichnis des Repositories aus.
- Die aktualisierte
.pot-Datei wird nachlanguages/adp-car-market-hub.potgeschrieben.
.mo-Dateien kompilieren
Kompilieren Sie nach dem Bearbeiten einer .po-Datei eine passende .mo mit Ihrem Editor (das Speichern in POEdit erzeugt beide Dateien automatisch) oder mit msgfmt von gettext.
Schritt-für-Schritt-Anleitung
Eine übersetzbare Zeichenkette in PHP hinzufügen
- Umschliessen Sie die Zeichenkette mit der entsprechenden WordPress-i18n-Funktion und übergeben Sie
'adp-car-market-hub'als Textdomain. Zum Beispiel__( 'Lead saved.', 'adp-car-market-hub' )oderesc_html__( 'Vehicles', 'adp-car-market-hub' ). - Wenn die Zeichenkette mit HTML verkettet wird, bevorzugen Sie die Varianten
esc_*__undesc_*_e, um Maskierung (Escaping) und Übersetzung in einem Aufruf zu kombinieren. - Verwenden Sie für Pluralformen
_n()oder_nx(). Zur Kontext-Unterscheidung verwenden Sie_x(). - Generieren Sie die POT-Datei neu (siehe oben), damit Übersetzer die neue Zeichenkette erfassen können.
Eine in JavaScript verwendete übersetzbare Zeichenkette hinzufügen
- Übersetzen Sie die Zeichenkette zuerst in PHP (
__( 'Sending…', 'adp-car-market-hub' )). - Übergeben Sie sie über das
wp_localize_script()-Array, das vom entsprechenden Handle verwendet wird, an JavaScript. Siehe Frontend Assets und Admin Assets für die bereits verwendeten lokalisierten Objekte (zum BeispielAS24CI,as24ciCompare,AS24CI_LEADS,AS24CI_BATCH). - Lesen Sie den Wert aus der entsprechenden globalen Variable im JavaScript-Code aus.
Eine neue Übersetzung bereitstellen
- Kopieren Sie
languages/adp-car-market-hub.potnachlanguages/adp-car-market-hub-<locale>.pounter Verwendung des WordPress-Sprachcodes (zum Beispieles_ES). - Übersetzen Sie die Zeichenketten.
- Kompilieren Sie die
.mo-Datei zusammen mit der.po. - Öffnen Sie einen Pull Request mit beiden Dateien.
Betriebliche Hinweise
- Einzelne Textdomain. Jede übersetzbare Zeichenkette im Plugin verwendet
'adp-car-market-hub'. Führen Sie keine zusätzlichen Textdomains ein. - Halten Sie die POT aktuell. Wenn ein Mitwirkender Zeichenketten hinzufügt oder entfernt, generieren Sie die POT-Datei in derselben Änderung neu, damit die Übersetzungsdateien sauber zusammengeführt werden können.
- JavaScript-Zeichenketten. Da JS-Zeichenketten über
wp_localize_script()übersetzt werden, erscheinen sie in der POT-Datei nur, wenn der entsprechende PHP-seitige__()-Aufruf vorhanden ist. Übersetzen Sie JS-Zeichenketten immer zuerst in PHP. - Gebietsschemaspezifische Formatierung. Die Formatierung von Zahlen und Währungen wird von den plugin-eigenen Locale-Helpern gehandhabt. Verwenden Sie die vom Plugin bereitgestellten Helper, anstatt die Locale-Logik in Ihrem eigenen Code neu zu implementieren.
- WordPress-Übersetzungsplattform. Das Plugin kann ausserhalb des Repositories über jeden Standard-gettext-Workflow übersetzt werden. Es ist kein spezieller externer Übersetzungsdienst erforderlich.
Fehlerbehebung
- Eine Zeichenkette wird im Frontend nicht übersetzt. Vergewissern Sie sich, dass die Zeichenkette in einer i18n-Funktion mit der korrekten Textdomain umschlossen ist. Vergewissern Sie sich, dass die Sprache in WordPress (Einstellungen → Allgemein → Website-Sprache) installiert ist und dass eine
.mo-Datei für dieses Gebietsschema in/languagesexistiert. - Neu hinzugefügte Zeichenketten erscheinen nicht in der POT. Führen Sie das POT-Hilfsskript erneut aus. Überprüfen Sie, ob sich Ihre Datei nicht in einem der ausgeschlossenen Ordner befindet.
- JS-seitiger Text ist nach der PHP-Übersetzung immer noch auf Englisch. Vergewissern Sie sich, dass die Zeichenkette über
wp_localize_script()für das entsprechende Handle übergeben wird. Das Plugin erkennt nicht übersetzte JS-Zeichenketten nicht automatisch. - Pluralformen fallen auf die Singularform zurück. Verwenden Sie
_n()(oder_nx()für Kontext) anstelle von__()für alle Zeichenketten, die je nach Anzahl variieren. - Überprüfen Sie das Verhalten in der aktuellen Plugin-Version, bevor Sie eine benutzerdefinierte Integration veröffentlichen. Lokalisierte JavaScript-Objektnamen können sich zwischen den Versionen ändern.