//MessageSourceAutoConfiguration类的配置
//springboot默认国际化配置文件:classpath:message.properties
@Bean
@ConfigurationProperties(prefix = "spring.messages")//前缀名
public MessageSourceProperties messageSourceProperties() {
return new MessageSourceProperties();
}
//MessageSourceProperties类
public String getBasename() {
return this.basename;
}
@Bean
public MessageSource messageSource(MessageSourceProperties properties) {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
使用
在resource中写一个自己的配置
设置属性
application.properties中配置spring.messages.basename=i18n/login
最后在html页面进行提取
使用#{…}提取国际化属性,使用[[…]]进行行内提取,比如
Hello, [[${session.user.name}]]!
//WebMvcAutoConfiguration类中的有关区域配置的相关信息
@Bean
//没有这个bean时使用自己的LocaleResolver
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
public LocaleResolver localeResolver() {
if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.mvcProperties.getLocale());
}
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
return localeResolver;
}
实现页面点击切换中英文效果
在html页面中配置区域信息
<a class="btn btn-sm" th:href="@{/index.html(head='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(head='en_US')}">English</a>
实现LocaleResolve类
public class MyLocaleResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String head = request.getParameter("head");//获取请求头信息,比如zh_CN
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(head)){
String[] split = head.split("_");
locale = new Locale(split[0], split[1]);//语言代码,国家代码
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
将自己的LocalResolve类放到springmvc配置中
@Bean
public LocaleResolver localResolver(){
return new MyLocaleResolver();
}
问题:重新写了MyLocaleResolver类页面生效。。。