博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot --根据配置文件切换语言
阅读量:3921 次
发布时间:2019-05-23

本文共 1870 字,大约阅读时间需要 6 分钟。

一、配置语言文件

在这里插入图片描述

在 resources 文件夹下创建一个文件夹local(自定义名称)来装三个配置文件

success_en_US.properties文件(英文)

success.name=Mr.Huang

success_zh_CN.properties(中文)

success.name=\u9EC4\u5FA1\u633A

success.properties(默认中文)

success.name=\u9EC4\u5FA1\u633A

其中success是根名

.name 是你需要中英文切换属性的属性值

spring.messages.basename=local/success

在application.properties文件中添加以上代码标识语言配置文件的位置

二、重写语言解析器方法

package handler;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.util.StringUtils;import org.springframework.web.servlet.LocaleResolver;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]); System.out.println(split[0]+" "+split[1]); } return locale; } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
// TODO Auto-generated method stub }}

创建一个MyLocaleResolver类实现LocaleResolver

其中 l 是指前端在地址栏后面的配置的参数, 值的格式是 zh_CN, zh是代表语言的, CN是代表国家的。

Locale locale = Locale.getDefault()表示如果没有相关参数就默认使用系统的语言。

但此时该方法返回的locale并没有添加到容器中, 即无法生效

三、将语言解析器对象添加到容器中生效

@Configurationpublic class MyMvcConfig extends WebMvcConfigurerAdapter{
Logger logger = LoggerFactory.getLogger(getClass()); @Bean public LocaleResolver localeResolver(){
logger.info("语言解析器已添加..."); return new MyLocaleResolver(); }}

创建MVC配置类。

写一个方法用@Bean标识并且返回刚才写的MyLocaleResolver类的对象, 表示将该类的对象添加到容器中, 此时springboot自动配置的语言解析器就失效,转为使用我们编写的语言解析器了。

四、前端

中文英文

eee

这里只要点击中文或英文 , 下面的success.name就会根据参数l的值来改变语言了。

转载地址:http://xuern.baihongyu.com/

你可能感兴趣的文章
使用 docker 构建分布式调用链跟踪框架skywalking
查看>>
Github Actions 中 Service Container 的使用
查看>>
别在.NET死忠粉面前黑.NET5,它未来可期!
查看>>
Winform 进度条弹窗和任务控制
查看>>
部署Dotnet Core应用到Kubernetes(二)
查看>>
持续交付二:为什么需要多个环境
查看>>
FreeSql接入CAP的实践
查看>>
浅析 EF Core 5 中的 DbContextFactory
查看>>
听说容器正在吃掉整个软件世界?
查看>>
真实经历:整整一年了,他是这样从程序员转型做产品经理的
查看>>
netcore一键部署到linux服务器以服务方式后台运行
查看>>
还在犹豫是否迁移.NET5?这几个项目已经上线了!
查看>>
被 C# 的 ThreadStatic 标记的静态变量,都存放在哪里了?
查看>>
ASP.NET Core使用HostingStartup增强启动操作
查看>>
结合控制台程序和K8S的CronJob完成定时任务
查看>>
WPF开发的实用小工具 - 快捷悬浮菜单
查看>>
.Net orm 开源项目 FreeSql 2.0.0
查看>>
IdentityServer4系列 | 简化模式
查看>>
小试YARP
查看>>
如何使用 C# 中的 HashSet
查看>>