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♪(・ω・)ノ

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛麻袋的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值