静态国际化配置
1、在 Spring 的配置文件里加入
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMEssageSource">
<!-- welcomes 为资源文件的前缀 -->
<property name="basenames" value="messages"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
注意:messageSource 不能随意更改名称。
2、配置资源文件
classpath:message_zh_CN.properties
classpath:message_en_US.properties
3、在 JSP 页面使用
1、使用 Spring 的标签实现
<spring:message code="welcome.springmvc" text="default text"/>
2、使用 JSTL 标签实现
<fmt:message key="welcome.springmvc"/>
动态国际化配置
动态国际化包含:
1、请求级别的国际化处理
2、Cookie 级别的国际化处理
3、Session 级别的国际化处理
需要在 Spring 的配置文件中加入
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
请求级别的国际化处理
在请求的 URL 中传入参数 locale
例如:locale=zn_CN
如果想修改请求参数名,则配置如下
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="myName"/>
</bean>
Cookie 级别的国际化处理
Spring 配置文件中加入配置
<!-- 基于 Cookie 的本地化解析器 -->
<bean id="localResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieMaxAge" value="604800"/>
<property name="defaultLocale" value="zh_CN"/>
<property name="cookieName" value="Language"></property>
</bean>
在 Controller 中加入
@Autowired SessionLocaleResolver resolver;
在方法中加入
resolver.setLocale(request,response,Local.XX);
Session 级别的国际化处理
Spring 配置文件中加入配置:
<bean id="localResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
在 Controller 中加入
@Autowired SessionLocaleResolver resolver;
在方法中加入
resolver.setLocale(request,response,Local.XX);