Exemple d’internationalisation de MVC Spring

Dans l’application Spring MVC, quelques « LocaleResolver » sont disponibles pour prendre en charge l’internationalisation ou les fonctionnalités multilingues. Dans ce didacticiel, il affiche une page d’accueil simple, affiche le message à partir du fichier de propriétés et modifie les paramètres régionaux en fonction du lien de langue sélectionné.

1. Dossier de projet

Structure de répertoire de cet exemple.

Dossier SpringMVC-Internationalization-Folder

2. Fichier de propriétés

Deux fichiers de propriétés pour stocker les messages anglais et chinois.

welcome.springmvc = Happy learning Spring MVC
  • welcome zh CN.properties **

welcome.springmvc = \u5feb\u4e50\u5b66\u4e60 Spring MVC
  • Remarque ** + Pour les caractères UTF-8 ou non anglais, vous pouvez l’encoder avec l’outil native2ascii .

3. Contrôleur

Classe contrôleur, rien de spécial ici, tous les éléments de paramètres régionaux sont configurés ultérieurement dans le fichier de configuration du bean Spring.

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. Configuration de printemps

Pour que l’application Spring MVC prenne en charge l’internationalisation, enregistrez deux beans:

  • 1. SessionLocaleResolver + Enregistrez un bean “SessionLocaleResolver” en lui donnant exactement le même caractère “ localeResolver ** “. Il résout les paramètres régionaux en extrayant l’attribut prédéfini de la session de l’utilisateur.

  • Remarque Si vous n’enregistrez pas de «localeResolver», la valeur par défaut AcceptHeaderLocaleResolver ** sera utilisée. Elle résout les paramètres régionaux en vérifiant l’en-tête accept-language dans la requête HTTP.

  • 2. LocaleChangeInterceptor Enregistrez un intercepteur «LocaleChangeInterceptor» et référencez-le à tout mappage de gestionnaire devant prendre en charge plusieurs langues. « Nomparam ** » est la valeur du paramètre utilisé pour définir les paramètres régionaux.

Dans ce cas,

  1. welcome.htm? language = fr - Retourne le message de propriétés anglaises

fichier.

  1. welcome.htm? language = zh__CN - Récupère le message des propriétés chinoises

fichier.

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

Voir l’exemple complet ci-dessous 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

Une page JSP contient deux hyperliens pour modifier manuellement les paramètres régionaux et utilisez spring: message pour afficher le message à partir du fichier de propriétés correspondant en vérifiant les paramètres régionaux de l’utilisateur actuel.

  • 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>
  • Remarque ** + Le $ \ {pageContext.response.locale} peut être utilisé pour afficher les paramètres régionaux de l’utilisateur actuel.

  • Attention ** N’oubliez pas de mettre le «<% @ page contentType =» text/html; charset = UTF-8 ′ ′%> »en haut de la page, sinon la page risque de ne pas pouvoir afficher les caractères UTF-8 (chinois) correctement.

7. Démo

Accédez-y via http://localhost : 8080/SpringMVC/welcome.htm , modifiez les paramètres régionaux en cliquant sur le lien de la langue.

  • 1. Paramètres régionaux anglais ** - http://localhost : 8080/SpringMVC/welcome.htm? Language = en

SpringMVC-Internationalization-Example-1

  • 2. Paramètres régionaux chinois ** - http://localhost : 8080/SpringMVC/welcome.htm? Language = zh__CN

SpringMVC-Internationalization-Example-2

Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2010/08/SpringMVC-Internationalization-Example.zip[SpringMVC-Internationalization-Example.zip](8 Ko)

Référence

Documentation MVC LocaleResolver]

lien://tag/plusieurs langues/[plusieurs langues]lien://tag/spring-mvc/[spring mvc]