Bom Dia galera, tranquilo?
To com o seguinte problema, estou desenvolvendo uma aplicação com jsf + hibernate + primefaces, no meu formulário tenho um combo referente ao pais. Como eu posso internacionalizar ele?
Ou seja tem alguma maneira de aplicar internacionalização digamos “dinâmica”, ou teria que escrever o nome de cada pais no properties mesmo?
Agradeço a ajuda de todos
daria pra guardar no banco o nome dos países e usar o locale (ex: BR) como chave.
caso contrário terá que escrever nos properties mesmo
Muito Obrigado heatcold,
eu fiz da seguinte forma:
public List<Pais> getPaises() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
Locale currentLocale = viewRoot.getLocale();
if(currentLocale.getLanguage().equals(new Locale("pt").getLanguage())){
PaisRepository repository = new PaisRepository(entityManager);
this.paises = repository.getPaises();
}else if(currentLocale.getLanguage().equals(new Locale("en").getLanguage())){
PaisRepository repository = new PaisRepository(entityManager);
this.paises = repository.getPaisesEN();
}else if(currentLocale.getLanguage().equals(new Locale("es").getLanguage())){
PaisRepository repository = new PaisRepository(entityManager);
this.paises = repository.getPaisesES();
}
return paises;
}
Vlw!!
[quote=heatcold]daria pra guardar no banco o nome dos países e usar o locale (ex: BR) como chave.
caso contrário terá que escrever nos properties mesmo[/quote]
Achei interessante a proposta do banco mas uma dúvida como ele usaria o locale no banco para internacionalização, as
mensagens seriam alterada somente informando o locale, sem ter um properties ou repositorio com as mensagens?
Valeu.
Cara, eu faria o seguinte:
Criaria um .propertie para cada pais e um padrão para ser usado. (O qual a aplicação irá apontar)
Quando o cliente selecionar o País, você escreve no padrão os dados .propertie do país escolhido através de um stream.
Assim a aplicação irá utilizar as chaves do país escolhido, sacou?
Ao alterar o pais basta alterar o arquivo padrão para os dados do novo .properties selecionado.
Sacou?
Se achar uma idéia melhor, posta aew pra gente aprender também.
Abraços.
realmente o padrão é ter um properties para cada país… a utilização do banco nesse caso seria uma opção, apenas.
só um comentário, acredito que ficaria melhor assim:
PaisRepository repository = new PaisRepository(entityManager);
// ex: languageCode = "BR"
this.paises = repository.getPaises(languageCode);
caso contrário, você terá que modificar o código, sempre que o suporte a um país for adicionado.
PS:
Escrever em um .properties em runtime não é uma prática comum. Geralmente nos properties ficam informações estáticas.
Pois é, depois que escrevi o código, eu fui ver, que tava escrevendo d+ ^^’
eu estava pensando em acrescentar uma coluna no banco referente a linguagem saca.
Essa parte aqui:
[quote]Quando o cliente selecionar o País, você escreve no padrão os dados .propertie do país escolhido através de um stream.
Assim a aplicação irá utilizar as chaves do país escolhido, sacou?
Ao alterar o pais basta alterar o arquivo padrão para os dados do novo .properties selecionado.
Sacou? [/quote]
Eu até entendi, só que to meio voando como implementar ele ^^’