*** application-context.xml 추가 ***
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"]] > <property name="defaultEncoding" value="UTF-8" /> <!-- 이렇게 해놓고 properties파일을 UTF-8형식으로 사용하면 한글이 유니코드로 변환되지 않고 정상적으로 로드됨--> <property name="basenames"]] > <list> <value>/WEB-INF/classes/message/message</value> <!-- message.properties 파일이 있는 경로를 넣어준다.(locale에 따라 자동으로 _ko, _en 파일을 로드한 --> </list> </property> <property name="fallbackToSystemLocale" value="false" /> <!--'fallbackToSystemLocale' property가 true인 경우, locale에 해당하는 file이 없을 경우 system locale을 사용--> <property name="cacheSeconds" value="5" /> <!-- 5초마다 업데이트 된 properties 파일을 새로 로드함--> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"]] > <property name="defaultLocale" value="ko" /> <!-- 세션에 locale 정보가 없을 경우 기본 언어--> </bean>
*** web.xml 추가***
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
*** SessionLocaleController.java 추가***
package com.demo.test;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
@Controller
public class SessionLocaleController {
@RequestMapping(value = "/setChangeLocale.do")
public String changeLocale(@RequestParam(required = false) String locale,
ModelMap map, HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = request.getSession();
Locale locales = null;
// 넘어온 파라미터에 ko가 있으면 Locale의 언어를 한국어로 바꿔준다.
// 그렇지 않을 경우 영어로 설정한다.
if (locale.matches("ko")) {
locales = Locale.KOREAN;
} else {
locales = Locale.ENGLISH;
}
// 세션에 존재하는 Locale을 새로운 언어로 변경해준다.
session.setAttribute(
SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locales);
// 해당 컨트롤러에게 요청을 보낸 주소로 돌아간다.
String redirectURL = "redirect:" + request.getHeader("referer");
return redirectURL;
}
}
*** message.properties 추가 ***
(각언어 에 맞는 properties 추가)
/WEB-INF/classes/message/message.properties /WEB-INF/classes/message/message_ko.properties /WEB-INF/classes/message/message_en.properties test.common.msg = 안녕하세요. test.common.msg = Hello World message.properties는 해당 국가요청 없이 defult값으로 노출
*** jsp 영역 taglib 추가 ***
(상단에 taglib 추가) <%@ taglib uri="http://www.springframework.org/tags" prefix="spring”%> (페이지에 노출될부분에 태그 삽입, test.common.msg를 읽어옴) <spring:message code="test.common.msg"/> <a href="/test/setChangeLocale.do?locale=ko">한국어</a> <a href="/test/setChangeLocale.do?locale=en">ENGLISH</a>