How to handle multiple files and messages for internationalization in Spring? How to handle multiple files and messages for internationalization in Spring? spring spring

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