[JSP] 다국어 처리 : Local클래스 이용하기 본문
[JSP] 다국어 처리 : Local클래스 이용하기
- 2021. 1. 18. 17:53
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ñol";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>다국어 처리:<%out.print(title); %></title>
</head>
<body>
<h3>Idioma : Español</h3>
<h3>¡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' 카테고리의 다른 글
maven에서 repository에 settings.xml이 없을 때 (0) | 2021.01.18 |
---|---|
오류 발생 unsupported major.minor version 51.0 tomcat 6 또는 7 (0) | 2021.01.18 |
Maven의 pom에 대한 dependency를 찾고 가져오는 방법 (0) | 2021.01.17 |
TOMCAT Console에서 logging 처리 (0) | 2021.01.17 |
아파치 웹서버 CPU 100% 사용될 때 경우 해결방안 (0) | 2021.01.17 |
RECENT COMMENT