SpringBoot 国际化语言切换
配置国际化语言
-
在
resources
创建i18n
国际化语言配置文件目录 -
创建
login.properties
默认语言配置文件 -
创建
login_zh_CN.properties
中文配置文件创建中文配置文件后,IDEA会识别到正在进行国际化配置,会生成一个
Resource Bundle 'login'
的目录 -
打开
login.properties
配置文件点击左下角Resource Bundle
配置各个语言的意思 -
在 html 页面(thymeleaf),通过
#{}
进行引用例如:
th:text="#{login.title}"
-
默认根据浏览器语言进行显示
点击链接切换语言
-
页面点击链接进行跳转
- 通过
@{}
跳转到当前页面,小括号内是传的值
<a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a> <a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a>
- 通过
-
在
component
目录下创建MyLocaleResolve
(语言环境解析器)-
实现
LocaleResolve
接口package com.example.springbootweb.component; 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; public class MyLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest request) { // 从 request 域中读取传过来的参数 String l = request.getParameter("l"); // 声明 Locale 为默认语言显示 Locale locale = Locale.getDefault(); // 判断传入参数是否为空 if (!StringUtils.isEmpty(l)){ // 将传过来的参数,通过下划线分割,获取到地区(zh)即代码(CN) String[] split = l.split("_"); // 进行赋值 locale = new Locale(split[0],split[1]); } // 返回 return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { } }
-
-
在
config.MvcConfig
下加载自己配置的语言环境解析器/** * 加载自己语言环境解析器 * @return LocaleResolver */ @Bean public LocaleResolver localeResolver(){ return new MyLocaleResolver(); }