Back_end/JSP

JSP - 다국어 처리

hyeon1016 2024. 10. 28. 04:25

다국어 처리

웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스

 

지역화

국가별 환경에서 언어와 지역에 맞게 변경하는 것을 말한다.

 

고려 사항

- 숫자, 날짜, 시간의 형식

- 화폐의 표시

- 키보드의 지원

- 문자열의 순서와 정렬

- 심벌, 아이콘, 색상

- 문화에 따라 오해의 소지가 있거나 의미 없는 문자, 그림

- 지역별 법률 차이

 

국제화

여러 국가에서 사용할 수 있도록 다국어를 지원하는 것

 

고려 사항

- 읽는 방향 등 언어적 특성을 고려

- 날짜와 시간 표시(시차)

 

 

Locale 클래스

웹 브라우저에 미리 정의된 국가의 정보를 가져올 수 있는 클래스

 

Why?

- 지역화된 정보를 처리하기 위함

 

객체 생성

import  java.util.Locale;

1. request 내장 객체 사용
Locale locale1 = request.getLocale();

2. new
Locale locale2 = new Locale("ko", "KO");

3. 정의된 값
Locale loclae3 = Locale.KOREA;

 

Locale(위치) 감지 메서드

메서드 반환 타입 설명
getDefault() static Locale 디폴트 로케일의 현재 값을 가져옴
getCountry() String 현재 로케일의 국가/지역 코드를 가져온다.(대문자)
getDisplayCountry() String 현재 로케일의 국가 이름을 가져옴
getLanguage() String 현재 로케일의 언어 코드를 가져옴(소문자)
getDisplayLanguage() String 현재 로케일의 언어 이름을 가져옴

 

 

Locale 표현하기

언어 설정
response 내장 객체의 setHeader() 메서드를 사용해  
Content-Language 헤더 값을 언어 코드(소문자)로 설정하면 클라이언트에게 어떤 언어로 콘텐츠가 작성되었는지 명시할 수 있고, 이를 통해 브라우저는 언어적 특성을 고려해 콘텐츠를 올바르게 처리한다.

<%
	response.setHeader("Content-Language", "es"); ==> 사용 언어를 스페인어로
%>

 

 

날짜와 시간 설정

DateFormat 클래스의 
getDateTimeInstance() 메서드로 사용자의 로케일에 따라 날짜, 시간의 형식을 표현할 수 있다.

 

특정 날짜와 시간 출력

Locale loclale = request.getLocale();
String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date());

 

통화와 숫자 설정

NumberFormat 클래스의

getCurrencyInstance() 메서드를 사용하면 특정 통화와 숫자를 표현할 수 있고, (static)

getPercentInstance() 메서드를 사용하면 특정 비율을 표현할 수 있다.(static)

NumberFormat cf = NumberFormat.getCurrencyInstance(Locale, US);
String currency = cf.format(1234.56); => $1.234.56

NumberFormat pf = NumberFormat.getCurrencyInstance();
String percent = pf.format(0.75); => 75%

 

 

 

JSTL fmt 태그

JSTL fmt 태그는 날짜와 숫자를 형식화하는 기능을 제공하는 JSTL 라이브러리다.

 

JSTL fmt 태그를 사용하기 위해서는 JSTL 라이브러리인 jstl.jar파일과 taglib 디렉티브 태그를 사용해 경로와 식별자를 서정해 줘야 한다.

<%@ taglib prefix="fmt" uri="http:/java.sun.com/jsp/jstl/fmt"%>

 

uri는 JSTL 라이브러리의 경로, prefix는 태그를 사용할 때 사용할 식별자다.

 

 

Locale 설정 태그

setLocale

<fmt:setLocale value="언어코드_국가코드" scope="범위(기본값-page)"/>

 

JSTL fmt 태그가 사용할 Locale을 설정하는 태그로 국가코드는 생략 가능하다.

리소스 번들(properties파일)과 연계하여 사용한다.

*언어 코드는 소문자로 국가 코드는 대문자로 작성한다.

 

 

requestEncoding

<fmt:reqeustEncoding value="문자인코딩"/>

 

 

JAVA의 (request.setCharacterEncoding("UTF-8");) 과 동일한 기능을 수행하며, 요청 파라미터의 인코딩을 설정한다.

 

 

메시지 설정 태그

리소스 번들

메시지 처리 태그에서 사용하는 확장자가 properties인 파일을 뜻하며 알파벳, 숫자, 라틴 문자를 제외한 언어를 유니코드 값으로 표현한다.

 

파일 종류

- 파일명.properties : 기본 메시지일 때 사용
- 파일명_ko.properties : 한글 메시지일 때 사용
- 파일명_en.properties : 영어 메시지일 때 사용

 

작성 예시(key = value)

en) name = gim

ko) name = 김 

 

*    /src/main/java/ 폴더에 resourceBundle 폴더를 만들어 리소스 번들을 작성한다.

 

bundle 태그

<fmt:bundle basename="리소스 번들" > 
     //body 내용
</fmt:bundle>

 

.properties 파일을 읽어오는 역할을 하는 태그로 message 태그와 함께 사용한다.

 

message 태그

<fmt:message key="리소스 번들 key 이름" bundle="${setBundle 태그 변수명}" var="메시지 저장 변수명" />

 

bundle태그에서 설정한 리소스 번들에서 메시지를 읽어 출력하는 태그
var 속성을 사용하지 않으면 바로 출력하고, var 속성을 사용하면 변수를 사용하기 전까지 출력되지 않는다.

 

setbundle 태그

<fmt:setBundle basename="리소스 번들" var="리소스 번들 저장 변수명" />

 

리소스 번들을 JSP페이지 어디서든 사용할 수 있게 변수에 저장하는 태그bundle 태그를 대체하여 사용할 수 있다.

 

 

숫자 태그

formatNumber 태그

숫자를 형식에 맞춰 출력하는 태그

속성
type number, currency, percent
pattern  사용자 정의 패턴
currencyCode  통화 코드/ currency 타입일 때만 사용
currencySymbol  통화 기호/ currency 타입일 때만 사용
grupingUsed  true/false/천 단위마다 구분 기호
maxIntegerDigits  최대 자릿수
minIntegerDigits  최소 자릿수
maxFractionDigits  소숫점 이하 최대 자릿수
minFractionDigits  소숫점 이하 최소 자릿수
var  형식화된 결과를 저장할 변수명

 

parseNumber

숫자 문자열을 형식에 맞춰 출력하는 태그

속성
type  number, currency, percent
pattern  사용자 정의 패턴
var  결과를 저장할 변수명

 

 

날짜 태그

formatDate 태그

날짜 정보를 담고 있는 클래스를 형식화하여 출력하는 태그

<jsp:useBean id="now" class="java.util.Date">
<fmt:formatDate value="${now}"/>

 

parseDate 태그

문자열로 작성된 날짜와 시간 값을 java.util.Date로 변환하는 태그

<fmt:parseDate value="날짜"/>

 

 

공통 속성

속성
type  date, long, both
dateStyle  default, short, midium, long, full
timeStyle  default, short, midium, long, full
pattern 사용자 정의 패턴
timeZone  타임존
var  저장 변수명

 

 

시간 태그

timeZone 태그

특정 시간대를 설정하는 태그

<fmt:timeZone value"GMT, Asia/Seoul, UTC"></fmt:timeZone>

 

setTimeZone 태그

JSP 페이지의 기본 시간대를 설정한다. 이후 모든 날짜 관련 태그에서 설정된 시간대를 사용한다.

<fmt:setTimeZone vlaue="Asia/Seoul"/>