网站首页 > 博客文章 正文
增加国际化
什么是国际化
起始利用浏览器语言,在页面中的中英(当然还有其他语言)文切换,将页面的文字在其他语言和中文进行切换。
青锋开源地址(开源多版基础架构)
青锋目前开源了一下版本架构:
springboot+layui+thymeleaf版本
springboot+layui+jsp版本
springboot+vue ant design 前后端分离版本
springcloud+vue/react ant design 前后端分离双版本。
青锋springboot 家谱系统。
下载地址:青锋 (msxy) - Gitee
springboot版本整合国际化
1、增加I18nConfig过滤器
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Locale;
/**
* @ProjectName I18nConfig
* @author Administrator
* @version 1.0.0
* @Description 设置默认语言
* @createTime 2021/7/22 0022 21:03
*/
@Configuration
public class I18nConfig {
private static Logger logger = LoggerFactory.getLogger(I18nConfig.class);
@Bean(name = "localeResolver")
public LocaleResolver localeResolver() {
logger.info("创建cookieLocaleResolver");
LocaleResolver localeResolver = new LocaleResolver();
localeResolver.setDefaultLocale(Locale.CHINA);
logger.info("cookieLocaleResolver:");
return localeResolver;
}
}
2、增加LocaleResolver设置语言
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import org.springframework.web.servlet.support.RequestContextUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
/**
* @ProjectName LocaleResolver
* @author Administrator
* @version 1.0.0
* @Description 每次加载页面时都会被调用,加载页面时都会设置并修改语言
* @createTime 2021/7/22 0022 21:03
*/
public class LocaleResolver extends AcceptHeaderLocaleResolver {
private Locale myLocal;
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取cookie数组
Cookie[] cookies = request.getCookies();
String lang = "";
if (cookies != null) {
//遍历cookie数组
for (Cookie cookie : cookies) {
if ("ClientLanguage".equals(cookie.getName())) {
lang = cookie.getValue();
break;
}
}
}
LocaleResolver localeResolver = (LocaleResolver) RequestContextUtils.getLocaleResolver(request);
if (lang == null || "".equals(lang)) {
myLocal = Locale.CHINA;
} else {
if (lang.equals("zh")) {
myLocal = Locale.CHINA;
} else if (lang.equals("en")) {
myLocal = Locale.US;
}
}
return myLocal;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
myLocal = locale;
}
}
3、增加I18N多语言配置文件
案例中配置了三个多语言文件:
1、messages.properties :公共配置,当没有匹配的语言文件时候加载本配置文件。
2、messages_en_US.properties:英文配置文件。
3、messages_zh_CN.properties:中文配置文件。
在外面的配置中messages和messages_zh_CN的内容是一样的。
login.loginName=登录名称
login.loginPwd=登录密码
qingfeng.title=大家好,我是青锋
login.loginName=Login name
login.loginPwd=Login password
qingfeng.title = Hello everyone, I'm Qingfeng
4、配置文件配置多语言
#设置国际化配置文件存放在classpath:/i18n目录下
spring.messages.basename: i18n/messages
spring.messages.encoding: UTF-8
#是否总是应用MessageFormat规则,甚至解析没有参数的消息,默认true
spring.messages.always-use-message-format: false
# 如果没有找到特定地区的文件,是否返回到系统区域,默认false
spring.messages.fallback-to-system-locale: true
# 是否使用消息代码作为默认消息,而不是抛出“NoSuchMessageException”,建议仅在开发过程中。,默认false
spring.messages.use-code-as-default-message: false
5、页面多语言切换实现
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>国际化</title>
<script src="${pageContext.request.contextPath}/resources/js/jquery-1.9.1.min.js"></script>
<script src="${pageContext.request.contextPath}/resources/js/jquery.cookie.js"></script>
</head>
<body>
<div align="center" style="margin: 20px auto">
<h1><spring:message code='login.loginName'/><br></h1>
<h1><spring:message code='login.loginPwd'/><br></h1>
<h1 style="color: red"><spring:message code='qingfeng.title'/><br></h1>
<div style="font-size: 24px">
<a href="javascript:;" onclick="changeLang('zh')"> 中文 </a>
<a href="javascript:;" onclick="changeLang('en')"> english </a>
</div>
</div>
</body>
<script>
function changeLang(lang) {
//cookie持久化
$.cookie('ClientLanguage',lang);
location.reload();
}
</script>
</html>
6、实现效果案例展示
猜你喜欢
- 2024-10-18 一套集成工作流+地图引擎的快速开源平台源码
- 2024-10-18 Spring Boot + Security + MyBatis + Thymeleaf + Activiti 快速开发平台
- 2024-10-18 基于Java的快速开发平台-低代码集成工作流-快速开发表单系统
- 2024-10-18 30分钟学会:springboot+mysql+camunda开源工作流引擎
- 2024-10-18 工作审批流系统,快速落地平台(工作流和审批流的区别)
- 2024-10-18 Spring Boot 整合 xxl-job(spring boot整合thymeleaf)
- 2024-10-18 「低代码平台」springboot+Activiti7多实例(会签)流程实现(一)
- 2024-10-18 可视化Java工作流引擎开发,10分钟完成一个业务流程发布
- 2024-10-18 springboot+activiti7之拖拽表单k-form-design整合
- 2024-10-18 Activiti 6.0 流程引擎从零开始(第一天) 1
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 357℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)