SpringBoot日记——国际化篇

听起来高大上的国际化,起始就是在利用浏览器语言,或者页面中的中英文切换,将页面的文字在其他语言和中文进行切换,比如:

我们想让这个功能实现,点击中文,页面就是中文的,点击英文就是英文的。

国际化配置

那么我们来看,SpringBoot默认是按照你浏览器的语言来切换中英文的,配置文件呢,我们可以在resources中这样写:

1. 新建一个名叫“i18n”的包,我们用来存放国际化配置,然后在这个包下,我们再创建几个properties的配置文件,用来配置语言:

  如图方式,我们创建3个文件,分别是无语言配置时候生效的login.properties;中文生效的login_zh_CN.properties;英文生效的login_en_US.properties;

  也就是以下划线的组合:文件名_区域_语言.properties;当我们这样命名生成文件后,IDEA也会帮我们识别这是个国际化配置包,自动转换成如下的模式:

  当然变成如上模式的时候,我们再需要添加配置文件,直接在包右键new就可以了

方便了许多~

2. 我们要在这些配置文件里做些改动,先来点击login_en_US的配置文件,然后点击下边如图所示的Resource Bundle的按钮,切换编辑模式:

  按照如图的方法,点击加号,添加一个key,我们取名叫login.tip就是页面中用到的提示的意思

接下来,按照我们页面需要转换的量,来做配置,如下图(我把等下登录页要用的都配置好了):

还没完,不要急,看起来复杂,学会了就简单了,后边我们需要将页面上引用这些值,来看。

HTML页-配置

  基于之前的文章,我们了解到Thymeleaf中的语法中@和#的作用,看看如何使用,先直接上图:

  前边表单里我们将所有需要的参数用#{xx.yy}的形式,按照配置的国际化参数都设置好,为了使用模板,我们需要用到th:text之类的参数来替换原来的参数。(注意看原来页有同样的text、placeholder等参数)

而为了使Thymeleaf模板生效,别忘了在html的参数中加上这句xmlns:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>

  这样,我们就可以在切换浏览器语言的情况下,进行中英文切换了,设置方法以chrome举例(需要英文就添加英文置顶):

自定义配置,使我们页面中的中英文切换生效

有耐心的同学,我们来看一下正题,怎么使自己的配置生效:

1.  文章顶部的截图,我们看到的中英文按钮的HTML,我们来看,如何配置:

  注意,我这里将访问的页面其实是;localhost:8080/index.html?l=zh_CN,这也是我们点击中文按钮以后生成的链接。在Thymeleaf的模板语法中,参数是不用“?”的,而是使用小括号,然后参数按照key=value的形式设置,注意单引号;

2. 为了让自定义的配置生效,我们要做的就是覆盖或改变默认的配置,那么我们新建一个文件 MyLocaleResolver,用来实现 LocaleResolver 接口的作用;

  具体方法:(因为我们的区域是用下划线“_”来配置的,所以这里用分隔符来取得区域和语言,放到request中)

package com.iceodin.common.component;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * 在链接上携带区域信息
 */
public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        String l = httpServletRequest.getParameter("l");
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(l)) {
            String[] split = l.split("_");
            locale = new Locale(split[0], split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}

3. 让我们的配置生效,当然就要把配置加入到SpringBoot的容器中,所以,在之前的配置文件中,加入Bean:

4. 最好我们来看成果喽:

  默认的语言展示,由于浏览器默认中文,所以:

  然后点击下方English,看url和页面的变化:

  我们再点击中文:

  搞定~

原文地址:https://www.cnblogs.com/iceb/p/9225678.html

时间: 2024-11-10 14:54:49

SpringBoot日记——国际化篇的相关文章

SpringBoot日记——实战篇——Url定向

搞定了SpringBoot的一些基础核心的东西,我们需要实践一个项目来确认自己学习的东西能被应用,最初,我们会选择自己写一个登陆页面,这也是每个网站几乎都有的门面. 在写之前,还有一些知识点需要记录--URL定向. 比如我们访问"/"和访问"/index.html"这样的路径的时候,希望他们都可以指向同一个页面,但是我们又不能写一堆Controller来实现,那样以后维护起来也十分繁琐,所以这里引入了一个Adapter的方法. 具体如何实现的呢,先来看代码,然后做讲

求职日记上海篇

求职日记上海篇 这次跑到上海去了,求职的第三个城市,面过苏州的,面过北京的,也都拿到了offer,我在尝试自己的极限,虽然每次都答的渣的一塌糊涂,算是锻炼吧,不知道什么时候能去百度. 第一次来上海,不同于北京,对这里没什么印象也没什么憧憬,倒是在我脑袋里老停留着上海人排外的心里,算是阴影吧,做着盐城到上海的汽车,枯燥无谓,窗外偶尔能看见一两座大桥和造船厂,睡癌发作,直接睡了3个小时,快到的时候,路过郊区,跟昆山差不多的样子,郊区大概都这样吧.接着就是各种立交桥了,北京走都是做地铁,刚到上海就有一

SpringBoot日记——日志框架篇

在项目的开发中,日志是必不可少的一个记录事件的组件,所以也会相应的在项目中实现和构建我们所需要的日志框架. 而市面上常见的日志框架有很多,比如:JCL.SLF4J.Jboss-logging.jUL.log4j.log4j2.logback等等,我们该如何选择呢? 通常情况下,日志是由一个抽象层+实现层的组合来搭建的. 日志-抽象层 日志-实现层 JCL.SLF4J.jboss-logging jul.log4j.log4j2.logback 而SpringBoot机智的选择了SLF4J+Log

SpringBoot日记——SpringMvc自动配置与扩展篇

为了让SpringBoot保持对SpringMVC的全面支持和扩展,而且还要维持SpringBoot不写xml配置的优势,我们需要添加一些简单的配置类即可实现: 通常我们使用的最多的注解是: @Bean @Component 配置后的类就是我们要写在容器中的一些配置:详情后续再说,或者你也可以参考官方文档 关于扩展 这里我们说一下如何做扩展呢,先看一下原先在SpringMvc中我们是如何写的,来看XML(这是一段关于路径映射和拦截器的简单配置,访问hello路径也展示success.html的页

SpringBoot日记——Thymeleaf进阶小篇

我们做好了登录页,那设计一个场景吧,比如我们登录后跳转到公司主页,想从公司主页再跳转到员工列表页: 这样的场景我们该如何实现,首先要知道一些基础知识,就是SpringBoot的一些关于请求的架构知识: 功能 请求URI 请求方式 查询所有员工 emps GET 查询某个员工 emp/{id} GET 跳转到添加页 emp GET 添加员工 emp POST 跳转到修改页 emp GET 修改员工信息 emp{id} PUT 删除员工 emp{id} DELETE 其实,这些请求在我们做登录页的时

SpringBoot日记——编码配置篇

插入一个小篇章,有人在编写代码的时候,要么控制台乱码,要么页面乱码等等, 我这里有个配置,可以解决各种乱码问题,直接来看. # ==================== 编码配置 ==================== spring.banner.charset=UTF-8 server.tomcat.uri-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.ht

SpringBoot资源国际化

Springboot根据浏览器实现网站资源国际化 1.创建资源化文件 resource目录下创建messages目录 创建messages_en_US.properties.messages_zh_CN.properties文件.分别是英文.中文资源. messages.properties文件为默认文件. messages_en_US.properties写入内容:welcome = welcome to login in soa-watch systerm(english) messages

SpringBoot日记——Redis整合

上一篇文章,简单记录了一下缓存的使用方法,这篇文章将把我们熟悉的redis整合进来. 那么如何去整合呢?首先需要下载和安装,为了使用方便,也可以做环境变量的配置. 下载和安装的方法,之前有介绍,在docker中的使用,这里不做相关介绍,有想在windows环境下使用的,自己搜一下如何windows安装使用redis吧~(看这里也可以) 正题: SpringBoot对应(自带)RedisClient是不同的 SpringBoot1.5.x版本 -> jedis  SpringBoot2.x版本 -

SpringBoot日记——MQ消息队列整合(二)

基于第一篇文章搭建好环境以后,我们这篇文章继续介绍如何在springboot中使用RabbitMQ. 1).单播:添加好pom文件和自定义配置后,来看: @Autowired RabbitTemplate rabbitTemplate; @Test public void contextLoads() { // 对象被默认JAVA序列化发送,参数:Exchange,routingKey,消息 rabbitTemplate.convertAndSend("exchange.direct"