springmvc国际化

11 篇文章 0 订阅
7 篇文章 0 订阅

1. 国际化

1.1 介绍

国际化(internationalization), 简称国际化,一个产品支持国际化是指产品在无需做大的改变就能够适应不同的语言和地区的能力,i18n是指是一种让软件在开发阶段就支持多种语言的技术。

1.2 java.util.Locale

该类对象表示了特定的地理,政治和文化地区。
重要成员:一个语言代号(ISO 639标准定义),一个国家或者区域的可选项(ISO 3169标准定义)。
示例:zh_CN, zh为语言代号, CN为国家代号,在操作 Date, Calendar等表示日期/时间的对象时,经常会用到;因为不同的区域,时间表示方式都不同。
在这里插入图片描述

1.3 ResourceBundle

该类的作用是读取资源文件,解决国际化问题。在定义资源文件时请注意资源文件的命名规则:
xxx_语言代码_国家代码.properties,如:i18n_zh_CN.properties。
1)简单消息
首先在国际化资源文件中加入配置:

中文: name=露丝
英文: name=rose

在使用国际化配置文件时使用key来获取值,示例如下:
在这里插入图片描述
2)复合消息

中文: message=你好{0},我是{1}
英文: message=hello {0}, I am {1}
注意:{}是英文字符

使用示例:
在这里插入图片描述

1.4 spring项目中的国际化

1)提供中英两种资源文件

i18n_en_US.properties
i18n_zh_CN.properties

2)配置国际化资源文件(在spring配置文件中添加,例如spring-mvc.xml)

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list> 
             <value>i18n</value>
        </list>
    </property>
    <!-- 不要忘了加上字符编码方式 -->
    <property name="defaultEncoding" value="UTF-8"></property>
</bean>
注:
bean 的id必须为messageSource,属性名称必须为basenames
可在开发阶段使用ReloadableResourceBundleMessageSource它能自动重新加载资源文件

3)配置语言区域解析器

<!--指定语言区域解析器,由它来确定使用哪个语言--><bean id="localeResolver" 
class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>

注:解析器类型

  • AcceptHeaderLocaleResolver(基于操作系统)
    Spring采用的默认区域解析器AcceptHeaderLocaleResolver。它通过检验HTTP请求的accept-language头部来解析区域,这个头部是由用户的web浏览器根据底层操作系统的区域设置进行设定,请注意,这个区域解析器无法改变用户的区域,因为它无法修改用户操作系统的区域设置。
  • SessionLocaleResolver(基于会话)
    它通过检验用户会话中预置的属性来解析区域,如果该会话属性不存在,它会根据accept-language HTTP头部确定默认区域
  • CookieLocaleResolver(基于Cookie)
    defaultLocale:默认的语言区域
    cookieName:设置cookieName名称
    cookieMaxAge:设置cookieName有效时间,单位秒
    cookiePath:设置cookie可见的地址,默认是“/”即对网站所有地址都是可见的,如果设为其它地址,则只有该地址或其后的地址才可见

4)配置国际化操作拦截器

<mvc:interceptors>    
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>

5)页面通过标签输出内容
导入t标签

<%@ taglib prefix="t" uri="http://www.springframework.org/tags" %>

<!--使用t标签输出内容,title为国际化资源文件中定义的key-->
<t:message code="title"/>

1.5 中英文切换

1)国际化资源文件
在中文资源文件中增加定义如下:

language=英语

如果当前显示的是中文,则点击切换到的应该是英文

在英文资源文件中增加配置如下:

language=chinese

如果当前显示的是英文,在点击切换到中文。

2)编写一个controller执行切换
在这里插入图片描述
3)修改页面,执行语言切换
index.jsp页面文件:
在这里插入图片描述

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员不想YY啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值