5.1 Spring MVC国际化的相关知识
5.1 Spring MVC国际化的相关知识
5.1.1 messageSource接口
在Spring MVC
中,不直接使用java.util.ResourceBundle
,而是使用名为messageSource
的Bean
告诉Spring MVC
国际化的属性文件保存在哪里。配置信息代码如下所示:
1 | <!-- 国际化配置 --> |
上面的配置使用了ResourceBundleMessageSource
类作为messageSourceBean
的实现。basenames
属性用来指定国际化的属性文件名称。如果项目中只有一组属性文件,则可以使用baseman
来指定国际化的属性文件名称,实例代码如下
1 | <!-- 国际化 p:basenames属性用于指定国际化资源文件名 --> |
5.1.2 localResolver接口
如何知道用户使用的语言
为用户选择语言区域时,最常用的方法是通过读取用户浏览器的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
和Cookielocale-Resolver
需要手动显式配置
5.1.3 message标签
在Spring MVC
中显示本地化消息通常使用Spring
的message
标签。使用message
标签需要在JSP
页面最前面使用taglib
指令导入Spring
的标签库,如下所示:
1 | <%"spring" uri="http://www.springframework.org/tags"%> prefix= |
message
标签的属性如表5.1所示,所有属性都是可选的
属性 | 描述 |
---|---|
arguments |
标签的参数,可以是一个字符串、数组或对象 |
argumentSeparator |
用来分隔该标签参数的字符 |
code |
获取消息的key |
htmlEscape |
boolean 值,表示被渲染的值是否应该进行HTM 转义 |
javaScriptEscape |
boolean 值,表示被渲染的值是否应该进行 JavaScript 转义 |
message |
MessageSourceResolvable 参数 |
scope |
保存var 属性中定义的变量的作用域 |
text |
如果code 属性不存在,所显示的默认文本 |
var |
用于保存消息的变量 |