JViews Web アプリケーションで使用されるグローバリゼーション・テクノロジーの紹介

このセクションでは、JViews Web アプリケーションで使用されるグローバリゼーション・テクノロジーに関する一般情報を提供します。

背景

ソフトウェア・グローバリゼーションには次の 2 つの面があります。
  • 国際化対応メカニズム
  • アプリケーションの多文化サポート
JViews Web アプリケーションは、この両方の面について Java™ 2 Platform で提供される標準グローバリゼーション・メカニズムを使用します。このプラットフォームには、LocaleResourceBundle、およびその他の Java クラスが含まれています。 既にこれらの概念およびテクノロジーを理解している場合は、次のセクションに直接進むことができます。 グローバリゼーションについて初心者の場合は、次のリンクがよい開始点になります。Sun Java 国際化対応のホーム・ページ
バージョン 8.7 以降では、JViews は JViews JavaServer™ Faces (JSF) アプリケーションと JavaScript アプリケーションの両方に対してグローバリゼーション・メカニズムをサポートします。 本書に記載されている優れたプログラミング・プラクティスおよびガイドラインに従うことによって、それほど努力しなくても Web アプリケーションをいつでも変換することができます。
アドバンスト・グローバリゼーション で説明されている拡張グローバリゼーション機能は、JViews Web アプリケーションでも使用することができます。

JViews JSF アプリケーション

JSF テクノロジーおよび JSF 国際化対応メカニズムに精通していることが前提となっています。JViews JSF アプリケーションはこのテクノロジーを基礎にしているからです。 これらの概念になじみがない場合は、次のサイトにあるこの両方の概念に対する詳細な紹介を参照してください。The Java EE 5 Tutorial
通常は、ロケール決定が JViews JSF Web アプリケーションのローカライズ・プロセスの最初のステップです。 ロケール決定プロセスはブラウザーが送信する要求に基づいています。 つまり、要求が異なればロケールも異なる可能性があります。 ブラウザーが新しい JSF 要求をサーバー側に送信すると、ブラウザーの言語オプション設定が HTTP 言語受け入れヘッダーの一部としてサーバーに送信されます。 すると、サーバーは、要求されたロケールと JSF 構成ファイルにあるサポートされているロケールの逐次突き合わせを試みます。 (一致するものがない場合は、デフォルトの JVM ロケールが使用されます。) ロケール決定プロセスについて詳しくは、「多文化サポート JViews Web アプリケーションのヒント」を参照してください。
バージョン 8.7 より後のバージョンでは、JViews は標準 JSF グローバリゼーション・メカニズムを使用して、JSF Web アプリケーションの多文化サポートを提供します。
  • JSF 構成ファイル faces-config.xml にあるサポートされているロケールを構成します。
  • 拡張子 .properties を持つテキスト・ファイルとして表されるリソース・バンドルにローカライズしたデータを保管します。 リソース・バンドルについて詳しくは、「ResourceBundles によるローカリゼーション」を参照してください。
  • HTTP ヘッダー内の要求されたロケールから正しいロケールを決定します。
  • JSF タグ f:loadBundle を使用して、リソース・バンドルを Web ページにロードします。
  • 標準 JSF タグを使用して、ローカライズされたデータを取得します。

JViews JavaScript アプリケーション

JViews JavaScript アプリケーションでは、ユニコードの使用を強くお勧めします。 特に、HTML、CSS、および JavaScript ファイルに対しては UTF-8 エンコードを使用してください。 ファイルが UTF-8 でエンコードされているときは、HTTP ヘッダー、HTML META、および SCRIPT タグでエンコードを正しく指定してください。
JViews JavaScript アプリケーションのロケール決定は、JViews JSF アプリケーションの場合と手順が似ています。 ロケール決定は要求に基づきますが、JavaScript アプリケーションでは、ロケールはサーブレット・クラスによって決定されます。 ブラウザーが新しい HTTP 要求をサーバー側に送信すると、サーブレット・クラスは "Accept-Language" 属性を分析し、HTTP ヘッダーから要求されたロケールを取得し、最初に要求されたロケールをアクティブ・ロケールとして受け入れます。 (ブラウザーで言語オプションが設定されなかったために HTTP ヘッダーで "Accept-Language" 属性が見つからなかった場合は、デフォルトの JVM ロケールが使用されます)。 ロケールが決定されたならば、そのロケールが現行スレッド・コンテキストに保管され、現行スレッドの後のタスクのために直接使用されます。 保管されたロケールは、要求が完了するとクリーンアップされます。
バージョン 8.7 以降では、JViews はサーブレット・クラスおよび JavaScript テクノロジーを使用して、JavaScript Web アプリケーションの多文化サポートを提供します。
  • 新しい HTTP 要求が到着したら、サーブレット・クラスを使用して、HTTP ヘッダーの属性 "Accept-Language" からロケール情報を取得します。
  • ローカライズされたデータを中括弧内の JavaScript クラスに保管します。
  • JViews 非同期JavaScript および XML (Ajax) コンポーネントを使用して、リソース・バンドルを Web ページにロードします。
  • 完全な JavaScript クラスパス (ChildClassName.key など) を使用して、ローカライズされたデータを参照します。