09 mayo, 2017

9. Crear una aplicación Web Java en Eclipse con Servlets y JSPs (Parte 9 - i18n)

¡Bienvenidos a todos! Esta publicación formará parte de una serie de 13 publicaciones que estaré desarrollando para aprender a desarrollar una aplicación web pura en Java bajo la plataforma JEE usando Servlets y JSPs. Este será un curso en forma de guía para aquellas personas que recién estén empezando en el mundo de la programación web y que todavía no hacen uso de ningún framework.

Haciendo uso de JSPs y Servlets construiremos nuestras aplicaciones webs los cuales se ejecutarán en Apahe Tomcat (Contenedor de Servlets), el cual lo usaremos como servidor de aplicaciones para ejecutar nuestro proyecto. Asimismo, usaremos Eclipse como herramienta IDE (Entorno de Desarrollo Integrado) para la edición y compilación de nuestro código.

Clase 06a


i18n - Internacionalización

El día de hoy veremos un ejemplo sencillo de como podemos emplear i18n o internacionalización en nuestros proyectos web java con Servlets y JSPs.

Recordando la publicación anterior...

Hemos terminado de implementar el mantenimiento a una tabla del proyecto el cual veníamos trabajando, por lo que ya sabemos como desarrollar una aplicación web en Java usando Servlet, JSPs, Scriptlets, Espressions, JSTL, DAO, MySQL y properties.

Este es el proyecto que hemos terminado de realizar, les dejo el link del archivo war para que lo descarguen, lo importen y lo revisen. Es un proyecto que consta de un logueo y un mantenimiento a una tabla cliente y que tiene todos estos temas mencionados anteriormente. Clic Aquí para descargar.







Cambiar Idioma en mi aplicación web

1. Importamos y ejecutamos el siguiente proyecto que les voy a dejar. Clic Aquí

2. Creamos los siguientes recursos properties en el paquete aprendamos.java.recursos

Recursos_es_MX.properties

1
2
3
4
5
6
7
8
9
10
11
12
# En un archivo properties definimos keys asociadas a valores
 
#keys para el menu
menu.bienvenida = Página de Bienvenida mano
menu.listado = Listado de Cuates
menu.logueo = Vao al logueo
 
#keys para la pagina de bienvenida
bienvenida.saludo = Bienvenido(a) estimado(a) chavo :)
 
#keys para el listado
listado.nombre = Guey

Recursos_it.properties
1
2
3
4
5
6
7
8
9
10
11
12
# En un archivo properties definimos keys asociadas a valores
 
#keys para el menu
menu.bienvenida = Página de Benvenuto
menu.listado = Elenco dei deputati
menu.logueo =Vai alla registrazione
 
#keys para la pagina de bienvenida
bienvenida.saludo = Benvenuto (a) stimato (un membro):)
 
#keys para el listado
listado.nombre = Nome

Recursos_de.properties
1
2
3
4
5
6
7
8
9
10
11
12
# En un archivo properties definimos keys asociadas a valores
 
#keys para el menu
menu.bienvenida = Willkommen-Seite
menu.listado =Liste der Mitglieder
menu.logueo = zur Anmeldung
 
#keys para la pagina de bienvenida
bienvenida.saludo = Bienvenido (a) Geschätzte (a) Mitglied:)
 
#keys para el listado
listado.nombre = Name

Recordemos que los recursos properties se tiene que registrar en el archivo descriptor web.xml
1
2
3
4
5
<context-param>
 <description>Definimos archivo de recursos de JSTL</description>
 <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
 <param-value>aprendamos.java.recursos.Recursos</param-value>
</context-param>

3. Creamos el servlet IdiomaServlet.java en el paquete aprendamos.java.servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package aprendamos.java.servlet;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;
 
import java.util.*;
 
/**
 * Servlet implementation class IdiomaServlet
 */
public class IdiomaServlet extends HttpServlet {
  
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 
 protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
  // Recuperamos el idioma y/o pais seleccionados por el usuario
  String vidioma = request.getParameter("idioma");
  String vpais = request.getParameter("pais");
 
  // En java, podemos representar un idioma / pais utilizando la clase Locale
  Locale locale = new Locale(vidioma);
 
  if (vpais != null) {
   locale = new Locale(vidioma, vpais);
  }
 
  // Utilizando el Locale, indicamos a JSTL cual es el idioma/pais seleccionado por el usuario.
  // Esta informacion lo almacenaremos en la sesion web
  HttpSession lasesion = request.getSession(false);
  Config.set(lasesion, Config.FMT_LOCALE, locale);
 
  // Invocamos finalmente a la pagina de bienvenida
  request.getRequestDispatcher("/bienvenida.jsp").forward(request, response);
 }
 
}

De la misma manera debemos registrar el servlet en el archivo descriptor web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<servlet>
        <!-- Aquí se define el nombre físico del servlet -->
 <description></description>
 <display-name>IdiomaServlet</display-name>
 <servlet-name>IdiomaServlet</servlet-name>
 <servlet-class>aprendamos.java.servlet.IdiomaServlet</servlet-class>
</servlet>
<servlet-mapping>
        <!-- Aquí se define el nombre lógico del servlet -->
 <servlet-name>IdiomaServlet</servlet-name>
 <url-pattern>/IdiomaServlet</url-pattern>
 <url-pattern>/idioma.do</url-pattern>
</servlet-mapping>

4. Actualizamos la página menu.jsp y agregamos los siguientes enlaces para cambiar el idioma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--  Definimos links para cambiar el idioma -->
<tr>
 <td class="control">
  <a href="idioma.do?idioma=it">Italiano</a>
 </td>
</tr>
<tr>
 <td class="control">
  <a href="idioma.do?idioma=de">Aleman</a>
 </td>
</tr>
<tr>
 <td class="control">
  <a href="idioma.do?idioma=es&pais=MX">Mexicano</a>
 </td>
</tr>
<tr>
 <td class="control">
  <a href="idioma.do?idioma=fr">Frances</a>
 </td>
</tr>

5. Ejecutamos el proyecto y verificamos que al hacer clic en alguno de esos enlaces cambie el idioma de los textos definidos en los properties

Descargar ejercicio
Descargar archivo

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!