• SpringBoot 页面国际化转化


    1.实现的效果:默认按照操作系统的语言进行页面字体语言,点击中文字体为中文,点击English 字体为英文

     2.实现的思路:

    1)、编写国际化配置文件;

    2)、使用ResourceBundleMessageSource管理国际化资源文件

    3)、在页面使用thymeleaf取出国际化内容

    3.具体实现

    1)编写国际化配置文件,抽取页面需要显示的国际化消息

       在resources建立properties文件  idea帮我们自动生成了对应的资源目录

        ***解决thymeleaf取内容乱码问题

        在国际文件properties编辑对应的信息

     

      2)、SpringBoot自动配置好了管理国际化资源文件的组件;MessageSourceAutoConfiguration

         我们只需在配置文件配置国际资源文件的路径  包名+识别名

    spring.messages.basename=internationalization.login  

    3)去页面获取国际化的值;thymeleaf用#{}取出国际值

     这样默认的就是根据请求头带来的区域信息获取Locale进行国际化

    4)点击链接切换国际化

     如果没有配置区域信息解析器,springboot帮我们创建了区域信息解析器默认用的是请求头的区域信息,有就用我们自己配置的

    配置自己的区域信息解析器

    package com.example.springbootdemo.Assembly;
    
    import org.springframework.web.servlet.LocaleResolver;
    import org.thymeleaf.util.StringUtils;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.Locale;
    
    public class MylocaleResolver implements LocaleResolver {
        @Override
        public Locale resolveLocale(HttpServletRequest httpServletRequest) {
            String l = httpServletRequest.getParameter("l");//获取地址信息
            System.out.println("____"+l);
            Locale locale=Locale.getDefault();//默认操作系统最带的区域信息
            if(!StringUtils.isEmpty(l)){//判断是否为空
                String[] s = l.split("_");//按照“_”分割
                System.out.println(s[0]+"_______"+s[1]);
                locale= new Locale(s[0],s[1]);
            }
            return locale;
        }
    
        @Override
        public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    
        }
    }

     在springmvc配置类声明我们的区域信息解析器

      //添加自己的LocaleResolver
    //方法名必须是这个
        @Bean
        public LocaleResolver localeResolver(){
            return new MylocaleResolver();
        }

    4.总结

    1.springboot为我们自动配置的两个组件

      国际化资源管理器:MessageSourceAutoConfiguration

      区域信息解析器:在WebMvcAutoConfiguration里面配置

      

       

       

  • 相关阅读:
    AutoCAD.Net/C#.Net QQ群:193522571 resultbuffer 中的typedvalue
    AutoCAD.Net/C#.Net QQ群:193522571 32位进程无法访问64位进程模块,解决getprocesses方法对32位无效的问题
    AutoCAD.Net/C#.Net QQ群:193522571 随机数
    AutoCAD.Net/C#.Net QQ群:193522571:取得当前方法名、父方法名
    每次打开office2007都会弹出安装autocad2007,如何解决?
    在自定义控件中,定义枚举类型需要使其首项默认值为0
    VS整死了,属性惹的祸
    委托的使用,排序
    为C#自定义控件添加自定义事件
    C#获取字符串宽度像素
  • 原文地址:https://www.cnblogs.com/miwujun/p/13283887.html
Copyright © 2020-2023  润新知