#Springboot第四天 4/11
##i18n配置
1、在resource目录下建立配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fiQa8zDG-1618111856250)(file:///C:\Users\86130\AppData\Roaming\Tencent\Users\1765772391\QQ\WinTemp\RichOle\MGJ()]3Y$0[Q9KCD8K]EOED1.png)
社区版本的idea可视化要从US的配置开始,用键值对的形式赋值
login.tip=Please sign in
login.password=Password
login.remember=Remember me
login.sign=Sign In
2.在配置文件中声明上述配置的真实位置
#message的真实地址
spring.messages.basename=i18n.login
3.在前端页面中修改各个标签、按钮值得来源,以修改index为例
链接 <link th:href="@{/css/image}"
文本<h1 th:text="#{login.sign}"
<input type="password" class="form-control" th:placeholder="#{login.password}" required="">
<div class="checkbox mb-3">
单选框、按钮
<label>
<input type="checkbox" value="remember-me"> [[#{login.remember}]]
<button class="btn btn-lg btn-primary btn-block" type="submit">[[#{login.sign}]]</button>
#从前端发请求提交请求参数给后端处理
<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>
重点 用来处理服务器请求的类,split字符分割、空指针判断
package springboot.demo.config;
import jdk.nashorn.internal.ir.RuntimeNode;
import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
public class MyLocalResovel implements LocaleResolver {
@Override
//这个类用来解析请求
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
//获取请求的语言参数l
String language=httpServletRequest.getParameter("l");
//判断这个请求是否为空,如果没有就使用默认的地区,如果有,则分割字符串,更改地区
Locale local= Locale.getDefault();
if(!StringUtils.isEmpty(language)){
String[] split=language.split("_");
//分割为 国家和地区
local= new Locale(split[0],split[1]);
}
System.out.println(language);
System.out.println(local.toString());
return local;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
写完后向spring容器中注入这个组件
@Controller
public class indexController {
@RequestMapping("index.html")
public String index(){
return "index";
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResovel();
}
}