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.
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,
-
welcome.htm? language = fr - Retourne le message de propriétés anglaises
fichier.
-
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
-
2. Paramètres régionaux chinois ** - http://localhost : 8080/SpringMVC/welcome.htm? Language = zh__CN
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]