Reputation: 1189
Using new spring version, with thymeleaf, is not my specialty, with gradle, I try a lot ways change position files and configurations of basename and still receiving ??welcome.message_**?? on template result.
@EnableAutoConfiguration
@Configuration
@ComponentScan
public class Application {
[...]
@Bean
public ReloadableResourceBundleMessageSource resourceBundleMessageSource(){
ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
String[] resources= {"/WEB-INF/locale/messages", "WEB-INF/locale/messages", "locale/messages", "i18n", "locale"};
messageSource.setBasenames(resources);
messageSource.setFallbackToSystemLocale(true);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor(){
LocaleChangeInterceptor localeChangeInterceptor=new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}
@Bean
public SessionLocaleResolver sessionLocaleResolver(){
SessionLocaleResolver localeResolver=new SessionLocaleResolver();
localeResolver.setDefaultLocale(new Locale("pt","BR"));
return localeResolver;
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
Template:
<h1 th:text="#{welcome.message}">Welcome!</h1>
have 2 properties on src/java/webapp/WEB-INF/local/messages.properties
and src/java/webapp/WEB-INF/local/messages_pt_BR.properties
github project: https://github.com/brunoguerra/springtutorial/tree/master/web-scure-jpa
Thanks for any ideia
Upvotes: 1
Views: 6213
Reputation: 400
The bean name should be messageSource We can do it either
@Bean(name ="messageSource")
public MessageSource anyName() {}
Or
public MessageSource messageSource() {}
Upvotes: 0
Reputation: 1189
After walk around I found samples from spring-projects on github. The solution is very simple, just define public MessageSource messageSource()
on your MVC configurer instead public ReloadableResourceBundleMessageSource resourceBundleMessageSource()
on application configurer.
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {
[...]
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages/messages");
return messageSource;
}
Upvotes: 4