Eu consegui galera !!
Mas vou explicar melhor, quero uma aplicação que me mostre todas os idiomas que ela tem, que para isso eu apenas crie um arquivo de propriedade e depois mepei no faces-config, sem que eu n mecha em nada da pagina JSF.
Bem, eu fiz assim:
Pagina JSF ....
<h:form>
<h:selectOneMenu value="#{aplicacaoMB.langCode}">
<f:selectItems value="#{aplicacaoMB.langCodes}"/>
</h:selectOneMenu>
</h:form>
Bean Gerenciado, metodo que capitura todas os idiomas ...
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
/**
*
* @author Lucas
*/
@ManagedBean
@RequestScoped
public class AplicacaoMB {
private String langCode;
public AplicacaoMB() {
}
public void testar() throws ValidatorException{
FacesContext context = FacesContext.getCurrentInstance();
String textoMensagem = carregarMensagemDeArquivo("SUCESSO");
context.addMessage("form:campo1", new FacesMessage(FacesMessage.SEVERITY_ERROR, null, textoMensagem));
}
public void alterar() throws ValidatorException{
FacesContext context = FacesContext.getCurrentInstance();
String textoMensagem = carregarMensagemDeArquivo("ALTERADO");
context.addMessage("form:campo1", new FacesMessage(FacesMessage.SEVERITY_ERROR, null, textoMensagem));
}
public String carregarMensagemDeArquivo(String chave) {
//código pra carregar e retornar texto da chave do arquivo Mensagens
FacesContext context = FacesContext.getCurrentInstance();
Locale myLocale = context.getViewRoot().getLocale();
String text = LocaleHelper.getLocaleString(context.getApplication().getMessageBundle(), chave , null, myLocale);
return text;
}
public String getLangCode() {
return langCode;
}
public void setLangCode(String langCode) {
this.langCode = langCode;
}
public List<SelectItem> getLangCodes() {
List<SelectItem> items = new ArrayList<SelectItem>();
Application app = FacesContext.getCurrentInstance().getApplication();
Locale locale = app.getDefaultLocale();
items.add(new SelectItem(locale.toString()));
Iterator<Locale> iter = app.getSupportedLocales();
while (iter.hasNext()) {
locale = iter.next();
items.add(new SelectItem(locale.toString()));
}
return items;
}
public String mudarIdioma(Locale locale) {
FacesContext fc = FacesContext.getCurrentInstance();
fc.getViewRoot().setLocale(locale);
return "";
}
public String espanhol() {
Locale locale = new Locale("es", "ES");
mudarIdioma(locale);
return null;
}
public String portugues() {
Locale locale = new Locale("pt", "BR");
mudarIdioma(locale);
return null;
}
public String italiano() {
Locale locale = new Locale("it", "IT");
mudarIdioma(locale);
return null;
}
public String frances() {
Locale locale = new Locale("fr", "FR");
mudarIdioma(locale);
return null;
}
}
:roll:
Abraços e desculpe ai se não soube explicar bem, mas fica ai para quem quiser.
:D