ネイティブプラットフォームでのみ使用される文字列の抽出

これらの文字列を特定するために、extract-used-stringsにあるスクリプト[https://github.com/WordPress/gutenberg/blob/trunk/packages/react-native-editor/bin/extract-used-strings.js]を使用して、使用されているプラットフォームやそれを参照しているファイルを含むすべての参照された文字列を含むJSONオブジェクトを生成できます。ここでフォーマットを確認できます:

  1. {
  2. "gutenberg": {
  3. "<string>": {
  4. "string": String value.
  5. "stringPlural": String value with its plural form. [optional]
  6. "comments": Comments for translators. [default value is an empty string]
  7. "reference": Array containing the paths of the source files that reference the string.
  8. "platforms": Array containing the platforms where the string is being used, values are "android" | "ios" | "web".
  9. },
  10. ...
  11. },
  12. "other-domain-plugin": {
  13. ...
  14. },
  15. ...
  16. }

このコマンドは、エディタのReact Nativeバンドルが他のプラグインを含む場合に、追加のプラグインを渡すこともサポートしています。

JSONオブジェクトにはすべての使用された文字列が含まれているため、ネイティブプラットフォームでのみ使用される文字列を特定するには、それらを抽出するための独自のスクリプト/プロセスを提供する必要があります。これは、文字列を確認し、「web」プラットフォームを含むものをフィルタリングすることで簡単に行えます。

NPMコマンド

使用された文字列を抽出:

  1. npm run native i18n:extract-used-strings -- "$PWD/used-strings.json"

*注意: 絶対パスを渡す必要があります。そうしないと、相対パスのルートパスとしてpackages/react-native-editorが使用されます。*

追加のプラグインを含む使用された文字列を抽出:

  1. npm run native i18n:extract-used-strings -- "$PWD/used-strings.json" "domain-plugin-1" <PLUGIN-1_SOURCE_PATH> "domain-plugin-2" <PLUGIN-2_SOURCE_PATH> ...

独自の翻訳を提供する(ネイティブプラットフォームでのみ使用される文字列用)

ネイティブプラットフォームで使用される文字列のリストを取得したら、文字列を翻訳する必要がありますが、このプロセスはネイティブバージョンの範囲外であるため、独自の翻訳を提供する必要があります。

翻訳データをエディタに注入するプロセスは、エディタの初期化中にエディタに渡されるtranslations初期プロップを介して行われます:

Androidリファレンス

iOSリファレンス

提供された翻訳をモバイルクライアントに統合するメカニズムは、前述のtranslations初期プロップを介して行われますが、これはモバイルクライアントに特有であり、さまざまな方法で実現できます。それにもかかわらず、エディタはすでにエディタに含まれている翻訳とマージする責任があるため、前述の初期プロップによって提供されることが重要です。

注意: エディタにすでに含まれている文字列と一致する文字列は上書きされることに注意してください。

翻訳の取得(ウェブおよびネイティブプラットフォームで使用される文字列用)

翻訳ファイルは基本的に、各個別の文字列の翻訳を含むキーと値のアイテムを持つJSONオブジェクトです。このコンテンツは、WordPressの翻訳とGutenbergのようなさまざまなプラグインの翻訳を保持するtranslate.wordpress.orgから取得されます。

これらのファイルはフォルダにキャッシュされ、最適化されることがあります。さらに、プラグイン翻訳をインポートして取得するためのエントリポイントとして機能するインデックスファイルが生成されます。

取得された翻訳には、ネイティブバージョンのエディタで使用されていないものを含むすべての翻訳可能なプラグイン文字列が含まれています。ただし、使用された文字列のJSONファイルで参照されていない文字列をフィルタリングすることで、ファイルサイズを削減できます。

デフォルトでは、依存関係をインストールする際に、最適化されていない翻訳がGutenberg用にダウンロードされ、キャッシュが存在しない場合はi18n-cacheフォルダに配置されることがあります。

これらの翻訳ファイルに含まれる文字列は、エディタの初期化時にインポートされ(リファレンス)、translations初期プロップによって提供された追加の翻訳とマージされます。

NPMコマンド

最適化されていない翻訳を取得:

  1. npm run native i18n:fetch-translations -- "gutenberg" <OUTPUT_PATH>

*注意: 絶対パスを渡す必要があります。そうしないと、相対パスのルートパスとしてpackages/react-native-editorが使用されます。*

最適化された翻訳を取得:

  1. npm run native i18n:fetch-translations -- "gutenberg" <OUTPUT_PATH> <USED_STRINGS_FILE>