Internacionalizando com JSF

Olá Pessoal,

Objetivo deste topico
Ajudar os colegas a i18n sua aplicação com JSF. E este topico ser uma referencia para i18n em JSF. Pois mtos exemplos sempre traduziam a pagina atual e nunca toda a aplicação.

Vamos lá …

Se vc fez o exemplo do livro Core JavaServer Faces e não conseguiu …
Se vc tentou fazer uma gambiarra de usar HashMap e tbm não conseguiu …

Pois é, eu tbm tentei tudo isso e não consegui!!! Apenas era internacionalizada a pagina que esta no momento, ao mudar de pagina ele volta para a linguagem default.

Vou colocar um exemplo rapido e facil para internacionalizar sua aplicação, isso se vc utiliza JSF é claro.

ManageBean

import javax.faces.event.ActionEvent;

public class LocaleBean {

	private String local = "pt_BR";
	

	public String getLocal() {
		return local;
	}

	public void setLocal(String local) {
		this.local = local;
	}

	public ChangeLocaleController(){
	}
	
	public void  brasilAction(ActionEvent actionEvent) {
		this.local = "pt_BR";
	}
   
	public void englishAction(ActionEvent actionEvent) {
		this.local = "en";
	}
}

Configurar o Bean no faces-config.xml

        <managed-bean>
		<managed-bean-name>localeBean</managed-bean-name>
		<managed-bean-class>LocaleBean</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>

Aqui vai o mais importante, na sua pagina jsf, dentro da tag f:view, temos um atributo locale, que aceita tanto um java.util.Locale quanto um String.

     <f:view locale="#{localeBean.local}">
          //aqui vai toda a sua pagina ....
         // no meu caso eu uso layout, portanto basta adiciona-lo uma vez aqui ....
         // se vc tiver varios f:view .. so adicionar locale="#{localeBean.local}" e pronto
    </f:view>

Agora vc adiciona as bandeirinhas no header por exemplo e chama os metodos no bean atraves da propriedade actionListener.

Ai basta configura o MessageResources.properties e chamar a key na sua pagina.

Pronto, sua aplicação esta internacionalizada…

Espero ter ajudado e comentarios são bem vindos !

Valeu Galera