国际化,也叫 i18n ,这是因为国际化英文是 internationalization ,在 i 和 n 之间有 18 个字母,所以叫 i18n。我们的应用如果做了国际化就可以在不同的语言环境下,方便的进行切换,最常见的就是中文和英文之间的切换。
SpringBoot支持国际化,帮助满足不同语言需求的用户。
在Spring中,就通过 AcceptHeaderLocaleContextResolver 对国际化提供了支持。
SpringBoot对于国际化的支持,默认是通过 AcceptHeaderLocaleResolver 解析器来完成的,这个解析器是通过请求头中的 Accept-Language 字段来判断当前请求所属环境的。
默认的国际化配置是放在resource目录下,下面我们写几个测试文件:
需要注意的是:
配置完成后,我们就可以直接开始使用了。在需要使用值的地方,直接注入 MessageSource 实例即可。如下例:
getMessage 方法:
下面是使用 Postman 对这个接口的测试:
参数可以当成普通参数放在地址栏上,通过如下配置可以实现我们的需求。
在上面的配置中,我们先配了一个 Bean ,这个 bean 会替换掉默认的 AcceptHeaderLocaleResolver(因此该bean 的名字必须为localResolver,否则检测不到),不同于 AcceptHeaderLocaleResolver 通过请求头来判断当前的环境信息,SessionLocaleResolver 将客户端的 Locale 保存到 HttpSession 对象中。(这意味着当前环境信息,前端发送一次即可记住,只要 session 有效,浏览器不必再次告诉服务端当前的环境信息)。
另外还配置了一个拦截器,这个拦截器会拦截请求中 key 为 lang 的参数(不配置的话默认是 locale),这个参数则指定了当前的环境信息。
在第二次请求时,就不需要携带lang这个参数。
默认情况下,配置文件是放在 resources 目录下,如果想自定义,也是可以的,例如定义在 resources/i18n 目录下:
另外还有一些编码格式的配置等,一般不需要更改这些默认配置,内容如下:
语言
简称
简体中文(中国)
zh_CN
繁体中文(中国台湾)
zh_TW
繁体中文(中国香港)
zh_HK
英语(中国香港)
en_HK
英语(美国)
en_US
英语(英国)
en_GB
英语(全球)
en_WW
英语(加拿大)
en_CA
英语(澳大利亚)
en_AU
英语(爱尔兰)
en_IE
英语(芬兰)
en_FI
芬兰语(芬兰)
fi_FI
英语(丹麦)
en_DK
丹麦语(丹麦)
da_DK
英语(以色列)
en_IL
希伯来语(以色列)
he_IL
英语(南非)
en_ZA
英语(印度)
en_IN
英语(挪威)
en_NO
英语(新加坡)
en_SG
英语(新西兰)
en_NZ
英语(印度尼西亚)
en_ID
英语(菲律宾)
en_PH
英语(泰国)
en_TH
英语(马来西亚)
en_MY
英语(阿拉伯)
en_XA
韩文(韩国)
ko_KR
日语(日本)
ja_JP
荷兰语(荷兰)
nl_NL
荷兰语(比利时)
nl_BE
葡萄牙语(葡萄牙)
pt_PT
葡萄牙语(巴西)
pt_BR
法语(法国)
fr_FR
法语(卢森堡)
fr_LU
法语(瑞士)
fr_CH
法语(比利时)
fr_BE
法语(加拿大)
fr_CA
西班牙语(拉丁美洲)
es_LA
西班牙语(西班牙)
es_ES
西班牙语(阿根廷)
es_AR
西班牙语(美国)
es_US
西班牙语(墨西哥)
es_MX
西班牙语(哥伦比亚)
es_CO
西班牙语(波多黎各)
es_PR
德语(德国)
de_DE
德语(奥地利)
de_AT
德语(瑞士)
de_CH
俄语(俄罗斯)
ru_RU
意大利语(意大利)
it_IT
希腊语(希腊)
el_GR
挪威语(挪威)
no_NO
匈牙利语(匈牙利)
hu_HU
土耳其语(土耳其)
tr_TR
捷克语(捷克共和国)
cs_CZ
斯洛文尼亚语
sl_SL
波兰语(波兰)
pl_PL
瑞典语(瑞典)
sv_SE
西班牙语(智利)
es_CL
这个问题来源于今天要对接某云短信功能使用sdk方式,就需要引用对方jar包导致了后面的入坑之路啦!非常非常简单的一个问题。 so easy!!!!就是引用这个万恶之源的jar包。啊对对对就是他了。然后呢我记在pom里面开始引用了他,对就是他。然后就出现了那一系列的Caused by啦。看图吧咱就<dependency> <group
SpringBoot使用iText操作PDF
SpringBoot使用Redis实现延时队列
SpringBoot中使用Caffeine实现本地缓存
首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息。传统项目读取配置方式读取xml配置文件public String readFromXml(String xmlPath, String property) { SAXReader reader = new SAXReader
不管是 spring cloud alibaba 还是 spring cloud netflix,都是基于 springboot 这个微框架来构建的,所以我希望花一点时间来讲一下 springboot什么是 springboot对于 spring 框架,我们接触得比较多的应该是 spring mvc、和 spring。而 spring 的核心在于 IOC(控制反转)和 DI(依赖注入)。而这些框架
Spring框架的设计理念1、Spring的总体架构Spring框架中的核心组件只有三个:Core、Context和Bean。(1)、Bean组件主要解决三个问题:Bean定义、Bean创建、Bean解析。其中Bean定义和解析在Spring内部完成。 A、Bean创建的工厂模式:(顶级接口是BeanFactory)最终默认实现类是DefaultListableBeanFactory。而
关于tomcat的apr、bio、nio模式关于tomcat的这几种模式,以及在springboot内嵌tomcat的方式下如何设置,可以参考以下几篇文章进行设置。首先将springboot应用程序跑起来,用postman随便访问一个接口可以看到打印出来的记录里显示出是基于nio模式的接下来我们参考上面的这些文章,将springboot程序设置为Apr模式运行。关键的几个步骤见下面的 注意启用ap
作者:涅槃重生,一、介绍spring cache 是spring3版本之后引入的一项技术,可以简化对于缓存层的操作,spring cache与springcloud stream类似,都是基于抽象层,可以任意切换其实现。其核心是CacheManager、Cache这两个接口,所有由spring整合的cache都要实现这两个接口、Redis的实现类则是 RedisCache 和 RedisManag
问题描述:linux提供的web服务,能在网页展示中文,下载pdf出现中文无法读取!,甚是迷瞪,经分析展示是本地浏览器的解析,下载pdf是服务器端的响应,因此要在服务端安装对应的字体库就可以解决此问题!问题解决:Linux安装对应的中文字体库!#linux安装中文字体Windows下的ttf/ttc字体是可以在linux上使用,确定网页端使用的字体类型,必须对的上!#os系统环境centos6.5
文章目录一. 本机环境下打包与运行二. Linux下部署SpringBoot项目2.1 Linux环境配置2.2 配置数据库2.3 运行程序 一. 本机环境下打包与运行项目进行打包 2. 本机环境下运行SpringBoot程序控制台进入SpringBoot项目jar包所在的文件夹,运行下面指令即可java -jar [项目的jar包名] 在浏览器上查看运行结果二. Linux下部署SpringB
一、基本定位 对比项 Vue React 框架类型 渐进式框架(framework) UI 库(library) 设计理念 模板驱动 + 双向绑定 函数式编程 + 单向数据流 官方工具链 Vue CLI / Vite / Pinia / Vue Router Create React App / N ...
AI 智能体指的是一种软件实体,它能够利用自然语言处理、机器学习或推理系统等人工智能技术,自主感知、推理和行动,以实现特定目标。 我为 Telex 开发了一个 AI 智能体,该智能体接收一个正则表达式模式,并就该模式所匹配的字符串类型提供易于理解的解释。开发此智能体的灵感源于我在此之前开发的一个 A ...
核心:“举一反三”的本质 “举一反三”的本质,不是聪明,而是一种可拆解的能力:“知识迁移”。 它由两部分构成: “举一”:抽象。 剥离掉具体例子(“一”)的无关信息(噪声),提取出其底层的“通用规律”(信号/模型)。 “反三”:应用。 遇到新问题(“三”),同样剥离其无关信息,识别出其“核心结构”, ...
1. 操作系统缓存在linux世界里,一切可读写设备都可看作是文件。文件cache设计的好坏直接影响着文件系统和磁盘的性能。最直观的是使用free命令看到的cached列。这里面的cached列就是操作系统缓存,操作系统会把空闲的内存拿来做缓存,提高系统性能。当然这里的cached不仅仅缓存文件的数据。操作系统的cache是通过page的方式管理的,内从管理系统分配和回收cache的最