SpringBoot之页面国际化配置

本文详细介绍了如何在SpringBoot项目中实现国际化配置,包括配置文件编写、MessageSource的设置、页面国际化展示,以及通过自定义LocaleResolver实现中英文切换。适合对SpringBoot国际化感兴趣的开发者参考。

一、准备工作

将IDEA的properties的编码格式全部统一为UTF-8
在这里插入图片描述
在这里插入图片描述

二、配置文件的编写

1、我们在resources资源文件下新建一个i18n目录,存放国际化配置文件,并且创建三个文件分别为login.properties(国际化 默认配置文件)、login_en_Us.properties(国际化英文配置文件)、login_zh_CN.properties(国际化中文配置文件)
在这里插入图片描述
2、编写配置文件
在这里插入图片描述
我们添加一下首页的内容!
在这里插入图片描述
然后依次添加其他页面内容即可!
添加完毕分别到三个配置文件中查看添加的内容,如下图所示。
在这里插入图片描述
login.properties 默认

login.btn=请登录
login.password=密码
login.remember=记住我
login.tip=请登录
login.username=用户名

login_zh_CN.properties 中文

login.btn=请登录
login.password=密码
login.remember=记住我
login.tip=请登录
login.username=用户名

login_en_US.properties 英文

login.btn=Sign in
login.password=Password
login.remember=Remember me
login.tip=Please sign in
login.username=Username

三、使国际化配置生效

1、我们去看一下SpringBoot对国际化的自动配置!这里又涉及到一个类:MessageSourceAutoConfiguration

里面有一个方法,这里发现SpringBoot已经自动配置好了管理我们国际化资源文件的组件 ResourceBundleMessageSource;

但是我们的真实情况是放在了application.properties配置文件下,在application.properties文件下添加如下内容

spring.messages.basename=i18n.login

在这里插入图片描述

四、页面国际化

4.1 配置页面国际化值

1、查看thymeleaf的官方文档,找到message的取值规则如下图所示:
在这里插入图片描述
2、开始对index.html页面的相关内容进行修改
在这里插入图片描述
查看页面,已经可以显示中文,表示国际化已经开始生效
在这里插入图片描述
至此,其实国际化的配置基本上就结束了,下面的操作是为了更好!

4.2 配置国际化解析

从这个页面也可以看到,下面有一个中文/英文 转换的链接按钮,
在这里插入图片描述
我们这里想要通过直接点击按钮来实现中英文的切换,操作如下:

1、修改index.html页面的该位置处的两个按钮的内容

<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>

在这里插入图片描述
2、写一个处理的组件类
在这里插入图片描述

package com.kuang.config;

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 request) {
        //获取请求中的语言参数链接
        //意思是  请求中带l的都会走这个请求
        String language = request.getParameter("l");
        //如果没有就使用默认的
        Locale locale = Locale.getDefault();
        //如果不为空 就要使用我们所传过来的——如果请求的链接 携带了国际化的
        if(!StringUtils.isEmpty(language)){
            //zh_CN
            String[] split = language.split("_");
            //国家 地区
            locale  = new Locale(split[0], split[1]);

        }
        return locale;
    }

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

    }
}

3、在我们自己的MyMvcConfig添加Bean,来使区域化的信息生效
在这里插入图片描述

    //添加bean交给spring托管 自定义的国家化组件就生效了
    @Bean
    public LocaleResolver localeResolver(){

    return new MyLocaleResolver();

    }

4、重新启动springboot项目,点击中文/English按钮测试成功

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值