JSP-国際化| i18n | l10n

この章では、JSPでの国際化の概念について説明します。先に進む前に、次の3つの重要な用語を理解しましょう。

  • Internationalization (i18n) −これは、Webサイトが、訪問者の言語または国籍に翻訳されたさまざまなバージョンのコンテンツを提供できるようにすることを意味します。

  • Localization (l10n) −これは、特定の地理的または文化的地域に適応するためにWebサイトにリソースを追加することを意味します。たとえば、Webサイトへのヒンディー語翻訳などです。

  • locale−これは特定の文化的または地理的な地域です。これは通常、アンダースコアで区切られた国の記号が後に続く言語記号と呼ばれます。例えば、 "en_US"は米国の英語ロケールを表します。

グローバルなウェブサイトを構築する際に注意しなければならない項目がいくつかあります。このチュートリアルでは、これについて完全に詳しく説明することはできませんが、場所、つまりロケールを区別することにより、インターネットコミュニティにさまざまな言語でWebページを提供する方法の良い例を示します。

JSPは、リクエスターのロケールに基づいてサイトの適切なバージョンを取得し、現地の言語、文化、および要件に応じて適切なサイトバージョンを提供できます。以下は、ロケールオブジェクトを返すリクエストオブジェクトのメソッドです。

java.util.Locale request.getLocale()

ロケールの検出

以下は、検出に使用できる重要なロケールメソッドです。 requester's location, language そしてもちろん locale。以下のすべてのメソッドは、リクエスターのブラウザーで設定された国名と言語名を表示します。

S.No. 方法と説明
1

String getCountry()

このメソッドは、このロケールの国/地域コードをISO 31662文字形式で大文字で返します。

2

String getDisplayCountry()

このメソッドは、ユーザーに表示するのに適したロケールの国の名前を返します。

3

String getLanguage()

このメソッドは、このロケールの言語コードを小文字でISO639形式で返します。

4

String getDisplayLanguage()

このメソッドは、ユーザーへの表示に適したロケールの言語の名前を返します。

5

String getISO3Country()

このメソッドは、このロケールの国の3文字の省略形を返します。

6

String getISO3Language()

このメソッドは、このロケールの言語の3文字の省略形を返します。

次の例は、JSPでリクエストの言語と関連する国を表示する方法を示しています。

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
   //Get the client's Locale
   Locale locale = request.getLocale();
   String language = locale.getLanguage();
   String country = locale.getCountry();
%>

<html>
   <head>
      <title>Detecting Locale</title>
   </head>

   <body>
      <center>
         <h1>Detecting Locale</h1>
      </center>
      
      <p align = "center">
         <% 
            out.println("Language : " + language  + "<br />");
            out.println("Country  : " + country   + "<br />");
         %>
      </p>
   </body>
</html>

言語設定

JSPは、英語、スペイン語、ドイツ語、フランス語、イタリア語、オランダ語などの西ヨーロッパ言語で書かれたページを出力できます。ここでは、すべての文字を正しく表示するようにContent-Languageヘッダーを設定することが重要です。

もう1つの重要なポイントは、HTMLエンティティを使用してすべての特殊文字を表示することです。例えば、"&#241;" を表す "ñ"、および "&#161;" を表す "¡" 次のように-

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>

<%
   // Set response content type
   response.setContentType("text/html");
   
   // Set spanish language code.
   response.setHeader("Content-Language", "es");
   String title = "En Español";
%>

<html>
   <head>
      <title><%  out.print(title); %></title>
   </head>
   
   <body>
      <center>
         <h1><%  out.print(title); %></h1>
      </center>
      
      <div align = "center">
         <p>En Español</p>
         <p>¡Hola Mundo!</p>
      </div>
   </body>
</html>

ロケール固有の日付

あなたは使用することができます java.text.DateFormat クラスとその静的 getDateTimeInstance( )ロケールに固有の日付と時刻をフォーマットする方法。以下は、特定のロケールに固有の日付をフォーマットする方法を示す例です-

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.DateFormat,java.util.Date" %>

<%
   String title = "Locale Specific Dates";
   
   //Get the client's Locale
   Locale locale = request.getLocale( );
   
   String date = DateFormat.getDateTimeInstance(
      DateFormat.FULL, 
      DateFormat.SHORT, 
      locale).format(new Date( ));
%>

<html>
   
   <head>
      <title><% out.print(title); %></title>
   </head>
   
   <body>
      <center>
         <h1><% out.print(title); %></h1>
      </center>
      
      <div align = "center">
         <p>Local Date: <%  out.print(date); %></p>
      </div>
   </body>
</html>

ロケール固有の通貨

あなたは使用することができます java.txt.NumberFormat クラスとその静的 getCurrencyInstance( )ロケール固有の通貨で、long型やdouble型などの数値をフォーマットする方法。以下は、特定のロケールに固有の通貨をフォーマットする方法を示す例です-

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.NumberFormat,java.util.Date" %>

<%
   String title = "Locale Specific Currency";
   
   //Get the client's Locale
   Locale locale = request.getLocale( );
   
   NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
   String formattedCurr = nft.format(1000000);
%>

<html>
   
   <head>
      <title><% out.print(title); %></title>
   </head>
   
   <body>
      <center>
         <h1><% out.print(title); %></h1>
      </center>
      
      <div align = "center">
         <p>Formatted Currency: <%  out.print(formattedCurr); %></p>
      </div>
   </body>
</html>

ロケール固有のパーセンテージ

あなたは使用することができます java.txt.NumberFormat クラスとその静的 getPercentInstance( )ロケール固有のパーセンテージを取得するメソッド。次の例は、特定のロケールに固有のパーセンテージをフォーマットする方法を示しています-

<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%@ page import = "java.text.NumberFormat,java.util.Date" %>

<%
   String title = "Locale Specific Percentage";
   
   //Get the client's Locale
   Locale locale = request.getLocale( );
   
   NumberFormat nft = NumberFormat.getPercentInstance(locale);
   String formattedPerc = nft.format(0.51);
%>

<html>
   
   <head>
      <title><% out.print(title); %></title>
   </head>
   
   <body>
      <center>
         <h1><% out.print(title); %></h1>
      </center>
      
      <div align = "center">
         <p>Formatted Percentage: <%  out.print(formattedPerc); %></p>
      </div>
   </body>
</html>