Internationalisation
Le framework Struts offre également la possibilité d'internationaliser votre application. Pour cela, Struts utilise les mêmes principes qu'une internationalisation pure Java.
Voyons comment cela fonctionne.
La première chose à faire est de créer un ou plusieurs fichiers ressources dans le répertoire de vos packages. Dans ces fichiers, chaque line représente un couple proprièté / valeur. Vous devrez avoir autant de fichiers ressources que de languages supportés par votre application.
En pratique, si votre code se situe dans le package com.mypackage , qui correspond physiquement au répertoire com/mypackage dans votre répertoire source ( habituellement WEB-INF/src). Dans ce répertoire, créez les fichiers suivants :
- MyApplication.properties qui contient les messages par défaut de votre application.
- MyApplication__xx.properties qui contient les messages pour la langue représentée par le code ISO "xx" (fr pour Français, "en" pour Anglais). Voir http://java.sun.com/j2se/1.4.1/docs/api/(..) pour plus de détails au sujet des codes ISO. Un fichier ressource correspond à une langue de votre application.
Le contenu d'un fichier ressoure ressemble à ceci :
application.name=My Applicationpage.title.index=Welcome page. user.login=Login user.password=Password
L'étape suivante est de définir le fichier ressource dans le fichier de configuration de Struts :
<message-resources parameter="com.mypackage.MyApplication" />Une fois Struts configuré, rechargez l'application. Vous pouvez maintenant appelez les valeurs de votre fichier ressource en utilisant le code suivant dans vos pages JSP :
<h1><bean:message key="application.name" /></h1>Vous pouvez également y accèder directement dans votre code Java à partir de la classe MessageResources (org.apache.struts.util.MessageResources).
/*Get the Struts MessageResources
- /
MessageResources
msg = (MessageResources) request.getSession ( ) .getServletContext () .getAttribute ( Globals.MESSAGES_KEY );/*
Get the value of "application.name" key in the current bundle resource
String strAppName = msg.getMessage("application.name");
- /
Vous pouvez changer la locale en cours d'utilisation. Pour cela, utilisez la méthode setLocale() de la classe org.apache.struts.action.Action class. Cette méthode renseigne juste l'attribut org.apache.struts.Globals.LOCALE_KEY à la valeur demandée.
Public class MyAction extends Action { public ActionForward execute ( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ..../* Change the default locale to the french one (if exist)
java.util.Locale locale = new java.util.Locale("fr"); this.setLocale(request, locale);
- /
...
return mapping.findForward ("continue"); } }

Comments
Post new comment