SpringBoot国际化

SpringBoot国际化

1.目录结构

2.编写配置

在resource目录下新建目录i18n目录,并新建文件login.properties文件作为默认语言文件,再添加loginzhCN.properties文件和loginenUS.properties文件。 编写完成以后在其中添加需要的字段与对应的文字,可点击Resource Bundle按钮切换到此视图。

3.页面取值

在HTML文档中将值取出,本文采用thymeleaf语法。

语法:
    th:text="#{login.username}"
例:
    <label for="login-username" class="label-material" th:text="#{login.username}">User Name</label>

启动项目,在浏览器中通过修改浏览器的语言则可以看到语言的替换,但是无法做到点击按钮切换语言。

4.按钮替换

通常情况下是通过按钮来进行语言的替换,在前端发送请求的时候附带语言编码。

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

其中th:href="@{/(l='enUS')}"表示的意思为请求项目时附带语言编码为enUS。

5.配置路径

需要指明配置文件的路径,根据配置规则,在配置文件中配置如下:

spring:
 messages:
  basename: i18n.login

6.重写resolveLocale

新建类MyLocaleResolver,并实现接口LocaleResolver,重写其中的resolveLocale方法,主要是想获取请求的中的语言编码,如果没有附带则取本地的地区编码。
public class MyLocaleResolver implements LocaleResolver {

    @Override
    public Locale resolveLocale(HttpServletRequest httpServletRequest) {
        // 获取参数中的`l`
        String l = httpServletRequest.getParameter("l");
        // 设置为系统默认
        Locale locale = Locale.getDefault();
        if (!StringUtils.isEmpty(l)){
            // 设置为参数所带的地区和语言
            String[] s = l.split("_");
            locale = new Locale(s[0],s[1]);
        }
        return locale;
    }

    @Override
    public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {

    }
}  

到目前已经写好了后台处理程序,但是并没有注入到springboot中,springboot还是采用的默认的语言和地区,需要将此组件注入到springboot中。

7.注入springboot

在springMVC配置类中注入此组件。

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

8.启动测试

重启项目,点击按钮可以随意切换语言

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值