次に忘れてならないのは、検証設定ファイル(validation.xml)に含まれている日本語の処理です。第5回の説明では、argX要素(Xは0〜3)のkey属性にエラーメッセージに埋め込むパラメータ値そのものを指定していましたが、resource属性を“true”に設定すれば、この部分を「メッセージリソース(プロパティファイル)のキー名」で指定することができます。以下の赤字部分に注目してください。
validation.xml |
<?xml version="1.0" encoding="Shift_JIS" ?> |
さて、これでアプリケーションから言語依存の要素を取り除く作業が完了しました。次のステップとして、この言語依存の要素が取り除かれた各ファイルから参照されるリソースを用意する必要があります。
ここで再び登場するのが、第5回「Validatorによる妥当性検証の実現(前編)」でも紹介したプロパティファイル(メッセージリソース)です。国際化対応といっても、Strutsでは言語表示を切り替えるために難しい制御を記述する必要はありません。ただ、対応したい言語の数(本稿の例では日本語と英語の2つ)だけ、メッセージリソースを用意するだけです。
以下に、JSPファイルと検証設定ファイルから外部化されたキーを、プロパティファイルに漏れのないように書き出します。
ApplicationResources_ja.properties.sjis |
errors.required ={0}はかならず入力してください。 |
注意:第5回でも紹介したように、ファイル名の拡張子を「.sjis」としているのは、このファイルを後からエスケープ変換するためです。アプリケーション上に配置するのは、エスケープ変換した後のファイルなので、エスケープの前後でファイル名が重複しないよう、ここでは仮に「.sjis」という拡張子を付加しています。もちろん、これは一時ファイル的な扱いなので、拡張子は自由に決めて構いません。
ApplicationResources.properties |
errors.required ={0} is required. |
メッセージリソースの記法やアプリケーション内で有効にする方法については、すでに第5回で紹介したとおりです。ここでは、国際化対応に特化した部分にだけフォーカスすることにします。
国際化に当たって注意すべきことは、プロパティファイルの命名規則だけです。プロパティファイルの命名は、以下のようなルールに従って行う必要があります。
ベース名[_言語コード[_国コード[_バリアントコード]]].properties |
言語コード、国コードとして指定可能な主な文字列は、以下のとおりです。バリアントコードには、言語/国コードでは指定できない地域を識別するためのコード(例えば、「EURO(ユーロ)」など)を指定するために使用します。
コード | 意味 | |
---|---|---|
ja | 日本語 | |
en | 英語 | |
fr | フランス語 | |
de | ドイツ語 | |
zh | 中国語 | |
ru | ロシア語 | |
コード | 意味 | |
---|---|---|
JP | 日本 | |
US | アメリカ合衆国 | |
BK | 英国 | |
AU | オーストラリア | |
FR | フランス | |
DE | ドイツ連邦共和国 | |
CN | 中華人民共和国 | |
RU | ロシア連邦 | |
本稿では、言語コードでメッセージリソースを指定していますので、メッセージリソースのファイル名は、例えば「ApplicationResources_ja.properties」のようになります。なお、このファイル名のベース名は「ApplicationResources」です。
なお、「ApplicationResources.properties」のように、言語コードも省略されたベース名だけのメッセージリソースは「デフォルトのメッセージリソース」と見なされます。Strutsは、クライアント上で設定された言語設定によって、ベース名の等しい複数のメッセージリソースの中から適切なリソースを選択します。しかし、もしも該当する言語(国)コードに属するリソースが存在しない場合には、デフォルトのメッセージリソースが優先して使用されます。デフォルトのメッセージリソースは任意のファイルですが、想定しない言語設定のクライアントがアクセスしてきた場合に備え、最低限の表示を保証するために、設定しておくのが原則です。
以上で、国際化対応の手続きは完了です。ブラウザの言語設定を「日本語(ja)」から「英語(en)」に変更したうえで、アプリケーションにアクセスしてみましょう。言語設定の変更は例えば、クライアントブラウザがInternet Explorerである場合には、[インターネットオプション]の[全般]タブから[言語...]を選択します。
ここで言語設定を入れ替えた後、本稿冒頭の実行例のように日本語と英語の表示が切り替われば成功です。
以上、本連載ではStrutsのごく基本的な機能部分にフォーカスして、アプリケーションを構築するための方法を紹介してきました。ただ、本連載で紹介したのは、あくまでもStrutsが提供する豊富な機能のごく一部分にすぎません。Strutsにはまだまだ実践の場で活用できるさまざまな機能が備わっています。さらに、今後、1.x、2.0へのバージョンアップでもたくさんの機能追加が予定されています。
本連載は今回で終了になりますが、本稿で紹介し切れなかったトピックスについては、拙著「10日でおぼえるJakarta入門教室」などを参考にしていただければ幸いです。また、今後、Java Solutionフォーラム内のJavaに関するTIPS集「Java Tips」でも有用なテクニックを随時紹介していきます。どうぞお楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.