Spring MVC的国际化是建立在Java国际化的基础之上的,其一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息。这整个过程与Java程序的国际化完全相同,只是Spring MVC框架对Java程序国际化进行了进一步的封装,从而简化了应用程序的国际化。
Spring MVC的国际化步骤与Java国际化的步骤基本相似,只是实现起来更加简单。Spring MVC的国际化可按以下步骤进行:
(1)给系统加载国家化资源文件
(2)输出国际化。Spring MVC输出国际化消息有两种方式
-
在视图页面上输出国际化消息,需要使用Spring MVC的标签库
-
在Controller的处理方法中输出国家化消息,需要使用org.springframework.web.servlet.support.RequestContext的getMessage()方法。
P88 Spring MVC国家化的相关知识
P88 MessageSource
在Spring MVC中,不直接使用java.util.ResourceBundle,而是利用messageSource bean告诉Spring MVC国际化的属性文件保存在哪里。配置信息代码文件如下所示:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>message</value>
<value>fkit</value>
</list>
</property>
</bean>
上面的配置使用了ResourceBundleMessageSource类作为messageSource bean的实现,basenames属性用来指定国际化的属性文件名称。如果项目中只有一组属性文件,则可以使用basename来制定国际化的属性文件名称,实例代码如下:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="message"/>
</bean>
P88 localeResolver
为用户选择语言区域时,最常用的方法是通过读取用户浏览器的accept-language标题值。accept-language标题提供了关于用户浏览器语言的信息。选择语言区域的其他方法还包括读取HttpSession或者Cookie。
在Spring MVC中选择语言区域,可以使用语言区域解析器。Spring MVC提供了一个语言区域解析器接口LocaleResolver,该接口的常用实现类都在org.springframework.web.servlet.i18n包下面,包括:
- AcceptHeaderLocaleResolver
- SessionLocaleResolver
- CookieLocaleResolver
其中,AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用那个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,而SessionLocaleResolver和CookieLocaleResolver需要手动显式配置。
P89 message标签
在Spring MVC中显示本地化消息通常使用Spring的message标签。使用message标签,需要在JSP页面最前面使用taglib指令导入Spring的标签库,如下所示:
%@taglib prefix="spring" url="http://www.springframework.org/tags"%
属性 | 描述 |
---|---|
arguments | 标签的参数,可以是一个字符串、数组或对象 |
argumentSepatorar | 用来分隔该标签参数的字符 |
code | 获取消息的key |
htmlEscape | boolean值,表示被渲染的值是否应该进行HTML转义 |
javaScriptEscape | boolean值,表示被渲染的值是否应该进行javaScript转义 |
message | MessageSourceResolver参数 |
scope | 保存var属性中定义的变量的作用范围域 |
text | 如果code属性不存在,所显示的默认文本 |
var | 用于保存消息的变量 |
P89 AcceptHeaderLocaleResolver国际化
AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用哪个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,也可以显式配置。
P92 SessionLocaleResolver国际化
SessionLocaleResolver不是默认的语言区域解析器,需要对其进行显式配置。如果使用它,Spring MVC会从HttpSession作用域中获取用户所设置的语言区域,来确定使用哪个语言区域。
P95 CookieLocaleResolver国际化
CookieLocaleResolver不是默认的语言区域解析器,需要显式对其进行配置。使用它,Spring MVC会从Cookie中获取用户所设置的语言区域,来确定使用哪个语言区域。
2018.8.6
キラメキ—wacci
再见我的青春
再见双门洞