У сховищі GitHub Гутенберга ви можете побачити джерело i18n пакета, який використовується. У цьому джерелі ви побачите, що Jed імпортується (рядок 4 gutenberg / пакети / i18n / src / index.js), а потім використовується для більшості завдань з перекладу під кришкою.
Jed представляє "Gettext Style i18n для сучасних програм JavaScript" (або, принаймні, так написано на їхньому сайті).
Ваше питання стосується файлів .po. Джед пояснює на своєму сайті:
Існує досить багато доступних перетворювачів .po в .json там. Файли Gettext .po - це стандартний вихід від більшості гідних компаній-перекладачів, оскільки це старий стандарт.
Зараз я використовую: po2json
Однак я хотів би додати цю функціональність до окремого модуля Jed в майбутній версії.
Однак, схоже, це тут не стосується.
Подальше копання, виявляється, setLocaleData( data: Object, domain: string )
використовується для передачі перекладів таким чином :
$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 )
є більш-менш обгорткою для get_translations_for_domain( $domain )
)
Тож здається, що WordPress отримує дані перекладу через PHP, а потім передає їх Jed. Сам Джед, здається, не завантажує жодного файлу перекладу.
Readme пакета також пояснює, як правильно генерувати файл .pot, що містить локалізовані рядки.
У пакет також входить pot-to-php
сценарій, який використовується для створення файлів php, що містять повідомлення, перелічені у файлі .pot. Це корисно для обману відкриття рядків перекладу WordPress.org, оскільки на даний момент WordPress.org не здатний аналізувати рядки безпосередньо з файлів JavaScript.
npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
власності як JSON, завантажений черезwp_add_inline_script
PHP, а потім отримує його на стороні React і передає його в Джед? ... а Джед робить подальшу магію?