#===============================国际化i18n start ========================================================================= #默认值为:classpath下的messages_*.properties 本身指定成本身的 类路径下/i18n/login文件, 自动将login_xx_XX.properties 的后缀忽略只取基础名称 spring.messages.basename=i18n/login spring.messages.encoding=utf-8 #===============================国际化i18n end =========================================================================
/** * @ClassName: MyLocaleResolver * @Description: 自定义地区解析器 * @author: <a href="liuyafengwy@163.com">luffy</a> * @date: 2020/1/15 17:24 */ public class MyLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest request) { Locale locale = null; //获取参数 locale=en_US String localeParameter = request.getParameter("locale"); if(StrUtil.isNotEmpty(localeParameter)){ //en_US经过下划线分割为数组 String[] paraArr = localeParameter.split("_"); locale = new Locale(paraArr[0],paraArr[1]); }else{ //获取默认 就是浏览器中地区语言信息 locale = request.getLocale(); } return locale; } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { } }
2.@Bean向容器添加写好的MyLocaleResolverjava
/** * @ClassName: MyWebMvcConfig * @Description: 本身的WebMvc配置类 * @author: <a href="liuyafengwy@163.com">luffy</a> * @date: 2020/1/15 17:43 */ @Configuration public class MyWebMvcConfig implements WebMvcConfigurer { @Bean public LocaleResolver localeResolver(){ //自定义国际化解析器 return new MyLocaleResolver(); }
3.页面写入国际化信息变量值spring
freemarker页面引入spring.ftl数组
spring.ftl文件位置复制到 resources/static 文件夹下浏览器
<#--页面进行引入--> <#import "spring.ftl" as spring>
<#--页面取值填写.properties文件中的变量值--> <@spring.message code="login.tip" />
默认会使用浏览器设置的首选语言个人是中文app
http://127.0.0.1/?locale=en_US //locale=en_US 参数会被本身的MyLocaleResolver解析获得 en_US 设置Locale 页面对应会使用英文国际化内容spa
http://127.0.0.1/?locale=zh_TWcode