Projets
Pages enfant
  • 3.1 Internationalisation

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

  • Le nom du bean lui même est important car il est notamment utilisé dans les vues JSF
  • La propriété basenames

...

  • donne la liste des fichiers de messages à utiliser. Chaque valeur de la liste correspond

...

  • au chemin du fichier de message dans le classpath. Par exemple, on cherchera pour la valeur Custom les fichiers Custom_<locale>.properties ou à défaut Custom.properties. Par convention, on groupera tous les fichiers de messages dans le répertoire /properties/i18n/bundles.
  • La propriété cacheSeconds donne le délai en entre cache relecture des fichiers de messages

Implémentations disponibles

esup-commons offre plusieurs implémentations afin de gérer l'internationalisation des applications :

  • ResourceBundleMessageSourceI18nServiceImpl utilise l'implémentation Spring du son mécanisme de ResourceBundleMessageSource (depuis ESUP-Commons 2 - 0.2.7)

Les autres implémentations sont conservées pour des raisons de compatibilité mais devrait disparaître à terme :

  • BundleI18nServiceImpl lit les chaînes de caractères depuis un unique fichier de messages.
  • BundleCachingI18nServiceImpl étend BundleI18nServiceImpl. Elle permet la mise en cache des chaînes de caractères lues depuis le fichier de messages, pour des raisons de performance.
  • BundlesI18nServiceImpl lit les chaînes de caractères depuis plusieurs fichiers de messages.
  • BundlesCachingI18nServiceImpl étend BundlesI18nServiceImpl en apportant des fonctionnalités de cache, pour les mêmes raisons de performance.

...

  • .

Préconisations d'usage

Nommage des bundles

Les fichiers de messages sont lus dans l'ordre où ils apparaissent dans le fichier de configuration. Chaque entrée d'un fichier de message peut être surchargée par la même entrée définie dans le fichier suivantprécédent. En effet, c'est la première définition d'une entrée qui compte.

Les fichiers Commons_.properties font partie du projet esup-commons, ils ne doivent pas être modifiés par les développeurs d'applications.

...

Les fichiers Custom_.poperties* permettent à l'exploitant de surcharger les messages livrés avec l'application (qu'il s'agisse de messages de esup-commons ou de l'application). Typiquement, ce fichier devrait être repris par la tâche ant recover-config lors d'une mise à jour. Pour cela, l'exploitant ajoutera une entrée correspondant à ce fichier dans le paramètre custom.recover.files de son fichier build.properties.

exercice
Surcharger un bundle
Surcharger un bundle

Surcharger dans Custom_fr.properties une des entrées de Messages_fr.properties et tester.

solution

Par exemple nous allons modifier le message de bienvenue présent dans le fichier Messages_fr.properties.

Bloc de code
WELCOME.TITLE = Bienvenue

Dans Custom_fr.properties ajouter la clef WELCOME.TITLE et modifier son contenu :

Bloc de code
WELCOME.TITLE = Bienvenue sur l'application de formation.

...

Remarque

Dans l'exemple ci-dessus, le paramètre 1 ne peut avoir que 2 valeurs : soit annuaire, soit helpdesk.

...

L'ajout d'un langage se fait dans le fichier de configuration src/main/webapps/WEB-INF/jsf/faces-config.xml. Il suffit ensuite d'écrire le bundle correspondant.

...

Ajouter le langage japonais et traduire tout esup-commons (clin d'œil)

Externalisation des chaînes sans internationalisation

...

Utilisation

Dans une vue

JSF

La balise <f:view> propose un attribut locale qui permet de spécifier la langue à utiliser. Cette information est généralement donnée par un contrôleur. On trouvera par exemple en entête des pages :

Bloc de code

<f:view locale="#{sessionController.locale}">

La balise <f:view> positionnera un tableau associatif qui contiendra tous les messages de messages. Ce tableau sera accessible sous le nom msgs et est utilisable dans toute la vue, par exemple :

Dans le fichier faces-config.xml il faut ajouter à la définition de l'application le resolver d'expression suivant :

Bloc de code
xml
xml
<el-resolver>org.esupportail.commons.jsf.ResourceBundleFacesELResolver</el-resolver>

Le bean msgs défini dans le fichier /properties/i18n/i18n.xml sera alors accessible dans les pages JSF. Exemple :

Bloc de code
xml
xml
<h:outputText
Bloc de code

<e:text value="#{msgs\['MANAGERS.TEXT.PAGES'DEEPLINKING_DEMO.GENERATE_URL.PARAM_NAME'\]}">
  <f:param value="#{controller.paginator.firstVisibleNumber + 1}"/>
  <f:param value="#{controller.paginator.lastVisibleNumber + 1}"/>
  <f:param value="#{controller.paginator.totalItemsCount}"/>
</e:text>

...

/>
Ajout d'un langage

L'ajout d'un langage se fait dans le fichier de configuration src/main/webapps/WEB-INF/jsf/faces-config.xml. Il suffit ensuite d'écrire le bundle correspondant.

exercice
Ajouter un langage
Ajouter un langage

Ajouter le langage japonais et traduire tout esup-commons (clin d'œil)

Spring MVC

Avertissement

TODO

...