一、在resources目录下添加i18n目录,在其中编写配置文件
1.
在i18n目录下直接创建login.properties,login_zh_CN.properties文件,idea会自动将两个文件放在Resources Bundle 'login’文件夹下,然后再创建login_en_Us.properties文件。
创建后的目录结构如图:
2.
编写login_zh_CN.properties文件
3.启用国际化配置
在配置文件application.properties中添加配置
# 国际化页面,配置文件
spring.messages.basename=i18n.login
二、编写MyLocaleResolver类,此类需实现LocaleResolver接口,重写两个方法
package com.kuang.config;
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 MyLocaleResolver implements LocaleResolver {
//解析请求,获取参数
@Override
public Locale resolveLocale(HttpServletRequest request) {
// 获取参数
String language = request.getParameter("l");
// 如果没有就是用默认的
Locale locale = Locale.getDefault();
// 如果请求携带了国际换参数
if(!StringUtils.isEmpty(language)){
//zh_CN
String[] split = language.split("_");
// 将zh,CN取出
locale = new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
三、在MyMvcConfig配置文件中声明MyLocaleResolver类
MyMvcConfig类是自己配置的,接管springboot配置的类,也需实现一个接口WebMvcConfigurer
package com.kuang.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
}
可以测试了。