SpringBoot--国际化

Springboot与国际化(i18n) 一、什么是国际化? 国际化就是在不修改内部代码的情况下,根据不同语言及地区显示相应的语言界面。 i18n的由来→internationalization,数一下,首字母i和末位字母之间有18个字母。类似的命名还有很多,例如k8s。 Springboot已经对i18n国际化做了自动配置,自动配置类。 org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration 如果想自定义国际化,通过@Autow 阅读详情

2)、国际化

1)、编写国际化配置文件;**

2)、使用ResourceBundleMessageSource管理国际化资源文件

3)、在页面使用fmt:message取出国际化内容

步骤:

1)、编写国际化配置文件,抽取页面需要显示的国际化消息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

@ConfigurationProperties(prefix = "spring.messages")
public class MessageSourceAutoConfiguration {
    
    /**
	 * Comma-separated list of basenames (essentially a fully-qualified classpath
	 * location), each following the ResourceBundle convention with relaxed support for
	 * slash based locations. If it doesn't contain a package qualifier (such as
	 * "org.mypackage"), it will be resolved from the classpath root.
	 */
	private String basename = "messages";  
    //我们的配置文件可以直接放在类路径下叫messages.properties;
    
    @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;
	}

3)、去页面获取国际化的值;

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
		<meta name="description" content="">
		<meta name="author" content="">
		<title>Signin Template for Bootstrap</title>
		<!-- Bootstrap core CSS -->
		<link href="asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet">
		<!-- Custom styles for this template -->
		<link href="asserts/css/signin.css" th:href="@{/asserts/css/signin.css}" rel="stylesheet">
	</head>

	<body class="text-center">
		<form class="form-signin" action="dashboard.html">
			<img class="mb-4" th:src="@{/asserts/img/bootstrap-solid.svg}" src="asserts/img/bootstrap-solid.svg" alt="" width="72" height="72">
			<h1 class="h3 mb-3 font-weight-normal" th:text="#{login.tip}">Please sign in</h1>
			<label class="sr-only" th:text="#{login.username}">Username</label>
			<input type="text" class="form-control" placeholder="Username" th:placeholder="#{login.username}" required="" autofocus="">
			<label class="sr-only" th:text="#{login.password}">Password</label>
			<input type="password" class="form-control" placeholder="Password" th:placeholder="#{login.password}" required="">
			<div class="checkbox mb-3">
				<label>
          		<input type="checkbox" value="remember-me"/> [[#{login.remember}]]
        </label>
			</div>
			<button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
			<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
			<a class="btn btn-sm">中文</a>
			<a class="btn btn-sm">English</a>
		</form>

	</body>

</html>

效果:根据浏览器语言设置的信息切换了国际化;

在这里插入图片描述

原理:

​ 国际化Locale(区域信息对象);LocaleResolver(获取区域信息对象);

		@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进行国际化

4)、点击链接切换国际化

/**
 * 可以在连接上携带区域信息
 */
public class MyLocaleResolver implements LocaleResolver {
    
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String l = request.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 request, HttpServletResponse response, Locale locale) {

    }
}


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


修改页面:

	<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
	<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
SpringBoot国际化配置流程(超详细) *** 国际化消息源*/@Resource/*** 区域解析器,供消息源@MessageSource根据不同的区域@java.util.Locale读取不同的properties文件*/@Bean// 设置默认区域:简体中文/*** 使用自定义LocalValidatorFactoryBean,* 设置Spring国际化消息源,用户jsr303验证信息实现自定义国际化*/@Bean: Locale对象表示特定的地理、政治或文化区域,用以区分区域。 阅读详情

相关推荐

Spring Boot 架构中的国际化支持实践—— Spring Boot 全球化解决方案

背景Spring Boot 主要通过 Maven 或 Gradle 这样的构建系统以继承方式添加依赖,同时继承了 Spring 框架中的优秀元素,减少了 Spring MVC 架构中的复...

AI天才研究院 1万+

Spring Boot之国际化

i18n 国际化 Spring Boot

qq_33594592的博客 5795

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

NULL 博文链接:https://fanshuyao.iteye.com/blog/2414640

如何使用Spring Boot轻松实现国际化和本地化

轻松实现国际化

做一个有思想的技术人 4108

IFIX5.8在Win10系统下的安装避坑指南

本文提供了IFIX5.8在Windows 10系统下的详细安装教程与避坑指南。针对常见的驱动缺失、UAC拦截及兼容性报错等问题,文章从安装前准备、分步安装流程到安装后配置与驱动修复,给出了系统性的解决方案,帮助工控从业者顺利完成部署。

f6g7h8i9j的博客 364

信号转换为图像 时域频域分析

一维信号如何转化为图像?深度学习如何学习 1.当然,直接1d卷积也是可以的。 2. 以信号强度的数值作为纵坐标,以时间为横坐标绘制信号点就可以了。 周霖那个即是 要看看代码是如何做的, 即使是单导联 5000个点,怎么变成50005000的分辨率的 3. 直接把多通道的一维信号合并成二维图像,然后直接按图像卷积的方法去做~~ 2225000这样一个图 ~可以看看语音处理的相关Net,其中比较...

王不留行嘿呦嘿 2万+

Spring Boot 实战(4)springboot中的国际化

在项目中,很多时候需要国际化的支持,这篇博客介绍一下springboot 项目中多语言国际化的使用。

扬帆向海的博客 1万+

超频玩家必看:TestMem5配置文件详解与内存稳定性测试实战(含黄金参数包)

本文详细解析了TestMem5(TM5)在内存超频稳定性测试中的核心价值与实战应用,特别针对DRAM颗粒特性提供黄金参数配置。通过anta777等专业配置的深度剖析,指导超频玩家精准定位内存故障,优化时序参数,实现性能与稳定性的完美平衡。涵盖从初级验证到极限压测的全流程方案,是硬件发烧友提升系统稳定性的必备指南。

weixin_29198045的博客 1813

SpringBoot——国际化

【4】去页面获取国际化值(红色部分,国际化用#{})(链接用@{表示}绿色部分):效果:根据浏览器语言的设置切换国际化。【6】当点击页面 “中文” or “English” 时切换中英文,页面参照4)信息。系统就会自动识别到是配置国际化。就会切换到国际化视图,可以右键。【5】浏览器切换,能够实现国际化的原理:国际化。自动配置好了管理国际化资源配置文件的组件;【2】如果有中文,需要设置编码格式。国际化默认配置文件,同时创建。【1】编写国际化配置文件;【7】将自己写的类,加入到。容器中,方法的名字必须是。

程序猿进阶 4768

QT如何使用CTK插件搭建应用程序框架?

CTK框架,QT框架,插件系统

cs821984831的博客 735

华为OD机试 - 矩形绘制 - 数组、坐标偏移(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。 当新绘制的矩形与已有图形重叠时,对图形取并集; 当新擦除的矩形与已有图形重叠时,对图形取差集。 给定一系列绘制和擦除操作,计算最终图形的面积。第一行为操作数N,接下来的N行格式为:d x1

学Java,找哪吒 835

SpringBoot-国际化

1. 国际化 1.1 国际化是什么 国际化(Internationalization,简称i18m):指软件开发应当具备支持多种语言和地区的功能。也就是说能够具备切换页面显示语言的功能。 i18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数 2. 实现国际化 在 Spring Boot 实现国际化的步骤如下: 编写国际化资源(配置)文件 利用thymeleaf修改页面 区域化信息配置 2.1 编写资源文件 资源文件格式:基本名_语言代码_国家或地区代码 我们需要的资源文件包括: me

weixin_47243236的博客 6879

apple游客下单逆向分析

Apple游客下单Cookies注册激活流程逆向分析与算法实现

吴秋霖的博客 2001

SpringBoot的国际化

国际化(internationalization)是设计容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言元素。换言之,应用程序的功能和代码设计考虑了在不同地区运行的需要。开发这样的程序的过程,就称为国际化。那么当我们使用Spring Boot如何进行国际化呢?

只恨天高的博客 985

Android 13 内置xapk安装包的方法

安装xapk 内置xapk

安卓兼职framework和app工程师的博客 223

ROS2 机械臂末端刀具执行曲面路径规划入门教程

Noether工具路径规划系统摘要 Noether是一款用于网格曲面刀具路径规划的软件,支持喷涂、打磨、检测等机器人工艺流程。其核心流程分为三步:1)网格修改(平滑、分割等预处理);2)刀具路径规划(生成有序路径点序列);3)刀具路径修改(姿态调整等后期处理)。系统提供栅格规划和边界规划两种模式,支持自定义扩展。配套GUI工具可配置完整流程,包含网格处理、路径生成和可视化功能。通过示例演示了多组件网格处理、拼图边缘铣削等典型应用场景,并指导用户进行插件开发,实现圆柱体提取、摄像机悬停等定制化功能。系统采用模

机器人控制与仿真应用 916

springboot 国际化_Spring Boot 国际化踩坑指南

国际化,也叫 i18n,为啥叫这个名字呢?因为国际化英文是 internationalization ,在 i 和 n 之间有 18 个字母,所以叫 i18n。我们的应用如果做了国际化就可以在不同的语言环境下,方便的进行切换,最常见的就是中文和英文之间的切换,国际化这个功能也是相当的常见。在 Spring 中,就通过 AcceptHeaderLocaleResolver 对国际化提供了支持,开发者...

weixin_39621870的博客 435

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

springboot实现国际化

在springmvc中实现国际化的步骤一般分为以下几步: 1)、编写国际化配置文件; 2)、使用ResourceBundleMessageSource管理国际化资源文件 3)、在页面使用fmt:message取出国际化内容 在springboot中自动装配好了国际化的组件,我们只需要进行简单的配置和取值即可, 1)、编写国际化配置文件; 配置文件一共有三个,一个默认配置文件,一个英文,一个中文 ...

菜鸟的自我素养的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Springboot3国际化

Spring Boot 3 提供了强大的国际化支持,使得应用程序可以根据用户的语言和区域偏好适配不同的语言和地区需求。国际化资源文件通常放在可以通过在或或者在配置类中定义在代码中可以通过来获取国际化消息。例如,在控制器中根据请求参数确定语言环境并获取对应的消息。如果使用 Thymeleaf 作为模板引擎,可以在模板中直接使用国际化消息。需要确保在中启用了国际化支持,并且在模板中使用#{}表达式引用消息键。Spring Boot 提供了来自动检测和设置客户端的语言环境。可以使用或自定义的。

编码浪子的专栏 977

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring Boot——国际化

讲解SpringBoot中的国际化知识,让我们的网站能够轻松地切换中英文。

一心同学的博客 4014

SpringBoot项目配置国际化

本文系统介绍了Spring Boot项目中国际化的实现方案。通过MessageSource+LocaleResolver组合,将文案抽离到i18n资源文件,实现运行时自动切换语言。包括:1)创建i18n目录及多语言properties文件;2)配置basename指定资源文件前缀;3)改造响应体和异常码使用MessageSource获取消息;4)自定义LocaleResolver实现请求头语言解析;5)通过MessageUtils工具类实现消息动态切换。文章还预告了后续将实现的用户会话信息自动注入功能。

bugMaker_0621的博客 1900

springboot 国际化_Spring Boot国际化支持

国际化支持应该是所有的做国际化网站都需要考虑的一个问题,Spring Boot为国际化提供了强有力的支持,本文将会通过一个例子来讲解Spring Boot的国际化。添加Maven支持Spring Boot本身就支持国际化,我们这里添加一个模板支持来通过页面来展示,我们这里添加thymeleaf模板:<dependency> <groupId>org.springfr...

weixin_33302571的博客 164

SpringBoot实现国际化

SpringBoot提供了il8n国际,其原理是将配置的各个语言资源文件信息,以Map的形式进行缓存。当前端请求给定某个语言标识时(一般是放到请求头中),拿去指定的语言标识去获取响应的响应信息。在Springboot项目启动时,由类进行消息资源自动配置。该类存在条件注解,也就是说必须满足某个条件是才会进行自动装载配置。类用于判断是否满足自动注入条件。用于返回一个对象,用于后续判断是否满足自动注入条件。该方法会自动读取配置的资源文件地址信息,通过方法获取默认的文件资源。如果该资源不存在,则不满足自动注入条件。

qq_43600166的博客 1627

springboot国际化

简单介绍springboot国际化支持

dream_xin2013的专栏 1130
上一篇: Shell--流程控制
下一篇: SpringBoot--文件上传并回显
吴声子夜歌
博客等级 码龄9年 2687粉丝 2266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值