낭만 프로그래머
Java(JSP/Servlet)에서 다국어(i18n) 사용하기 본문
Spring 에서는 다국어를 지원(국제화) 할 수 있는 서버스가 존재 한다. 하지만 항상 Spring만을 사용할 수 없기에 일반 JSP/Servlet 에서 다국어를 사용할 수 있게 해보자
1. ResourceBundle 객체를 국가_언어 별로 생성한다
2. 필요에 따라 특정 국가_언어 ResourceBundle 객체를 이용하여 메세지를 가져온다
package com.ariulsoft.izen.homepage.i18n;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
public class I18N {
private Map<String, ResourceBundle> bundlemap;
public I18N() {
//default locale
//ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Get ResourceBundle with Locale that are already defined
ResourceBundle bundleKo = ResourceBundle.getBundle("ApplicationMessages", Locale.KOREA);
//Get resource bundle when Locale needs to be created
ResourceBundle bundleSVSE = ResourceBundle.getBundle("ApplicationMessages", new Locale("en", "EU"));
bundlemap = new HashMap<String, ResourceBundle>();
bundlemap.put(Locale.KOREA.toString(), bundleKo);
bundlemap.put(Locale.US.toString(), bundleSVSE);
}
/**
* 기본 US 프로퍼티에서 key의 value 가져오기
* @param key
* @return
*/
public String getString(String key) {
String returnVaule = "";
ResourceBundle bundle = bundlemap.get(Locale.US.toString());
if(key != null) {
returnVaule = bundle.getString(key);
if(returnVaule == null) {
returnVaule = "";
}
}
return returnVaule;
}
/**
* 국가_언어 프로퍼티에서 key의 value 가져오기
* @param rsKey
* @param key
* @return
*/
public String getString(String rsKey, String key) {
String returnValue = "";
if(rsKey != null && key != null) {
ResourceBundle bundle = bundlemap.get(rsKey);
if(bundle != null) {
try {
returnValue = bundle.getString(key);
if(returnValue == null) {
returnValue = "";
}
}
catch(Exception e) {
e.printStackTrace();
returnValue = "";
}
}
else {
returnValue = getString(key);
}
}
return returnValue;
}
}
<!-- test.jsp -->
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.Locale" %>
<%@ page import="com.ariulsoft.izen.homepage.i18n.I18N" %>
<%
Locale locale = request.getLocale();
I18N i18nObject = new I18N();
String test = i18nObject.getString(locale.toString(), "test");
%>
'Java > Common' 카테고리의 다른 글
Java에서 slf4j + Log4j 2 사용하기 (0) | 2020.04.06 |
---|---|
Java 에서 Singleton(싱글톤) 사용하기 (0) | 2020.04.06 |
SMB 라이브러리를 이용하여 공유폴더(네트워크 드라이버) 접근하기 (0) | 2020.04.01 |
Java에서 문자열 Byte 계산관련 (0) | 2020.02.19 |
Java Mail 을 사용하여 메일 보내기 (SMTP) (0) | 2020.02.06 |