package com.chrisbaileydeveloper.bookshelf.config; import java.util.Locale; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import org.springframework.web.servlet.i18n.SessionLocaleResolver; import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect; import uk.co.gcwilliams.jodatime.thymeleaf.JodaTimeDialect; @Configuration public class LocaleConfiguration extends WebMvcConfigurerAdapter { /** * Thymeleaf LocaleResolver */ @Bean (name = "localeResolver") public LocaleResolver localeResolver() { SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver(); sessionLocaleResolver.setDefaultLocale(Locale.CANADA); return sessionLocaleResolver; } @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); registry.addInterceptor(localeChangeInterceptor); } @Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:/i18n/messages", "classpath:/i18n/application"); messageSource.setDefaultEncoding("UTF-8"); return messageSource; } /** * Joda Time to Thymeleaf converter<br> * Spring Boot, in the ThymeleafAutoConfiguration class, * will automatically add any Beans that implement the IDialect interface. */ @Bean public JodaTimeDialect jodaTimeDialect() { return new JodaTimeDialect(); } /** * Thymeleaf - Spring Security Integration */ @Bean public SpringSecurityDialect springSecurityDialect() { return new SpringSecurityDialect(); } }