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 |