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

JSP 국제화

시작하기 전에 몇 가지 중요한 개념을 설명해야 합니다:

  • 국제화(i18n): 페이지가 방문자의 언어나 국가에 따라 다른 번역 버전을 표시합니다.
  • 로컬라이제이션(l10n): 웹사이트에 자원을 추가하여 다양한 지역과 문화에 적응하도록 합니다. 예를 들어 인도어 버전의 웹사이트.
  • 지역: 이는 특정 지역이나 문화를 의미하며, 보통 언어 기호와 국가 기호가 밑줄로 연결되어 있습니다. 예를 들어 "en_US"은 미국 영어 지역을 의미합니다.

전 세계적인 웹사이트를 구축하려면 여러 프로젝트에 관심을 가져야 합니다. 이 장에서는 국제화 문제를 처리하는 방법을 자세히 설명하며, 이해를 돕기 위해 몇 가지 예제를 제공합니다.

JSP 컨테이너는 request의 locale 속성을 기반으로 올바른 페이지 버전을 제공할 수 있습니다. 다음은 request 객체를 통해 Locale 객체를 얻는 문법을 설명합니다:

java.util.Locale request.getLocale() 

Locale 검사

다음 표는 Locale 객체에 있는 중요한 메서드를 나열하며, 요청 객체의 지역, 언어, 지역을 검사합니다. 모든 이 메서드는 브라우저에서 국가 이름과 언어 이름을 표시합니다:

순번 메서드 & 설명
1 String getCountry()

국가를 반환하는/영어 대문자로된 지역 코드를 반환하거나 ISO 3166 2-letter 형식의 지역
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는 영어, 스페인어, 독일어, 프랑스어, 이탈리아어 등 서유럽 언어를 사용하여 페이지를 출력할 수 있습니다. 따라서 Content-모든 문자를 올바르게 표시하기 위해 Language 정보 헤더를 설정하는 것은 매우 중요합니다.

두 번째 점은, 특수 문자를 표시하기 위해 HTML 문자 대체 표시를 사용해야 한다는 것입니다. 예를 들어 "ñ"은 다음과 같은 ñ,"¡"은 다음과 같은 ¡ :

<%@ page import="java.io."*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%
    // response 내용 유형 설정
    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";
    //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>지역 날짜: <%  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";
    //Get the client's 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";
    //Get the client's 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>