JSP. 14 Ejemplo internacionalización
Ejemplo que soporta varios idiomas y se puede
cambiar entre ellos. Para que todo funcione se necesita definir los
archivos de recursos. En la carpeta del proyecto Other Sources → src/main/resources creamos el paquete com.me.jsp.bundle y en el se colocarán los archivos
properties.
Botón derecho sobre el paquete com.me.jsp.bundle
anteriormente creado New → Other, Categories:
Other, File Types:
Properties File. Asignas un nombre y creas el archivo.
Netbeans nos ayuda a la hora de crear estos
archivos. Una vez creado el fichero base, el archivo file.properties,
nos permite crear sus versiones personalizadas.
- Seleccionamos el Locale deseado. Click OK.
- Repetimos el paso 1 y 2 tantas veces como Locale deseemos.
- Una vez que hemos creado todos los Locale deseados.
- Botón derecho sobre file.properties → Open.
- Nos aparecerá una pestaña nueva. Aquí podremos ver el código de la cadena y su contenido en los distintos archivos de recursos. De esta forma crear, modificar y eliminar las cadenas es mucho más facil.
msg.greeting=Hola bienvenido
msg.bye=Adios
label.name=Nombre
label.require_field=Campo
requerido
label.english=Inglés
label.spanish=Español
label.select_language=Seleccionar
idioma
label.currency=Moneda
Archivo file_en_US.properties:
msg.greeting=Hello, wellcome
msg.bye=Bye
label.name=Name
label.require_field=Require
field
label.english=English
label.spanish=Spanish
label.select_language=Select
language
label.currency=Currency
Página i18.jsp:
<%@
taglib
prefix="c"
uri="http://java.sun.com/jsp/jstl/core"
%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%-- language maneja el idioma actual --%>
<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.me.jsp.bundle.file" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Curso</title>
</head>
<body>
<form action="index.jsp" method="POST">
<input type="submit" value="Volver a Menu" />
</form><br />
<h3>Internacionalización</h3>
<fmt:message key="msg.greeting" /><br />
<fmt:message key="msg.bye" /><br />
<fmt:message key="label.require_field" />
<br /><br />
<form>
<fmt:message key="label.select_language" />:
<select id="language" name="language" onchange="submit();">
<option value="es_ES"
<c:if test="${language=='es_ES'}">selected</c:if>>
<fmt:message key="label.spanish" />
</option>
<option value="en_US"
<c:if test="${language=='en_US'}">selected</c:if>>
<fmt:message key="label.english" />
</option>
</select>
</form>
<br />
<h3>formatNumber</h3>
<c:set var="numero" value="125678.4309" />
formatNumber (1)=> <fmt:message key="label.currency" />:
<%-- type= number, currency, percent --%>
<fmt:formatNumber value="${numero}" type="currency"/><br />
</body>
</html>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%-- language maneja el idioma actual --%>
<c:set var="language" value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />
<fmt:setBundle basename="com.me.jsp.bundle.file" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Curso</title>
</head>
<body>
<form action="index.jsp" method="POST">
<input type="submit" value="Volver a Menu" />
</form><br />
<h3>Internacionalización</h3>
<fmt:message key="msg.greeting" /><br />
<fmt:message key="msg.bye" /><br />
<fmt:message key="label.require_field" />
<br /><br />
<form>
<fmt:message key="label.select_language" />:
<select id="language" name="language" onchange="submit();">
<option value="es_ES"
<c:if test="${language=='es_ES'}">selected</c:if>>
<fmt:message key="label.spanish" />
</option>
<option value="en_US"
<c:if test="${language=='en_US'}">selected</c:if>>
<fmt:message key="label.english" />
</option>
</select>
</form>
<br />
<h3>formatNumber</h3>
<c:set var="numero" value="125678.4309" />
formatNumber (1)=> <fmt:message key="label.currency" />:
<%-- type= number, currency, percent --%>
<fmt:formatNumber value="${numero}" type="currency"/><br />
</body>
</html>
<c:set
var="language"
value="${not
empty
param.language ? param.language : not
empty
language ? language : pageContext.request.locale}"
scope="session"
/>
Si me llega un parámetro llamado language y no
está vacío lo guardo en la variable de sesión language, si el
parámetro está vacío busco en la variable language, si no está
vacía la uso y si está vacía utilizo el locale de la petición.
Comentarios
Publicar un comentario