グローバリゼーション・メカニズムを実装する前に、まず通常の JViews JavaScript™
および
Servlet
アプリケーションを作成してください。
セクション『JavaScript Web アプリケーションの作成』を参照して、JViews JavaScript ライブラリーをご使用のアプリケーションに統合する方法を習得することができます。
その後、以下のセクションで説明されているステップに従って、ご使用のアプリケーションをローカライズすることができます。
アクティブ・ロケールの決定
JViews JavaScript アプリケーションは、ローカライズされたリソースの検索時にアクティブ・ロケールを使用します。
アクティブ・ロケールは、
web.xml
で構成される Servlet クラスによって決定されます。
<web-app> ... <servlet> <servlet-name> XmlGrapherServlet </servlet-name> <servlet-class> xmlgrapher.servlet.XmlGrapherServlet </servlet-class> <servlet-mapping> <servlet-name> XmlGrapherServlet </servlet-name> <url-pattern> /xmlgrapher.servlet.XmlGrapherServlet </url-pattern> </servlet-mapping> ... </web-app>
便宜上、JViews ライブラリーは、イメージの生成とロケールの決定の両方を処理するために、製品ごとの事前定義 Servlet クラスを既に備えています。
ご使用のアプリケーションの対応する Servlet クラスから継承するだけで十分です。
上記の例で、
XmlGrapherServlet
は ilog.views.servlet.IlvManagerServlet
を拡張します。
public class XmlGrapherServlet extends IlvManagerServlet {...}
事前定義 JViews Servlet クラスはセクション『サーブレット・クラス』にあります。
また、ロケール決定用に独自の Servlet クラスを作成したい場合は、JViews ライブラリーがサポート・クラス IlvScriptMessageServletSupport を提供します。
このクラスはスレッド・コンテキストで現行ロケールを取得し、ロケール固有の JavaScript メッセージ・ファイルをクライアントに返します。
次のコード・フラグメントは、このクラスの使用法を示しています。
private IlvScriptMessageServletSupport _scriptMessageServletSupport=null; public boolean handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String type = request.getParameter("request"); if (IlvScriptMessageServletSupport.REQUEST_TYPE.equals(type)) { doGetScriptMessage(request, response); return true; } ... } private void doGetScriptMessage(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException { if (_scriptMessageServletSupport==null) getScriptMessageSupport(); _scriptMessageServletSupport.handleRequest(request, response); } public IlvScriptMessageServletSupport getScriptMessageSupport() { if (_scriptMessageServletSupport==null) _scriptMessageServletSupport = new IlvScriptMessageServletSupport(this.getContext()); return _scriptMessageServletSupport; }
ロケール固有 JavaScript メッセージ・データの作成
JViews JavaScript アプリケーションでは、ロケール固有のデータは、ユーザーの言語と地域に従って別個に提供されます。
ただし、このデータは、各種ロケール用の JavaScript ファイルのセットによってバックアップされます。
ロケール固有のメッセージ・データを作成するには、次のようにします。
- デフォルトの JavaScript メッセージ・バンドル・ファイル
script-messages.js
を作成し、それを Eclipse™ 動的 Web プロジェクトのWebContent/data
ディレクトリーに入れます。 このscript-messages.js
ファイルは、要求されたロケールと一致するロケールがない場合にデフォルト・ファイルとして使用されます。 - ロケール固有の JavaScript メッセージ・バンドル・ファイルを、デフォルト・ファイルと同じディレクトリーの下に追加します。 例えば、
script-messages_en_US.js
とscript-messages_zh_CN.js
を、script-messages.js
と同じフォルダーに追加します。 プロジェクト階層が次の図に示されています。 - JavaScript メッセージ・プロパティーを中括弧の中の JavaScript クラスとして編成します。例えば、
script-messages.js
ファイルでは、次のようになります。jviews.messages.demo={}; jviews.messages.demo.xmlgrapher={}; jviews.messages.demo.xmlgrapher.script = { panMapToNorth:"pan the map to the north", ... Resizefor800x600Monitor:"Resize for 800x600 monitor" };
また、メッセージ値が Unicode 文字 (例えば、script-messages_zh_CN.js
に入っている漢字) で表されている場合は、手動でそのファイルの内容を Unicode エスケープ・フォーマットに変換する必要があります。
ロケール固有データの検索
JViews JavaServer™ Faces (JSF) アプリケーションの場合と同様、ローカライズされたデータが必要な場所が 2 つあります。
- クライアント側: 変換されたラベル、ボタン・テキスト、JavaScript メッセージ、およびその他の表示項目。
- サーバー側: エラーまたは情報メッセージの表示。
サーバー側でロケール固有のデータを検索するメカニズムは、JViews JSF アプリケーションの場合と同じです。
詳しくは、「ロケール固有データの検索」を参照してください。
Web ページでロケール固有の JavaScript メッセージ・ファイルを検索するには、次のようにします。
- HTML ページでロケール固有の JavaScript メッセージ・プロパティー値を検索します。そのためには、以下の手順に従います。
- 次のコードを JavaServer™ Pages (JSP) ページのヘッダー・セクションに追加することによって、UTF-8 サポートを HTML ページに追加します。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- JavaScript API
IlvMessages.setLocaleDeterminationServlet(ServletUrl)
を使用して、ロケール決定 Servlet クラスを指定します。 例えば、web.xml
で定義された Servlet クラスを指定します。<script TYPE="text/javascript"> var localeServletUrl='/framework-xmlgrapher/xmlgrapher.servlet.XmlGrapherServlet'; IlvMessages.setLocaleDeterminationServlet(localeServletUrl); ... </script>
- 次に、ロードするロケール固有の JavaScript メッセージ・ファイルを決定することができます。
- JavaScript API
IlvMessages.loadLocalizedMessages(ScriptUrl)
を使用して、ロード用の JavaScript メッセージ・ファイル URL を指定します。コード・フラグメントは現在次のようになっているはずです。<script TYPE="text/javascript"> var localeServletUrl='/framework-xmlgrapher/xmlgrapher.servlet.XmlGrapherServlet'; IlvMessages.setLocaleDeterminationServlet(localeServletUrl); IlvMessages.loadLocalizedMessages("/data/script-messges.js"); ... </script>
Web ページで、完全 JavaScript クラスパス (ChildClassName.key
など) を使用して、JavaScript メッセージ・ファイルから対応する値を取得します。例えば、マウスがボタンの上にあるときに変換されたメッセージが表示されるように設定するには、次のようにコーディングします。var topbutton = new IlvButton(); topbutton.setMessage(jviews.messages.demo.xmlgrapher.script.panMapToNorth)
ページ階層は現在次のようになっているはずです。<html> <head> <META HTTP-EQUIV="Expires" CONTENT="Mon, 01 Jan 1990 00:00:01 GMT"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <script TYPE="text/javascript" src="script/IlvUtil.js" ></script> <script TYPE="text/javascript"> var localeServletUrl='/framework-xmlgrapher/xmlgrapher.servlet.XmlGrapherServlet'; IlvMessages.setLocaleDeterminationServlet(localeServletUrl); IlvMessages.loadLocalizedMessages("/data/script-messges.js"); ... </script> //other necessary JavaScript files ... <body> ... var topbutton = new IlvButton(); topbutton.setMessage(jviews.messages.demo.xmlgrapher.script.panMapToNorth) ... </body> </html>
ブラウザーの言語オプションでの優先ロケールの指定
ブラウザーの指定された言語はサポートされている言語でなければならないので、注意してください。
ロケール固有のメッセージ・プロパティー・ファイルと一致するものがない場合は、デフォルトの
script-messages.js
が使用されます。
参照された例
詳しくは、
<installdir>
/jviews-framework89/samples/xmlgrapher/index.html にある参照された JavaScript Web アプリケーション・グローバリゼーションの例を参照してください。