How to handle multiple files and messages for internationalization in Spring?
You can either define a global MessageSource
for all those different message files. This approach is practical using the setBasenames
method:
@Beanpublic MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:/messages/business/message", "classpath:/messages/validation/message", "classpath:/messages/view/message"); return messageSource;}
This approach makes sense if your message keys are unique across all files, e.g. business-12
key only exits in business related message sources. Otherwise, it's better to define one MessageSource
per context and inject them according to your context:
@Beanpublic MessageSource businessMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:/messages/business/message"); return messageSource;}@Beanpublic MessageSource validationMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:/messages/validation/message"); return messageSource;}@Beanpublic MessageSource viewMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("classpath:/messages/view/message"); return messageSource;}