Exemple d'internationalisation JSF 2
Dans l'application JSF, vous pouvez modifier les paramètres régionaux de votre application comme suit:
//this example change locale to france
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale('fr');
Il facilite le support JSF pour l'internationalisation ou plusieurs langues.
Exemple d'internationalisation JSF complet
Dans ce didacticiel, nous vous montrons une application Web JSF 2.0, qui affiche une page de bienvenue, récupère un message de bienvenue à partir du fichier de propriétés et modifie le message de bienvenue dynamiquement en fonction de la langue sélectionnée.
1. Dossier de projet
Structure de répertoire pour cet exemple.

2. Fichier de propriétés
Voici deux fichiers de propriétés pour stocker les messages en anglais et en chinois.
welcome.properties
welcome.jsf = Happy learning JSF 2.0
welcome_zh_CN.properties
welcome.jsf = \u5feb\u4e50\u5b66\u4e60 JSF 2.0
Note
Pour les caractères UTF-8 ou non anglais, par exemple chinois, vous devez l'encoder avec l'outilnative2ascii.
3. faces-config.xml
Incluez le fichier de propriétés ci-dessus dans votre application JSF et déclarez «en» comme paramètre régional par défaut de votre application.
faces-config.xml
en com.example.welcome msg
4. Bean géré
Un bean géré, qui fournit une liste de sélection de langue, et un écouteur d'événement de modification de valeur pour modifier les paramètres régionaux par programme.
LanguageBean .java
package com.example;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
@ManagedBean(name="language")
@SessionScoped
public class LanguageBean implements Serializable{
private static final long serialVersionUID = 1L;
private String localeCode;
private static Map countries;
static{
countries = new LinkedHashMap();
countries.put("English", Locale.ENGLISH); //label, value
countries.put("Chinese", Locale.SIMPLIFIED_CHINESE);
}
public Map getCountriesInMap() {
return countries;
}
public String getLocaleCode() {
return localeCode;
}
public void setLocaleCode(String localeCode) {
this.localeCode = localeCode;
}
//value change event listener
public void countryLocaleCodeChanged(ValueChangeEvent e){
String newLocaleValue = e.getNewValue().toString();
//loop country map to compare the locale code
for (Map.Entry entry : countries.entrySet()) {
if(entry.getValue().toString().equals(newLocaleValue)){
FacesContext.getCurrentInstance()
.getViewRoot().setLocale((Locale)entry.getValue());
}
}
}
}
5. Page JSF
Une page JSF pour afficher un message de bienvenue à partir du fichier de propriétés et attacher un écouteur d'événement de modification de valeur à une liste déroulante.
JSF 2 internationalization example
Language :
6. Demo
Par défaut, l'anglais local s'affiche.

Si l'utilisateur change la langue de la liste déroulante, il déclenchera un écouteur d'événement de modification de valeur et modifiera les paramètres régionaux de l'application en conséquence.

Télécharger le code source
Téléchargez-le -JSF-2-Internationalization-Example.zip (11 Ko)