HiveMind:ローカライズ |
全ての HiveMind モジュールには、メッセージ対(つい)が含まれています。メッセージはモジュールのデプロイ記述子と一緒に、META-INF/hivemodule.properties (モジュールの JAR 内) として格納されています。
サービスは、Messages のインスタンスとして、ローカライズされたメッセージを受け取る事が出来ます。Messages は、メッセージへのアクセスとメッセージのフォーマットをする為のメソッド(引数を持つ)を持っています。
モジュール記述子内では、<contribution> と <invoke-factory> の場合、属性あるいは要素の値に於いて単にメッセージキーに"%"の接頭辞をつけた形で、ローカライズされたメッセージを参照する事が出来ます。例えば:
<contribution configuration-id=...> <some-item <message="%message.key"> %other.message.key </some-item> </contribution>
これら二つのキー(message.key 及び other.message.key)は、contributingモジュールのメッセージによって検索されます。
ありがたいことに、HiveMind は未定義のメッセージの埋め合わせを行ってくれます。メッセージが properties ファイルに無ければ、HiveMind は代替となる値、つまりキー名を大文字にし括弧を付随した形の値、をセットします。例えば:[MESSAGE.KEY] といった具合。これによって、アプリケーションが(エラーを出す事無く)動きつづけるわけですが、それでいてハッキリと「メッセージが欠けている」という事がわかるわけです。
別途ファイルを用意する事で、メッセージのローカライズが達成できます。例えば、2番目のファイルMETA-INF/hivemodule_fr.propertiesを追加する事で、フランス語のローカライズされたメッセージが提供されます。共通のキーが2つのファイル間にある場合は、指定された方のファイルの方が優先されます。
ロケールの設定
Registry が RegistryBuilder によって生成された際、ロケールが指定されます。これは、Registry の ロケールであり、更に拡張解釈すれば、レジストリ内の全てのモジュールのロケールにもなるというわけです。ロケールは変更されません。