SpringBoot i18n demo

一、说明

最近接到的需求是项目国际化,然后对这个国际化进行初步调研,以下是对调研的内容做整理。

前后端分离的国际化方案,如果每个接口都增加参数,代码会变成冗余,所以最好把语言变量加到请求头。除了请求头,也可以通过cookie实现,但是有些客户端不支持cookie,而且cookie存在被篡改的危险,因此更建议使用标准的请求头。

具体过程如下:

1,客户端增加请求头 Accept-Language。

2,服务端配置国际化资源文件。

3,服务端通过当前请求的Accept-Language对应值,决定使用哪一个区域的语言,找到相应的资源文件,格式化处理,然后返回给客户端。

二、基本使用

相关依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置Resouce bundle messages

 测试代码

@RestController
public class LanguageController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping("/ping")
    public String ping(){
        return "pong";
    }

    @GetMapping("/currentLanguage")
    public String currentLanguage(){
        return LanguageUtil.getCurrentLang();
    }

    @GetMapping("/i18n")
    public String i18n(){
        return messageSource.getMessage("title", new Object[]{"A","B"}, LocaleContextHolder.getLocale());
    }
}

三、基本原理解析

SpringBoot 对于国际化的支持,默认是通过 AcceptHeaderLocal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值