在resouce下新建i18n
i18n 类似的还有k8s

在i18n下新建signIn.properties
再新建 signIn_zh_CN.properties
此时,iden会帮助合并:

现在可以在这上面直接new,然后点击+号

只需要输入语言标符:

添加语言标符后右边就显示了对应的语言/国家

选中点击 OK,就自动生成对应的properties文件了:

idea很只能,提供了可视化配置

这样就可以在一个文件完成多个文件的配置了:

配置文件配好了,后台怎么处理:

可以看SpringBoot提供有相关的处理类:

MessageSourceAutoConfiguration

MessageSourceProperties


从类这得知可以做相关的配置:

配置我们的配置文件在哪里:

那页面上也需要做修改来配对使用:

thymeleaf 规定使用:#{}

 在需要显示文字的标签上使用thymeleaf接管并配置多语言:

可以看除用了#{}就会自动和多语言配置文件关联i起来了:

访问试试:

有些符号没有正常显示,需要注意我们的环境的字符格式,特别要注意properties修改为UTF-8! 改完正常。

现在我们在登录页面上提供一个简单的语言选择的两个按钮:

页面添加后,后台也需要处理:

参考AcceptHeaderLocaleResolver得知:

 @Bean
@ConditionalOnMissingBean(
name = {"localeResolver"}
)
public LocaleResolver localeResolver() {
if (this.webProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.WebProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.webProperties.getLocale());
} else if (this.mvcProperties.getLocaleResolver() == org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.mvcProperties.getLocale());
} else {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
Locale locale = this.webProperties.getLocale() != null ? this.webProperties.getLocale() : this.mvcProperties.getLocale();
localeResolver.setDefaultLocale(locale);
return localeResolver;
}
}

可以写一个自己的来LocaleResolver接管

public class MyLocaleResolver implements LocaleResolver {

    //解析请求
@Override
public Locale resolveLocale(HttpServletRequest request) {
String language = request.getParameter("l");
Locale locale = Locale.getDefault();//如果没有用默认的 System.out.print("----"+language);
//如果带了
if ( !StringUtils.isEmpty(language) ){
String[] split = language.split("_");
//国家_地区
locale = new Locale(split[0],split[1]);
}
return locale;
} @Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }
}

将上面的配置类注入:

    //注入 生效
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();

此时就完成了接管,在我们自己的localeResolver完成了语言的判断,那页面上的连接请求也需要做出对应的处理:

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

auth-sign-in.html(l='en_US')
等于原来的auth-sign-in.html?l='en_US' 在这里 auth-sign-in.html(l='en_US') 这样的形式会跳转404因为加了.html是直接跳转到静态资源了,thymeleaf中是跳不了的。

直接改为 auth-sign-in(l='en_US') 这样才是一次完整的经过后端的请求跳转,这样才能经过我们的localeResolver。

测试访问:

切换英文:

切换中文:

SpringBoot-语言国际化的更多相关文章

  1. SpringBoot 国际化配置,SpringBoot Locale 国际化

    SpringBoot 国际化配置,SpringBoot Locale 国际化 ================================ ©Copyright 蕃薯耀 2018年3月27日 ht ...

  2. Zend_Frameowrk中进行多语言国际化的相关的配置和使用

    在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题.使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_ ...

  3. (三)Qt语言国际化

    Vs 2010+ Qt5 实现语言国际化 创建一个工程,cpp代码如下: 1.创建工程 #include "languageinternationalized.h" #includ ...

  4. i18next-页面层语言国际化js框架介绍

    因为工作需要,最近研究了下网站语言国际化的问题,根据当前项目架构,寻求一种较好的解决方案.首先总结下项目中语言切换实现方式大概有以下几种: 1,一种语言一套页面,如:index_CN.html,ind ...

  5. iOS语言国际化

    参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html   语言国际化:根据系统不同的语言自动切换 Xcode6.2   一.在不同语言下工 ...

  6. 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化

    源代码及样例下载地址: http://download.csdn.net/detail/u014569459/7169385 一.功能说明: 1. 支持语言国际化 2. 支持图片文件.JS文件国际化 ...

  7. JavaWeb之多语言国际化

    这周打算把国际化.JDBC和XML学习一下,从下周就开始学习三大框架,再坚持一个半月吧就能入门JavaWeb了,上周周末两天过的真是生不如死,两天坐在家里,醒来就写博客,原本在公司也自己操作了一遍,其 ...

  8. Spring Boot + Freemarker多语言国际化的实现

    最近在写一些Web的东西,技术上采用了Spring Boot + Bootstrap + jQuery + Freemarker.过程中查了大量的资料,也感受到了前端技术的分裂,每种东西都有N种实现, ...

  9. 使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization)

    使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization) 前言: 这是 qt for python 的语言国际化,基于 UI 的,python 也有 ...

  10. Winform下的语言国际化,几行代码轻松实现

    最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加Langua ...

随机推荐

  1. rest operater剩余操作符

    rest叫做剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array里面赋值给它.一般只针对array的解构 //rest叫做剩余操作符(rest operato ...

  2. linux centos7 定时执行服务监控脚本

    2021-08-25 1. 需求 在服务挂掉之后我们要怎么做才能保证服务在短时间内开启?可以编写脚本监控服务的状态,在服务挂掉后及时将其开启,并定时执行该脚本. 2. 脚本编写 思路:平常我们可以通过 ...

  3. linux centos7 模拟垃圾回收站功能以及 crontab 定时任务的设置

    2021-08-04 1. 安装 环境:CentOS Linux release 7.5.1804 (Core) # 将 saferm.sh 拷贝到 /bin 目录下面 git clone git:/ ...

  4. Qt5之事件学习总结

    首先要明白一个概念,事件和信号并不一样,比如单击一下鼠标,就会产生鼠标事件(QMouseEvent),是对这个动作的描述,而因为按钮被按下了,按钮会发出clicked()的单击信号(是按钮控件产生的) ...

  5. UDP实现在线聊天功能

    发送端 //发送 public class UDPChat01 { public static void main(String[] args) throws Exception { //开启端口 D ...

  6. Java的参数传递是值传递还是引用传递?

    一.前言 首先先说结论,Java中方法参数传递方式是按值传递.如果参数是基本类型,传递的是基本类型的字面量值的拷贝.如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝. 接下来深入了解一 ...

  7. Configuration对象和SessionFactory会话池

    一.加载核心配置文件方式 二.加载映射文件方式 三.SessionFactory相当于连接池 四.获取session会话 同一个线程中获取的session两种方法获取的是同一个session对象: 不 ...

  8. vue 动态ip配置,避免重复打包

    目前比较流行的打包大都是在vue.config.js配置代理,然后在根目录新建.env.xxx文件配置正式环境,测试环境,开发环境等用于打包时配置不同的访问地址,作为一名随波逐流的前端开发,我也是这么 ...

  9. 【第十篇】- Git 远程仓库(Github)之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 远程仓库(Github) Git 并不像 SVN 那样有个中心服务器. 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据 ...

  10. 343 day08File类、递归

    day08[File类.递归] 主要内容 File类 递归 教学目标 [ ] 能够说出File对象的创建方式 [ ] 能够说出File类获取名称的方法名称 [ ] 能够说出File类获取绝对路径的方法 ...