SpringBoot国际化

本文主要讲解国际化的实现 基于spring boot的2.1.7版本
步骤:
1)、编写国际化配置文件,抽取页面需要显示的国际化消息
在这里插入图片描述
2),SpringBoot自动配置好了国际化资源文件,其默认的配置文件路径是messages.properties;配置文件放在此路径下直接生效;但一般情况下会更改默认的配置文件路径。例如本例中的配置文件路径。
所以需要在配置文件中进行修改:

spring.messages.basename=i18n.login

在这里插入图片描述

3)去页面获取国际化值:
使用thymeleaf语法获取
在这里插入图片描述
4)国际化原理
国际化Locale(区域信息对象);LocaleResolver(获取区域信息对象);

	@Bean
	@ConditionalOnMissingBean
	@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
	public LocaleResolver localeResolver() {
	if (this.mvcProperties
	.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
	return new FixedLocaleResolver(this.mvcProperties.getLocale());
	}
	AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
	localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
	return localeResolver;
	}
	**默认的就是根据请求头带来的区域信息获取Locale进行国际化**

5)根据区域化信息进行国际化的切换

	<a class="btn btn-sm" th:href="@{/(l='zh_CN')}">中文</a>
	<a class="btn btn-sm" th:href="@{/(l='en_US')}">English</a>

创建MyLocaleRes类实现LocaleResolver接口进行国际化判断

public class MyLocaleRes implements LocaleResolver {
    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String sum = request.getParameter("l");
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(sum)){
            String[] spilt = sum.split("_");
            locale = new Locale(spilt[0],spilt[1]);
        }
        return locale;
    }
    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    }
}

6)将MyLocaleRes 组件加入IOC

  @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleRes();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值