springboot国际化

支持多国语言展示

1、自动式国际化:通过浏览器发送请求头携带的信息自动使用国际化

2、手动式国际化:通过点击按钮,动态更改国际化

由于springboot自动配置中已集成国际化,直接使用即可

1、创建语言包:(文件编码为:ascii)

/src/main/resources/
static/i18n/messages.properties                默认配置
static/i18n/messages_zh_CN.properties          中文配置
static/i18n/messages_en_US.properties          英文配置
static/i18n/messages_zh_TW.properties          中文繁体

2、配置文件内容:(可以为空,但key不能不写)

messages_zh_CN.propertiesuser.title=用户登录user.welcome=欢迎使用messages_en_US.propertiesuser.title=User Loginuser.welcome=Welcome

3、初始化配置:

spring.messages.basename=static/i18n/messages

4、取国际化内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%><fmt:message key="user.welcome" />

注:

此种方法是根据浏览器请求中的Accept-Language决定的

Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4

切换语言:

谷歌--设置--高级--语言--等

2.1

通过点击按钮,动态更改国际化

1、增加自定义区域解析器

import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;/*** @title: 自定义区域解析器* @time: 2019年11月19日** <msg>*    SpringBoot默认的Locale解析器是根据请求头的区域信息进行解析的(浏览器语言)*    使用自定义的Locale解析器对url的区域信息进行解析达到点击切换区域效果*    一旦我们自定义的区域解析器注册到Spring容器中,则SpringBoot提供的将不自动注册* </msg>**/public class LocaleResolverConfig implements LocaleResolver {/*** 获取页面传输信息,执行对应的国际化*/@Overridepublic Locale resolveLocale(HttpServletRequest request) {String lang = request.getParameter("lang");if (!StringUtils.isEmpty(lang)) {String[] langSplit = lang.split("_");return new Locale(langSplit[0],langSplit[1]);}return Locale.getDefault();//使用默认配置}@Overridepublic void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {// 增加新语言时使用//SessionLocaleResolver localeResolver = new SessionLocaleResolver();//localeResolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);}}

2、将自定义区域解析器注入容器

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
/**** @title: 初始化自定义bean* @time: 2019年11月19日**/@Configuration
public class InitLocalConfig {/*** 注入-自定义区域解析器* @return*/@Beanpublic LocaleResolver localeResolver() {return new LocaleResolverConfig();}}

3、通过点击,使用对应的国际化

<a href="<%=request.getContextPath()%>/?lang=zh_CN" >中文简体</a>
<a href="<%=request.getContextPath()%>/?lang=zh_TW" >中文繁体</a>
<a href="<%=request.getContextPath()%>/?lang=en_US" >English</a>

存在的问题一:

存在iframe跳转时,请求中的Accept-Language会改变原来解析,利用session转存即可

import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import com.axa.pricingplatform.constants.CommonConstant;/**** @title: 自定义区域解析器* @time: 2019年11月19日** <msg>*    SpringBoot默认的Locale解析器是根据请求头的区域信息进行解析的(浏览器语言)*    使用自定义的Locale解析器对url的区域信息进行解析达到点击切换区域效果*    一旦我们自定义的区域解析器注册到Spring容器中,则SpringBoot提供的将不自动注册* </msg>**/public class LocaleResolverConfig implements LocaleResolver {/*** 获取页面传输信息,执行对应的国际化*/@Overridepublic Locale resolveLocale(HttpServletRequest request) {String lang = request.getParameter("lang");if (!StringUtils.isEmpty(lang)) {request.getSession().setAttribute(CommonConstant.LOGIN_LANG, lang);String[] langSplit = lang.split("_");return new Locale(langSplit[0],langSplit[1]);}lang = (String) request.getSession().getAttribute(CommonConstant.LOGIN_LANG);if(!StringUtils.isEmpty(lang)){String[] langSplit = lang.split("_");return new Locale(langSplit[0],langSplit[1]);}return Locale.getDefault();//使用默认配置}}

问题二:

jstl在单独的js文件中,获取不到国际化的值

原因:

jstl、el的标签会转化为服务器端的代码执行,而js代码则在客户端执行

如果是单独的js文件,jstl、el表达式是不起作用的,

jstl、EL表达式是在服务端执行的,服务端执行完成后再传给客户端的,js是在客户端执行的,eljs前就被执行了

解决办法:

将单独的js合并至对应的jsp页面即可

springboot国际化i18n相关推荐

  1. springboot 使用i18n进行国际化

    1.i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.在资讯领域,国际化(i18n)指让产 ...

  2. SpringBoot RESTful 风格 API 多语言国际化i18n解决方案

    文章目录 1 摘要 2 核心代码 2.1 多语言枚举类 2.2 多语言处理工具类 2.3 多语言的API返回状态码枚举类 2.4 多语言 API 接口返回结果封装 2.5 i18n 国际化多语言配置文 ...

  3. springboot配置i18n国际化

    springboot实现i18n国际化,无需引入其他jar包,springboot已经内置了,只需要配置即可. 国际化主要是根据不同的国际语言来决定返回数据的语言. 添加properties文件,作为 ...

  4. springboot+jsp中文乱码_【spring 国际化】springMVC、springboot国际化处理详解

    在web开发中我们常常会遇到国际化语言处理问题,那么如何来做到国际化呢? 你能get的知识点? 使用springgmvc与thymeleaf进行国际化处理. 使用springgmvc与jsp进行国际化 ...

  5. springboot国际化04

    springboot国际化 1 文件结构 2 messages.properties 3 优先级 4 在application.yml中配置 5 其他文件使用 6 浏览器渲染乱码 1 文件结构 Res ...

  6. springboot整合i18n

    springboot整合i18n-通过请求头传递参数 springboot2.0可以自动化整合i18n 一.配置文件 需要在classpath:下放置国际化文件 默认文件:messages.prope ...

  7. springMVC项目国际化(i18n)实现方法

    SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并 ...

  8. javaweb学习总结(三十一)——国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

  9. Python中国际化(i18n)完整指南

    这是一个完整的指南,展示了如何为一个Python应用程序进行国际化(i18n).当我在handroll项目中添加i18n时,我很难找到支持其他语言的明确建议.这是我个人的一点经验,解释了我是如何做到这 ...

最新文章

  1. R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
  2. 让人失望透顶的 CSDN 博客改版
  3. 随机取6位数字或字母方法
  4. Windows安装Python包下载工具pip遇到的问题
  5. 03.三月风雨愁断肠,学习大数据特别忧伤——谈谈AKS创建SQL Server大数据群集创建愁断肠
  6. 电商产品页多种出彩表现设计手法!
  7. python环境配置(二)——centos6+ 安装python3.6以及pip3
  8. java实验总结_Java实验总结——初学(上)
  9. 问题二十三:C++中debug简单的运行死机问题
  10. dwg文件打开的步骤具体是什么
  11. dnf剑魂buff等级上限_DNF:剑魂最强武器,比星之海伤害更高,无神话红10都能8000亿...
  12. Excel批量选中表格中所有图片
  13. react native Android端保持APP后台运行--封装 Headless JS
  14. 【企业数智化转型】知识图谱(Knowledge Graph)
  15. 怎么把图片的文字提取出来?
  16. nginx整合fastdfs出现2个master进程没有worker进程的原因以及解决方法
  17. Java--计算奇数和偶数例子
  18. 以世界杯为主题的营销活动|运营策略
  19. 【Hive】hive基本操作 ddl dml
  20. JAVA毕业设计数字家谱管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库

热门文章

  1. fifa17服务器维护,3月17日《EA SPORTS FIFA Online 2》服务器例行停机维护公告
  2. p沟道mos管导通条件_10天电子入门-MOS管
  3. java二级下拉菜单_航菜单栏中的二级下拉菜单
  4. HDU 1024:Max Sum Plus Plus(DP)
  5. POJ2352:Stars——题解
  6. 在Ubuntu 14.04上设置生产环境可用的Node.js
  7. mysql忘记密码重置
  8. Nginx入门笔记之————配置文件结构
  9. sublime 经验总结 主题有 less2css
  10. CentOS5.4下安装短信猫