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

Servlet 국제화

온라인 도구

  • 시작하기 전에, 세 가지 중요한 용어를 살펴보겠습니다:18n):이는 웹사이트가 방문자의 언어나 국적에 따라 다른 버전의 번역된 내용을 제공하는 것을 의미합니다.

  • 로컬라이제이션(l10n):이는 특정 지리적이거나 문화적 지역에 맞게 웹사이트에 자원을 추가하여, 예를 들어 인도어로 번역된 웹사이트를 만드는 것을 의미합니다.

  • 지역 설정(locale):이는 특수한 문화나 지리적 지역입니다. 일반적으로 언어 기호 뒤에 아래줄과 국가 기호가 따릅니다. 예를 들어 "en_US"은 US의 영어 지역 설정을 의미합니다.

전 세계적 웹사이트를 구축할 때 몇 가지 주의할 점이 있습니다. 이 튜토리얼은 이러한 주의사항의 전체 세부 사항을 설명하지 않지만, 차별화된 위치(즉, 지역 설정)를 통해 웹페이지가 다른 언어로 표시되는 방법을 좋은 예시를 통해 보여줍니다.

Servlet는 요청자의 지역 설정에 따라 해당 버전의 웹사이트를 선택하고, 현지의 언어, 문화 및 요구에 맞는 웹사이트 버전을 제공할 수 있습니다. 아래는 request 객체에서 Locale 객체를 반환하는 메서드입니다.

java.util.Locale request.getLocale()

지역 설정 검사

아래는 중요한 지역 설정 메서드가 나열되어 있습니다. 이를 사용하여 요청자의 위치, 언어 및 지역 설정을 검사할 수 있습니다. 아래 모든 메서드는 요청자의 브라우저에서 설정된 국가 이름과 언어 이름을 표시합니다.

순번메서드 & 설명
1String getCountry()
이 방법은 2 ISO의 대문자 형식 3166 /이 형식으로 지역 설정의 국가를 반환합니다。
2
String getDisplayCountry()
3
String getLanguage() 639
4String getDisplayLanguage()
53Country()
이 메서드는 지역 설정의 국가의 세 글자 약자를 반환합니다。
63Language()
이 메서드는 지역 설정의 언어의 세 글자 약자를 반환합니다。

온라인 예제

이 예제는 어떻게 특정 요청의 언어와 관련된 국가를 표시하는지 보여줍니다:

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 = "Belirli bir bölge ayarına özgü tarih";
    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>");
  }
}

Belirli bir bölge ayarına özgü para

köy kullanabilirsiniz java.text.NumberFormat sınıfı ve onun statik metodu getCurrencyInstance() sayıları (örneğin long türü veya double türü) belirli bir bölge ayarına özgü para olarak biçimlendirmek için. Aşağıdaki örnek belirli bir bölge ayarına özgü parayı nasıl biçimlendirdiğini gösterir:

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 = "Belirli bir bölge ayarına özgü para";
    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>");
  }
}

Belirli bir bölge ayarına özgü yüzdelik

köy kullanabilirsiniz java.text.NumberFormat sınıfı ve onun statik metodu getPercentInstance() belirli bir bölge ayarına özgü yüzdelikleri biçimlendirmek için. Aşağıdaki örnek belirli bir bölge ayarına özgü yüzdelikleri nasıl biçimlendirdiğini gösterir:

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>");
  }
}