Springboot根据浏览器实现网站资源国际化

根据浏览器地区主动选择资源

1.创建资源化文件
  • resource目录下创建messages目录
  • 创建messages_en_US.properties、messages_zh_CN.properties文件。分别是英文、中文资源。
  • messages.properties文件为默认文件。
  • messages_en_US.properties写入内容:welcome = welcome to login in soa-watch systerm(english)
  • messages_zh_CN.properties写入内容:welcome=欢迎访问soa-watch系统(CH)
  • messages.properties写入内容:welcome=欢迎访问soa-watch系统(Default)
2.配置application.properties
   spring.messages.encoding=UTF-8
spring.messages.basename=/messages/messages
3.jsp页面中使用标签
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>i18n</title>
</head>
<body>
<spring:message code="welcome"></spring:message>
</body>
</html>
4.修改浏览器的语言环境
  • 浏览器地址栏中输入about:config
  • 修改intl.accept_languages,查看结果
  • 以上为火狐浏览器

页面链接中实现对资源化得控制

如同以下页面,点击相关链接完成网页资源切换

1.创建MyLocaleResolver类集成AcceptHeaderLocaleResolver类
public class MyLocaleResolver extends AcceptHeaderLocaleResolver {
private Locale myLocal;
@Override
public Locale resolveLocale(HttpServletRequest request) {
return myLocal==null?request.getLocale():myLocal;
} @Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
myLocal = locale;
}
}
2.创建I18nConfig类初始化localeResolver对象bean

对象的名称必须为localeResolver,Spring容器会自动加载,否则找不到。

@Configuration
public class I18nConfig {
private static Logger logger = LoggerFactory.getLogger(I18nConfig.class); @Bean(name = "localeResolver")
public MyLocaleResolver myLocaleResolver(){
logger.info("#####cookieLocaleResolver---create"); MyLocaleResolver myLocaleResolver = new MyLocaleResolver();
myLocaleResolver.setDefaultLocale(Locale.ENGLISH);
logger.info("#####cookieLocaleResolver:");
return myLocaleResolver;
}
3.LoginControl类中代码实现跳转
  • welcome页面为welcome.jsp,展示页面
  • language请求为动态设置语言环境
@GetMapping("/welcome")
public String welcome(){
logger.info("class:"+messageSource.getClass()); return "welcome";
} @GetMapping("/language")
public ModelAndView language(HttpServletRequest request, HttpServletResponse response, String language){
Locale locale= request.getLocale();
logger.error(locale.toString());
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
language=language.toLowerCase();
logger.info("language:"+language);
if(language==null||language.equals("")){
return new ModelAndView("welcome");
}else{
if(language.equals("zh_cn")){
localeResolver.setLocale(request, response, Locale.CHINA);
}else if(language.equals("en")){
localeResolver.setLocale(request, response, Locale.US);
}else{
localeResolver.setLocale(request, response, Locale.CHINA );
}
}
return new ModelAndView("redirect:welcome");
}
4.welcome.jsp页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <html>
<head>
<title>i18n</title>
</head>
<body>
<spring:message code="welcome"></spring:message> <a href="<c:url value='language?language=zh_cn'/>">
中文
</a>
<a href="<c:url value='language?language=en'/>">
english
</a>
</body>
</html>

实现完成,即可测试。

SpringBoot资源国际化的更多相关文章

  1. 游戏UI框架设计(7): 资源国际化技术

    游戏UI框架设计(7) --资源国际化技术 说起"资源国际化"技术,个人认为可以追述到微软Window2000 PC操作系统的发布,在这之前windows98操作系统的开发都是先由 ...

  2. Struts第八篇【资源国际化、对比JSP的资源国际化】

    资源国际化 我们在学JSTL标签的时候就涉及到了资源国际化,,,但是呢,在JSP的章节我并没有写博文来讲解怎么弄-.一方面感觉JSP的资源国际化好麻烦,另一方面是感觉用的地方很少-..因此就没有深入去 ...

  3. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  4. Struts2【UI标签、数据回显、资源国际化】

    Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签..... 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再 ...

  5. SpringBoot 国际化配置,SpringBoot Locale 国际化

    SpringBoot 国际化配置,SpringBoot Locale 国际化 ================================ ©Copyright 蕃薯耀 2018年3月27日 ht ...

  6. JAVA WEB开发中的资源国际化

    为什么要国际化? 不同国家与地区语言,文化,生活习惯等差异.在数字,时间,语言,货币,日期,百分数等的不同. 两个名词: I18N:即资源国际化,全称为Internationalization,因为首 ...

  7. struts2 资源国际化

    web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp ...

  8. 配置和修改springboot默认国际化文件

    SpringBoot默认国际化文件为:classpath:message.properties,如果放在其它文件夹中,则需要在application.properties配置属性spring.mess ...

  9. SpringMVC 资源国际化实现以及常见问题

    资源国际化可以很方便的实现web项目语言的切换,解决了web项目按需显示不同语言界面的问题. SpringMVC 的资源国际化基于JDK的java.util.ResourceBundle实现,经过Sp ...

随机推荐

  1. x-pack 功能介绍及配置传输层安全性(TLS / SSL)

    x-pack 功能介绍及配置传输层安全性(TLS / SSL) 学习了:https://blog.csdn.net/wfs1994/article/details/80411047

  2. nGrinder工具进行接口性能测试

    1.背景 之前在这篇文章中性能测试初探—接口性能测试介绍过nGrinder,本文将介绍在nGrinder脚本中使用资源文件中数据作为接口参数和解析生成的CSV结果,生成TPS标准差,TPS波动率,最小 ...

  3. 六个前端开发工程师必备的Web设计模式/模块资源

    Yahoo的设计模式库 Yahoo的设计模式库包含了很多可以帮助开发设计人员解决遇到的问题的资源,包括开发中常常需要处理的导航,互动效果及其布局网格等大家常用的组件和模块 响应式设计模式库 这个响应式 ...

  4. python 利用 setup.py 手动安装第三方类库

    python 利用 setup.py 手动安装第三方类库 由于我在mac使用时,装了python3,默认有python2的环境,使用 pip 安装第三方类库时,老是安装到 python2的环境上: 在 ...

  5. python -c 处理shell字符串

    $test="hello world" $python -c "print '$test'.split()[1]" world 或者 $test="h ...

  6. sqlserver2008 R2中查找未使用过的索引

    转自:http://blog.csdn.net/yangzhawen/article/details/7247393 sqlserver2008 R2中查找未使用过的索引: o.name AS 表名 ...

  7. UNIX环境编程初步认识——编程环境搭建

     前言 前期学习了Linux的一些基本知识后,在借助前期的学习的基础上想再初步认识一下操作系统的一些环境编程体系相关知识,当中环境的配置和搭建费了非常大的劲,须要一点点摸索和尝试,下边是环境搭建的 ...

  8. Android自动化框架

    Android自动化框架 已有 2085 次阅读2014-8-26 12:19 | Android 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出 ...

  9. Linode之使用UE实现SSH连接

    在Linode上建立了节点后,选择对应的操作系统(我选用的是Ubuntu 12.04 LTS),然后启动就可以.详细能够參见该文(https://library.linode.com/getting- ...

  10. Android 屏幕自适应方向尺寸

    最近感觉要被屏幕适配玩死了…… 安卓的手机为虾米不能像苹果那样只有几个分辨率呢?为什么呢!!!!!!!阿门…… 目前想到有两种解决办法…… 第一种:   HTML5+CSS3+WebView交互……目 ...