스프링부트 다국어 설정 i18n

2023. 3. 9. 17:22스프링

우선 다국어 설정을 위해 빈을 등록해야 된다. defalut locale은 kr로 설정하였고. 기본적인 셋팅을 해줬다.

@Configuration
public class I18nConfig implements WebMvcConfigurer {

    @Bean
    public LocaleResolver localeResolver() {

        CookieLocaleResolver resolver = new CookieLocaleResolver();
        resolver.setDefaultLocale(Locale.KOREA);
        resolver.setCookieName("lang");
        return resolver;
    }

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

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

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

    @Bean
    public MessageSourceAccessor messageSourceAccessor() {
        return new MessageSourceAccessor(messageSource());
    }
}

basename으로 지정한 경로에 properties 파일을 만들어준다.

valid.email = 올바른 이메일을 입력해주세요.
valid.notEmpty = 숫자를 입력해주세요.
valid.login = 아이디와 비밀번호를 확인해주세요.

아래와 같이 사용하면 된다.

 

properties를 세분화하고 싶다면

우선 순위는 순서대로 된다.

NotBlank.item.itemName= 상품 아이템을 입력해주세요
NotBlank.itemName= 아이템을 입력해주세요
NotBlank.java.lang.string
Notblank=공백이 들어갈 수 없습니다.

만약 최상위부터 있으면 먼저 메시지를 가져오는 방식이다.
중요하지 않은 것들은 아래로 해결을 하고 디테일이 필요할 경우 최상단 코드처럼 디테일하게 작성해주면 된다.