Boa Noite
Estou desenvolvendo uma aplicação onde estou usando a JSTL para gerenciar a parte de internacionalização, nas páginas jsp utilizando a tag fmt da JSTL a internacionalização esta funcionando normalmente, agora no sistema apareceu a necessidade de alguns textos que não podem ser exibidos através da fmt sejam internacionalizados, pois são oriundos de requisições ajax e retornados através de objetos JSON.
Estou setando a escolha do idioma da seguinte forma:
Config.set(session, Config.FMT_LOCALE, locale);
Config.set(session, Config.FMT_FALLBACK_LOCALE, locale);
Tentei utilizar a Interface do VRaptor Localization com o método getMessage(), para recuperar a mensagem antes do processo de serialização em JSON, mas não estou conseguindo, o método sempre retorna ???chave.properties???, que de acordo com o javadoc significa que não encontrou nada para aquela chave de acesso.
Alguém saberia como corrigir tal problema ?
Obrigado.
a chave existe no arquivo message.properties? ou o correspondente do locale?
Solucionei o problema, acontecia que o Locale não esta sendo setado na chamada do método, então o arquivo .properties não era carregado e a chave correspondente não era encontrada.
Passos realizados para solução do problema:
1º) No web.xml adicionei os parâmetros de contexto para carregar os .properties e inicializar o idioma default como PT:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>messages/messages</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
<param-value>pt_PT</param-value>
</context-param>
2º) Para setar o idioma e carregar o .properties desejado, no controller fiz um método com a seguinte lógica:
Config.set(session, Config.FMT_LOCALE, TypesMessageLocale.getLocaleAutenticacao(idioma));
Config.set(session, Config.FMT_FALLBACK_LOCALE, TypesMessageLocale.getLocaleAutenticacao(idioma));
3º) Para as mensagens estáticas do sistema utilizei a biblioteca fmt da JSTL para recuperar as chaves do .properties, e dentro dos controllers utilizei a interface Localization do VRaptor.
Valeu.
1 curtida