SpringBoot整合国际化I18n

本文主要实现的功能:

  • 从文件夹中直接加载多个国际化文件
  • 后台设置前端页面显示国际化信息的文件

实现

国际化项目初始化,简单看下项目的目录和文件

i1H0b.png

在resource下创建国际化文件

  • messages.properties
  • messages_en_US.properties
  • messages_zh_CN.properties
配置引用国际化文件
spring.messages.basename=messages

如果是多个源的话,用","相隔即可。

spring.messages.basename=messages,xxx,xxxx,xxxx
创建常量类
public class I18nConstant {

    /**
     * 一个例子
     */
    public static final String TEXT = "DeviceSummary.device.type.name";

}

对应分别在三个国际化(默认、中文、英文)中加入DeviceSummary.device.type.name对应转换的语言

使用
  • 代码中使用
@Autowired  
private MessageSource messageSource;  
  
String msg = messageSource.getMessage(I18nConstant.TEXT, null, locale);  
  • 获取request的Locale
Locale locale1 = LocaleContextHolder.getLocale(); // 当前request
Locale locale2 = RequestContextUtils.getLocale(request); // 指定request
locale.getLanguage() //获取当前语言
  • 默认根据浏览器的语言设置来决定显示语言。一般应用多采用会话级别的语言设置SessionLocaleResolver。
@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
    sessionLocaleResolver.setDefaultLocale(Locale.CHINA);
    return sessionLocaleResolver;
}
  • 切换语言
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
    lci.setParamName("lang");
    return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

URL中通过参数lang就可以切换到不同语言。比如:http://localhost:8080/hello.html?lang=zh

转载于:https://www.cnblogs.com/liuyupen/p/10840125.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值