难点: 掌握 国际化/本地化的配置及使用
》国际化/本地化
·国际化是设计软件应用时,应用能适用于不同语言和地区
·本地化是添加地区特定的组件和翻译文本,使得国际化软件适合特定地区或语言
·国际化和本地化的目的是使软件适应不同的语言和地区
·简单来说: 国际化是指赋予软件可以被翻译的能力
本地化是指将软件进行软件翻译的过程
·除了语言翻译功能,国际化也可以应用在错误信息的展示
》国际化/本地化原理
·国际化
Spring 通过实现MessageSource 接口,来支持国际化。如果启用了国际化配置了,SpringMVC通过前端控制器处理模型对象时会调用国际化getMessage()方法
·本地化
Spring 提供了一个本地化解析器接口LocaleResolver,并且提供了很多实现类。DispatcherServlet允许使用客户端本地化信息自动解析信息。这个工作有实现LocaleResolver的对象来完成。
国际化/本地化的使用
·创建两个资源文件
- 中文 messages_zh_CN.properties
- 英文 messages_en_US.properties
·编码实现国际化效果(理解原理)
·配置文件添加
1、资源文件
<!-- 支持国际化 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 指定资源文件位置及前缀名的属性 -->
<property name="basename" value="classpath:resource/messages"></property>
</bean>
2、区域改变拦截器
<!-- 区域改变拦截器 -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
3、自定义本地化解析器
<!-- 自定义本地化解析器 -->
<bean id="localeResolver" class="com.kgc.resolver.MylocaleResolver"></bean>
com.kgc.resolver.MylocaleResolver
/**
* 自定义本地化解析器
* @author Administrator
*
*/
public class MylocaleResolver extends AcceptHeaderLocaleResolver {
private Locale myLocale;
// 解析本地化信息 返回值为本地化信息类型
public Locale resolveLocale(HttpServletRequest request) {
return myLocale;
}
// 将请求中的本地化信息作为值设置进来
public void setLocale(HttpServletRequest request,
HttpServletResponse response, Locale locale) {
myLocale = locale;
}
}
·提供jsp页面
·通过请求参数:locale 来改变语言
·使用框架提供的本地化解析器
1、定义消息资源
org.springframework.context.support.ReloadableResourceBundleMessageSource
2、提供一个拦截器检测地区变化
org.springframework.web.servlet.i18n.LocaleChangeInterceptor
3、提供能够本地化解析器
1) 基于cookie: org.springframework.web.servlet.i18n.CookieLocaleResolver
2) 基于session: org.springframework.web.servlet.i18n.SessionLocaleResolver