[JSP] 다국어 처리 : Local클래스 이용하기 본문

프로그램/JAVA

[JSP] 다국어 처리 : Local클래스 이용하기

반응형

 

Locale클래스를 이용한 다국어 처리

 


- 특정 지리적, 정치적, 문화적 지역을 나타내는 클래스이다.
- 사용자의 지역 환경에 따라 결정되는 지역적 문화(언어, 날짜, 시간 등)의 정보를 담고 있다.
(예를 들어 웹 페이지에 보이는 메시지가 여러 가지 언어로 주어졌을 때 사용자가 어떤 언어로 출력할 것인지 결정할 수 있게 하는 수단이 바로 Locale클래스이다.)
- Locale클래스는 단순한 메시지뿐 아니라 숫자, 날짜, 시간 등을 표현하는 데 사용한다.
- Locale 객체의 생성은 request 내장 객체를 이용하여 현재 웹 브라우저에 미리 정의된 언어나 국가 정보를 가져오는 방법이다.

java.util.Locale request.getLocale();
- Locale 클래스를 사용하려면 JsP페이지에 page 디렉티브 태그의 import속성으로 패키지 java.util.Locale을 설정한다.


로케일 감지하기

웹 브라우저에 설정된 국가와 언어 이름을 알아내는 것을 말한다.

로케일 감지 메서드 종류 반환 유형 설명
getDefault() static Locale 디폴터 로케일의 현재 값을 가져온다.
getCountry() String 현재 로케일의 국가/지역 코드(대문자)를 가져온다.
getLanguage() String 현재 로케일의 언어 코드(소문자)를 가져온다.
getDisplayCountry() String 현재 로케일의 국가 이름을 가져온다.
getDisplayLanguage() String 현재 로케일의 언어 이름을 얻어온다.​

 

 

 

로케일 감지 메서드 사용 예

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="java.util.Locale" %>
<% 
    Locale locale = request.getLocale(); 
    String displayLanguage = locale.getDisplayLanguage(); 
    String language = locale.getLanguage(); 
    String displayCountry = locale.getDisplayCountry(); 
    String country = locale.getCountry(); 
%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="EUC-KR"> 
<title>다국어 처리</title> 
</head> 
<body> 
<h3>로케일 언어 : <% out.print(displayLanguage); %></h3> 
<h3>로케일 언어 코드 : <% out.print(language); %></h3> 
<h3>로케일 국가 : <% out.print(displayCountry); %></h3> 
<h3>로케일 국가 코드 : <% out.print(country); %></h3> 
</body> 
</html>

 


로케일 표현하기​

 

언어설정
다양한 국가별 언어를 제대로 표현하기 위해 response 내장 객체의 setHeader() 메서드를 사용한다.

 

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> 
<%@ page import="java.util.Locale" %> 
<% 
    response.setContentType("text/html"); 
    response.setHeader("Content-Language","es"); 
    
    String title = "Espa&ntilde;ol"; 
%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="EUC-KR"> 
<title>다국어 처리:<%out.print(title); %></title> 
</head> 
<body> 
<h3>Idioma : Espa&ntilde;ol</h3> 
<h3>&iexcl;Hola Mundo!</h3> 
</body> 
</html>

 

 

 

실행 화면


날짜와 시간 설정

사용자의 로케일에 따라 특정 날짜와 시간 형식을 표현하기 위해 DateFormat클래스의 getDateTimeInstance()메서드를 사용한다.

 

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> 
<%@ page import="java.util.Locale" %> 
<%@ page import="java.util.Date" %> 
<%@ page import="java.text.DateFormat" %> 
<% 
    Locale locale = request.getLocale(); 
    String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date()); 
%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="EUC-KR"> 
<title>다국어 처리</title> 
</head> 
<body> 
<h3>로케일의 날짜 형식 : <%out.print(date);%></h3>
</body>
</html>

 


 

통화와 숫자 설정
사용자의 로케일에 따라 특정 통화와 숫자를 표현하기 위해 NumberFormat클래스의 getCurrencyInstance()
메서드를 사용한다.

 

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> 
<%@ page import="java.util.Locale" %> 
<%@ page import="java.text.NumberFormat" %> 
<% 
    Locale locale = request.getLocale(); 
    NumberFormat curency = NumberFormat.getCurrencyInstance(locale); 
    NumberFormat percentage = NumberFormat.getPercentInstance(locale); 
    String fcurency = curency.format(1234567); 
    String fpercentage = percentage.format(0.25); 
%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="EUC-KR"> 
<title>다국어 처리</title> 
</head> 
<body> 
<h3>로케일 통화 형식 : <% out.print(fcurency); %></h3> 
<h3>로케일 비율 형식 : <% out.print(fpercentage); %></h3> 
</body> 
</html>

 


[ 실습 ] 사용자의 로케일에 따라 국가, 날짜, 통화 형식 출력하기

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Locale"%> 
<%@ page import="java.util.Date"%> 
<%@ page import="java.text.DateFormat"%> 
<%@ page import="java.text.NumberFormat"%> 
<h1>다국어 처리</h1> 
<br/> 
<% 
    Locale locale = request.getLocale(); //클라이언트가 보내주는 언어의 지역을 가져온다. 
    String disCountry = locale.getDisplayCountry(); 
    String country = locale.getCountry(); 
    ate currentDate = new Date(); 
    DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale); 
    NumberFormat nf = NumberFormat.getNumberInstance(locale); 
%> 
<h2>국가: <%=disCountry%>(<%=country %>)</h2>
<hr/> 
<h3>날짜 (date) : <%=currentDate%></h3> 
<h3>날짜 (dateFormat) : <%=df.format(currentDate) %></h3> 
<h3>숫자 (1234.567): <%=nf.format(1234.567) %></h3>

 

 

반응형

프로그램/JAVA Related Articles

MORE

Comments