RuoYi-Vue 前后端分离版代码浅析-登录逻辑-i18n

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

前言

本节介绍RuoYi-Vueruoyi-admin模块中的系统登录模块SysLoginController 部分的代码,这个接口中都是和登录相关的逻辑,登录这里才是一个系统最为精髓的地方,普通的增删改查也可以,使用oauth2,使用cas,各种各样的登录代码体现了不同的设计思路和技术功底,但是跳不过的是如何返回提示信息给调用方,如果只有一种语言,肯定无法帮助我们实现服务多种语言的用户的想法。所以本节我们介绍Ruoyi中的文本国际化的代码。

internationalization(i18n)

我们讨论文本国际化时不可避免就要说到i18n,可能很多人都不了解为什么要叫i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数,主要是为了拼写简单,所以我们简写为i18n。

前端实现i18n

前端实现i18n根据你使用的框架可以使用vue i18n,也可以使用jquery-i18n-properties

后端实现i18n

Ruoyi中为了实现文本国际化,直接使用了Spring 中自带的MessageSourceLocaleContextHolder来帮助简化国际化。在Common层中有MessageUtils这个帮助类可以简化我们的国际化之路。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
java复制代码import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;


/**
* 获取i18n资源文件
*
* @author ruoyi
*/
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());
}
}

在我们的application.yml中我们需要进行属性的配置

1
2
3
4
5
6
java复制代码# Spring配置
spring:
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages

将需要使用的语言文件放入resources中的i18n/messages这里就可以了

image.png

当我们需要使用的时候

1
2
3
4
5
6
7
8
9
java复制代码@RestController
@RequestMapping("/api")
public class TestController {

@PostMapping("/test")
public String test() {
return MessageUtils.message("user.login.success");
}
}

对应的提示语需要在两个语言文件中都进行配置

1
2
3
4
yml复制代码默认
user.login.success=登录成功
en中
user.login.success=loginsucess

当我们调用的时候在header中添加上Accept-Language=en时,可以看到返回的提示语已经是英文了。

image.png

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%