I18nインターセプター
I18nInterceptor インターセプターは、Web アプリケーション用に提供される国際的なコンポーネントです。 以下は、freemark テンプレートで使用される例です。
// 最初に I18nInterceptor をグローバル インターセプターとして設定します
public void configInterceptor(Interceptors me) { me .add( new I18nInterceptor());
}
// その後、freemarker の _res オブジェクトを通じて国際化されたデータを取得できます
${_res.get("msg")}
public void configInterceptor(Interceptors me) { me .add( new I18nInterceptor());
}
// その後、freemarker の _res オブジェクトを通じて国際化されたデータを取得できます
${_res.get("msg")}
上記のコードは、I18nInterceptor がアクション リクエストをインターセプトするように構成されています次に、freemarker テンプレート ファイル内の _res という名前のオブジェクトを通じて国際化されたデータを取得できます。I18nInterceptor の具体的なワークフローは次のとおりです。
- l は、controller.getPara( "_locale") を渡して取得しようとします。ロケールパラメータを取得した場合は、それをcookieに保存します
- controller.getPara("_locale")がパラメータ値を取得できない場合は、渡してみてくださいcontroller .getCookie("_locale")はロケールパラメータを取得します
- 上記の 2 つの手順でロケール パラメーター値がまだ取得できない場合は、I18n.defaultLocale の値をロケール値として使用します
- 前の 3 つの手順を使用して、ロケール値を取得し、Res オブジェクトを取得します。 I18n.use(locale) を使用し、controller.setAttr("_res", res) を通じて使用するページに Res オブジェクトを渡します。
- I18nInterceptor.isSwitchView が true 値の場合、ビューの値も変更されます。詳細については、ソース コードを参照してください。
上記の手順では、I18nInterceptor オブジェクトの作成時に、I18nInterceptor の変数名「_locale」と「_res」を指定できます。指定されていない場合は、デフォルト値が使用されます。 I18nInterceptor を継承し、getLocalPara、getResName、および getBaseName をオーバーライドすることで、より個人化された関数をカスタマイズすることもできます。
一部の Web システムでは、ページに多量の国際化されたテキストが必要であり、CSS と HTML も国際化により大きく異なります。このアプリケーション シナリオでは、まず同じ名前で国際化されたビューの複数のセットを直接作成し、次にこれらのビューを作成します。最後に、I18nInterceptor インターセプターを使用して、ビュー内のテキストを 1 つずつ国際的に切り替えるのではなく、I18nInterceptor.isSwitchView を true に設定するだけで済みます。時間を節約します。