JViews JavaScript アプリケーションのグローバリゼーションおよび多文化サポート

グローバリゼーション・メカニズムを実装する前に、まず通常の 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 クラスから継承するだけで十分です。
上記の例で、XmlGrapherServletilog.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 ファイルのセットによってバックアップされます。
ロケール固有のメッセージ・データを作成するには、次のようにします。
  1. デフォルトの JavaScript メッセージ・バンドル・ファイル script-messages.js を作成し、それを Eclipse™ 動的 Web プロジェクトの WebContent/data ディレクトリーに入れます。 この script-messages.js ファイルは、要求されたロケールと一致するロケールがない場合にデフォルト・ファイルとして使用されます。
  2. ロケール固有の JavaScript メッセージ・バンドル・ファイルを、デフォルト・ファイルと同じディレクトリーの下に追加します。 例えば、script-messages_en_US.jsscript-messages_zh_CN.js を、script-messages.js と同じフォルダーに追加します。 プロジェクト階層が次の図に示されています。
    WebContent>Data フォルダー内の JavaScript shocing スクリプト・メッセージのプロジェクト・ファイル構造
  3. 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 アプリケーション・グローバリゼーションの例を参照してください。