国際化
Aura.Intl パッケージは国際化 (I18N) ツールを提供します。具体的には、ロケールごとにメッセージ翻訳を行うパッケージ指向のツールです。
foa/filter-input-bundle
と foa/filter-input-bundle
をインストールしたと仮定します。
サービス
次のようにメソッド中で intl_translator_locator
サービスを取得することができます。
パッケージにローカライズしたメッセージを設定
translator locator から取得した PackageLocator
オブジェクトを介して、ローカライズした
メッセージをパッケージに設定することができます。メッセージをセットした Package
を
作成し、それをコールバックロケーターとして登録します。messagesは メッセージキーと
メッセージ文字列 という形をとります。
デフォルトロケールの設定
setLocale()
メソッドを使うことで翻訳のデフォルトロケールを設定することできます:
ローカライズされたメッセージを取得
トランスレーターロケーターはメッセージとデフォルトロケールを持っているので、
単一のパッケージトランスレーターを取得することができます。パッケージトランス
レーターは他のクラスに注入したり、単体での利用に向いています。
サービスを返すトランスレーターヘルパーを作成する必要があるかもしれません。
デフォルトロケール以外のtranslatorを取得することもできます:
メッセージトーケンを値で置き換える
翻訳メッセージではよく動的な値を使う必要があります。はじめに、メッセージ文字列は
動的な値に置き換えるためのトークンプレースホルダーを持つ必要があります。
それから、メッセージの翻訳をするときには、トークンと置換する値の配列を渡します。
そうすればメッセージ文字列に変換されます。
複数形のメッセージ
値が単数形や複数形の場合、通常異なるメッセージを使う必要があります。
BasicFormatter
は異なるトークン値に応じて異なるメッセージを表示することができません。
IntlFormatter
であれば 表示することができますが、利用するためには PHP
intl
エクステンションが読み込まれている必要があり、
パッケージのカタログに intl
formatter を記述する必要があります。
次の例のように、IntlFormatter
を使えば、単数または複数形のメッセージを表示するように
メッセージ文字列を組み立てることができます。
より複雑なメッセージを組み立てるために、複数形のトークン文字列中で他のトークンを
使うこともできます。詳細については、以下を参照してください。:
http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html