首页 > 编程语言 >【Java】【SpringBoot】i18n国际化

【Java】【SpringBoot】i18n国际化

时间:2024-10-28 09:43:25浏览次数:3  
标签:Java SpringBoot sys i18n message config public String

前提

SpingBoot项目

已添加Web依赖

步骤

  1. 打开资源管理器(resources)新建i18n文件夹。右击,创建资源包。

当然,后续也可以添加语言包

注:名称一定要messages

  1. 向资源包添加学习区域

  2. 设置对应配置文件语言信息

    中文简体(messages_zh_cn.properties)

    sys.config.newParameters=新增参数
    sys.config.changeParameters=修改参数
    sys.config.newParametersExists=失败,参数键名已存在
    

    中文繁体(message_zh_tw.properties)

    sys.config.newParameters=新增參數
    sys.config.changeParameters=修改參數
    sys.config.newParametersExists=失敗,參數鍵名已存在
    

    英文(message_en_us.properties)

    sys.config.newParameters=New parameters
    sys.config.changeParameters=Modify parameters
    sys.config.newParametersExists=Failed, parameter key name already exists
    
  3. 获取i18n资源文件(这里引用了SpringUtil (Sping工具类))

    import com.example.demo1.utils.spring.SpringUtils;
    import org.springframework.context.MessageSource;
    import org.springframework.context.i18n.LocaleContextHolder;
    
    /**
     * 获取i18n资源文件
     * @Author:lyj
     * @Package:com.example.demo1.utils
     * @Project:demo
     * @name:MessageUtils
     * @Date:2024/10/25 11:42
     * @Filename:MessageUtils
     */
    public class MessageUtils {
        /**
         * 根据消息键和参数, 获取消息委托给Spring message Source
         * @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());
        }
    }
    
  4. 系统配置文件(application.yml)资源路径配置

    spring:   
      messages:
        basename: static/i18n/messages
    
  5. 新建国际化配置类

    /**
     * 国际化(i18n)配置类
     * @Author:lyj
     * @Package:com.example.config
     * @Project:demo
     * @name:I18nConfig
     * @Date:2024/10/25 13:54
     * @Filename:I18nConfig
     */
    @Configuration
    @Slf4j
    public class I18nConfig implements WebMvcConfigurer {
    
        @Bean
        public LocaleResolver localeResolver(){
            SessionLocaleResolver slr = new SessionLocaleResolver();
            // 默认语言
            slr.setDefaultLocale(new Locale("zh","cn"));
            return slr;
        }
    
        @Bean
        public LocaleChangeInterceptor localeChangeInterceptor(){
            LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
            // 参数名
            lci.setParamName("lang");
            return lci;
        }
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            // 创建一个自定义国际化拦截器实例
            registry.addInterceptor(localeChangeInterceptor());
            WebMvcConfigurer.super.addInterceptors(registry);
        }
    }
    

测试

普通的测试方法

    @Autowired
    MessageSource messageSource;

    /**
     *
     * @author lyj
     * @date 2024-10-25
     */
    @Test
    public void test(){
        System.out.println(LocaleContextHolder.getLocale());    // zh_CN
        String message = messageSource.getMessage("message",null,LocaleContextHolder.getLocale());  // "消息"
        String message_en_us = messageSource.getMessage("message",null, Locale.US);     // "message"
        System.out.println(message);
        System.out.println(message_en_us);
    }

使用接口

@RestController
public class I18nController {
    @Autowired
    MessageSource messageSource;
    @GetMapping("/message")
    public  String getMessage(String msg){
        return MessageUtils.message(msg);
    }
}

默认调用中文:

修改头文件(Accept-header,可以获取到不同的值)
![](/i/l/?n=24&i=blog/1602649/202410/1602649-20241028094853640-1844430509.png

application.properties页面配置

spring.thymeleaf.mode=HTML
spring.thymeleaf.cache=false

标签:Java,SpringBoot,sys,i18n,message,config,public,String
From: https://www.cnblogs.com/luyj00436/p/18509706

相关文章

  • JAVA开源项目 基于Vue和SpringBoot甘肃非物质文化网站
    本文项目编号T042,文末自助获取源码\color{red}{T042,文末自助获取源码}......
  • JAVA开源项目 基于Vue和SpringBoot网上购物商城
    本文项目编号T041,文末自助获取源码\color{red}{T041,文末自助获取源码}......
  • 实例代码演示教你如何免费获取股票数据(用python、JavaScript等多种语言获取实时数据、
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • java+SSM+mysql缴税管理系统70555-计算机毕设 原创毕设选题推荐(免费领源码)
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,缴税管理系统的信息通过网络进行信息管理掀起了热潮,所以针对管理的用户需求......
  • 【java】java的基本程序设计结构04-数值类型的转换
    类型默认值int, short, long, byte 的默认值是0。char 的默认值是 \u0000(空字符)。float 的默认值是 0.0f。double 的默认值是 0.0d。boolean 的默认值是 false。引用类型(类、接口、数组)的默认值是 null。引用类型在Java中,引用类型的变量非常类似于C/C++的指针......
  • JavaScript中reduce()详解及使用方法
    reduce()方法接收一个函数做为累加器,数组中的每一个值(从左到右)开始缩减,最终计算为一个值,下面这篇文章主要给大家介绍了关于JavaScript中reduce()详解及使用方法的相关资料,需要的朋友可以参考下reduce():reduce()方法为归并类方法,最常用的场景就是,计算数组中的每一项的总和。r......
  • RabbitMQ之Java客户端的使用
    一、前言RabbitMQ支持多种语言访问,本次介绍RabbitMQJavaClient的一些简单的api使用,如声明Exchange、Queue,发送消息,消费消息,一些高级api会在后面的文章中详细的说明。二、项目实战1.引入依赖<dependency><groupId>com.rabbitmq</groupId><artifa......
  • 基于Springboot+Vue的候鸟监测数据管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • 基于Springboot+Vue的企业绩效考核管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能该系统......
  • Java 中的 队列(Queue)与双端队列(Deque)
    这篇笔记期初是因为在刷算法题的过程中,发现其他解题方法很多地方有采用栈或者队列来解题,我在这方面比较薄弱,特此学习记录一下。关于队列,我的初始印象就是先进先出,但是通过学习,了解到队列还有双端队列(Deque)、优先队列(PriorityQueue)等类型,不同的队列有不同的进出规则。 队列(Qu......