개발이야기
Spring 다국어 설정하기
클라인STR
2018. 10. 31. 18:43
1. Messages.properties 파일 생성하기
resources 폴더 밑에 messages.properties 파일을 생성한다.
파일은 messages_언어.properties
2.Spring에 MessageSource 설정하기
Config.java
@Configuration
@EnableWebMvc
@ComponentScan(
basePackages="com.example.app"
)
public class Config extends WebMvcConfigurerAdapter{
@Bean
public MessageSource messageSource(){
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("messages/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor(){
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Bean(name = "localeResolver")
public LocaleResolver sessionLoacleResolver(){
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH);
return localeResolver;
}
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(localeChangeInterceptor());
}
}
WebMvcConfigurerAdapter 상속받은 Config.java MessageSource 설정을 진행한다.
3. 사용하는 방법
@Autowired
private MessageSource messageSource;
MessageSource를 사용하기위해 DI(Dependency Injection) 하여 사용한다.
MessageSource Method 인자 설명
String getMessage(String code, Object[] args, String defaultMessage, Locale locale);
code : 프로퍼티에서 설정한 key 값
args : key에 해당하는 value값에 {0}, {1} 등으로 매핑되는 값
defaultMessage : key 값을 찾지 못할 경우 표출될 값
locale : 지역코드 값
사용예
String message = messageSource.getMessage("com.button", null, locale);