*** 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>