回答:
でグーテンベルクのGitHubのリポジトリあなたが使用されている国際化パッケージのソースを見ることができます。このソースでは、 Jedがインポートされ(gutenberg / packages / i18n / src / index.jsの4行目)、内部でほとんどの翻訳タスクに使用されている。
Jedは、「最新のJavaScriptアプリ用のGettextスタイルi18n」を導入しました(または少なくとも、サイトにはそのとおりです)。
あなたの質問は.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に渡すようです。Jed自体は翻訳ファイルをロードしないようです。
パッケージのreadmeには、ローカライズされた文字列を含む.potファイルを適切に生成する方法も説明されています。
パッケージに
pot-to-php
は、.potファイルにリストされたメッセージを含むphpファイルを生成するために使用されるスクリプトも含まれています。現在のところ、WordPress.orgはJavaScriptファイルから直接文字列を解析することができないため、これはWordPress.orgの翻訳文字列の発見をだますのに役立ちます。npx pot-to-php languages/myplugin.pot languages/myplugin-translations.php text-domain
window
プロパティとは限りませんが、そうです。PHPは値を取得し、それらをJSに渡しますwp_add_inline_script
少なくとも今のところ、より良い自動化プロセスがない限り、JSから.potファイルを生成しないことをお勧めします。
@keroが彼の回答で説明しているように、GB変換は.moファイルからJSに一種のblob配列として渡されています。このワークフローは、結果__
と関連付けのフィルタリングに依存するすべてのローカリゼーション改ざんプラグインを壊します。より良いワークフローは__
、GB以外のコンテキストでJS変換を行うのと同様に、呼び出しで変換される文字列からBLOB配列を明示的に生成することです。これにより、.potファイルの生成に関する問題も解決されます。
ここで欠けているのは、JSファイル上で実行され、関連するPHPコードを生成する自動化されたプロセスです。このコードは、poeditなどのツールで分析できます。
window
プロパティにwp_add_inline_script
PHPによって読み込まれたJSONとして格納し、それをReact側で取得してJedに渡すことを意味しますか?...そしてジェッドはさらに魔法をかけますか?