SpringBoot+Thymeleaf实现国际化

Springboot+thymeleaf+数据库实现国际化 Springboot+thymeleaf+数据库实现国际化 思路:自定义thymeleaf消息解析器 由官方文档3.1.1可知,外部化文本(语法:#{…})是从模板⽂件中提取模板代码的⽚段,可以实现国际化,而Thymeleaf中外部化⽂本的位置是完全可配置的,它将取决于正在使⽤的具体的org.thymeleaf.messageresolver.IMessageResolver实现,如果想要从数据库... 阅读详情

前言

SpringBoot自动配置好了管理国际化资源文件的组件

@ConfigurationProperties(prefix = "spring.messages")
public class MessageSourceAutoConfiguration {
/**
Comma-separated list of basenames, each following the ResourceBundle convention. 
Essentially a fully-qualified classpath location. 
If it doesn't contain a package qualifier (such as "org.mypackage"),
 it will be resolved from the classpath root.
*/
//我们的配置文件可以直接放在类路径下叫message.properties
private String basename = "messages";
@Bean
	public MessageSource messageSource() {
		ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
		if (StringUtils.hasText(this.basename)) {
		    //设置国际化资源文件的基础名
			messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
					StringUtils.trimAllWhitespace(this.basename)));
		}
		if (this.encoding != null) {
			messageSource.setDefaultEncoding(this.encoding.name());
		}
		messageSource.setFallbackToSystemLocale(this.fallbackToSystemLocale);
		messageSource.setCacheSeconds(this.cacheSeconds);
		messageSource.setAlwaysUseMessageFormat(this.alwaysUseMessageFormat);
		return messageSource;
	}
}
	

具体操作

1、创建国际化的配置文件,放在resources下的一个文件夹里(这里只配置中文和英文)
在这里插入图片描述
2、点开配置文件login.properties配置文件,选择中间部分左下角的Resource Bundle ,然后选择中间部分的左上角 “+” 号 ,创建一个引用参数,然后点进参数,配置浏览器所显示的内容

在这里插入图片描述
3、application.properties配置文件中,引入login.properties配置文件

spring.messages.basename=login/login

4、编写html页面
首先在html页面中的html标签中引入thymeleaf模板引擎

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

然后在body里面写login.properties的参数

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<div th:text="#{login.top}">hello world</div>
<div th:text="#{login.username}">username</div>
</body>
</html>

写一个HelloController,访问html页面

@Controller
public class HelloController {

   //查询数据在html页面展示
    @RequestMapping("/login")
    public String success(){
        return "login";
    }
}

这样如果浏览器的语言是中文,将显示中文的配置信息,英文显示英文的配置信息
在这里插入图片描述

如果中文显示乱码,需要修改idea的一些配置

在这里插入图片描述

原理:

国际化Locale(区域信息对象)有一个组件LocaleResolve(获取区域对象信息);

		@Bean
		@ConditionalOnMissingBean
		@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
		public LocaleResolver localeResolver() {
			if (this.mvcProperties
					.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
				return new FixedLocaleResolver(this.mvcProperties.getLocale());
			}
			AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
			localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
			return localeResolver;
		}
		//默认的就是根据请求头带来的区域信息获取Locale进行国际化

在这里插入图片描述

点击链接切换国际化

1、创建一个组件MyLocaleResolver让他继承LocaleResolver然后重写里面的方法

/**
 * 可以在连接上携带区域信息
 */
public class MyLocaleResolver implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        //获取参数的值
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        //如果不为null
        if (!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

2、写一个配置类MyMvcConfig,让这个组件生效

@Configuration
public class MyMvcConfig {
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleResolver();
    }
}

3、完善html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<div th:text="#{login.top}">hello world</div>
<div th:text="#{login.username}">username</div>
<a th:href="@{/login.html(l='zh_CN')}">中文</a>
<a th:href="@{/login.html(l='en_US')}">英文</a>
</body>
</html>

点击中文或英文即可切换对应的内容
在这里插入图片描述

SpringBoot+Thymeleaf实现国际化源码 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。 立即下载

相关推荐

springboot+thymeleaf国际化之LocaleResolver接口的示例

本篇文章主要介绍了springboot+thymeleaf国际化之LocaleResolver的示例 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

国际化(SpringBoot+Thymeleaf)

如果有自己的需求,例如通过点击页面上的超链接来完成文本的转换,就需要自定义LocaleResolver了。效果图前四步和上面一样。

qq_44846964的博客 1828

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

springboot + thymeleaf 实现国际化

新手最需要的就是源码, 然后才能自己鼓捣分析, 我也是新手查阅的资料然后尝试编写, 自己分享心得--直接上代码!!!

weixin_47268710的博客 992

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6502

把对讲门铃(控制底楼铁门)接入米家服务器

今天讲个跟SDR或者无人机无关的东西,技术含量不高,但是方便了我的生活。 现在家门有智能锁,汽车也可以远程解锁发动,NFC门禁也可以用某些手机复制,唯独楼下的铁门,必须用老式对讲门铃控制。 也就是说其它钥匙都可以不带,就剩这个钥匙还必须随身携带。 另外有时候人不在家,不能开楼下铁门,快递员也没法把东西送上楼。 ......

老邵的开源世界 6549

一篇文章解决springboot+thymeleaf多语言国际化

1.前言 博主最近在写一个多语言的项目,因为之前没实际接触过多语言的设计,所以写这篇文章记录下这次多语言开发的过程。 博主的开发环境是:Springboot1.5.6 + thymeleaf,需要注意的是,springboot 1.x和2.x有比较大的差别。 文章实现的主要功能: springboot+thymeleaf最基本的国际化配置 自定义配置国际化,区域解析器 读取多个分类的国际化文件; 后台设置前端页面显示国际化信息的文件 利用拦截器和注解自动设置前端页面显示国际化信息的文件

caiycx的博客 3万+

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 180

【SpringBoot】Thymeleaf国际化

Thymeleaf国际化

丁 399

银河麒麟(ky10)x86与arm双架构下编译zlmediakit的实战指南

本文提供了在银河麒麟(ky10)操作系统上,针对x86与arm双架构编译部署流媒体服务器zlmediakit的完整实战指南。文章详细阐述了从环境准备、依赖安装、代码获取到编译构建与测试的全过程,重点解析了两种CPU架构下的关键差异与注意事项,帮助开发者高效完成国产化平台上的流媒体服务搭建。

weixin_29306875的博客 98

Arduino I2C for TCA9548A应答扫描程序

Arduino I2C for TCA9548A应答扫描程序

perseverance51博客 1119

springboot+thymeleaf实现国际化

thymeleaf常识 https://blog.youkuaiyun.com/chs007chs/article/details/82497743 ${}变量引用 #{}i18n国际化 pom.xml &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; ...

大鸡腿的博客 1033

数学建模学习(78):多输入多输出回归预测模型(结合XGBoost实现)

多输入多输出回归预测问题求解

全栈川川 8130

Spring Boot Thymeleaf 实现国际化

开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。SpringBoot支持如下页面模板语言 Thymeleaf FreeMarker Velocity Groovy JSP 上面并没有列举所有SpringBoot支持的页面模板技术。其中Thymeleaf是SpringBoot官方所推荐使用的,下面来谈谈Thy...

weixin_30699741的博客 331

OpenClaw零基础教程:30分钟搭建你的第一个AI自动化助手

别再看那些满是代码、专业术语的教程了,那些都是给程序员看的。这篇教程,我把所有步骤拆到了极致,你跟着点鼠标就行,点错了都没关系,大不了重装一遍,5分钟的事。

2601_94871597的博客 96

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot-Thymeleaf 实现页面国际化

在登录一个网站时经常会发现有中英文两种页面,本文将简单陈述如何使用SpringBoot-Thymeleaf 实现登录页面国际化,视频讲解可以关注B站狂神说Java 在SpringBoot中引入Thymeleaf 依赖 <!--thymeleaf模板引擎--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifac

tian_彡 708

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java国际化程序创建属性文件,Spring Boot Thymeleaf实现国际化的方法详解

前言开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了。SpringBoot支持如下页面模板语言ThymeleafFreeMarkerVelocityGroovyJSP上面并没有列举所有SpringBoot支持的页面模板技术。其中Thymeleaf是SpringBoot官方所推荐使用的,下面来谈谈Thymeleaf实现应用国际化方法。ps:...

weixin_39625975的博客 174

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

springboot+thymeleaf 实现点击页面国际化实例

** springboot+thymeleaf 实现点击页面国际化实例 ** 准备 页面代码 国际化资源文件(最好使用idea自带的resource bundle,可以快速编写这里就不再详细赘述) 点击切换国际化首先其原理是 国际化Locale(区域信息对象);LocaleResolver(获取区域对象信息); 其底层源码 知道原理过后,首先要在链接上携带区域区域信息 然后就是继承L...

qq_41019258的博客 623

Spring Boot | Spring Boot 整合 Thymeleaf 模板引擎 、Spring Boot “国际化功能“ 实现

目录: 1. Thymeleaf "标准表达式" : ${ } : 变量表达式 ( 从 "上下文" 中获取 "变量值") *{ } : 选择变量表达式 ( 从 "被选定对象" 中获取 "变量值") #{ } : 消息表达式 ( 主要用于 "国际化内容" 的 "替换和展示" ) @{ } : 链接表达式 ( 使用该表达式会生成一个 "URL字符串" ) ~{ } : 片段表达式 ( 引入页面中的 "模板片段" ) 2. Thymeleaf "内置对象" 3. Thymeleaf "基本使用" ......

m0_70720417的博客 1344

SpringBoot+thymeleaf实现视图控制器,拦截器,国际化功能

注意: 1、配置视图控制器要添加web依赖,视图跳转到templates包下的页面需要添加thymeleaf依赖 2、thymeleaf模板引擎默认扫描templates包下的页面,且默认后缀名为.html所以我们可以不用加后缀名。 3、所有页面的静态资源度需要thymeleaf来接管:@{}。导入别人的页面时,要引入thymeleaf模板引擎的头文件(命名空间)才会在HTML页面中加载static中的样式,(thymeleaf默认从static包中找样式,页面样式引入需要采用thymeleaf语法才能..

清峰的博客 1567

springboot2.0配合thymeleaf实现页面国际化

springboot2.0配合thymeleaf实现页面国际化

足迹人生的博客 607

springboot+thymeleaf国际化的实现

今天用springboot来实现下国际化的功能 1.导入要使用的依赖 在webjars上将前端需要使用的资源利用maven引入进来 2.在页面填充数据 首先引入thymeleaf的命名空间,然后用表达式语言引入数据。 3.在resources文件夹中指定一个文件目录来存放国际化文件 填写一个文件的内容其他两个会自动关联 4.重写LocaleResolver接口,将springboot的自动配...

qq_41235005的博客 442

笔记:springboot中使用thymeleaf模板引擎实现国际化汉英语转换

1.写汉语英语配置资源文件 2.springboot自动配置好了管理国际化资源文件的组件 3.指定资源文件包名 spring.messages.basename=i18n.login 4.去页面获取国际化的值 thymeleaf使用#{}获取资源文件的值 <!--单标签--> <input type="checkbox" name="remember">[[#{log...

qq_42583216的博客 446

Spring boot thymeleaf 实现简单-页面国际化

新建Spring boot项目 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven

小城我家 396

Springboot借助thymeleaf实现国际化

废话少说,直接讲解实现步骤: 1.编写国际化资源文件: 2.在核心配置文件(application.properties)中加入下面的话: spring.messages.basename=i18n.login 3.将页面文字改为获取国际化配置,格式#{key} <h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1> <input type="text" class=

JAVA领域优秀创作者 232
上一篇: Java集合
下一篇: SpringBoot整合Druid配置数据源监控
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值