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ドキュメンテーション]