SpringBoot之页面全球化配置

原创
小哥 3年前 (2022-11-14) 阅读数 55 #大杂烩

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 页面的该位置处的两个按钮的内容

中文
English


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 按钮测试成功


五、资料参考

https://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg%3D%3D&chksm=ce610719f9168e0fd77185b7194f4cdff964f3f4a6a7584e9ff0afd0ddd99f4e89d9ca2e41bf&idx=1&mid=2247483834&scene=21&sn=e28706bf0c3ded1884452adf6630d43b#wechat_redirect

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门