Java によるローカリゼーション

Java は、I18N と L10N をサポートするようにデザインされており、アプリケーションのローカライズには次のクラスが役立ちます。

さらに、サーブレット API には、リクエストとレスポンスのオブジェクトをローカライズに対応させるメソッドがあります。JSP 標準タグライブラリ (JSTL) には、ローカライズされた JSP の開発を容易にするカスタムタグがあります。

このセクションでは、Local オブジェクトと、それが使用する言語コードと国コードの基本を説明します。J2EE でのローカリゼーションサポートの詳細については、 「リソース」 を参照してください。

ロケールの理解

java.util.Locale クラスのインスタンスは直接使用されませんが、他のクラスによって使用され、地域情報と言語設定を提供します。次の例に示すように、ロケール情報を使用するクラスの 1 つには DateFormat クラスがあります。

DateFormat df  = DateFormat.getDateInstance(DateFormat.LONG, 
new Locale("ja",”JP"));
String date = df.format(new Date());

この例では、日付を日本の日付形式で設定します。

Local オブジェクトをインスタンス化するときは、次の例のように、言語コードを表わす小文字 2 つと国コードを表わす大文字 2 つを組み合わせて指定します。

java.util.Locale locale = new Locale("ja",”JP");

この例で、ja は言語コードで、JP は国コードです。言語コードと国コードを指定する理由は、一部の国々では複数の公用語が使用されているからです。たとえば、スイスには公用語が 4 つあります。

使用可能なロケールの表示

Java には、次のように、ロケール関連の情報を取得するメソッドが数多くあります。

次のコード例は、JVM を実行中のシステムで使用できるロケール情報をリストします。

<%@ page import="java.util.*, java.text.*" %>
<%@ page contentType="text/html; charset=UTF-8" %>
...
<% Locale[] availableLocales = Locale.getAvailableLocales(); %>
<TABLE>
<% for(int i=0; i < availableLocales.length; i++) {%>
<tr>
  <td><%= availableLocales[i].getLanguage() %></td>
  <td><%= availableLocales[i].getCountry() %></td>
  <td><% DateFormat df = 
DateFormat.getDateTimeInstance(DateFormat.FULL, 
DateFormat.FULL, availableLocales[i]); %>
<%= df.format(new Date()) %>
</td>
  <td>  <% NumberFormat nf = 
NumberFormat.getNumberInstance(availableLocales[i]); %>
<%= nf.format(123456.78) %></td>
  <td><% nf = NumberFormat.getCurrencyInstance(availableLocales[i]); 
%><%= nf.format(1234567.89) %></td>
</tr>
<% } // for() ループの終わり %>
</TABLE>
...

言語コードの理解

言語コードは 2 つの小文字で言語を表し、ISO 639 標準で定義されています。

一般的な言語コードは次のとおりです。

言語コードのリストについては、http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt をご覧ください。

国コードの理解

国コードは 2 つの大文字で国を表し、ISO 3166 標準で定義されています。

一般的な国コードは次のとおりです。

国コードのリストについては、http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html をご覧ください。