Wicket は、次のルールを使用してメッセージ リソースを見つけようとします。
Wicket は、 から始まり、 のコンポーネント階層を介してPage
特定のメッセージにドリルダウンして、メッセージを見つけようとします。これはトップダウン検索であることに注意してください。Component
Page
コンポーネント階層でメッセージが見つからない場合は、Application
クラスで検索されます。
すべてのクラスでのリソースのルックアップは、次のように機能します。
ローカライズされた検索では、Java の場合と同様に、ロケールをファイル名に追加しますLogin_nl.properties
( 、次に) 。Login.properties
ResourceBundle
クラス階層をダウントップします。つまり、あるクラスでリソースが見つからない場合、そのリソースは、ヒットするまでそのスーパークラスで検索されますjava.lang.Object
。
したがって、特定のケースでLogin
は、 がPanel
insideHomePage
の場合、 でリソースを定義するだけですHomePage(_nl).properties
。また、特定のアプリケーション全体のメッセージがある場合は、それらを で定義できることを覚えておいてくださいWicketApplication(_nl).properties
。
次の Wicket wiki ページが見つかるかもしれません。
(...) . これは、最初にコンポーネント階層 (別名ページ階層) 内のすべての親のメッセージを (上記のアルゴリズムに従って) 検索することで容易になります。すべてのコンポーネントはその子コンポーネントのメッセージをオーバーライドできるため、検索はページのプロパティから開始され、それを使用するコンポーネント (つまり、トップダウン) まで細流化されます。特定の子コンポーネントに固有のオーバーライドを作成するために、メッセージ キーの前に子のコンポーネント ID を付けることができます。詳細については、ComponentStringResourceLoader を参照してください。
ページ階層にメッセージが見つからない場合は、別の検索が開始され、アプリケーション クラスとそのスーパー クラスが調べられます。そのため、Wicket は最初に MyApplication.properties (MyApplication がアプリケーションの名前である場合) を調べ、次にクラス階層を上って、org.apache.wicket.Application を渡し、java.lang.Object まで渡します。これが、Wicket が多くのデフォルトの i18n テキストを提供する方法です。