SpringBoot配置i18n国际化

国家化:也就是说你当前操作系统是什么语言,对于的前台页面的文字、后台返回的提示等也是对应的语言。

这里主要是介绍后台如何根据不同的语言返回对应的提示。

版本:
springboot: 2.1.7.RELEASE

步骤:

1.配置application.yml

spring:
  # 资源信息
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
    #配置为true表示如果在message.properties找不到key也不会抛出异常。
    use-code-as-default-message: true

2.编写配置的提示文件。
在resources下,建一个目录i18n,然后新建两个文件messages.properties 和 messages_en.properties。其中messages.properties是中文的,messages_en.properties是英文的。配置如下:

messages.properties

not null=不能为空

messages_en.properties

not null=must not null

3.编写一个工具类,获取properties里的提示信息:

package com.kaile.usercenter.common.utils;

import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;

/**
 * 获取i18n资源文件
 * 
 * @author Honey
 */
public class MessageUtils {
    /**
     * 根据消息键和参数 获取消息 委托给spring messageSource
     *
     * @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.编写一个Controller测试

@Api(tags = {"范例"})
@RestController
@RequestMapping("/sample")
public class SampleController {

    @GetMapping ("/hello")
    @ApiOperation(value = "测试无数据接口", notes = "测试无数据接口",httpMethod = "GET")
    public String hello() {
        return "hello kaile!";
    }

    @GetMapping("/testI18n")
    public String test() {
        String message = MessageUtils.message("not.null");
        return message;
    }
}

5.使用postman请求测试。

注意加上请求头Accept-Language , en为英文。zh或不加这个请求头默认获取当前系统的(中文)

SpringBoot配置i18n国际化_第1张图片
改成zh或不加,获取中文。

SpringBoot配置i18n国际化_第2张图片

你可能感兴趣的:(spring,boot,i18n)