SpringBoot 国际化配置,SpringBoot Locale 国际化
SpringBoot 国际化配置,SpringBoot Locale 国际化
================================
©Copyright 蕃薯耀 2018年3月27日
http://www.cnblogs.com/fanshuyao/
附件下载(源码下载)见:http://fanshuyao.iteye.com/blog/2414640
一、效果所下:
二、SpringBoot 国际化配置
1、创建国际化配置文件(3个):
mess.properties
- mess.user.name=用户名
- mess.user.password=密码
- mess.user.btn=登录
mess_zh_CN.properties
- mess.user.name=用户名
- mess.user.password=密码
- mess.user.btn=登录
mess_en_US.properties
- mess.user.name=UserName
- mess.user.password=Password
- mess.user.btn=Sign In
SpringBoot默认国际化文件为:classpath:message.properties,如果放在其它文件夹中,则需要在application.properties配置属性spring.messages.basename:
- #表示放在classpath的i18n文件夹,文件前缀为mess
- spring.messages.basename=i18n.mess
2、自定义国际化语言解析器
- import java.util.Locale;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.springframework.web.servlet.LocaleResolver;
- import org.thymeleaf.util.StringUtils;
- /**
- * 自定义国际化语言解析器
- *
- */
- public class MyLocaleResolver implements LocaleResolver{
- private static final String I18N_LANGUAGE = "i18n_language";
- private static final String I18N_LANGUAGE_SESSION = "i18n_language_session";
- @Override
- public Locale resolveLocale(HttpServletRequest req) {
- String i18n_language = req.getParameter(I18N_LANGUAGE);
- Locale locale = Locale.getDefault();
- if(!StringUtils.isEmpty(i18n_language)) {
- String[] language = i18n_language.split("_");
- locale = new Locale(language[0], language[1]);
- //将国际化语言保存到session
- HttpSession session = req.getSession();
- session.setAttribute(I18N_LANGUAGE_SESSION, locale);
- }else {
- //如果没有带国际化参数,则判断session有没有保存,有保存,则使用保存的,也就是之前设置的,避免之后的请求不带国际化参数造成语言显示不对
- HttpSession session = req.getSession();
- Locale localeInSession = (Locale) session.getAttribute(I18N_LANGUAGE_SESSION);
- if(localeInSession != null) {
- locale = localeInSession;
- }
- }
- return locale;
- }
- @Override
- public void setLocale(HttpServletRequest req, HttpServletResponse res, Locale locale) {
- }
- }
3、把国际化语言解析器放到Spring容器中:
这里创建了一个自定义的配置类:CustomMvcConfig ,继承WebMvcConfigurerAdapter,可以扩展SpringMvc的功能,包括拦截器,转换器等
- 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.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
- import com.lqy.springboot.message.locale.MyLocaleResolver;
- //使用WebMvcConfigurerAdapter可以扩展SpringMvc的功能,包括拦截器,转换器等
- //@EnableWebMvc //设置@EnableWebMvc为完全接管SpringMvc,但一般不要设置完全接管SpringMvc
- @Configuration
- public class CustomMvcConfig extends WebMvcConfigurerAdapter {
- /**
- * 配置自己的国际化语言解析器
- * @return
- */
- @Bean
- public LocaleResolver localeResolver() {
- return new MyLocaleResolver();
- }
- /**
- * 配置自己的拦截器
- */
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- //super.addInterceptors(registry);
- }
- }
4、页面显示及切换国际化操作:
- <!DOCTYPE html>
- <html xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8">
- <title>Insert title here</title>
- <style type="text/css">
- .ib{
- display: inline-block;
- }
- .ml20{
- margin-left: 20px;
- }
- .mt20{
- margin-top: 20px;
- }
- </style>
- </head>
- <body>
- <div>
- <div>[[#{mess.user.name}]]:<input th:placeholder="#{mess.user.name}"/></div>
- </div>
- <div>
- <div>[[#{mess.user.password}]]:<input th:placeholder="#{mess.user.password}"/></div>
- </div>
- <div>
- <div><button>[[#{mess.user.btn}]]</button></div>
- </div>
- <div class="mt20">
- <span class="ib"><a th:href="@{/mess(i18n_language=zh_CN)}">中文</a></span>
- <span class="ib ml20"><a th:href="@{/mess(i18n_language=en_US)}">英文</a></span>
- </div>
- </body>
- </html>
================================
©Copyright 蕃薯耀 2018年3月27日
http://www.cnblogs.com/fanshuyao/
SpringBoot 国际化配置,SpringBoot Locale 国际化的更多相关文章
- SpringBoot Logback配置,SpringBoot日志配置
SpringBoot Logback配置,SpringBoot日志配置 SpringBoot springProfile属性配置 ================================ © ...
- springboot自动配置国际化失效分析
最近在整理springBoot国际化时,发现国际化没有生效,通过报错提示在 MessageTag -> doEndTag处打断点 最后发现messageSource并不是ResourceBund ...
- Springboot:员工管理之国际化(十(3))
1:IDEA编码设置UTF-8 2:创建国际化文件 i18n\login.properties #默认语言 i18n\login_en_US.properties #英文语言 i18n\login_z ...
- SpringBoot学习之验证信息国际化
以登录为例: 1.controller的登录方法: @RequestMapping("/SSOAuth/login") @ResponseBody public ResponseV ...
- springmvc国际化 基于请求的国际化配置
springmvc国际化 基于请求的国际化配置 基于请求的国际化配置是指,在当前请求内,国际化配置生效,否则自动以浏览器为主. 项目结构图: 说明:properties文件中为国际化资源文件.格式相关 ...
- spring MVC 使用 hibernate validator验证框架,国际化配置
spring mvc使用hibernate validator框架可以实现的功能: 1. 注解java bean声明校验规则. 2. 添加message错误信息源实现国际化配置. 3. 结合sprin ...
- Spring MVC + Velocity实现国际化配置
国际化介绍 web开发中,国际化是需要考虑的一个问题,而且这个问题一般是越早敲定越好(不然等到系统大了,翻译是个问题).下面是结合实际项目(Spring MVC+Velocity)对实现国际化的一些总 ...
- Spring Security教程(5)---- 国际化配置及UserCache
这一章是为了给后面的讲解打基础的,主要介绍下国际化的配置及UserCache的配置及使用 国际化配置 <!-- 定义上下文返回的消息的国际化 --> <bean id="m ...
- Maven下Flex国际化配置
之前写了flashbulid.initellij下的flex国际化配置,它们都是在本地打包发布的,那么我们的工程用maven管理了,需要自动发布.这时候如何修改flex的pom文件,来让它build的 ...
随机推荐
- DNS解析全过程分析
DNS解析过程 1.检查浏览器缓存中是否缓存过该域名对应的IP地址 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址, 当用户再次访问的时候,浏览器就会从缓存中查找该域名对应 ...
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- 关于SS的一点笔记
过年的时候抽了点时间了解了下ss的协议.整理了一点笔记,一直没有时间发.今天发一下,免得忘了. SS的结构本身比较简单,他的基本结构如下: ss通常分为client和server两部分 client是 ...
- ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)
原文地址:https://www.zfanw.com/blog/error-while-executing-gem-gem-remote-fetch-error.html 我对命令行下安装 gem 包 ...
- Xcode 安装ClangFormat 插件
sudo gem install -n /usr/local/bin update_xcode_plugins 安装ClangFormat git clone https://github.com/t ...
- Spring Date JPA 更新部分字段
在Spring Data JPA 中,新增和更新操作都是用save()的方式进行,JPA是通过什么方法来知道我们是要进行insert还是update呢? 经过测试,JPA对程序调用的save()方法判 ...
- html-轮播图
<!DOCTYPE html> <html> <head> <title>纯CSS代码实现图片轮播 </title> <meta ch ...
- java类型生命周期
开始阶段 装载:把二进制形式的java类型读入jvm中. 1)通过该类型的完全限定名,产生一个代表该类型的二进制数据流:2)解析这个二进制数据流为方法区内的内部数据结构:3)创建一个表示该类型的jav ...
- ubuntu 登陆信息打印 -- motd
新需求需要改变 Ubuntu 启动时的登录信息打印,根据搜索到的资料,找到了这里: luo[~]ssh luo@192.168.100.233 Press ^@ (C-Space) to enter ...
- tsung -- 压力测试利器
Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP 测试,Tsung 支持 ...