| JSP/サーブレット編 |
|
「リソースファイルで多国語対応のサイトを構築する」では、リソースファイルとjava.util.ResourceBundleクラスを用いて、ソースコードから地域依存のデータ(文字列)を分離する「国際化対応」の手法を紹介しました。しかし、決まりきったリソースファイルの読み込みとプロパティ値取得のために、いちいちスクリプトレットを記述しなければならないのは、あまり好ましくありません。
そこで本稿では、JSTL(JSP Standard TagLibrary)のi18n(Internationalization)タグライブラリに用意された<fmt:message>タグを利用して、スクリプティング要素を使わずに国際化対応のJSPページを作成する方法を紹介します。なお、JSTLタグライブラリのインストール、利用方法については、「個別のJSPページでJSTL宣言を省略する」を参照してください。
■解説
(1)リソースファイルを作成する
まずは「.jsp」ファイルから参照するリソースファイルを作成します(リスト1、リスト2)。
| リスト1 msg_ja.properties.sjis |
sample.title=国際化対応サンプル |
| リスト2 msg_en.properties |
sample.title=Internationalization
Sample |
なお、リソースファイルに日本語(2バイト文字)が含まれている場合には、native2asciiコマンドを利用して、あらかじめUnicodeエスケープしておく必要がある点に注意してください。上の例でファイル名の拡張子を「.sjis」としているのは、エスケープの前後でファイル名が重複しないようにするためです。ここでは仮に「.sjis」という拡張子を付加していますが、これは一時ファイルとしての処理なので、拡張子は自由に決めて構いません。Unicodeエスケープの結果、最終的に「msg_ja.properties」というファイルを作成します。なお、Unicodeエスケープの詳細については、「リソースファイルの内容が文字化けする場合には」を参照してください。
これらのプロパティファイルは「WEB-INF/classes」フォルダに配置します。
(2)デプロイメント・ディスクリプタに基本情報を設定する
i18nタグライブラリを利用する場合には、あらかじめデプロイメント・ディスクリプタ(web.xml)に、使用するリソースファイルのベース名やロケールなどの基本的な設定情報を追加しておくと便利です。web.xmlの記述は必須ではありませんが、その場合、個々のJSPページに<fmt:setBundle>(<fmt:bundle>)要素などを記述する必要があります。
| リスト3 web.xml |
<?xml version="1.0" encoding="UTF-8" ?> |
(3)JSPページを用意する
最後にリソースファイルを利用するJSPページを記述してみましょう。
| リスト4 message.jsp |
<fmt:setLocale
value="${pageContext.request.locale.language}" /> |
<fmt:setLocale>要素では、現在のページで使用するロケールを設定します。式言語の「${pageContext.request.locale.language}」はHttpServletRequest#getLocaleメソッドと同意です。つまり、クライアントのロケール設定に基づいて、ページのロケールを設定しているわけです。あとは、<fmt:message>要素を指定するだけで、対応するキーの値を取得することができます。
ブラウザから言語設定を変更し、最も優先順位の高いロケールの言語が表示されれば成功です。
![]() |
| 言語設定によって表示が動的に切り替わる。日本語を選択した場合 |
![]() |
| 言語設定によって表示が動的に切り替わる。西ヨーロッパ言語を選択した場合 |
| 「Java TIPS」 |
TechTargetジャパン
- EclipseでScalaプログラミングを始めるための基礎 (2012/2/10)
概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します - 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


