程序员社区

Spring Boot 国际化配置

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 官方在此处有所变动。不过方法都是类似的,触类旁通一下就好了。


博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Spring Boot 国际化配置

一个分享Java & Python知识的社区