在之前开发当中配置国际化是比较繁琐的,下面我们看下SpringBoot如何快速的配置国际化,以及国际化又哪些用途、配置当中我们遇到了哪些"坑",遇到问题大家可以留言,会为大家一一解答。
国际化配置要点:
1)、编写国际化配置文件;
2)、使用ResourceBundleMessageSource管理国际化资源文件
3)、在页面使用fmt:message取出国际化内容(前端使用的是Thymeleaf)
(备注)可以自定义配置通过重写LocaleResolver实现切换效果
详细步骤
1.创建配置文件,其中包含中文、英文、默认等,然后在右侧写上相关配置即可(有以下几点需要注意)
此步骤注意点:
红线部分 1)现在的创建的配置文件放在了i18n目录下,自然目录可以更改 。
红线部分 2)写配置文件的时候中文如果不是utf-8编码,此时页面是会乱码的(下面会给出解决方案).
红线部分 3)点击Resource Bundle可快速添加我们要添加的配置项目
点击+号,然后在右侧输入信息即可
更改成Utf-8编码:File->Settings最下侧改成utf-8即可
更改整个项目的编码:如下图 File->other settings->default settings 更改下面编码即可
2.application.properties需要配置下i18n的路径位置,如下
spring.messages.basename=i18n.login
3.其实这样就可以用了,在页面上获取即可;部分代码如下
#非标签内写法
<div class="message">[[#{app.name}]]</div>
#th:placeholder 取出
<input name="account" th:placeholder="#{login.username}" value="datacenter" type="text" lay-verify="required" class="layui-input" >
#th:value取出
<input class="loginin" th:value="#{login.btn}" value="登录" lay-submit lay-filter="login" style="width:100%;" type="submit">
更改浏览器语言:显示效果如下(chrome 在高级设置中切换不同的语言显示也不同)
重点:如何手动切换语言呢
共2步骤:1.编写类实现LocaleResolver 2.Bean注入
package com.limp.framework.boss.component;
import org.springframework.lang.Nullable;
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;
/**
* @intro :
* @auth : shinians
* @time : 2018/12/22 15:36
* @website: www.shinians.com
*/
public class MyLocaleResolver implements LocaleResolver {
/**
* 编写相应的逻辑 l参数区分,
* l='zh_CN'
l='en_US'
* @param request
* @return
*/
@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 httpServletRequest, @Nullable HttpServletResponse httpServletResponse, @Nullable Locale locale) {
}
}
2.
现在就可以传递不同l参数进行切换语言了