Back End/Spring Framework

[Spring Framework] 다국어 처리 설정 (message properties)

DevPing9_ 2022. 8. 15. 15:25

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);

 

728x90