The Apache Jakarta Project Jakarta HiveMind Project
 
   

HiveMind:ローカライズ

全ての HiveMind モジュールには、メッセージ対(つい)が含まれています。メッセージはモジュールのデプロイ記述子と一緒に、META-INF/hivemodule.properties (モジュールの JAR 内) として格納されています。

Note
実際は、プロパティファイルの名前は、記述子の名前から拡張子(".xml")を除いてローカライズ・コードと".properties"をくっ付けたものになります。これは、貴方が(可能性としては、 <sub-module> 要素を通じて)標準ではない場所からモジュール・デプロイ記述子をロードする場面にのみ関連してきます。

サービスは、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つのファイル間にある場合は、指定された方のファイルの方が優先されます。

ロケールの設定

RegistryRegistryBuilder によって生成された際、ロケールが指定されます。これは、Registry の ロケールであり、更に拡張解釈すれば、レジストリ内の全てのモジュールのロケールにもなるというわけです。ロケールは変更されません。