Tenemos una aplicación que usa el JSP/servlet básico que todo el texto actualmente en inglés está codificado en las páginas JSP. Estamos considerando las internacionalizaciones de nuestra aplicación, por lo que necesitamos algún tipo de forma de extraer el texto en el archivo de propiedades.Paquete de recursos JSTL para internacionalización y localización
Aquí es lo que he hecho hasta ahora:
1) Crear un archivo llamado XXXXX-messages_en.properties
, añadir el par clave/valor en el archivo de propiedades, por ejemplo, AAAAA = Hello World
2) Carga JSTL taglibs pertinentes en la página JSP
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
3) Reemplazar el texto anterior con
<fmt:message key="AAAAA" bundle="${XXXXX}"/>
4) Agregar la etiqueta setBundle en la página JSP:
<fmt:setBundle basename="XXXXX-messages" var="XXXXX"/>
Y reinicie el servidor, todo se muestra correctamente.
Sin embargo, mi pregunta sobre el uso de la biblioteca JSTL internacionalización es:
PREGUNTA 1) Parece que tengo que añadir <fmt:setBundle>
etiqueta en cada uno de singe páginas JSP, que es un poco feo y si hay algo que necesita cambio en el futuro (¿cambio de nombre?) esto hará la vida más difícil.
Creo que tal vez puedo crear una página separada y poner esto <fmt:setBundle>
en él, y luego incluir esta página usando <jsp:include>
. ¿O puedo inyectar esto a través de un filtro de servlet? Yo diría que no estoy muy contento con ninguna de las opciones.
¿Hay alguna manera recomendada de hacerlo?
PREGUNTA 2) ¿Cómo se especifica un idioma predeterminado si no hay ningún archivo de propiedades de coincidencia allí? He probado en mi caso, si puse <fmt:setLocale>
en la página JSP con un idioma francés, la página aún puede cargarse correctamente. ¿Eso significa que la versión en inglés es siempre la predeterminada o es simplemente porque mi sistema operativo/navegador es inglés?
¿Qué pasará si un usuario Chino/Japonés abre mi página y tengo las propiedades en inglés y en francés archivadas allí?
Definitivamente leído esto cuando Google en todo, así que ¿cómo puedo olvidar al respecto? Mi mente debe salir de mi cabeza en ese momento. De todos modos, gracias por tu respuesta! –