6

利用可能なウィケットの国際化の例には、次のファイル構造があります

HomePage.java
HomePage.html
HomePage.properties
WicketApplication.java
HomePage_nl.properties

複数の HTML ページを含むプロジェクトを作成する場合、たとえば HomePage.html と Login.html がある場合、すべてのキーと値のペアを特定の言語の単一のプロパティに保存する方法はありますか、または作成する必要がありますこれらすべてのファイル

HomePage.properties
HomePage_nl.properties
Login.properties
Login_nl.properties
4

1 に答える 1

8

Wicket は、次のルールを使用してメッセージ リソースを見つけようとします。

  1. Wicket は、 から始まり、 のコンポーネント階層を介してPage特定のメッセージにドリルダウンして、メッセージを見つけようとします。これはトップダウン検索であることに注意してください。ComponentPage

  2. コンポーネント階層でメッセージが見つからない場合は、Applicationクラスで検索されます。

すべてのクラスでのリソースのルックアップは、次のように機能します。

  1. ローカライズされた検索では、Java の場合と同様に、ロケールをファイル名に追加しますLogin_nl.properties( 、次に) 。Login.propertiesResourceBundle

  2. クラス階層をダウントップします。つまり、あるクラスでリソースが見つからない場合、そのリソースは、ヒットするまでそのスーパークラスで検索されますjava.lang.Object

したがって、特定のケースでLoginは、 がPanelinsideHomePageの場合、 でリソースを定義するだけですHomePage(_nl).properties。また、特定のアプリケーション全体のメッセージがある場合は、それらを で定義できることを覚えておいてくださいWicketApplication(_nl).properties

次の Wicket wiki ページが見つかるかもしれませ

(...) . これは、最初にコンポーネント階層 (別名ページ階層) 内のすべての親のメッセージを (上記のアルゴリズムに従って) 検索することで容易になります。すべてのコンポーネントはその子コンポーネントのメッセージをオーバーライドできるため、検索はページのプロパティから開始され、それを使用するコンポーネント (つまり、トップダウン) まで細流化されます。特定の子コンポーネントに固有のオーバーライドを作成するために、メッセージ キーの前に子のコンポーネント ID を付けることができます。詳細については、ComponentStringResourceLoader を参照してください。

ページ階層にメッセージが見つからない場合は、別の検索が開始され、アプリケーション クラスとそのスーパー クラスが調べられます。そのため、Wicket は最初に MyApplication.properties (MyApplication がアプリケーションの名前である場合) を調べ、次にクラス階層を上って、org.apache.wicket.Application を渡し、java.lang.Object まで渡します。これが、Wicket が多くのデフォルトの i18n テキストを提供する方法です。

于 2012-09-21T08:06:46.597 に答える