SpringBoot之页面国际化配置

SpringBoot之页面国际化配置,第1张

SpringBoot之国际化配置
  • 一、准备工作
  • 二、配置文件的编写
  • 三、使国际化配置生效
  • 四、页面国际化
    • 4.1 配置页面国际化值
    • 4.2 配置国际化解析
  • 五、资料参考

一、准备工作

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


五、资料参考

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/890125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存