Spring MVCの国際化の例
Spring MVCアプリケーションでは、国際化または複数言語の機能をサポートするための「
LocaleResolver
」はほとんどありません。このチュートリアルでは、簡単なウェルカムページを表示し、プロパティファイルからメッセージを表示し、選択した言語リンクに基づいてロケールを変更します。
1.プロジェクトフォルダ
この例のディレクトリ構造。

2.プロパティファイル
英語と中国語のメッセージを格納する2つのプロパティファイル。
welcome.springmvc = Happy learning Spring MVC
-
welcome
zh
CN.properties **
welcome.springmvc = \u5feb\u4e50\u5b66\u4e60 Spring MVC
-
Note ** + UTF-8または英語以外の文字の場合、
native2ascii
ツールを使用してエンコードできます。
3.コントローラー
コントローラクラス、ここで何も特別なものはなく、すべてのロケールは後でSpringのBean設定ファイルで設定されます。
package com.mkyong.common.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class WelcomeController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView model = new ModelAndView("WelcomePage");
return model;
}
}
4.春の設定
Spring MVCアプリケーションが国際化をサポートするようにするには、2つのBeanを登録します。
-
1。 SessionLocaleResolver
+ “SessionLocaleResolver” Beanを登録します。名前は ”
localeResolver ** “と全く同じです。ユーザーのセッションから事前定義された属性を取得することにより、ロケールを解決します。 -
Note
“localeResolver”を登録しない場合は、デフォルトの
AcceptHeaderLocaleResolver ** が使用されます。これは、HTTP要求のaccept-languageヘッダーをチェックしてロケールを解決します。 -
2。 LocaleChangeInterceptor
+ “LocaleChangeInterceptor”インターセプタを登録し、複数の言語をサポートする必要のあるハンドラマッピングを参照します。 ”
paramName ** “は、ロケールの設定に使用されるパラメータ値です。
この場合、
-
welcome.htm?language = en – 英語のプロパティからメッセージを取得する
ファイル。
-
welcome.htm?language = zh__CN – 中国のプロパティからメッセージを取得する
ファイル。
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
以下の完全な例を参照してください。
mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor"/>
</list>
</property>
</bean>
<!-- Register the bean -->
<bean class="com.mkyong.common.controller.WelcomeController"/>
<!-- Register the welcome.properties -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="welcome"/>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
5. JSP
JSPページには、ロケールを手動で変更する2つのハイパーリンクがあり、
spring:message
を使用して、現在のユーザーのロケールをチェックして対応するプロパティファイルからメッセージを表示します。
-
WelcomePage.jsp **
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<body>
<h1>Spring MVC internationalization example</h1>
Language : <a href="?language=en">English</a>|<a href="?language=zh__CN">Chinese</a>
<h2>
welcome.springmvc : <spring:message code="welcome.springmvc" text="default text"/>
</h2>
Current Locale : ${pageContext.response.locale}
</body>
</html>
-
Note ** + $ \ {pageContext.response.locale}は、現在のユーザーのロケールを表示するために使用できます。
-
警告** +ページの上に “<%@ page contentType =” text/html; charset = UTF-8 ”%> “を入れてください。そうしないと、ページにUTF-8(中国語)文字を正しく。
7.デモ
http://localhost:8080/SpringMVC/welcome.htm
からアクセスし、言語のリンクをクリックしてロケールを変更します。
-
1。英語ロケール** –
http://localhost:8080/SpringMVC/welcome.htm?language
= en

-
2。中国語ロケール** –
http://localhost:8080/SpringMVC/welcome.htm?language
= zh__CN

ソースコードをダウンロードする
ダウンロードする –
SpringMVC-Internationalization-Example.zip
(8KB)
リファレンス
MVC LocaleResolverドキュメンテーション]