Spring Boot 에서 다국어 처리하기
Spring Boot 에서는 별다른 설정 없이 messages로 시작하는 properties들을
MessageSource로 읽어 Bundle로 인식할 수 있다.
Spring Framework 에서 다국어 처리하기
Bean 설정하기
아래 두가지 방법 중 하나로 설정 하면 된다.
1. XML 파일로 설정
<!-- Locale resolver -->
<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basenames" value="classpath:messages"/>
<beans:property name="defaultEncoding" value="UTF-8"/>
</beans:bean>
<beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<beans:property name="defaultLocale" value="en" />
</beans:bean>
2. Java Config 로 설정
@Bean
public ReloadableResourceBundleMessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:messages"); // 파일경로
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public SessionLocaleResolver localeResolver(){
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH);
}
Inteceptor 등록
인터셉터 또한 XML, Java Config 두가지 방법이 있다.
상호간의 변환은 쉽기 때문에 XML 만 포스팅하도록 한다.
1. XML
<interceptor>
<mapping path="/**"/>
<beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<beans:property name="paramName" value="lang" />
</beans:bean>
</interceptor>
Request 에 Locale 종속 시키기
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, locale);
JSP 에서 message 파일 변수 읽기
<spring:message code="messageNmae">
Spring 에서 message 파일 변수 읽기
@Autowired
private MessageSource messageSource;
messageSource.getMessage(messageName, null, locale);