Trong kho GitHub của Gutenberg, bạn có thể thấy nguồn của gói i18n được sử dụng. Trong nguồn này, bạn sẽ thấy Jed được nhập (dòng 4 của gutenberg / gói / i18n / src / index.js) và sau đó được sử dụng cho hầu hết các tác vụ dịch thuật trong phần mềm.
Jed giới thiệu "Gettext Style i18n cho các ứng dụng JavaScript hiện đại" (hoặc ít nhất là như vậy trên trang web của họ).
Câu hỏi của bạn là dành cho các tập tin .po. Jed giải thích trên trang web của họ:
Có khá nhiều bộ chuyển đổi .po sang .json có sẵn. Các tệp Gettext .po là đầu ra tiêu chuẩn từ hầu hết các công ty dịch thuật tốt, vì đây là một tiêu chuẩn cũ.
Tôi hiện đang sử dụng: po2json
Tuy nhiên, tôi muốn thêm chức năng này vào một mô-đun Jed riêng trong phiên bản tương lai.
Tuy nhiên, điều này dường như không áp dụng ở đây.
Đào sâu hơn hóa ra, setLocaleData( data: Object, domain: string )
được sử dụng để vượt qua các bản dịch, theo cách như vậy :
$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 )
ít nhiều là một trình bao bọc cho get_translations_for_domain( $domain )
)
Vì vậy, có vẻ như WordPress lấy dữ liệu dịch qua PHP và sau đó chuyển nó cho Jed. Bản thân Jed dường như không tải bất kỳ tập tin dịch nào.
Readme của gói cũng giải thích cách tạo đúng tệp .pot chứa các chuỗi được bản địa hóa.
Gói này cũng bao gồm một pot-to-php
tập lệnh được sử dụng để tạo tệp php chứa các thông báo được liệt kê trong tệp .pot. Điều này rất hữu ích để lừa phát hiện chuỗi dịch WordPress.org vì hiện tại, WordPress.org không có khả năng phân tích chuỗi trực tiếp từ các tệp JavaScript.
npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
tính dưới dạng JSON được tảiwp_add_inline_script
bởi PHP và sau đó lấy nó về phía React và chuyển nó cho Jed? ... và Jed còn làm phép thuật nữa?