JSP 국제화
시작하기 전에 몇 가지 중요한 개념을 설명해야 합니다.
국제화(i18n): 방문자의 언어나 국가에 따라 페이지가 다른 번역으로 렌더링됨을 나타냅니다.
현지화(l10n): 웹사이트에 리소스를 추가하여 다양한 지역과 문화에 맞게 조정합니다. 인도 버전의 웹 사이트와 같습니다.
지역: 이는 특정 지역이나 문화로, 일반적으로 언어적 표시와 밑줄로 연결된 국가 표시로 간주됩니다. 예를 들어 "en_US"는 미국의 영어권 지역을 나타냅니다.
글로벌 웹사이트를 구축하려면 일련의 프로젝트에 신경을 써야 합니다. 이 장에서는 국제화 문제를 처리하는 방법을 자세히 설명하고 이해를 돕기 위한 몇 가지 예를 제공합니다.
JSP 컨테이너는 요청의 로케일 속성을 기반으로 올바른 페이지 버전을 제공할 수 있습니다. 다음으로 요청 객체를 통해 Locale 객체를 얻는 방법에 대한 구문은 다음과 같습니다.
java.util.Locale request.getLocale()
로케일 감지
다음 표에는 요청 개체의 지역, 언어 및 지역을 감지하는 데 사용되는 Locale 개체의 더 중요한 메서드가 나열되어 있습니다. 이러한 모든 방법은 브라우저에 국가 이름과 언어 이름을 표시합니다:
일련 번호< / th> | 방법 및 설명 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 문자열 getCountry()
<🎜> 국가/지역 코드를 영어 대문자로 반환하거나 지역을 ISO 3166 2자리 형식으로 반환합니다. | ||||||||||||||
2 | 문자열 getDisplayCountry()<🎜> <🎜> 사용자에게 표시될 국가 이름을 반환합니다. | ||||||||||||||
3 | 문자열 getLanguage()<🎜> <🎜> 언어 코드의 영어 소문자 또는 ISO 639 형식의 영역을 반환합니다. | ||||||||||||||
4 | 문자열 getDisplayLanguage()<🎜> <🎜> 사용자에게 표시될 언어 이름을 반환합니다. | ||||||||||||||
5 | 문자열 getISO3Country()<🎜> <🎜> 국가 이름의 3자리 약어를 반환합니다. | ||||||||||||||
6 | 문자열 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>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 헤더를 설정하는 것이 중요하다는 것을 알 수 있습니다.
두 번째 요점은 "ñ"은 "?"를 나타내고 "¡"은 "?"를 나타내는 것과 같은 특수 문자를 표시하려면 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()를 사용하여 숫자 형식을 지정할 수 있습니다. 예를 들어 지역별 통화에서는 long 및 double이 있습니다. 다음 예에서는 지정된 로케일에 따라 통화 형식을 지정하는 방법을 보여줍니다.
<%@ 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()를 사용하여 형식화할 수 있습니다. 다음 예에서는 지정된 범위를 기준으로 백분율 형식을 지정하는 방법을 보여줍니다.
<%@ 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>Formatted Currency: <% out.print(formattedCurr); %></p> </div> </body> </html>