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

Servlet 国際化

オンラインツール

  • 始める前に、まず以下の3つの重要な用語を見てみましょう:18n):これは、ウェブサイトが訪問者の言語や国籍に対応する翻訳されたコンテンツのバージョンを提供することを意味します。

  • ローカライズ(l10n):これは特定の地理的または文化的地域に適応するためのリソースをウェブサイトに追加することを意味します。例えば、ウェブサイトがヒンディー語に翻訳されています。

  • 地域設定(locale):これは特別な文化や地理的な地域です。これは通常、言語シンボルに続いてアンダースコアと国シンボルが続くことを指します。例えば、「en_US」はUS向けの英語地域設定を意味します。

グローバルなウェブサイトを構築する際にはいくつかの注意点があります。このチュートリアルは、これらの注意点の詳細な詳細を説明しませんが、差別化定位(つまり地域設定)を通じて、ウェブページが異なる言語で表示される方法を示す良い例を提供します。

サーバルは、リクエスト者の地域設定に基づいて対応するバージョンのウェブサイトを拾い上げ、現地の言語、文化、およびニーズに応じたウェブサイトバージョンを提供できます。以下は、request オブジェクトから Locale オブジェクトを返すメソッドです。

java.util.Locale request.getLocale()

地域設定の検出

以下に重要な地域設定メソッドが示されています。これらを使用して、リクエスト者の地理位置、言語、および地域設定を検出できます。以下のすべてのメソッドは、リクエスト者のブラウザで設定されている国名と言語名を表示します。

序号方法 & 描述
1String getCountry()
该方法以 2 大写字母形式的 ISO 3166 フォーマットして地域設定の国を返します。/地域コード。
2String getDisplayCountry()
このメソッドは、ユーザーに表示するのに適した地域設定の国の名前を返します。
3String getLanguage()
このメソッドは、小文字の ISO 639 フォーマットして地域設定の言語コードを返します。
4String getDisplayLanguage()
このメソッドは、ユーザーに表示するのに適した地域設定の言語の名前を返します。
5String getISO3Country()
このメソッドは、地域設定の国の3文字の略記を返します。
6String getISO3Language()
このメソッドは、地域設定の言語の3文字の略記を返します。

オンラインサンプル

このサンプルでは、特定のリクエストの言語と関連する国を表示する方法を示しています:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
public class GetLocale extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // クライアントの地域設定を取得
      Locale locale = request.getLocale();
      String language = locale.getLanguage();
      String country = locale.getCountry();
      // レスポンス内容タイプを設定
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      String title = "地域設定を検出";
      String docType = "<!DOCTYPE html> \n";
      out.println(docType +
        "<html>\n" +
        "<head><title>" + title + "</title></head>\n" +
        "<body bgcolor="#f0f0f0">\n" +
        "<h1 align="center">" + language + "</h1>\n" +
        "<h2 align="center">" + country + "</h2>\n" +
        "</body></html>");
  }
}

言語設定

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

第二点は、すべての特殊文字を HTML 実体で表示することです、例えば、"ñ" は "ñ" を表し、"¡" は "¡" を表します、以下のように:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
public class DisplaySpanish extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
    // レスポンス内容タイプを設定
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    // スペイン語言語コードを設定
    response.setHeader("Content-Language", "es");
    String title = "En Español";
    String docType = "<!DOCTYPE html> \n";
     out.println(docType +
     "<html>\n" +
     "<head><title>" + title + "</title></head>\n" +
     "<body bgcolor="#f0f0f0">\n" +
     "<h1>" + "En Español:" + "</h1>\n" +
     "<h1>" + "¡Hola Mundo!" + "</h1>\n" +
     "</body></html>");
  }
}

地域設定に特化した日付

Java.text.DateFormat クラスおよびその静的メソッド getDateTimeInstance() を使用して、地域設定に特化した日付と時間をフォーマットすることができます。以下の例では、特定の地域設定の日付をフォーマットする方法を示しています:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;
public class DateLocale extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
    // レスポンス内容タイプを設定
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    // クライアントの地域設定を取得
    Locale locale = request.getLocale( );
    String date = DateFormat.getDateTimeInstance(
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale).format(new Date( ));
    String title = "特定のロケール設定に対応する日付";
    String docType = "<!DOCTYPE html> \n";
      out.println(docType +
      "<html>\n" +
      "<head><title>" + title + "</title></head>\n" +
      "<body bgcolor="#f0f0f0">\n" +
      "<h1 align="center">" + date + "</h1>\n" +
      "</body></html>");
  }
}

特定のロケール設定に対応する通貨

您可以使用 java.text.NumberFormat クラスおよびその静的メソッド getCurrencyInstance() で数値(例えば long 型や double 型)を特定のロケール設定に対応する通貨としてフォーマット化することができます。以下の例では、特定のロケール設定に対応する通貨のフォーマット化方法を示しています:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;
public class CurrencyLocale extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
    // レスポンス内容タイプを設定
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    // クライアントの地域設定を取得
    Locale locale = request.getLocale( );
    NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
    String formattedCurr = nft.format(1000000);
    String title = "特定のロケール設定に対応する通貨";
    String docType = "<!DOCTYPE html> \n";
      out.println(docType +
      "<html>\n" +
      "<head><title>" + title + "</title></head>\n" +
      "<body bgcolor="#f0f0f0">\n" +
      "<h1 align="center">" + formattedCurr + "</h1>\n" +
      "</body></html>");
  }
}

特定のロケール設定に対応するパーセンテージ

您可以使用 java.text.NumberFormat クラスおよびその静的メソッド getPercentInstance() で特定のロケール設定に対応するパーセンテージをフォーマット化することができます。以下の例では、特定のロケール設定に対応するパーセンテージのフォーマット化方法を示しています:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;
public class PercentageLocale extends HttpServlet{
    
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
    // レスポンス内容タイプを設定
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    // クライアントの地域設定を取得
    Locale locale = request.getLocale( );
    NumberFormat nft = NumberFormat.getPercentInstance(locale);
    String formattedPerc = nft.format(0.51);
    String title = "特定の地域設定のパーセンテージ";
    String docType = "<!DOCTYPE html> \n";
      out.println(docType +
      "<html>\n" +
      "<head><title>" + title + "</title></head>\n" +
      "<body bgcolor="#f0f0f0">\n" +
      "<h1 align="center">" + formattedPerc + "</h1>\n" +
      "</body></html>");
  }
}