'I18N'에 해당하는 글 1건



다국어 사용을 위해서 그동안 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




WRITTEN BY
체리필터
프로그램 그리고 인생...

트랙백  0 , 댓글  0개가 달렸습니다.
secret