Im GitHub-Repository von Gutenberg sehen Sie die Quelle des verwendeten i18n-Pakets. In dieser Quelle wird Jed importiert (Zeile 4 von gutenberg / packages / i18n / src / index.js) und dann für die meisten Übersetzungsaufgaben unter der Haube verwendet.
Jed stellt den "Gettext Style i18n für moderne JavaScript-Apps" vor (oder zumindest so heißt es auf ihrer Website).
Ihre Frage ist für die .po-Dateien. Jed erklärt auf ihrer Website:
Es gibt eine ganze Reihe von .po to .json-Konvertern. Gettext .po-Dateien sind Standardausgaben der meisten anständigen Übersetzungsunternehmen, da es sich um einen alten Standard handelt.
Ich benutze derzeit: po2json
Ich möchte diese Funktionalität jedoch in einer zukünftigen Version einem separaten Jed-Modul hinzufügen.
Dies scheint hier jedoch nicht zuzutreffen.
Weiteres Graben stellt sich heraus, setLocaleData( data: Object, domain: string )
wird verwendet, um die Übersetzungen auf folgende Weise weiterzugeben :
$locale_data = gutenberg_get_jed_locale_data( 'gutenberg' );
wp_add_inline_script(
'wp-i18n',
'wp.i18n.setLocaleData( ' . json_encode( $locale_data ) . ' );'
);
( gutenberg_get_jed_locale_data( $domain )
mehr oder weniger ein Wrapper für get_translations_for_domain( $domain )
)
Es scheint also, dass WordPress die Übersetzungsdaten über PHP abruft und sie dann an Jed weitergibt. Jed selbst scheint keine Übersetzungsdateien zu laden.
In der Readme-Datei des Pakets wird auch erläutert, wie die .pot-Datei mit den lokalisierten Zeichenfolgen ordnungsgemäß generiert wird.
Das Paket enthält auch ein pot-to-php
Skript zum Generieren von PHP-Dateien, die die in einer .pot-Datei aufgelisteten Nachrichten enthalten. Dies ist nützlich, um die Erkennung von WordPress.org-Übersetzungszeichenfolgen auszutricksen, da WordPress.org derzeit nicht in der Lage ist, Zeichenfolgen direkt aus JavaScript-Dateien zu analysieren.
npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
Eigenschaft alswp_add_inline_script
von PHP geladenes JSON speichert und sie dann auf der React-Seite abruft und an Jed weiterleitet? ... und Jed zaubert weiter?