English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 国際化

始める前に、いくつかの重要な概念を説明する必要があります:

  • インターナショナライゼーション(i)18n):ページが訪問者の言語や国に応じて異なる翻訳バージョンを表示することを示します。
  • ローカライゼーション(l)10n):ウェブサイトにリソースを追加し、異なる地域や文化に対応させるために必要です。例えばインド語版のウェブサイト。
  • 地域:これは特定の地域や文化であり、通常、言語シンボルと国シンボルがアンダースコアで結合されたものと考えられます。例えば「en_US」はアメリカ英語地域を表します。

グローバルなウェブサイトを構築するには、一連のプロジェクトに関心を持つ必要があります。本章では、国際化の問題を詳細に説明し、理解を深めるための例をいくつか提供します。

JSPコンテナは、requestのlocale属性に基づいて正しいページバージョンを提供することができます。次に、requestオブジェクトを使用してLocaleオブジェクトを取得する文法が示されます:

java.util.Locale request.getLocale() 

Locale検出

以下のテーブルには、Localeオブジェクト内で重要な方法が示されています。これらの方法は、リクエストオブジェクトの地域、言語、および地域を検出します。これらの方法は、ブラウザで国名と言語名を表示します:

番号 メソッド & 説明
1 String getCountry()

国を返す/地域コードの英大文字、またはISO 3166 2-レターフォーマットの地域
2 String getDisplayCountry()

ユーザーに表示するための国名を返す
3 String getLanguage()

言語コードの英小文字、またはISO 639 フォーマットされた地域
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.* "%>
<%
   //クライアントのローカライズ情報を取得します
   Locale locale = request.getLocale();
   String language = locale.getLanguage();
   String country = locale.getCountry();
%>
<html>
<head>
<title>Locale検出</title>
</head>
<body>
<center>
<h1>Locale検出</h1>
</center>
<p align="center">
<% 
   out.println("Language : ") + language  + "<br />
   out.println("Country  : ") + country   + "<br />
%>
</p>
</body>
</html>

言語設定

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

第二点として、特殊文字を表示するためにHTML文字エスケープを使用する必要があります、例えば "ñ" は、以下を表します ñ,"¡"は、以下を表します ¡ :

<%@ page import="java.io."*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%
    // レスポンスのコンテンツタイプを設定します
    response.setContentType("text"/html");
    // スペイン語言コードを設定します。
    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";
    //クライアントの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>ローカル日付: <%  out.print(date); %></p>
</div>
</body>
</html>

地域特別な通貨

java.text.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";
    //クライアントの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>フォーマットされた通貨: <%  out.print(formattedCurr); %></p>
</div>
</body>
</html>

地域特別なパーセンテージ

java.text.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";
    //クライアントの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>フォーマットされたパーセンテージ: <%  out.print(formattedPerc); %></p>
</div>
</body>
</html>