Exemple d’internationalisation JSF 2

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.

jsf2-internationalization-folder

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.

jsf2-internationalization-example-1

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.

jsf2-internationalization-example-2

Télécharger le code source

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