Servlets – Internacionalización (I18N)

La internacionalización (I18N) es el proceso de diseño de aplicaciones web de tal manera que brinda soporte para varios países, varios idiomas y varias monedas automáticamente sin realizar ningún cambio en la aplicación. Se denomina internacionalización (I18N). Se le conoce como I18N porque entre I y N; hay 18 caracteres; por eso I18N. La internacionalización es uno de los poderosos conceptos de Java si está desarrollando una aplicación y desea mostrar mensajes, monedas, fechas, horas, etc., según la región o el idioma específico. En lugar de profundizar en el concepto, primero analicemos algunos temas que serán útiles para comprender los conceptos:

  • Internacionalización (I18N): es la tarea de crear un sistema que sea lo suficientemente flexible para funcionar en cualquier entorno.
  • Localización (I10N): Es el proceso de hacer que un programa se ejecute durante una ubicación específica.
  • Locale: Representa una región geográfica, política o cultural seleccionada. La representación de string de una configuración regional consta de la abreviatura estándar internacional de dos caracteres para el idioma y el país y una variante opcional, separados por caracteres de subrayado (_).

Configuración regional de inicio

  • La aplicación web recupera la configuración regional de la solicitud mediante el método getLocale() o permite que el usuario seleccione explícitamente la configuración regional para obtener las strings correctas para un usuario determinado.
  • Una operación que necesita una configuración regional para realizar su tarea se denomina sensible a la configuración regional y utiliza la configuración regional para personalizar la información para el usuario.
  • No se realiza ninguna verificación de validez una vez que construye un Locale porque un objeto Locale es simplemente un identificador para un vecindario.

java.util.Locale request.getLocale()

Métodos utilizados

  1. getCountry(): Devuelve el código de país/región en mayúsculas para esta configuración regional en formato ISO3166 de 2 letras.
  2. getDisplayCountry(): Devuelve el nombre del país de la localidad que es apropiado para mostrar al usuario.
  3. getLanguage(): Devuelve el código de idioma en minúsculas para esta localidad en formato ISO 639.
  4. getDisplayLanguage(): devuelve el nombre del idioma de la configuración regional que es apropiado para mostrar al usuario.
  5. getISO3Country(): Devuelve una abreviatura de tres letras para el país de esta localidad.
  6. getISO3Language(): Devuelve una abreviatura de tres letras para el idioma de esta configuración regional.

Ejemplo

Este ejemplo muestra cómo se muestra un idioma y un país asociado para una solicitud

Java

import java.io.*;
import java.util.Locale;
import javax.servlet.*;
import javax.servlet.http.*;
  
public class GetLocale extends HttpServlet {
  
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
    {
  
        // Get the client's Locale
        Locale locale = request.getLocale();
        String language = locale.getLanguage();
        String country = locale.getCountry();
  
        // Set response content type
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String title = "Detecting Locale";
  
        String docType =
  
            "<!doctype html public \"-//w3c//dtd html 4.0 "
            + "transitional//en\">\n";
  
        out.println(docType +
  
                        "<html>\n"
                        +
  
                        "<head><title>" + title
                        + "</title></head>\n"
                        +
  
                        "<body bgcolor = \"#f0f0f0\">\n"
                        +
  
                        "<h1 align = \"center\">" + language
                        + "</h1>\n"
                        +
  
                        "<h2 align = \"center\">" + country
                        + "</h2>\n"
                        +
  
                        "</body>
  
                    < / html > "
  
        );
    }
}

Ajustes de idioma

  • Un servlet genera una página escrita en un idioma de Europa occidental, como inglés, español, alemán, francés, italiano, holandés, noruego, finlandés o sueco. Nótese la utilización de los caracteres especiales “ñ” y “¡”. Caracteres como estos, aunque escasos en inglés, prevalecen en los idiomas de Europa occidental. Los servlets tienen dos formas de obtener estos caracteres: con entidades de caracteres HTML o secuencias de escape Unicode.
  • La capacidad de mostrar secuencias específicas de caracteres en una página HTML como un solo carácter. Las secuencias, denominadas entidades de caracteres, comienzan con un ampersand (&) y terminan con un punto y coma (;). Las entidades de caracteres se pueden nombrar o numerar.
  • Unicode Worldwide Escape Sequences es un sistema de codificación de caracteres diseñado para admitir el intercambio, el procesamiento y la visualización de textos escritos en los diversos idiomas del mundo moderno. Además, admite textos clásicos e históricos de los muchos idiomas escritos.

Fechas específicas de la localidad

Puede utilizar la clase java.text.DateFormat y su método estático getDateTimeInstance() para formatear la fecha y la hora específicas de la configuración regional. El siguiente es el ejemplo que muestra cómo dar formato a las fechas específicas de una configuración regional determinada:

Java

import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.servlet.*;
import javax.servlet.http.*;
  
public class DateLocale extends HttpServlet {
  
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
  
        throws ServletException, IOException
    {
  
        // Set response content type
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        // Get the client's Locale
        Locale locale = request.getLocale();
        String date = DateFormat
                          .getDateTimeInstance(
                              DateFormat.FULL,
                              DateFormat.SHORT, locale)
                          .format(new Date());
  
        String title = "Locale Specific Dates";
        String docType =
  
            "<!doctype html public \"-//w3c//dtd html 4.0 "
            + "transitional//en\">\n";
  
        out.println(docType +
  
                        "<html>\n"
                        +
  
                        "<head><title>" + title
                        + "</title></head>\n"
                        +
  
                        "<body bgcolor = \"#f0f0f0\">\n"
                        +
  
                        "<h1 align = \"center\">" + date
                        + "</h1>\n"
                        +
  
                        "</body>
  
                    < / html > "
  
        );
    }
}

Publicación traducida automáticamente

Artículo escrito por vikramkj12 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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