springboot前端页面实现国际化 i18n
程序员文章站
2022-05-22 10:42:15
...
1、pom.xml 中引入 jquery
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>
2、在/resourcces下新建目录 i18n,(这里以登录为例)
在i18n下新建 login.properties 和 login_zh_CN.properties ,idea会自动识别创建国际化文件
3、编写properties 文件
4、编辑页面 这里以thymeleaf 为例
具体语法可以参考thymeleaf 官方文档。
5、application.properties中添加配置
spring.messages.basename=i18n.login
6、启动项目,访问页面
1、发现乱码
这是因为idea中没有配置转码
操作如下:
file - setting
或者设置全局配置
2、发现配置文件乱码
3、重新写下就好了
7、重启服务,访问页面
8、页面实现中英文切换
编写页面
<div class="am-form-group ">
<a th:href="@{/login.html(l='zh_CN')}">中文</a>
<a th:href="@{/login.html(l='en_US')}">English</a>
</div>
自定义bean
package com.bhwl.manage.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 {
/**
* 解析区域信息
* @param httpServletRequest
* @return
*/
@Override
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
// 获取a标签传入的值 l
String l = httpServletRequest.getParameter("l");
Locale locale= Locale.getDefault();
if(!StringUtils.isEmpty(l)){
String[] s = l.split("_");// zh_CN en_US
locale = new Locale(s[0],s[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
MyMvcConfig中新增:
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();// 自定义的 locale
}
重启服务,访问页面点击中文效果:
点击英文效果: