SpringBoot-语言国际化
在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-语言国际化的更多相关文章
- SpringBoot 国际化配置,SpringBoot Locale 国际化
SpringBoot 国际化配置,SpringBoot Locale 国际化 ================================ ©Copyright 蕃薯耀 2018年3月27日 ht ...
- Zend_Frameowrk中进行多语言国际化的相关的配置和使用
在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题.使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_ ...
- (三)Qt语言国际化
Vs 2010+ Qt5 实现语言国际化 创建一个工程,cpp代码如下: 1.创建工程 #include "languageinternationalized.h" #includ ...
- i18next-页面层语言国际化js框架介绍
因为工作需要,最近研究了下网站语言国际化的问题,根据当前项目架构,寻求一种较好的解决方案.首先总结下项目中语言切换实现方式大概有以下几种: 1,一种语言一套页面,如:index_CN.html,ind ...
- iOS语言国际化
参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html 语言国际化:根据系统不同的语言自动切换 Xcode6.2 一.在不同语言下工 ...
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
源代码及样例下载地址: http://download.csdn.net/detail/u014569459/7169385 一.功能说明: 1. 支持语言国际化 2. 支持图片文件.JS文件国际化 ...
- JavaWeb之多语言国际化
这周打算把国际化.JDBC和XML学习一下,从下周就开始学习三大框架,再坚持一个半月吧就能入门JavaWeb了,上周周末两天过的真是生不如死,两天坐在家里,醒来就写博客,原本在公司也自己操作了一遍,其 ...
- Spring Boot + Freemarker多语言国际化的实现
最近在写一些Web的东西,技术上采用了Spring Boot + Bootstrap + jQuery + Freemarker.过程中查了大量的资料,也感受到了前端技术的分裂,每种东西都有N种实现, ...
- 使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization)
使用 PySide2 开发 Maya 插件系列三:qt语言国际化(internationalization) 前言: 这是 qt for python 的语言国际化,基于 UI 的,python 也有 ...
- Winform下的语言国际化,几行代码轻松实现
最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加Langua ...
随机推荐
- 前端下载文档的java工具类
package com.ry.project.util.commUtil;import freemarker.template.Configuration;import freemarker.temp ...
- go语言初始化结构体指针
go语言初始化结构体指针 head:=&ListNode{} 或者 head:=new(ListNode)
- DFS常规解题套路
本文为xdfApp团队成员文章,原文链接:https://blog.csdn.net/sinat_37380158/article/details/106866970 作者介绍:韩沛沛, 北京邮电大学 ...
- ORB_SLAM2 Ubuntu16.04编译错误
Ubuntu14.04一切正常,迁移到Ubuntu16.04后编译报错,提示: /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:745:3: ...
- 主要DL Optimizer原理与Tensorflow相关API
V(t) = y*V(t-1) + learning_rate*G(x) x(t) = x(t-1) - V(t) 参考:https://arxiv.org/pdf/1609.04747.pdf DL ...
- n, n+1, ..., 2n 中的 5 数环初探
本篇是 IMO 2021 第一题题解及相关拓展问题分析 和 IMO 2021 第 1 题拓展问题的两个极值的编程求解 的延伸篇. 从上两篇的分析,可知: 当 n < 48 时,n, n+1, . ...
- Qt5中用QLCDNumber显示时间
编程中经常要用到时间的显示,因此在这总结一下在Qt中如何显示时间.废话不多说,直接上代码,简单明了,一看就懂~~ mydialog.h 文件 #ifndef MYDIALOG_H #define MY ...
- TCP通信的实现代码
TCP通信 概念 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 从百科定义中就可以看出,TCP通信的基本条件 ...
- element-ui 用 el-checkbox-group 做权限管理
template <el-checkbox-group v-model="menu_ide" v-for="(item,index) in menu_idss&qu ...
- 简单C++线程池
简单C++线程池 Java 中有一个很方便的 ThreadPoolExecutor,可以用做线程池.想找一下 C++ 的类似设施,尤其是能方便理解底层原理可上手的.网上找到的 demo,基本都是介绍的 ...