В GitHub-репозитории Gutenberg вы можете увидеть исходный код используемого пакета i18n. В этом источнике вы увидите, как Джед импортируется (строка 4 из gutenberg / packages / i18n / src / index.js), а затем используется для большинства задач перевода под капотом.
Джед представляет «Gettext Style i18n для современных приложений JavaScript» (или, по крайней мере, так говорится на их сайте).
Ваш вопрос к файлам .po. Джед объясняет на их сайте:
Существует довольно много доступных конвертеров .po в .json. Файлы Getpoxt .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 и передает его Джеду? ... а Джед делает еще одну магию?