对于最新稳定版本,请使用Spring Framework 7.0.1spring-doc.cadn.net.cn

现场

Spring 架构的大部分部分支持国际化,如 Spring 网页 MVC 框架可以。调度器服务可以让你自动解析消息 通过使用客户所在的位置。这是用LocaleResolver对象。spring-doc.cadn.net.cn

当有请求进来时,调度器服务查找一个位置解析器,如果 找到一个后,它尝试用它来设置位置。通过使用RequestContext.getLocale()方法中,你总可以检索到由该区域解析器解析的区域。spring-doc.cadn.net.cn

除了自动定位解析,你还可以在 处理器映射(详见拦截,了解更多处理程序信息) 映射拦截器)以便在特定情况下改变地点(例如, 基于请求中的参数)。spring-doc.cadn.net.cn

位置解析器和拦截器定义在org.springframework.web.servlet.i18n在你的应用中配置了 和 以正常的方式提供背景信息。以下选择的地点解析器包括在 Spring。spring-doc.cadn.net.cn

时区

除了获取客户所在地外,了解其时区通常也很有用。 这LocaleContextResolver接口提供扩展LocaleResolver这使得 解析器提供更丰富的地点背景,可能包含时区信息。spring-doc.cadn.net.cn

如果有,用户的时区可以通过使用以下条件得到RequestContext.getTimeZone()方法。时区信息会自动使用 按任何日期/时间转炉福尔马特这些对象被Spring注册转换服务.spring-doc.cadn.net.cn

头部解析器

该位置解析器检查accept-language请求中的首部 由客户端(例如网页浏览器)作。通常,该头字段包含 客户的作系统。注意,该解析器不支持时区 信息。spring-doc.cadn.net.cn

该位置解析器检查饼干客户端可能存在,以查看是否现场时区被指定。如果是这样,它会使用指定的细节。通过使用 该 locale 解析器的属性,你可以指定 cookie 的名称以及 最大年龄。以下示例定义了CookieLocaleResolver:spring-doc.cadn.net.cn

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">

	<property name="cookieName" value="clientlanguage"/>

	<!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) -->
	<property name="cookieMaxAge" value="100000"/>

</bean>

下表描述了这些性质CookieLocaleResolver:spring-doc.cadn.net.cn

会话解析器

SessionLocaleResolver让你取回现场时区来自 可能与用户请求相关的会话。与CookieLocaleResolver该策略将本地选择的地点设置存储在 Servlet 容器HttpSession.因此,这些设置都是暂时的 对于每个会话,因此在每次会话结束时 都丢失。spring-doc.cadn.net.cn

请注意,它与外部会话管理机制没有直接关系, 例如春季课程项目。这SessionLocaleResolver评估和 修改相应的HttpSession属性对水流HttpServletRequest.spring-doc.cadn.net.cn

地点拦截者

你可以通过添加地点变化拦截者到其中一个处理器映射定义。它检测请求中的参数并更改所在位置 因此,将setLocale方法LocaleResolver在调度员的 应用上下文。下一个例子展示了调用所有*。视图资源 包含一个参数网站语言现在换了个场景。例如, 请求 URL 的请求,www.sf.net/home.view?siteLanguage=nl,会改变网站 语言变为荷兰语。以下示例展示了如何拦截该位置:spring-doc.cadn.net.cn

<bean id="localeChangeInterceptor"
		class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
	<property name="paramName" value="siteLanguage"/>
</bean>

<bean id="localeResolver"
		class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

<bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	<property name="interceptors">
		<list>
			<ref bean="localeChangeInterceptor"/>
		</list>
	</property>
	<property name="mappings">
		<value>/**/*.view=someController</value>
	</property>
</bean>