프로그래밍/Java

[SpringBoot] Internationalization. 다국어 설정.

창수씨 2023. 6. 21. 00:08
반응형

1. 상위 폴더(Controller, domain, repository 등등)와 같은 레벨로 config 폴더 생성.
2. config/MvcConfig 파일 생성

package com.example.demo.config;

import java.util.Locale;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

@Configuration
@ComponentScan(basePackages = "com.example.demo.config")
public class MvcConfig implements WebMvcConfigurer {

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.KOREA);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
}

3. resources아래에 messages_나라코드 두자리.properties 생성

greeting=안녕하다
lang.change=언어를 바꾸다
lang.eng=영어
lang.es=스빠니시
lang.kr=한국어

이런식으로 

messages_eng.properties
messages_es.properties
messages_kr.properties
messages.properties

생성.

나라 코드 안 붙은 건. 오류가 발생했을 경우 사용할 Locale이다.

그리고 thymeleaf에 값을 이렇게 내려준다.

<a href = "#" th:text="#{greeting}">FAIL</a>

성공시 greeting에 해당하는 값이 나온다. $이 아니고 #이라는 것에 주의.

페이지 전역에 설정하는 건 아직 모른다.

반응형