Spring MVCアプリケーションでは、国際化または複数言語の機能をサポートするための「

LocaleResolver

」はほとんどありません。このチュートリアルでは、簡単なウェルカムページを表示し、プロパティファイルからメッセージを表示し、選択した言語リンクに基づいてロケールを変更します。

1.プロジェクトフォルダ

この例のディレクトリ構造。


SpringMVC-Internationalization-Folder、title = "SpringMVC-Internationalization-Folder"、width = 317、height = 480

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 ** “は、ロケールの設定に使用されるパラメータ値です。

この場合、

  1. welcome.htm?language = en – 英語のプロパティからメッセージを取得する

ファイル。

  1. 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


からアクセスし、言語のリンクをクリックしてロケールを変更します。


SpringMVC-Internationalization-Example-1、title = "SpringMVC-Internationalization-Example-1"、width = 640、height = 289


SpringMVC-Internationalization-Example-2、title = "SpringMVC-Internationalization-Example-2"、width = 640、height = 289

ソースコードをダウンロードする

ダウンロードする –

SpringMVC-Internationalization-Example.zip

(8KB)