Internalización ( i18n ) en AppFuse

Para que nuestra aplicación appfuse pueda utilizarse en varios idiomas, tenemos que definir las posibles claves en forma de clave/valor del fichero messages.properties ubicado en /src/main/resources/

Ejemplo=> webapp.clave=Estamos aprendiendo Internalización.

Cada idioma nuevo deberá tener un messages.properties diferente, de forma que si tenemos idioma inglés deberemos tener messages_en.properties, y en español messages_es.properties. En caso de que haya sublenguajes, éstos irán en mayúsculas, veamos un ejemplo con Perú: messages_es_PE.properties .

Después, desde nuestro jsp podemos referenciar dicha clave con el objeto message, es decir ( <fmt:message key="webapp.clave"></fmt:message> ), y según la configuración del navegador de usuario que consulte la aplicación ( por ejemplo, en firefox es Herramientas=> Opciones=> Avanzado=> General=> Idiomas=>Elegir ) obtendrá el idioma correspondiente.

Todo esto funcionará si nuestro framework está bien configurado, es decir, si el archivo /src/main/webapp/WEB-INF/dispatcher-servlet.xml ha declarado el bean: bean id = "messageSource" class = "org.springframework.context.support. ResourceBundleMessageSource" con el basename = messages .
En caso de que no hayamos declarado un idioma para nuestra aplicación, por defecto pillará messages.properties .

Si quisieramos tener en nuestra web los típicos botoncitos o iconos para cambiar explícitamente el lenguaje a usar, aplicamos JSTL jugando con ello gracias a un parámetro (idioma según nuestro ejemplo) y cuyo ámbito va a ser de sesión. He aquí las líneas que debemos agregar a nuestro .jsp :


<c:if test="${param['idioma']!=null}">
<fmt:setLocale value="${param['idioma']}" scope="session"/>
</c:if>

1 comentario:

Juan Antonio Ruz dijo...

appfuse=spring+hibernate+sitemesh