Springboot+freemarker 国际化i18n配置

馋奶兔 提交于 2020-02-26 21:55:43
  • 创建国际化语言配置文件 resources/i18n/ 对应自己的配置文件 分别是 默认,英文,中文,中文繁体

 

  • 在配置 application.properties中指定自己的国际化配置文件
#===============================国际化i18n start =========================================================================
#默认值为:classpath下的messages_*.properties 自己指定成自己的 类路径下/i18n/login文件, 自动将login_xx_XX.properties 的后缀忽略只取基础名称
spring.messages.basename=i18n/login
spring.messages.encoding=utf-8
#===============================国际化i18n end =========================================================================
  • 向spring容器中加入自己的LocaleResolver
  1. 创建自己的MyLocaleResolver
/**
 * @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向容器添加写好的MyLocaleResolver

/**
 * @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.页面写入国际化信息变量值

freemarker页面引入spring.ftl

spring.ftl文件位置复制到 resources/static 文件夹下

<#--页面进行引入-->
<#import "spring.ftl" as spring>
<#--页面取值填写.properties文件中的变量值-->
<@spring.message code="login.tip" />

默认会使用浏览器设置的首选语言我的是中文

http://127.0.0.1/

http://127.0.0.1/?locale=en_US     //locale=en_US 参数会被自己的MyLocaleResolver解析得到 en_US 设置Locale 页面对应会使用英文国际化内容

http://127.0.0.1/?locale=zh_TW

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!