다국어 처리
웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스를 말함. 즉, 다른 언어와 지역적 차이를 기술 변경 없이 소프트웨어에 바로 적용하는 것.
다국어는 다양한 언어와 지역에 적용될 수 있도록 하는 국제화(internationalization, i18n)와 언어별 구성 요소를 추가하여 특정 지역의 언어나 문화에 맞추는 지역화(localization,L10n)를 포함함.
지역화(localization)
사용 국가별 환경에서 특정 언어와 지역에 맞게 적합화하는 것으로, 줄여서 L10n으로 표기하기도 함.
지역화에 주로 고려되는 사항으로는, 숫자, 날짜, 시간의 형식, 화폐의 표시, 키보드의 지원, 문자열의 순서와 정렬, 심벌, 아이콘, 색상, 문화에 따라 오해의 소지가 있거나 의미가 없는 문자, 그림 그리고 지역별 법률 차이 가 있다.
국제화(internationalization)
여러 국가에서 사용할 수 있도록 다국어를 지원하는 것으로 줄여서 i18n으로 표기하기도하며, 국제화는 어느 국가에서나 사용할 수 있게 하는 지역화 기능을 포함함.
국제화는 주로 다음과 같은 처리를 포함하여 지원해야 함.
국제화 지원은 유니코드의 사용이나 기존의 인코딩을 적절히 처리하고 사용자 인터페이스에 표시할 문자열에는 문자 코드가 포함되지 않도록 설계 및 개발해야 함.
국제화를 처리하는 정보에 언어 정보를 포함하거나, 세로쓰기/가로쓰기/우측에서 좌측으로 가로쓰기 등 언어의 특성을 반영하는 처리 등을 지원해야 함.
날짜와 시간 표시, 지역의 달력, 숫자 표시, 리스트의 정렬과 표시, 인명이나 주소의 처리 등 언어의 특성(언어적,지역적,문화적 특성 등)에 대한 사용자 설정을 지원해야 함.
국제화는 사용자의 요청이나 설정에 따라 필요시 사용되도록 지역화 정보를 코드와 분리해야 함.
Locale 클래스
특정 지리적,정치적,문화적 지역을 나타내는 클래스로, 사용자의 지역 환경에 따라 결정되는 지역적 문화(언어, 날짜, 시간 등)의 정보를 담도 있는데 예를 들어 웹 페이지에 보이는 메시지가 여러 가지 언어로 주어졌을 때 사용자가 어떤 언어로 출력할 것인지 결정할 수 있게 하는 수단이 바로 Locale 클래스.
Locale 클래스는 단순한 메시지뿐 아니라 숫자,날짜, 시간 등을 표현하는 데 사용됨.
// import 속성으로 패키지 설정
java.util.Locale request.getLocale();
// 인스턴스화 방법
Locale locale = new Locale("ko", "KR");
// 미리 정의된 필드 값을 사용하는 방법
Locale locale = Locale.Korea;
로케일 감지 메소드의 종류
| 메소드 | 반환 유형 | 설명 |
| getDefault( ) | static Locale | 디폴트 로케일의 현재 값을 가져온다. |
| getCountry( ) | String | 현재 로케일의 국가/지역 코드(대문자)를 가져온다. |
| getDisplayCountry( ) | String | 현재 로케일의 국가 이름을 가져온다 |
| getLanguage( ) | String | 현재 로케일의 언어 코드(소문자)를 가져온다. |
| getDisplayLanguage( ) | String | 현재 로케일의 언어 이름을 얻어온다. |
"현재 로케일"의 값은 기본적으로 프로그램이 실행되는 컴퓨터의 운영체제(OS) 설정에서 가져옵니다.
더 정확히는 JVM(자바 가상 머신)이 시작될 때 운영체제의 로케일 설정을 읽어와 JVM의 **기본 로케일(Default Locale)**로 설정합니다.
// 1. JVM의 기본 로케일 객체를 가져옵니다. (OS 설정값을 기반으로 함)
Locale currentLocale = Locale.getDefault();
// 2. 'currentLocale' 객체에 저장된 정보를 꺼내옵니다.
System.out.println("전체 로케일: " + currentLocale.toString()); // 예: ko_KR
System.out.println("국가 코드: " + currentLocale.getCountry()); // 예: KR
System.out.println("국가 이름: " + currentLocale.getDisplayCountry()); // 예: 대한민국
System.out.println("언어 코드: " + currentLocale.getLanguage()); // 예: ko
System.out.println("언어 이름: " + currentLocale.getDisplayLanguage()); // 예: 한국어
** 드물지만 강제 지정할 수 있음
// OS 설정과 상관없이 JVM의 기본 로케일을 '미국 영어'로 강제 변경
Locale.setDefault(new Locale("en", "US"));
System.out.println(Locale.getDefault()); // en_US 출력
JSTL fmt 태그
다국어 문서 처리를 위한 국제화 및 지역화 태그.
날짜와 숫자 등을 형식화하는 기능을 제공하는 JSTL 라이브러리인 JSTL fmt 태그는 특정 지역에 따라 다른 메시지를 출력할 때 사용함.
한글 웹 브라우저는 한글 메세지를 출력할 때, 영문 웹 브라우저는 영어 메세지를 출력할 때 유용.
이 태그는 중복 작업을 없애고 하나의 JSP페이지에서 다양한 언어에 맞는 메세지를 출력하게 함. 이 태그 라이브러리를 사용하려면 taglib 디렉티브 태그로 서식 라이브러리를 포함해야 하며, JSTL 라이브러리인 jstl.jar파일이 필요.
<%@ taglib prefix="fmt" uri="<http://java.sun.com/jsp/jstl/fmt>"%>
JSTL fmt 태그의 종류
| 구분 | 태그 유형 | 설명 |
| Locale 설정 | setLocale | 로케일을 설정한다. |
| requestEncoding | 요청 파라미터의 문자 인코딩을 설정한다. | |
| 메시지 처리 | bundle | 사용할 리소스번들을 설정한다. |
| message | 리소스번들에서 로케일에 맞는 메시지를 가져와 출력한다. | |
| setBundle | 리소스번들을 읽어와 특정 변수에 저장한다. | |
| 날짜 | formatDate | 날짜 형식을 표현한다. |
| parseDate | 문자열에서 원하는 패턴의 날짜 형식으로 변환한다. |
'JSP' 카테고리의 다른 글
| [JSP] 예외처리 (0) | 2025.12.04 |
|---|---|
| [JSP] 시큐리티 (0) | 2025.12.04 |
| [JSP] 유효성 검사 (0) | 2025.12.04 |
| [JSP] 파일 업로드 (0) | 2025.12.04 |
| [JSP] 폼(form) 태그 (0) | 2025.12.03 |