728x90
반응형
다국어 사용을 위해서 그동안 Struts2 기반 MessageUtil만 사용하다가 Spring 기반으로 변경하기 위해 구글링, 작업한 내용을 정리 차원에서 올립니다.
1. applicationContext.xml에 다음 내용을 추가
<!-- for MessageUtil -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/WEB-INF/messages/messages</value>
</list>
</property>
<property name="cacheSeconds" value="100000" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor">
<constructor-arg ref="messageSource"/>
</bean>
<bean id="messageUtil" class="package.path.MessageUtil">
<property name="messageSourceAccessor" ref="messageSourceAccessor"/>
</bean>
2. MessageUtil
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class MessageUtil {
private static MessageSourceAccessor messageSourceAccessor = null;
public void setMessageSourceAccessor(MessageSourceAccessor msAcc) {
this.messageSourceAccessor = msAcc;
}
public static Locale getLocale() {
Locale defaultLocale = Locale.ENGLISH;
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String headerLocale = request.getHeader("Accept-Language");
if (StringUtils.isNotBlank(headerLocale)) {
if (headerLocale.indexOf(Locale.JAPAN.getLanguage()) != -1) {
defaultLocale = Locale.JAPAN;
} else if (headerLocale.indexOf(Locale.KOREA.getLanguage()) != -1) {
defaultLocale = Locale.KOREA;
}
}
return defaultLocale;
}
public static String getMessage(String key) {
return messageSourceAccessor.getMessage(key, getLocale());
}
public static String getMessage(String key, Object... args) {
return messageSourceAccessor.getMessage(key, args, getLocale());
}
public static String getMessage(Locale locale, String key, Object... args) {
return messageSourceAccessor.getMessage(key, args, locale);
}
}
참고 사이트
http://springsource.tistory.com/113
http://blog.naver.com/pureb612b/10120505318
http://zinlee.tistory.com/204
728x90
반응형
'Java > Spring' 카테고리의 다른 글
Jackson ObjectMapper에서 json data를 Map이 아니라 Object로 받기 (0) | 2018.09.12 |
---|---|
[삽질] stomp, sockjs를 이용하여 websocket 연결 시 info 가 404로 나오는 경우 (4) | 2018.03.13 |
이미지 파일 업로드 오류 수정 기록... (0) | 2016.11.08 |
Spring Batch(스프링 배치)에서 작업 시간이 길어지는 경우 (0) | 2016.10.27 |
메소드 파라미터(parameter) 및 어노테이션(Annotation) 정리 (0) | 2015.02.24 |