1. 다국어 처리
▷ 웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스
▷ 다른 언어와 지역적 차이를 기술 변경 없이 소프트웨어에 바로 적용하는 것
▷ JSP 페이지에 JSTL의 fmt 태그를 이용하면 언어별로 페이지를 따로 만들 필요 없이 아주 간단하게 다국어를 지원할 수 있음
▷ 다국어는 다양한 언어와 지역에 적용될 수 있도록 하는 국제화(internationalization, i18n)와 언어별 구성 요소를 추가하여 특정 지역의 언어나 문화에 맞추는 지역화(localization, L10n)를 포함
◎ 지역화
▷ 사용 국가별 환경에서 특정 언어와 지역에 맞게 적합화하는 것
▷ L10n으로 표기
◎ 지역화에 주로 고려되는 사항
▷ 숫자, 날짜, 시간의 형식
▷ 화폐의 표시
▷ 키보드의 지원
▷ 문자열의 순서와 정렬
▷ 심벌, 아이콘, 색상
▷ 문화에 따라 오해의 소지가 있거나 의미가 없는 문자, 그림
▷ 지역별 법률의 차이
◎ 국제화
▷ 여러 국가에서 사용할 수 있도록 다국어를 지원하는 것
▷ i18n으로 표기
▷ 국제화는 어느 국가에서나 사용할 수 있게 하는 지역화 기능을 포함
▷ 국제화는 주로 다음과 같은 처리를 포함하여 지원해야 함
▶ 국제화 지원은 유니코드의 사용이나 기존의 인코딩을 적절히 처리하고 사용자 인터페이스에 표시할 문자열에는 문자 코드가 포함되지 않도록 설계 및 개발해야 함
▶ 국제화를 처리하는 정보에 언어 정보를 포함하거나, 세로쓰기/가로쓰기/우측에서 좌측으로의 가로쓰기 등 언어의 특성을 반영하는 처리 등을 지원해야 함
▶ 날짜와 시간 표시, 지역의 달력, 숫자 표시, 리스트의 정렬과 표시, 인명이나 주소의 처리 등 언어의 특성(언어적, 지역적, 문화적 특성 등)에 대한 사용자 설정 지원해야 함
▶ 국제화는 사용자의 요청이나 설정에 따라 필요시 사용되도록 지역화 정보를 코드와 분리해야 함
◎ Locale 클래스
▷ 특정 지리적, 정치적, 문화적 지역을 나타내는 클래스
▷ 사용자의 지역 환경에 따라 결정되는 지역적 문화(언어, 날짜, 시간 등)의 정보를 담고 있음
▶ 예를 들어 웹 페이지에 보이는 메시지가 여러 가지 언어로 주어졌을 때 사용자가 어떤 언어로 출력할 것인지 결정할 수 있게 하는 수단이 바로 Locale 클래스
▷ Locale 클래스는 단순한 메시지뿐 아니라 숫자, 날짜, 시간 등을 표현하는데 사용
▷ Locale 객체의 생성은 request 내장 객체를 이용하여 현재 웹 브라우저에 미리 정의된 언어나 국가 정보를 가져오는 방법
▷ Locale 클래스를 사용하려면 JSP 페이지에 page 디렉티브 태그의 import 속성으로 패키지 java.util.Locale을 설정
◎ 로케일 감지하기
▷ 웹 브라우저에 설정된 국가와 언어 이름을 알아내는 것을 로케일 감지
◎ 로케일 감지 메소드의 종류
◎ 로케일 감지 메소드 사용 예제
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ 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="UTF-8"> <title>Localization</title> </head> <body> <% out.println("로케일 언어 : " + displayLanguage + "<br />"); out.println("로케일 언어 코드 : " + language + "<br />"); out.println("로케일 국가 : " + displayCountry + "<br />"); out.println("로케일 국가 코드 : " + country + "<br />"); %> </body> </html>
마이크로 엣지에서는 아래의 두 개 : 로케일 국가, 로케일 국가 코드가 출력되지 않고 크롬에서는 출력이 됩니다!!
◎ 로케일 표현하기
▷ 언어 설정
▶ 다양한 국가별 언어를 제대로 표현하기 위해 response 내장 객체의 setHeader() 메소드 사용
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Locale" %> <% response.setContentType("text/html"); response.setHeader("Content-Language", "es"); String title = "Español"; %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> <% out.print(title); %> </title> </head> <body> <p> Idioma : Español</p> <p> ¡Hola Mundo!</p> </body> </html>
▷ 날짜와 시간 설정
▶ 사용자의 로케일에 따라 특정 날짜와 시간 형식을 표현하기 위해 DateFormat 클래스의 getDateTimeInstance() 메소드를 사용
▷ 통화와 숫자 설정
▶ 사용자의 로케일에 따라 특정 통화와 숫자를 표현하기 위해 NumberFormat 클래스의 getCurrencyInstance() 메소드를 사용
◎ 사용자 로케일에 따라 국가, 날짜, 통화 형식 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.text.NumberFormat" %> <%@ page import="java.text.DateFormat" %> <%@ page import="java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Internationalization</title> </head> <body> <h3>현재 로케일의 국가, 날짜, 통화</h3> <% Locale locale = request.getLocale(); Date currentDate = new Date(); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, locale); NumberFormat numberFormat = NumberFormat.getNumberInstance(locale); %> <p> 국가 : <%=locale.getDisplayCountry() %> <p> 날짜 : <%=dateFormat.format(currentDate) %> <p> 숫자 (12345.67) : <%=numberFormat.format(12345.67) %> </body> </html>
다국어 처리는 세계의 언어가 모두 다르기 때문에 해당 국가에서 해당 날짜, 시간 등이 연동되도록 합니다.
Locale Class를 통해서 날짜와 시간, 통화와 숫자 등을 표현할 수 있으니 잘 봐둬야겠어요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > JSP' 카테고리의 다른 글
[JSP 웹 프로그래밍] 다국어 처리 3 (JSTL fmt 태그 2) (0) | 2023.03.07 |
---|---|
[JSP 웹 프로그래밍] 다국어 처리 2 (JSTL fmt 태그) (0) | 2023.03.06 |
[JSP 웹 프로그래밍] 유효성 검사 2 (데이터 형식 유효성 검사) (0) | 2023.03.04 |
[JSP 웹 프로그래밍] 유효성 검사 1 (validation) (0) | 2023.03.03 |
[JSP 웹 프로그래밍] 파일 업로드 2 (Commons-FileUpload) (1) | 2023.03.02 |