java setlocale 国际化_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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值