Internationalisation ( i18n ) ou site multilangue.
 
Cet article fait suite à Struts 2 – Premier projet
 
Comme Struts est plutôt destiné aux gros projets, nous allons tout de suite prendre en compte la possibilité de faire un site multilangue.

On reprend donc le projet du billet  Struts 2 – Premier projet : struts2-test01.war (1)
 
Pour l'instant, notre projet ne fait qu'afficher un message de bienvenue en français.
Nous allons donner le choix à l'internaute d'afficher le site en français ou en anglais.
 
 
 
Utilisation des fichiers properties:
 
  • Dans WEB-INF/classes/ , créer les 2 fichiers properties package_fr.properties et package_en.properties
  • Faites un refresh du projet
 
package_fr.properties:
Welcome.message=Bienvenue !
Welcome.title= Struts 2 tutoriel
 
package_en.properties:
Welcome.message=Welcome !
Welcome.title= Struts 2 tutorial

 
 
 
Indiquer à Struts qu'on va utiliser ces fichiers pour l'internationalisation:
 
Struts.xml :
Ajouter une balise <constant>:
<constant name="struts.custom.i18n.resources" value="package" />

 
 
 
Remplacer le texte en dur du projet par le texte défini dans les fichiers properties et donner le choix à l'internaute:
 
Apporter la modification suivante:
Welcome.jsp :
<head>
<title><s:text name="Welcome.title"></s:text></title>
</head>
<body>
<table border="1">
<tr>
<td>
<s:url id="url" action="Welcome">
<s:param name="request_locale">fr</s:param>
</s:url>
<s:a href="%{url}">Français</s:a>
</td>
<td>
<s:url id="url" action="Welcome">
<s:param name="request_locale">en</s:param>
</s:url>
<s:a href="%{url}">Anglais</s:a>
</td>
</tr>
</table>
<s:text name="Welcome.message"/>
</body>
 
 
<s:url et <s:param nous sert à paramétrer l'action Welcome en définissant la locale, fr ou en.
Struts construit cette url qu'on récupère grace à %{url} qui fait référence à <s:url id="url"
Dorénavant, l'application prendra en compte cette locale.
 
A cette étape le projet est le suivant:
 
 
Exécutez le projet.
 
On peu maintenant afficher le "Bienvenue !" en français ou en anglais.
 
 
 
———————————————-
 
(1)Ce .war ne contient pas les librairies.
Ajoutez les librairies du projet struts2-blank.war dans WebContent/WEB-INF/lib du projet struts2-test01

By Clem