springboot国际化多语言配置方式

 更新时间:2024年04月03日 11:06:39   作者:寂寞旅行  
这篇文章主要介绍了springboot国际化多语言配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

概要

项目中有时候会用到多语言的业务场景;

一般来说都是通过后端实现的,将先有内容替换为适用的环境语言;

springboot项目为例

1 新建路径/文件

  • 新建路径static/i18n
  • 新建文件: messages.properties messages_en_US.properties messages_zh_CN.properties

效果图

内容

文件内容如下:

demo=登录demo=login

2 新建两个配置类

LocalConfig 配置默认语言解析, 指定获取参数名

@Configuration
public class LocalConfig {

    /**
     * 默认解析器 其中locale表示默认语言
     */
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setDefaultLocale(Locale.CHINA);
        return localeResolver;
    }

    /**
     * 默认拦截器 其中lang表示切换语言的参数名
     */
    @Bean
    public WebMvcConfigurer localeInterceptor() {
        return new WebMvcConfigurer() {
            @Override
            public 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,返回登录(中文)

三种效果图

总结

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • sharding-jdbc中的事务详细解读

    sharding-jdbc中的事务详细解读

    这篇文章主要介绍了sharding-jdbc中的事务详细解读,sharding-jdbc在分库分表方面提供了很大的便利性,在使用DB的时候,通常都会涉及到事务这个概念,而在分库分表的环境上再加上事务,就会使事情变得复杂起来,需要的朋友可以参考下
    2023-12-12
  • springboot3.x版本集成log4j冲突以及解决log4j冲突不生效问题

    springboot3.x版本集成log4j冲突以及解决log4j冲突不生效问题

    由于Spring Boot自带的Logback与Log4j冲突,去除了Logback的jar包后仍存在,原因是其他包也引入了Logback,解决方法是找到并去除引入Logback的其他包,如actuator包,并更新Maven
    2024-11-11
  • SpringBoot读取resource目录下文件失败的原因及解决方案

    SpringBoot读取resource目录下文件失败的原因及解决方案

    在idea中运行时,有些resource下文件读取工具类能够正常获取读取到文件,但是通过java–jar的方式去运行jar包,此时resource下文件读取工具类读取文件就失效了,本文就给大家介绍一下SpringBoot读取resource目录下文件失败解决方案,需要的朋友可以参考下
    2023-08-08
  • JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等

    JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等

    这篇文章主要介绍了JDBC连接MySql数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能,需要的朋友可以参考下
    2018-05-05
  • Java中IO流详解

    Java中IO流详解

    这篇文章主要介绍了java中的IO流详细解读,需要的朋友可以参考下
    2017-04-04
  • Java实现多选批量删除功能(vue+Element)

    Java实现多选批量删除功能(vue+Element)

    这篇文章主要为大家详细介绍了Java实现多选批量删除功能,包括前端vue实现代码文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringBoot中的ImportSelector类动态加载bean详解

    SpringBoot中的ImportSelector类动态加载bean详解

    这篇文章主要介绍了SpringBoot中的ImportSelector类动态加载bean详解,ImportSelector接口是spring中导入外部配置的核心接口,根据给定的条件(通常是一个或多个注释属性)判定要导入那个配置类,在spring自动化配置和@EnableXXX中都有它的存在,需要的朋友可以参考下
    2024-01-01
  • Java实现的获取和判断文件头信息工具类用法示例

    Java实现的获取和判断文件头信息工具类用法示例

    这篇文章主要介绍了Java实现的获取和判断文件头信息工具类,结合实例形式分析了Java针对文件读取及头信息判断相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • JDK 7U15在 Windows x86平台下的安装方法

    JDK 7U15在 Windows x86平台下的安装方法

    本文给大家分享的是如何在windows平台下安装JDK最新版的方法,十分的简单全面,有需要的小伙伴可以参考下
    2016-05-05
  • Java实现异步执行的8种方式总结

    Java实现异步执行的8种方式总结

    这篇文章主要给大家介绍了关于Java实现异步执行的8种方式,异步编程不会阻塞程序的执行,它将耗时的操作提交给后台线程或其他执行环境,并立即返回,使得程序可以继续执行其他任务,需要的朋友可以参考下
    2023-09-09

最新评论