Spring Boot学习笔记(十五):Spring Boot 国际化(i18n)

1.编写国际化配置

       首先需要在 resources 资源目录下创建国际化配置。我们创建一个文件夹 i18n,用来存储国际化配置(命名随意,一般为 i18n),然后在目录下分别创建i18n.propertiesi18n_zh_CN.propertiesi18n_en_US.properties,需要几种语言就写几种。

       但是名称必须是:xxx_zh_CN,xxx_en_US 这种格式。zh、en 代表语言,CN、US 代表国家。国际化配置仅支持 .properties类型。
在这里插入图片描述

2.配置国际化文件所在路径

       在 Spring Boot 主配置文件 application.yml/properties 中,配置国际化文件所在的包名/基础名,如下图所示:Spring Boot 国际化,默认扫描的是 basename 为 messages 文件夹
在这里插入图片描述

3.页面代码修改支持国际化

       在之前文章 Spring Boot 引入 Thymeleaf 及入门使用 中,我们有介绍到 #{…} 这个表达式,它就是用来完成国际化操作的。接下来我们就使用#{…}表达式来完成对页面的改造,使其支持国际化。
在这里插入图片描述

4.目前页面已经支持国际化

       到这一步,页面已经支持国际化。不过目前国际化切换是跟随浏览器语言来改变的。比如说:你设置的浏览器语言是中文(简体),会显示汉语;如果你的浏览器语言设置为英语(美国),则会显示英语。如果你此时选择英语(加拿大),由于我们没有配置 加拿大,所以他会使用默认配置显示。如下图所示:我们也可以通过点击页面的方式,来支持国际化
在这里插入图片描述

5.(优化)通过点击链接方式切换

5.1 使用点击链接方式切换国际化

       点击链接的方式,我们可以通过传参的方式来解决这一问题。从而实现根据点击不同链接,传参的不同来动态切换国际化配置。
在这里插入图片描述

5.2 自定义国际化解析器

        因为 Spring Boot 默认配置的国际化解析器,就是上面j介绍根据语言来划分的那种(国际化配置位于MessageSourceAutoConfiguration 类下)。这种解析器显然无法满足我们的需求,所以我们需要自定义国际化解析器。

/**
 * 可以在连接上携带区域信息
 */
public class MyLocaleResolver implements LocaleResolver {
    
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
    	//获取传过来的参数
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        //不为空,通过 Locale对象修改国际化配置
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        //反之使用默认配置
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

5.3 通过代码方式,配置 url 映射关系;将自定义解析器注入到 Spring 容器

在这里插入图片描述

5.4 点击链接方式实现国际化切换  测试结果,如下图所示

在这里插入图片描述

6.附 Spring Boot 国际化源码

     Spring Boot 国际化(i18n)配置demo

       本文基于 Spring Boot 1.x 版本。2.x 版本中,在自定义国际化解析器时,继承的不是 WebMvcConfugurerAdapter 类,Spring 官方在此处有所变动。不过方法都是类似的,触类旁通一下就好了。


Spring Boot 国际化(i18n)配置,介绍到此为止

如果本文对你有所帮助,那就给我点个赞呗

End

发布了303 篇原创文章 · 获赞 67 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lzb348110175/article/details/105186709