[RESOLVIDO] Internacionalização de mensagens com JSF
9 respostas
S
ssh
Boa noite pessoal do GUJ, só fera por aqui. Minha dúvida de hoje é a seguinte:
Estou parametrizando as mensagens do meu sisteminha, utilizando o arquivo .properties;
Com isso, irei ter dois arquivos, 1 para ingles e 1 para portugues;
Eu gostaria de colocar as bandeiras(flags) no topo, e ao clicar na flag dos EUA seja utilizado o inglês, e ao clicar na flag do Brasil, utiliza o arquivo .properties em pt_BR.
Como eu posso fazer isso.
obs:existe a tag
<f:viewlocale="..."><!-- todo código html aqui --></f:view>
Utilizo o método getMessage passando a chave para recuperar a String desejada.
S
ssh
sensaciona-le.
mas não entendi essa linha aqui:
text = ResourceBundle.getBundle("br.com.asandrob.resources.messages.message", locale);
o que seria esse primeiro parametro?
obrigado! vou ver o que conseguido fazer
I
igor_ks
Isso é o pacote onde fica o teu arquivo messages.properties, o ultimo “message” já é o nome do arquivo sem a extensao
S
ssh
entendi.
puts, mas ainda não estou entendendo. Como assim, mensagem dentro do MB? em que caso utilizaria mensagem dentro do MB? isso que não estou entendeno.
=/
muitisimo obrigado pela ajuda, o básico que queria, já está funcionando! sensasional.
I
igor_ks
Em caso de vc precisar emitir uma mensagem dinâmica ou que seja baseado em alguma regra de negócios, enfim, que não seja estático igual um label.
Por exemplo: um botão “Consultar” que traz registros. Caso não tenha nenhum registro, quero que emita uma mensagem “Consulta não retornou valores”, não vou fazer esse if dentro da pagina jsf certo? seria dentro do ManagedBean, nesse caso daria para emitir a mensagem em formato String, mas o messages.properties serve para internacionalizacao, então ao inves de ficar escrevendo strings dentro de codigo java, internacionaliza tudo isso
S
ssh
certo, entao dentro do MB qualquer eu chamaria a função getMessage do LocaleMB?
e como eu coloco a menssagem entro desse outro managed bean? porque no facelet(xhtml) eu uso expresion language #{msgs.tituloPagina} por exemplo. e como faria dentro de uma managed bean, para obter uma mensagem do arquivo .properties?
abs
I
igor_ks
FacesContextcontext=FacesContext.getCurrentInstance();ResourceBundlebundle=ResourceBundle.getBundle("br.com.resources.messages",context.getViewRoot().getLocale());Stringmessage=bundle.getString(codigo_do_messages);//captura a mensagem do messages.properties (com o faces-config.xml configurado)FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,message,message));//emitindo a mensagem na tela
S
ssh
igor_ks:
FacesContextcontext=FacesContext.getCurrentInstance();ResourceBundlebundle=ResourceBundle.getBundle("br.com.resources.messages",context.getViewRoot().getLocale());Stringmessage=bundle.getString(codigo_do_messages);//captura a mensagem do messages.properties (com o faces-config.xml configurado)FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,message,message));//emitindo a mensagem na tela