springboot国际化多语言配置

news/2024/12/4 20:18:47/

文章目录

    • 概要
    • springboot项目为例
      • 1 新建路径/文件
      • 2 新建两个配置类
    • 搞一个控制器测试
    • 总结

概要

项目中有时候会用到多语言的业务场景; 一般来说都是通过后端实现的,将先有内容替换为适用的环境语言;

springboot项目为例

1 新建路径/文件

  • 新建路径static/i18n
  • 新建文件: messages.properties messages_en_US.properties messages_zh_CN.properties
    效果图
    内容
    文件内容如下:

demo=登录
demo=login

2 新建两个配置类

  • LocalConfig 配置默认语言解析, 指定获取参数名
@Configuration
public class LocalConfig {/*** 默认解析器 其中locale表示默认语言*/@Beanpublic LocaleResolver localeResolver() {SessionLocaleResolver localeResolver = new SessionLocaleResolver();localeResolver.setDefaultLocale(Locale.CHINA);return localeResolver;}/*** 默认拦截器 其中lang表示切换语言的参数名*/@Beanpublic WebMvcConfigurer localeInterceptor() {return new WebMvcConfigurer() {@Overridepublic void addInterceptors(InterceptorRegistry registry) {LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();localeInterceptor.setParamName("lang");  //拦截lang参数registry.addInterceptor(localeInterceptor);}};}}
  • LocalUtil 将springbean获取并用于静态方法,方便后续调用
@Component
public class LocalUtil {private static MessageSource messageSource;public LocalUtil(MessageSource messageSource) {LocalUtil.messageSource = messageSource;}/*** 获取单个国际化翻译值*/public static String get(String msgKey) {try {return messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());} catch (Exception e) {return msgKey;}}
}

搞一个控制器测试

@RestController
@RequestMapping("lang")
public class LangController {@RequestMapping("get")public String get(){return LocalUtil.get("demo");}
}

咱们直接访问这个接口看效果;

  • 直接访问,返回登录(默认解析)
  • 传参数en_US,返回 login (英文)
  • 传参数zh_CN,返回登录(中文)
    三种效果图

总结

如此做之后,就可以实现,多语言了,不过要做的事情还很多,相当于你所有页面要展示的词汇,都需要放到这里三个配置文件中搞一遍,才可以


http://www.ppmy.cn/news/87436.html

相关文章

Cadence+SPB16.2入门教程(上)

第1章焊盘制作 1.1用Pad Designer制作焊盘 Allegro中制作焊盘的工作叫Pad Designer,所有SMD焊盘、通孔焊盘以及过孔都用该工具来制作。 打开程序->Cadence SPB 16.2->PCB Editer utilities->Pad Designer,弹出焊盘制作的界面,如图1.1所示。 在Units下拉框中选择…

miniconda安装+pycharm安装

miniconda安装pycharm安装 1.miniconda安装2.pycharm安装3.pycharm环境配置 1.miniconda安装 miniconda下载路径:https://docs.conda.io/en/latest/miniconda.html 打开后选择对应的电脑系统及python版本下载 下载完成后双击运行 选择安装路径,记住安装…

Python自动化对每个文件夹及其子文件夹的Excel表加个表头(Excel不同名且有xls文件)...

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 惟将旧物表深情,钿合金钗寄将去。 大家好,我是皮皮。 一、前言 上一篇文章,我们抛出了一个问题,这篇文章…

探索未来:物联网的无限可能

连接万物,创造未来。从智能家居到智慧医疗,从智能车联到智慧城市,物联网技术的影响已经悄然渗透到了我们的方方面面。欢迎大家积极讨论联网技术如何影响了我们的生活。 物联网技术概述 物联网技术(Internet of Things&#xff0…

日语文法PPT截图31-45

31 形式名词 とき ところ 作为形式名词的话,一般是要写假名不写汉字的 相对时态 如果是一般时/将来时とき,就是先做后面的动作,在做前面的动作。 出教室的时候,关灯。 如果是过去时とき那么,是先做前面的动作&#…

OJ练习第116题——二进制矩阵中的最短路径(BFS)

二进制矩阵中的最短路径 力扣链接:1091. 二进制矩阵中的最短路径 题目描述 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通路径 是一条从 左上角 单元格&am…

vector模拟

先来看看vector的源码&#xff0c;string没有看是因为string严格意义上来讲不属于STL。 源代码之间也是存在区别的&#xff0c;大同小异&#xff0c;可以去网上查如何下载STL的源码库。 先看看<vector>文件中的内容&#xff08;当做参考即可&#xff09;&#xff1a; 内容…

【Java8新特性--->异步处理】CompletableFuture

一、引入 假设一个商品详情页需要以下操作&#xff1a; 查询展示商品的基本信息耗时&#xff1a;0.5s 查询展示商品的销售信息耗时&#xff1a;0.7s 查询展示商品的图片信息耗时&#xff1a;1s 查询展示商品销售属性耗时&#xff1a;0.3s 查询展示商品规格属性耗时&#xff1a…