SpringBoot通过获取请求参数或者Headers上的特殊标识实现i18n国际化

实现效果

我们大部分都是把i18n的标识放在Headers上面;而把标识放在参数上的话比较少,放参数上的话一般是在使用a标签下载某些文件不好配置请求头的时候才使用上

配置在Headers上面:

 配置在params上面:

 

配置代码:


/*** i18n配置,用于处理语言本地化设置。** @author liuyanqiang* @version 1.0.0* @since 2023/06/15 09:41**/
@Configuration
public class I18nConfig implements LocaleResolver {/*** 根据请求中的Accept-Language头部解析出语言设置。* 如果没有指定语言或语言设置不完整,则默认为中文设置。** @param request HTTP请求对象* @return {@link Locale } 解析后的语言设置Locale对象* @author liuyanqiang* @since 2023/06/15 09:42**/@Overridepublic Locale resolveLocale(HttpServletRequest request) {// 默认语言设置为中文Locale locale = Locale.CHINA;// 从请求的头部获取Accept-Language标头,该标头指定了客户端期望的语言String language = request.getHeader("Accept-Language");String lang = request.getParameter("lang");if (StringUtils.isNotBlank(lang)) {language = lang;}// 检查请求的语言是否非空if (StringUtils.isNotBlank(language)) {// 将语言字符串拆分为语言和国家/地区代码String[] splitLanguage = language.split("_");// 检查是否有语言和国家/地区代码if (splitLanguage.length > 1) {// 根据语言和国家/地区代码创建新的Locale对象locale = new Locale(splitLanguage[0], splitLanguage[1]);}}// 返回解析得到的Locale对象作为解析后的语言设置return locale;}/*** 设置语言设置时的回调方法。* 在此实现中,不执行任何操作,忽略对语言设置的更改。* @param request HTTP请求对象* @param response HTTP响应对象* @param locale 语言设置的Locale对象* @author liuyanqiang* @since 2023/06/15 09:43**/@Overridepublic void setLocale(HttpServletRequest request,HttpServletResponse response,Locale locale) {// 此方法不执行任何操作,忽略对语言设置的更改}/*** 创建LocaleResolver bean,用于处理语言设置。** @return {@link LocaleResolver }* @author liuyanqiang* @since 2023/06/15 09:44**/@Beanpublic LocaleResolver localeResolver() {// 返回当前类作为LocaleResolver的实例return new I18nConfig();}
}

三套语言环境(分别为默认、老挝语、中文):

 使用方式:

可能需要提前封装一个MessageUtils.message()方法

public class MessageUtils {/*** 根据消息键和参数 获取消息 委托给spring messageSource** @param code 消息键* @param args 参数* @return 获取国际化翻译值*/public static String message(String code, Object... args) {MessageSource messageSource = SpringUtils.getBean(MessageSource.class);return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());}/*** 获取i18n状态** @return {@link String }* @author liuyanqiang* @since 2023/06/28 11:53**/public static String i18nState() {return LocaleContextHolder.getLocale().toString();}
}

 当然,要是把i18n国际化的翻译文件放在数据库另说,但是原理都是一样的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/12877.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT Prompting开发实战(一)

第7章 ChatGPT Prompting开发实战 7.1 Prompting在LangChain框架中的应用 本节跟大家讲提示工程(Prompt Engineering),主要基于工业级的源码以及具体的项目,无论是工程人员,还是不具有技术背景的人员,大家多少都听说过提示词,或者频繁使用过,简单而言,当我们使用OpenA…

CleanMyMac X4.13中文版mac电脑优化加速工具

CleanMyMac X 可以卸掉系统的额外负担 让您的电脑明显提速 不要再因为运行缓慢的 Mac 而拖慢您的效率。CleanMyMac X已经正式发布,作为最新的系统清理和应用管理软件,可以让用户一键智能化清理Mac电脑,自动扫描Mac上的所有文件,包…

谈谈mysql——主从模式下的同步方式及半同步、MGR的部署方式

MySQL的复制模式 异步复制 MySQL的复制方式默认是异步的,主从复制涉及三个线程 master I/O master I/O线程负责写入Binlog,并将执行结果返给客户端,至于Binlog有没有被IO线程读取,读取后有没有重放,重放有没有成功&…

数据库之表的创建及数据类型

目录 创建表 简单语法: 固定格式: 案例 数据类型 文本类型 文本型 字符串型 二进制文本 枚举型 集合型 数字类型 整数型 浮点型 Date类型 DATE()日期 DATETIME() 日期和时间的组合 TIMESTAMP() 时间戳 TIME() 时间 YEAR() 2 位或 4 位…

低代码平台的价格范围及购买成本分析

Zoho Creator是一款强大而灵活的低代码应用程序开发平台,可帮助企业快速、高效地创建各种应用程序。但是,很多人可能会担心它的价格问题。在这篇文章中,我们将深入探讨Zoho Creator的定价策略和计划,以帮助您更好地理解其价格结构…

Android Studio 和 Android Gradle 插件的已知问题

Android Studio 的已知问题 渲染 Compose 预览时出错 从 Android Studio Chipmunk 开始,如果您在问题面板中看到 java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner 或 java.lang.ClassNotFoundException: androidx.savedstate.R$id,…

SIP 协议的主要流程

目录 SIP 协议的呼叫模型图 基本呼叫建立流程 基本呼叫拆除流程 经过代理的呼叫建立流程 经过代理的呼叫拆除流程 SIP 协议在软交换 SoftX3000(华为推出的一个支持sip协议的交换机设备) 流程图 SIP 协议的呼叫模型图 MGC 负责将 PSTN 前向信令映射…

51单片机--点亮LED灯和流水灯

文章目录 前言LED模块的原理点亮一个LED灯LED灯的闪烁LED流水灯 前言 大家好,这里是诡异森林。我使用的是普中科技的A2的51开发板,适合新手入门。用到的应用是Keil5和Stc-isp,第一个软件主要用来写代码的,第二个是将代码程序输送…

宝塔 安装/使用Apollo(阿波罗)参数配置中心-图文小白教程

官方安装教程手册:Apollo apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的…

Langchain的新课程;Mozilla开发的AI文档工具遭到开发者批评

🦉 AI新闻 🚀 Mozilla开发的AI文档工具遭到开发者批评,已下线 摘要:Mozilla开发的基于生成式AI的工具AI Help在开发者群体中遭到广泛批评。开发者认为该工具提供的信息常常错误,甚至认为它没有这个功能反而更好。针对…

win10 python3.7 pycharm安装dlib库报错

使用pycharm安装dlib一直报错 心态有点崩 好在没有放弃 解决了 报错 note: This is an issue with the package mentioned above, not pip. hint: See above for output from the failure. 解决:直接好用的就是安装.whl文件 将下载好对应Python3.7版本的.whl…

无线基站与无线频谱资源

文章目录 基站的主要组成天线馈线(电缆线)RRU(射频拉远单元,Remote Radio Unit)BBU(室内基带处理单元,Building Base band Unit)AAU(有源天线单元,Active Ant…