Dalam repositori Gitberg Gutenberg, Anda dapat melihat sumber paket i18n yang digunakan. Di sumber ini, Anda akan melihat Jed diimpor (baris 4 dari gutenberg / packages / i18n / src / index.js) dan kemudian digunakan untuk sebagian besar tugas terjemahan di bawah tenda.
Jed memperkenalkan "Gaya Gettext i18n untuk Aplikasi JavaScript Modern" (atau setidaknya seperti yang tertulis di situs mereka).
Pertanyaan Anda adalah untuk file .po. Jed menjelaskan di situs mereka:
Ada beberapa konverter .po to .json yang tersedia di luar sana. File .po Gettext adalah output standar dari sebagian besar perusahaan terjemahan yang layak, karena ini adalah standar lama.
Saat ini saya menggunakan: po2json
Namun, saya ingin menambahkan fungsionalitas ini ke modul Jed yang terpisah di versi yang akan datang.
Namun, ini sepertinya tidak berlaku di sini.
Penggalian lebih lanjut ternyata, setLocaleData( data: Object, domain: string )
digunakan untuk lulus terjemahan, dengan cara seperti ini :
$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 )
menjadi pembungkus lebih atau kurang untuk get_translations_for_domain( $domain )
)
Jadi sepertinya WordPress mengambil data terjemahan melalui PHP dan kemudian meneruskannya ke Jed. Jed sendiri tampaknya tidak memuat file terjemahan apa pun.
Readme paket juga menjelaskan cara membuat file .pot yang berisi string lokal dengan benar.
Paket ini juga mencakup pot-to-php
skrip yang digunakan untuk menghasilkan file php yang berisi pesan yang tercantum dalam file .pot. Ini berguna untuk mengelabui penemuan string terjemahan WordPress.org karena saat ini, WordPress.org tidak mampu mengurai string langsung dari file JavaScript.
npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
properti sebagai JSON yang dimuat melaluiwp_add_inline_script
PHP dan kemudian mengambilnya di sisi Bereaksi dan meneruskannya ke Jed? ... dan Jed melakukan sihir lebih lanjut?