1、国际化文件格式
文件名_语言编码_国家编码.properties
lan_zh_CN.properties 中文
lan_en_US.properties 英文
lan.properties 默认
在resources文件夹下创建一个i18n文件夹,创建上面三个文件



2、编写配置文件

3、修改页面
注意添加<html lang="en" xmlns:th="http://www.thymeleaf.org">
<form>
<input type="text" th:placeholder="#{lan.username}"><br>
</form>
4、添加切换按钮
<a th:href="@{/lan(l='zh-CN')}">中文</a>
<a th:href="@{/lan(l='en-US')}">英文</a>
5、后台处理请求
@Controller
public class TestController {
@RequestMapping("/lan")
public String lan(){
return "index";
}
}
6、编写区域解析器
package com.dhf.springboot2;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import java.util.Locale;
@Configuration
//自定义解析器
public class MyLocalResolver implements LocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
//返回国际化对象
//可以请求头信息中获取国际化信息:语言编码、国家编码
String header=request.getHeader("Accept-Language");
//手动选择:参数里面有国际化信息l='zh-CN'
String l=request.getParameter("l");
//定义变量
Locale locale=null;
//判断
String[] split;
if(l!=null){
split = l.split("-");
}else{
split = header.split(",")[0].split("-");
}
locale=new Locale(split[0],split[1]);
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
}