1. 概述

spingboot的国际化支持已经非常的简化了,经过简单配置就可以使用,非常的方便。

2. 创建配置文件

2.1 在resources目录下建一个i18n文件夹,并按照如图所示新建3个配置文件

messages.properties:是默认的配置文件,里面可以不写,但是文件必须存在,否则不能正常 使用
messages_zh_CN.properties:中文的配置文件
messages_en_US.properties:英文的配置文件

可以创建多个属性文件,比如 messages,system等等。

2.2 在配置文件中填写对应的提示信息

3. application.yml文件的配置

配置内容如下:

spring:
  messages:
    basename: i18n/messages
    encoding: UTF-8

basename 如果指定多个文件,那么可以使用逗号分隔。

basename: i18n/messages,i18n/system

4. 调用

4.1 设置请求头

代码如下:

config.headers['Accept-Language'] = window.localStorage.getItem("lang");

4.2 在BaseController提供方法

 @Autowired
    private  MessageSource messageSource;

    /**
     * 根据键返回国际化消息。
     * @param key  键
     * @return
     */
    public String getMessage(String key){
        return getMessage(key,null);
    }


    /**
     * 根据键返回国际化消息。
     * @param key  键
     * @param args  比如国际化的消息 为如下形式  A {0} B {1}.
     *              调用方法为 getMessage("abc","AA","BB");
     * @return
     */
    public String getMessage(String key,Object[] args){
        return messageSource.getMessage(key,args, LocaleContextHolder.getLocale());
    }

4.3 测试使用

在控制器添加测试方法

@GetMapping("/getMessage")
    public String getMessage() {
        String str=this.getMessage("login.name");
        String sys=this.getMessage("sys.name");
        return str;
    }

4.4 通过postman测试

我们设置请求头进行测试,比如 zh-CN,en-US等

5. springboot 使用i18n进行国际化乱码解决

在IDEA开发工具中,修改当前编译器的编码为UTF-8,快捷键ctrl+alt+s,在Editor->File Encoding中设置,具体设置如图所示:

文档更新时间: 2021-08-03 15:43   作者:朱方华