시작하기 전에 몇 가지 중요한 개념을 설명해야 합니다.
국제화(i18n): 방문자의 언어나 국가에 따라 페이지가 다른 번역으로 렌더링됨을 나타냅니다.
현지화(l10n): 웹사이트에 리소스를 추가하여 다양한 지역과 문화에 맞게 조정합니다. 인도 버전의 웹 사이트와 같습니다.
지역: 이는 특정 지역이나 문화로, 일반적으로 언어적 표시와 밑줄로 연결된 국가 표시로 간주됩니다. 예를 들어 "en_US"는 미국의 영어권 지역을 나타냅니다.
글로벌 웹사이트를 구축하려면 일련의 항목을 처리해야 합니다. 이 장에서는 국제화 문제를 처리하는 방법을 자세히 설명하고 이해를 심화하기 위한 몇 가지 예를 제공합니다.
JSP 컨테이너는 요청의 로케일 속성을 기반으로 올바른 페이지 버전을 제공할 수 있습니다. 다음으로 요청 객체를 통해 Locale 객체를 얻는 방법에 대한 구문은 다음과 같습니다.
java.util.Locale request.getLocale()
다음 표에는 요청 개체의 지역, 언어 및 지역을 감지하는 데 사용되는 Locale 개체의 더 중요한 메서드가 나열되어 있습니다. 이러한 모든 방법은 브라우저에 국가 이름과 언어 이름을 표시합니다.
일련번호 | 방법 및 설명 |
---|---|
1 | String getCountry()는 국가/지역 코드를 영어 대문자로 반환하거나 지역을 ISO 3166 2자 형식으로 반환합니다. |
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(); 로케일</title></head><body><center><h1>로케일 감지</h1></center><p align="center"><% out.println("언어 : " + 언어 + " <br />"); out.println("국가 : " + 국가 + "<br />");%></p></body></html>
JSP는 영어, 스페인어, 독일어, 프랑스어, 이탈리아어 등 서유럽 언어를 사용하여 페이지를 출력할 수 있습니다. 모든 문자를 올바르게 표시하려면 Content-Language 헤더를 설정하는 것이 중요하다는 것을 알 수 있습니다.
두 번째 요점은 특수 문자를 표시하려면 HTML 문자 엔터티를 사용해야 한다는 것입니다. 예를 들어 "¡"은 "?"를 나타냅니다.
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // 응답 설정 content type 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()를 사용하여 날짜 및 시간 형식을 지정할 수 있습니다. 다음 예에서는 지정된 범위에 따라 날짜 및 시간 형식을 지정하는 방법을 보여줍니다.
<%@ 페이지 가져오기="java.io.*,java.util.Locale" %><%@ 페이지 가져오기="javax.servlet.*,javax.servlet.http.* "%><%@ 페이지 가져오기= "java.text.DateFormat,java.util.Date" %><% String title = "로케일 특정 날짜"; //클라이언트의 로케일 가져오기 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(날짜) %></p></div></body></html>
숫자는 java.text.NumberFormat 클래스와 해당 정적 메소드 getCurrencyInstance()를 사용하여 형식화할 수 있습니다. 예를 들어 지역별 통화에서는 long 및 double이 있습니다. 다음 예에서는 지정된 로케일에 따라 통화 형식을 지정하는 방법을 보여줍니다.
<%@ 페이지 가져오기="java.io.*,java.util.Locale" %><%@ 페이지 가져오기="javax.servlet.*,javax.servlet.http.* "%><%@ 페이지 가져오기= "java.text.NumberFormat,java.util.Date" %><% String title = "로케일 특정 통화"; //클라이언트의 로케일 가져오기 Locale = request.getLocale( ); 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()를 사용하여 백분율 형식을 지정할 수 있습니다. 다음 예에서는 지정된 범위를 기준으로 백분율 형식을 지정하는 방법을 보여줍니다.
<%@ 페이지 가져오기="java.io.*,java.util.Locale" %><%@ 페이지 가져오기="javax.servlet.*,javax.servlet.http.* "%><%@ 페이지 가져오기= "java.text.NumberFormat,java.util.Date" %><% String title = "로케일별 백분율"; //클라이언트의 로케일 가져오기 Locale = request.getLocale( ); 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>