不少网站的用户分布在世界各地,所以网站须要针对不一样国家的用户展现不一样语言的内容,所以就有了国际化实现的需求,大多数网站都会在网站的头部或尾部设置语言切换连接,这样就能够直接切换成相应的内容。html
步骤一 建立国际化资源文件
国际化资源文件为 properties 文件,properties 文件命名规则为 basename_语言代码_国家代码.properties,假设咱们的程序须要中文和英文两种语言支持,资源文件的 basename 为 i18n,那么classpath下须要建立一下两个properties文件:i18n_zh_CN.properties、i18n_en_US.properties。前端
步骤二 建立 ResourceBundleMessageSource 实例
Spring MVC 中国际化资源文件被抽象成 ResourceBundleMessageSource 类,咱们能够从该类中根据不一样的 locale 和 key 获取对应的内容。经过 basenames 属性指定属性文件基名,经过 defaultEncoding 指定属性文件的编码java
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="i18n" />
<property name="defaultEncoding" value="utf-8" />
</bean>
复制代码
注意:该 bean 的 id 必须为 messageSource ,不然 spring 将会找不到该 bean!!web
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="zh_CN"/>
</bean>
复制代码
注意:该 bean 的 id 必须为 localeResolver,不然 spring 将会找不到该解析器!!spring
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
</mvc:interceptors>
复制代码
@RequestMapping("signupsession")
public String signupsession(String request_locale, Model model, HttpServletRequest request) {
if (request_locale != null) {
if (request_locale.equals("zh_CN"))
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("zh","CN"));
else if (request_locale.equals("en_US"))
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale("en","US"));
}
User user = new User();
model.addAttribute("user", user);
return "signup_session";
}
复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head>
<title>SessionLocaleResovler</title>
</head>
<body>
<a href="/user/signupsession?request_locale=zh_CN">中文</a>|<a href="/user/signupsession?request_locale=en_US">英文</a>
<form:form method="post" action="regist" modelAttribute="user">
<table>
<tr>
<td><spring:message code="language.username"/></td>
<td><form:input path="name"/></td>
</tr>
<tr>
<td><spring:message code="language.password"/></td>
<td><form:password path="password"/></td>
</tr>
</table>
</form:form>
</body>
</html>
复制代码
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
复制代码