天天看点

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

文章目录

    • 1.新建一个Resourse Bundle
    • 2. 自定义WebMvcConfigurer类来实现国际化配置
    • 3. 测试使用
    • 4. 获取i18n资源文件工具类
本章结束后对应的节选代码文件:

Gangbb-Vue-07-i18n

项目地址:https://github.com/Gang-bb/Study-Record/tree/main/Gangbb-Vue

历史遗留TODO:

  • 第四章
  1. 登录日志还未实现。(到登录和权限模块完成)
  2. LogAspect

    从缓存获取当前的用户信息使用模拟的数据(到登录和权限模块完成)
本章将留下TODO:
本章将解决TODO:

若依官网对这方面的文档写的不是很清楚!

1.新建一个Resourse Bundle

  1. Gangbb-admin

    resources

    目录下新建

    i8n

    文件夹储存所有国际化文本属性。
  2. 新建一个 messages

    Resourse Bundle

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

添加中英文语言简称:

zh_CN
en_US
           
从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理
  1. 随便在文件中添加一个测试属性
从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

2. 自定义WebMvcConfigurer类来实现国际化配置

后面还会使用到这个类,注册一些拦截器

/**
 * @author : Gangbb
 * @ClassName : WebMvcConfig
 * @Description : 自定义WebMvcConfigurer类来扩展springmvc的功能
 * @Date : 2021/3/9 15:22
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    /**
     * 注册拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        // 注册Locale拦截器(国际化)
        registry.addInterceptor(getLocaleChangeInterceptor());
    }

    /**
     * Locale拦截器(国际化)
     * @return
     */
    public LocaleChangeInterceptor getLocaleChangeInterceptor(){
        // 定义一个拦截器
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        // 拦截请求中 key 为 lang 的参数
        interceptor.setParamName("lang");

        return interceptor;
    }
    /**
     * 默认解析器 其中locale表示默认语言
     */
    @Bean
    LocaleResolver localeResolver() {
        //替换掉默认的 AcceptHeaderLocaleResolver
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        //设置默认语言为简体中文
        localeResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return localeResolver;
    }
}
           

3. 测试使用

@RestController
@RequestMapping("/test/exception")
public class TestExceptionController {
    @Autowired
    MessageSource messageSource;

    /**
     * 测试i8n国际化
     * 传入参数lang 决定中英文环境
     * @return
     */
    @GetMapping("/i8n")
    public String testI18n(){

        return messageSource.getMessage("exception.default", null, LocaleContextHolder.getLocale());
    }
}
           

默认情况:

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

标明英文

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

标明中文:

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

也可以控制写死为中/英文:

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理

4. 获取i18n资源文件工具类

目的是为了可以在非Spring应用上下文环境下获取i18n资源文件

/**
 * @author : Gangbb
 * @ClassName : MessageUtils
 * @Description : 获取i18n资源文件
 * @Date : 2021/3/9 15:36
 */


public class MessageUtils
{
    /**
     * 根据消息键和参数 获取消息 委托给spring messageSource
     * @param key 消息键
     * @param args 参数
     * @return 获取国际化翻译值
     */
    public static String getMessage(String key, Object... args)
    {
        MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
        return messageSource.getMessage(key, args, LocaleContextHolder.getLocale());
    }
}
           

使用示例:

从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理
从零搭建若依(Ruoyi-Vue)管理系统(7)--国际化消息处理