Traducir una página JSF con Java

TraducirCon la penetración que está teniendo el Internet en todo el mundo, cada vez es más importante traducir nuestras páginas web, debido a que los visitantes ya pueden venir de cualquier parte del mundo, es por eso que los sitios más importantes o que buscan captar visitantes de otras regiones, permitan a sus usuarios cambiar de idioma.

Pueda que de entrada parezca algo muy complicado o laborioso de hacer, sin embargo, es mucho más simple de lo que te puedas imaginar.

 

Para explicar cómo funciona la Internacionalización (I18N), lo explicaremos mediante un ejemplo simple pero eficaz, implementaremos una página de Login, la cual se verá de la siguiente manera:

 

Traducir

El código completo lo puedes descargar de GitHub (https://github.com/oscarjb1/Blog-TranslateApp.git).

 

Básicamente, esta página nos permitirá cambiar entre inglés y español, seleccionando el idioma deseado en la parte superior derecha de la pantalla. Tras seleccionar el nuevo idioma, la página de recargara con el nuevo idioma.

 

Veamos cómo es que esto es posible. Primero que nada, será necesario crear un archivo properties por cada idioma que soportará nuestra aplicación. Para nuestro ejemplo, solo requerimos de dos archivos como se ven a continuación:

 

messages.properties:

Contiene las traducciones por default, en este caso Ingles.

 

 

message_es_ES.properties:

Contiene las traducciones en español. Prestemos atención en el nombre, pues es sumamente importante, la primera partemessage  podría tener cualquier valor, pero todos los idiomas soportados deberán iniciar con el mismo nombre., sin embargo, lo que viene a continuación es sumamente importante para identificar el idioma, la segunda secciónes  indica el idioma (español) y la tercera parteES  el país (España).

 

Podemos observar que las traducciones en inglés, no requieren país ni idioma, pues los hemos configurado como el idioma default, esto quiere decir que este idioma se utilizara en caso de no tener una coincidencia para el idioma del usuario.

 

Para configurar el idioma default, es necesario definirlo en el archivo faces-config.xml y deberá quedar de la siguiente manera:

 

 

Básicamente definiremos el idioma default (<default-locale> ) y los idiomas soportados (<supported-locale>). La sección <base-name> debe de coincidir con el paquete en el que están los archivos de traducción, junto con la primera sección del nombre (messages). De esta forma JSF sabe, basado en este path + el idioma y el país, es posible determinar el archivo exacto a utilizar.  Finalmente, le indicamos que las traducciones las pase a una variable (<var> ) llamada msg.

 

Por otra parte, tenemos el archivo JSF donde creamos la presentación:

 

Observemos que todos los valores traducibles están con la sintaxis#{msg[property]} , donde property es el nombre de la propiedad a traducir de los archivos de traducción.

La traducción se dispara cuando cambiamos el idioma en el componte, selectOneMenu el cual dispara un evento que es escuchado por el BeanLoginBean , el cual vemos a continuación:

 

 

Cuando un nuevo idioma es seleccionado el método changeLang es ejecutado y el nuevo idioma es establecido mediante la línea:

viewRoot.setLocale(new Locale(newValue.toString()));

Después de esto, la pantalla es recargada con el nuevo idioma. Es tan simple como eso.

 

NOTA: Los estilos para que la página se vea tal cuan aparece en la imagen, los puedes descargar del repositorio de GitHub que menciona anteriormente.

Artículos relacionados

Java – Que es Herencia Para los nuevo en el mundo de la programación orientada a objetos este termino les ha de parecer familiar sin embargo no siempre lo tenemos muy claro ...
Como crear un Connection Pool en WebLogic En la entrada pasada les enseñe los pasos para crear un DataSource (Como crear un Data Source en WebLogic) los cuales serán necesarios para la configu...
Como crear un DataSource en WebLogic En este artículo les explico los pasos que se tiene que llevar a cabo para registrar un nuevo Data Source en WebLogic. Los Data Source o fuentes de da...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *