网站制作加谷歌推广/网站排名推广推荐
1.编写国际化配置文件 , 抽取页面需要显示的国际化消息
2.Spring Boot 自动配置好了管理国际化资源文件的组件,可以在properties文件中直接配置
@ConfigurationProperties(prefix = "spring.messages"
)
public class MessageSourceAutoConfiguration {private String basename = "messages"; //配置文件可以直接放在类路径下:messages.properties...@Beanpublic MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();if (StringUtils.hasText(this.basename)) {//设置国际化资源文件的基础名(去掉语音国家代码的)messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(StringUtils.trimAllWhitespace(this.basename)));}if (this.encoding != null) {messageSource.setDefaultEncoding(this.encoding.name());}messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);messageSource.setCacheSeconds(this.cacheSeconds);messageSource.setAlwaysUseMessageFormat(this.alwaysUseMessageFormat);return messageSource;}
}
3.页面使用 #{} 获取国际化的值
若页面乱码 , 则设置IDEA的properties文件编码 : properties配置文件属性提示与编码问题
完成以上步骤后 , 页面会根据浏览器的设置显示中文或是英文。
原理:
国际化Locale(区域信息对象);LocaleResolver(获取区域信息对象);
@Bean@ConditionalOnMissingBean@ConditionalOnProperty(prefix = "spring.mvc",name = {"locale"})public LocaleResolver localeResolver() {if (this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebMvcProperties.LocaleResolver.FIXED) {return new FixedLocaleResolver(this.mvcProperties.getLocale());} else {AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();localeResolver.setDefaultLocale(this.mvcProperties.getLocale());return localeResolver;}}//在WebMvcAutoConfiguration里面默认的就是根据请求头带来的区域信息获取Locale进行国际化
实现步骤:
1.设置链接请求参数带的国际化的值
2.实现一个区域信息解析器
/*** 可以在链接上携带区域信息*/
public class MyLocaleResolver implements LocaleResolver {@Overridepublic Locale resolveLocale(HttpServletRequest request) {String l = request.getParameter("l");Locale locale = Locale.getDefault();//如果超链接上没带区域信息参数就用系统默认的if(!StringUtils.isEmpty(l)){String[] split = l.split("_");locale = new Locale(split[0],split[1]);//parameter1:语言代码参数,parameter2:国家代码参数}return locale;}@Overridepublic void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {}
}
3.将实现的区域信息解析器加到容器中,这样才能生效
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//@EnableWebMvc 不全面接管SpringMVC
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {@Beanpublic LocaleResolver localeResolver(){return new MyLocaleResolver();//返回自己实现的区域信息解析器}
}
这样就会根据html标签超链接带的参数进行语言切换了!