国際化とは何ですか?
国際化とは、アプリケーションを他の言語に簡単に翻訳できるように開発するプロセスです。国際化はしばしば i18n
と略されます(i と n の間に18文字あるためです)。
なぜ国際化が重要なのか?
WordPressは世界中で使用されており、多くの異なる言語を話す人々によって利用されています。WordPressの文字列は、他の言語に簡単に翻訳できるように特別な方法でコーディングする必要があります。開発者として、すべてのユーザーにローカリゼーションを提供することはできないかもしれませんが、翻訳者はソースコード自体を変更することなく、コードを成功裏にローカライズできます。
コードを翻訳可能にすることを国際化と呼び、特定の場所に文字列を翻訳して適応させる行為を ローカリゼーション と呼びます。WordPressにおけるローカリゼーション についてもっと読む。
基本
文字列を翻訳可能にするためには、元の文字列を WordPress i18n 関数 のいずれかへの呼び出しでラップする必要があります。
例えば、PHP関数 _e() は翻訳可能な文字列をエコーします:
_e('Edit post');
このようなコードはWordPressのコアファイル全体に見られます。しかし、テーマやプラグインを国際化する場合、すべてのi18n関数が取る別の引数であるテキストドメインがあります。
テキストドメインは、プラグインやテーマの翻訳が属するドメインを設定します。これにより、プラグイン、テーマ、およびWordPressコア内の文字列間での競合がないことが保証されます。
テキストドメインを使用すると、文字列を出力するための最も基本的なi18n関数の呼び出しは次のようになります:
_e('Edit movie', 'my-plugin');
プラグインとテーマのi18nの設定
i18nの設定はプラグインとテーマで少し異なるため、この情報はそれぞれのハンドブックに詳述されています:
JavaScriptの国際化
WordPress 5.0以降、PHPで使用されるのと同じi18n関数のセットを使用してJavaScriptファイルを国際化することが可能です。
JavaScriptコードでi18n関数を使用できるようにするには、スクリプトを登録またはエンキューする際に wp-i18n
を依存関係として宣言する必要があります。例えば:
wp_register_script(
'my-script',
plugins_url( 'js/my-script.js', FILE ),
array( 'wp-i18n' ),
'0.0.1'
);
スクリプトに依存関係を追加したので、i18n関数を使用できますが、WordPressに翻訳を読み込むように指示する必要があります。
これを行うには wp_set_script_translations()
を呼び出します。この関数は3つの引数を取ります:登録された/エンキューされたスクリプトハンドル、テキストドメイン、およびオプションで翻訳ファイルを含むディレクトリへのパス。後者は、プラグインやテーマがWordPress.orgにホストされていない場合にのみ必要であり、WordPress.orgはこれらの翻訳ファイルを自動的に提供します。
wp_set_script_translations('my-script', 'my-plugin');
パフォーマンスを向上させるために、スクリプトをエンキューし、実際に使用されるときにのみ翻訳を読み込むようにしてください。
JavaScriptコードでは、PHPコードとほぼ同じ方法でi18n関数を使用します:
const { __, _x, _n, sprintf } = wp.i18n;
// simple string
__( 'Hello World', 'my-plugin' );
// string with context
_x( 'My Gutenberg block name', 'block name', 'my-plugin' );
JSコードで使用できるi18n関数は次のとおりです(詳細については国際化関数を参照):
wp-i18nパッケージには sprintf
関数も含まれています。これは、変数を含む文字列を国際化するのに非常に便利です。
これらの関数を使用する方法と文字列を書く際のベストプラクティスについては、国際化ガイドラインを参照してください。
プラグインやテーマをWordPress.orgにホストしていない場合は、自分で翻訳ファイルを作成する必要があります。この投稿をチェックして、これを行う方法を学んでください。
WP 5.0以前のJavaScriptの国際化
JavaScriptファイルを国際化する別の方法は、wp_localize_script() 関数を使用することです。
この関数を使用すると、翻訳可能な文字列を登録し、それをJavaScriptで使用できるようにすることができます。
使用方法については、wp_localize_script
() リファレンスを参照してください。
国際化ガイドライン
アプリケーションを国際化する準備が整ったら、国際化ガイドラインを読み、各i18n関数の目的、使用方法、および文字列を書く際のベストプラクティスを学んでください。