다국어 처리란?
: 웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스
- 다른 언어와 지역적 차이를 기술 변경 없이 소프트웨어에 바로 적용할 수 있다.
- 국제화(internationalization, il18n), 지역화(localization, L10n)를 포함한다.
국제화 : 여러 국가에서 사용할 수 있도록 다국어를 지원하는 것
(고려사항)
- 유니코드 : 올바른 인코딩
- 언어의 특성 반영 : 가로 쓰기, 좌측에서 가로 쓰기, 세로 쓰기 등
- 사용자 패턴 설정 : 숫자 표시, 날씨와 시간 등
- 코드 분리 : 지역화의 정보를 코드와 분리한다.
지역화 : 사용 국가별 환경에서 특정 언어와 지역에 맞게 적합화 하는 것
(고려사항)
- 숫자, 날짜, 시간 형식
- 화폐
- 키보드
- 문화에 따라 오해 소지가 있거나 의미 없는 문자와 그림
① Locale 클래스
: 사용자의 지역 환경에 따라 결정되는 지역적 문화의 정보를 담고 있다.
java.util.Locale 클래스를 import 해주어야 한다.
(객체 생성) // 두 가지
import java.util.*;
// 1. 기존에 정의된 언어나 국가 정보를 가져오는 방법
Locale locale = request.getLocale();
// 2. Locale 클래스를 새로 설정하는 방법
Locale locale = new Locale("ko", "KR");
(기본 메소드)
메소드 | 반환 유형 | 설명 |
getDefault() | static Locale | 디폴트 로케일의 현재 값을 가져옴 |
getCountry() | String | 현재 로케일의 국가/지역 코드를 가져옴 |
getDisplayCountry() | String | 현재 로케일의 국가 이름을 가져옴 |
getLanguage() | String | 현재 로케일의 언어 코드를 가져옴 |
getDisplayLanguage() | String | 현재 로케일의 언어 일므을 얻어옴 |
(그 외 메소드)
클래스 | 메소드 | 설명 |
기본 내장 객체 | setHeader("Content-Language", 언어값) | 헤더 값에 (언어값)을 설정 |
DateFormat 클래스 | getDateTimeInstance() | 특정 날짜와 시간 형식 출력 |
NumberFormat 클래스 | getCurrencyInstance() | 특정 통화와 숫자 형식 츨략 (※ java.text.NumberFormat을 import해야함) |
② JSTL fmt 태그
: 특정 지역에 따라 다른 메세지를 출력
JSTL 라이브러리인 jstl.jar 파일이 필요, 혹은 아래 코드 작성
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
** 리소스 번들?
: 메세지 처리 태그에서 사용하는 파일로 '메세지 번들'이라고도 한다.
- java.util.Properties 클래스에 정의된 방법으로 메세지를 읽어온다. (properties파일)
- properties 파일 생성 방법 : eclipse에서 ctrl+N -> text 체크 -> General -> ntitled Text File -> filename.properties로 저장
(기본 메소드)
구분 | 태그 유형 | 설명 |
Locale 설정 | setLocale | 로케일 설정 |
requestEncoding | 요청 파라미터의 문자 인코딩 설정 | |
메세지 처리 | bundle | 사용할 리소스번들 설정 |
message | 리소스번들에서 로케일에 맞는 메세지 출력 | |
setBundle | 리소스번들을 특정 변수에 저장 |
(그 외 메소드)
구분 | 태그 유형 | 설명 |
날짜 | formatDate() | 날짜 형식 표현 |
parseDate() | 원하는 패턴의 날자 형식으로 변환 | |
숫자 | formatNumber | 숫자 형식 표현 |
parseNumber() | 원하는 패턴의 숫자 형식으로 변환 | |
시간 | timeZone() | 시간대 설정 |
setTimeZone() | 특정 범위의 시간대 설정 |
(사용 예시)
// setLocale 태그, requestEncoding 태그
<fmt:setLocale value="ko"/>
<fmt:requestEncoding value="utf-8"/>
// bundle 태그, message 태그
<fmt:bundle basename=basename="ch09.com.bundle.MyBundle" [prefix="key 이름"] >
// src/ch09.com.bundle에 저장된 MyBundle 번들
<fmt:message key="hello" // 번들에 저장된 key 이름
[bundle="setBundle 태그 변수 이름"]
[var="메세지를 저장하는 변수 이름"]
[scope="{page | request | session | application}"]
/>
</fmt:bundle>
// setBundle 태그
// src/ch09.com.bundle의 번들 경로를 MyBundle 변수에 저장
<fmt:setBundle basename="ch09.com.bundle.MyBundle" var="resourceBundle"/>
// resourceBundle 번들 경로에 저장된 hello 출력
<fmt:message key="hello" bundle="{$resourceBundle}" />
// resourceBundle 번들 경로에 저장된 username을 msg 변수에 저장
<fmt:message key="username" bundle="{$resourceBundle}" var="msg" />
${msg} // 출력
'Backend > JSP' 카테고리의 다른 글
[JSP] 예외 처리 (0) | 2020.11.20 |
---|---|
[JSP] 시큐리티 (0) | 2020.11.20 |
[JSP] 'Starting Tomcat v9.0 Server at localhost' has encountered a problem 오류 확인 (2) | 2020.11.04 |
[JSP] The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 오류 해결 (0) | 2020.11.04 |
[JSP] 'Starting Tomcat v9.0 Server at localhost' has encountered a problem 문제 해결하기(톰캣 재설치) (0) | 2020.11.04 |
댓글