Dans le référentiel GitHub de Gutenberg, vous pouvez voir la source du package i18n utilisé. Dans cette source, vous verrez Jed importé (ligne 4 de gutenberg / packages / i18n / src / index.js) puis utilisé pour la plupart des tâches de traduction sous le capot.
Jed présente le "Gettext Style i18n pour les applications JavaScript modernes" (ou du moins, il est dit sur leur site).
Votre question concerne les fichiers .po. Jed explique sur leur site:
Il existe de nombreux convertisseurs .po en .json disponibles. Les fichiers Gettext .po sont la sortie standard de la plupart des sociétés de traduction décentes, car il s'agit d'une ancienne norme.
J'utilise actuellement: po2json
Cependant, j'aimerais ajouter cette fonctionnalité à un module Jed distinct dans une future version.
Cependant, cela ne semble pas s'appliquer ici.
Il s'avère que creuser davantage setLocaleData( data: Object, domain: string )
est utilisé pour passer les traductions, de la manière suivante :
$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 )
étant plus ou moins un wrapper pour get_translations_for_domain( $domain )
)
Il semble donc que WordPress récupère les données de traduction via PHP, puis les transmet à Jed. Jed lui-même ne semble charger aucun fichier de traduction.
Le fichier Lisezmoi du package explique également comment générer correctement le fichier .pot contenant les chaînes localisées.
Le package comprend également un pot-to-php
script utilisé pour générer un fichier php contenant les messages répertoriés dans un fichier .pot. Cela est utile pour tromper la découverte des chaînes de traduction de WordPress.org car pour le moment, WordPress.org n'est pas capable d'analyser les chaînes directement à partir de fichiers JavaScript.
npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
propriété en tant que JSON chargé viawp_add_inline_script
PHP, puis la récupère du côté de React et la transmet à Jed? ... et Jed fait plus de magie?