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?window
properti, tapi ya. PHP mengambil nilai dan meneruskannya ke JS melaluiwp_add_inline_script
Setidaknya untuk saat ini, selama tidak ada proses otomatis yang lebih baik, saya sarankan untuk tidak menghasilkan file .pot dari JS sama sekali.
Seperti @kero menjelaskan dalam jawabannya saat ini terjemahan GB disahkan sebagai semacam gumpalan array dari file .mo ke dalam JS. Alur kerja ini akan memecah semua plugin pengrusakan lokalisasi yang mengandalkan penyaringan hasil
__
dan rekan. Alur kerja yang lebih baik adalah memiliki generasi eksplisit dari array gumpalan dari string yang diterjemahkan dengan__
panggilan, mirip dengan bagaimana Anda akan melakukan terjemahan JS dalam konteks non GB. Ini juga akan memecahkan masalah menghasilkan file .pot.Yang hilang di sini adalah beberapa proses otomatis yang akan menjalankan lebih dari file JS dan menghasilkan kode PHP yang relevan, yang pada gilirannya dapat dianalisis dengan alat-alat seperti poedit.
sumber
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 "