国际化(internationalization), 简称国际化,一个产品支持国际化是指产品在无需做大的改变就能够适应不同的语言和地区的能力,i18n是指是一种让软件在开发阶段就支持多种语言的技术。
该类对象表示了特定的地理,政治和文化地区。
重要成员:一个语言代号(ISO 639标准定义),一个国家或者区域的可选项(ISO 3169标准定义)。
示例:zh_CN, zh为语言代号, CN为国家代号,在操作 Date, Calendar等表示日期/时间的对象时,经常会用到;因为不同的区域,时间表示方式都不同。
该类的作用是读取资源文件,解决国际化问题。在定义资源文件时请注意资源文件的命名规则:
xxx_语言代码_国家代码.properties,如:i18n_zh_CN.properties。
1)简单消息
首先在国际化资源文件中加入配置:
中文: name=露丝
英文: name=rose
在使用国际化配置文件时使用key来获取值,示例如下:
2)复合消息
中文: message=你好{0},我是{1}
英文: message=hello {0}, I am {1}
注意:{}是英文字符
使用示例:
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>
注:解析器类型
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)国际化资源文件
在中文资源文件中增加定义如下:
language=英语
如果当前显示的是中文,则点击切换到的应该是英文
在英文资源文件中增加配置如下:
language=chinese
如果当前显示的是英文,在点击切换到中文。
2)编写一个controller执行切换
3)修改页面,执行语言切换
index.jsp页面文件: