Allez un peu plus loin

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 Application

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

The content of this field is kept private and will not be shown publicly.