Spring boot国际化切换

国际化切换

根据浏览器,语言设置的信息
自动的切换国际化支持

也可以根据用户选择
来切换国际化支持

Locale,表示区域信息对象
LocaleResolver,用来获取区域信息对象

自动配置
WebMvcAutoConfiguration
localeResolver
这里写图片描述
如果,配置了
就用固定的

如果,没有配置
就使用AcceptHeaderLocaleResolver
这里写图片描述
AcceptHeaderLocaleResolver

resolveLocale
解析区域信息

解析方式,从request请求头中,获取区域信息
默认,就是根据请求头

带来的区域信息,获取Locale进行国际化
这里写图片描述
点击连接,实现切换国际化
可以更换掉,区域信息解析器

使用自定义的区域信息解析器
不使用默认的

实现方式
可以在连接上携带,区域信息

<button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login.btn}">Sign in</button>
<p class="mt-5 mb-3 text-muted">© 2017-2018</p>
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>

这里写图片描述
区域信息解析器
MyLocaleResolver
判断参数l的值,是否为空

如果,为空
使用系统默认的区域信息解析器

如果,不为空
获取区域信息,语言代码+国家代码

使用自定义的区域信息解析器

package com.atguigu.springboot.component;

import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

/**
 * 可以在连接上携带区域信息
 */
public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest request) {
        String l = request.getParameter("l");
        Locale locale = Locale.getDefault();
        if(!StringUtils.isEmpty(l)){
            String[] split = l.split("_");
            locale = new Locale(split[0],split[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {

    }
}

添加到容器
默认的解析器

根据@ConditionalOnMissingBean
检查已经存在区域信息解析器
就不再创建,默认的解析器

//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//@EnableWebMvc   全面接管SpringMVC
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {

    @Bean
    public LocaleResolver localeResolver() {
        return new MyLocaleResolver();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值