Overview I4JSF API for JSF Internationalization

Olá Pessoal,

O post de hoje é um pouco diferente. O objetivo é apresentar para vocês o I4JSF API. Ué, mas que API é essa, Camilo? É uma API para JSF com o objetivo de ajudar a evitar a repetição de código para internacionalização. Sim, mas por que usar essa API? Qual o ganho?

 Vamos conhecer a seguir.

Lets go…

O contexto

Antes de apresentar a API vamos entender alguns contextos que já passei e foi de onde veio a ideia de criar I4JSF API que ainda está “verde” e na sua primeira versão. Quando trabalhamos apenas com 1 projeto JSF é comum em alguns casos criar uma classe utilitária para o código de internacionalização, ou melhor, o trecho de código que trata em adicionar uma mensagem no contexto do JSF, independente se veio de um bundle  ou  uma String direta.  Nada de errado aqui. Mas e quando na empresa que você trabalha há mais de um projeto JSF? E que em algum momento há algo em comum referente à implementação entre eles?

Por exemplo, identifiquei que em 2 projetos JSF ambos tinham uma classe para tratar de maneira mais produtiva sem perder a qualidade, com código utilitário, que era criando uma classe utilitária. Daí pensei “se existe uma API em comum, não seria melhor para os dois projetos, desde a melhoria até a manutenção desse código semelhante? Quanto os desenvolvedores gastaram para criar a classe utilitária que normalmente era um código necessário, mas que não estava associado às regras de negocio do projeto, porém era preciso escrever para facilitar o trabalho?”.

I4JSF

Assim nasceu I4JSF API, com o objetivo de evitar esse retrabalho em equipes que usam JSF e vão precisar internacionalizar aplicação e não querem fazer uma classe utilitária para cada projeto JSF.  No GitHub da API você pode encontrar todas as informações de como usar, adicionar ao seu pom.xml ou fazer o download do .jar e ainda há um projeto demo I4JSFDemo, que é um JEE Project que mostra I4JSF in Action.

Claro que há muito trabalho para ser feito e adicionando API, afinal de contas ela acabou de nascer e ai temos uma oportunidade caso deseje contribuir para o desenvolvimento. Veja como:

  1. Faça um fork do projeto no Github;
  2. Implemente a melhoria;
  3. Envie sua mudança;

Um exemplo de uso. Veja a comparação de código usando I4JSF com o código natural do JSF:  

Natural JSF

FacesContext facesContext = FacesContext.getCurrentInstance();

    ResourceBundle bundle = facesContext.getApplication().getResourceBundle(facesContext, “language”);

    String byndleKey = “msg.error”;

    String msgBundle = bundle.getString(bundleKey);

    addFacesMessage(facesContext, msgBundle);

 I4JSF

new I4JSF().addTranslateContext("language", "msg.error");

FAQ

Se for preciso adicionar uma mensagem no contexto JSF via bundle, como faço?

– Simples, chame o método public void addTranslateContext(String bundleVar, String keyProperties) e passe o nome da variável bundle declarada  e a key do bundle e a API se encarrega do resto.

Quero adicionar uma mensagem via bundle para um componente específico, posso?

– Sim. Chame o método addTranslateContext() passando o componentId,variavelBundle e key do bundle

Preciso adicionar uma mensagem para um component, informar a serverity e a mensagem direta. É possível?

– Sim, chame addMessageFaceContext(componentid,serverity, message)

 Preciso adicionar apenas uma mensagem ao contexto, como fazer?

Chame addFacesMessages() passando o FacesContext e  a mensagem que deseja

 Como adicionar uma mensagem para um severity específico sem especificar o component Id?

Chamando  addMessageFaceContext(severity,message).

GitHub 

https://github.com/camilolopes/I4JSF-API

Example Project

https://github.com/camilolopes/I4JSFDEMO

Vou ficando por aqui e aguardo os forks de vocês

Abraços, see ya!!! 

Deixe um comentário

O seu endereço de e-mail não será publicado.