JSPの国際化
始める前に、いくつかの重要な概念を説明する必要があります:
国際化 (i18n): 訪問者の言語または国に基づいて、ページが異なる翻訳で表示されることを示します。
ローカリゼーション (l10n): Web サイトにリソースを追加して、Web サイトをさまざまな地域や文化に適応させます。インド版のウェブサイトのようです。
地域: これは特定の地域または文化であり、通常は言語マーカーとアンダースコアで接続された国家マーカーとみなされます。たとえば、「en_US」は米国の英語圏を表します。
グローバルなウェブサイトを構築したい場合は、一連のプロジェクトに注意を払う必要があります。この章では、国際化の問題にどのように対処するかを詳しく説明し、理解を深めるためにいくつかの例を示します。
JSP コンテナは、リクエストのロケール属性に基づいて正しいページ バージョンを提供できます。次に、リクエスト オブジェクトを通じて Locale オブジェクトを取得する方法の構文を示します:
java.util.Locale request.getLocale()
ロケールの検出
次の表は、地域、言語、およびリクエスト オブジェクトの地域を検出するために使用される Locale オブジェクトのより重要なメソッドを示しています。これらのメソッドはすべて、ブラウザに国名と言語名を表示します:
Serial Number | Method & Description |
---|---|
1 | 文字列 get Country() |
2 | String getDisplay Country() |
3 | String getLanguage() |
4 | String getDisplayLanguage() |
5 | 文字列getISO3 Country() |
6 | String getISO3Language() |
サンプルデモンストレーション
この例は、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>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 ヘッダーを設定することが重要であることがわかります。
2 番目のポイントは、特殊文字を表示するには HTML 文字エンティティを使用する必要があることです。たとえば、「¡」は「?」を表します。 ロケール固有の日付
日付と時刻は、java.text.DateFormat クラスとその静的メソッド getDateTimeInstance() を使用してフォーマットできます。次の例は、指定された範囲に従って日付と時刻をフォーマットする方法を示しています:
<%@ 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.NumberFormat クラスとその静的メソッド getCurrencyInstance() を使用して書式設定できます。たとえば、地域固有の通貨のロングやダブルなどです。次の例は、指定されたロケールに従って通貨をフォーマットする方法を示しています:
<%@ 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.text.NumberFormat クラスとその静的メソッド getPercentInstance() を使用して書式設定できます。次の例は、指定された範囲に基づいてパーセンテージをフォーマットする方法を示しています: