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. scala lambda 小括号与大括号

    看akka源码的时候看到这样的一个用法: 作为接触scala两天半的我有些看不明白了.好一番搜索看到这样的答案: <scala雾中风景(2): 小括号与花括号> 下面的问题,表面上看是小括 ...

  2. RS特殊报表样式需求处理

    收到一朋友求助:如下图的报表格式 思路如下 第一步:处理出基础数据是每个用户每个月属于每个区间的数据savemoney_bymonthmonth user save_qujian201412 a1 5 ...

  3. Sql server2005 优化查询速度50个方法小结

    Sql server2005 优化查询速度50个方法小结   Sql server2005优化查询速度51法查询速度慢的原因很多,常见如下几种,大家可以参考下.   I/O吞吐量小,形成了瓶颈效应.  ...

  4. PHP快速入门 如何操作MySQL

    1 创建一个新的数据库,注意类型设置为utf8_general_ci 2 在数据库中创建一个新的表,比如叫做tg_user(先从左侧选择刚才创建的数据库) 3 创建第一个字段,自动编号.我们估计网站的 ...

  5. T-SQL 之 存储过程

    当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 一.存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经 ...

  6. Vertica7 Native Connection Load Balance

    原文链接:Vertica7 Native Connection Load Balance 在Vertica7曾经的版本号中,Vertica是通过Linux的Virtual IP来实现连接的负载均衡的, ...

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

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

  8. Android -BLE蓝牙小DEMO

    代码地址如下:http://www.demodashi.com/demo/13890.html 原文地址: https://blog.csdn.net/vnanyesheshou/article/de ...

  9. window下虚拟环境搭建

    1.找到你的host文件

  10. Android画图之抗锯齿

    在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿.其实Android自带了解决方式.    方法一:给Paint加上抗锯齿标志.然后将Paint对象作为参数传给canvas的绘制方法. ...