不少網站的用戶分佈在世界各地,所以網站須要針對不一樣國家的用戶展現不一樣語言的內容,所以就有了國際化實現的需求,大多數網站都會在網站的頭部或尾部設置語言切換連接,這樣就能夠直接切換成相應的內容。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" %>
複製代碼