Latest web development tutorials

servlet internacional

Antes de empezar, vamos a ver tres términos importantes:

  • Internacionalización (i18n): Esto significa que un sitio web ofrece diferentes versiones del contenido traducido al idioma o la nacionalidad del visitante.
  • Localización (l10n): Esto significa que el sitio fue agregado a los recursos para adaptar una región geográfica en particular o de la cultura, como el sitio traducido al hindi (Hindi).
  • Locale (locale): Esta es una región cultural o geográfica especial.Por lo general, se refiere al símbolo de idioma seguido de un guión y un símbolo nacional. Tales como "en_US" para el ajuste de EE.UU. Inglés representa el área.

Hay algunas consideraciones al crear un sitio web mundial. Este tutorial no explica los detalles completos de estas consideraciones, pasará un buen ejemplo para mostrar cómo el posicionamiento diferenciado (es decir, local) para hacer que las páginas web se presentan en diferentes idiomas.

Servlet puede escoger la versión adecuada del sitio de acuerdo con la localización del solicitante, y proporcionar la versión adecuada del sitio de acuerdo con el idioma local, la cultura y necesidades. El siguiente es el objeto de solicitud devuelto objeto Locale.

java.util.Locale request.getLocale () 

Detección local

A continuación se enumeran método de configuración regional importante, puede utilizarlos para detectar la ubicación geográfica, el idioma y la configuración regional solicitante. Todos los métodos siguientes para mostrar el nombre de la configuración del navegador de solicitante nombres de país e idioma.

序号方法 & 描述
1String getCountry()
该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。
2String getDisplayCountry()
该方法返回适合向用户显示的区域设置的国家的名称。
3String getLanguage()
该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。
4String getDisplayLanguage()
该方法返回适合向用户显示的区域设置的语言的名称。
5String getISO3Country()
该方法返回该区域设置的国家的三个字母缩写。
6String getISO3Language()
该方法返回该区域设置的语言的三个字母的缩写。

Ejemplos

Este ejemplo muestra cómo mostrar el idioma nacional correspondiente, una solicitud:

import java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;
java.util.Locale importación;

clase pública se extiende getLocale HttpServlet {
    
  pública doGet vacío (solicitud de HttpServletRequest,
                    HttpServletResponse respuesta)
            lanza ServletException, IOException
  {
      // Obtener el entorno local de cliente Locale locale = request.getLocale ();
      lenguaje de secuencia = locale.getLanguage ();
      país String = locale.getCountry ();

      // Establecer el tipo de contenido de la respuesta response.setContentType ( "text / html; charset = UTF-8");
      PrintWriter cabo response.getWriter = ();

      String title = "configuración de la zona de detección";
      Doctype Cadena = "\ n <HTML! DOCTYPE>";
      out.println (+ docType
        "<Html> \ n" +
        "<Head> <title>" + + título "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" centro \ ">" + lengua + "</ h1> \ n" +
        "<H2 align = \" centro \ ">" + país + "</ h2> \ n" +
        "</ Body> </ html>");
  }
} 

Configuración de idioma

Servlet se puede exportar a los idiomas de Europa occidental (tales como Inglés, español, alemán, francés, italiano, holandés, etc.) páginas escritas. Aquí, con el fin de mostrar todos los caracteres correctamente, establecer la cabecera Content-Language es muy importante.

El segundo punto es el uso de las entidades HTML para mostrar todos los caracteres especiales, como "& # 241;" representa "ñ", "& # 161;" significa "¡" como sigue:

import java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;
java.util.Locale importación;

DisplaySpanish clase pública se extiende HttpServlet {
    
  pública doGet vacío (solicitud de HttpServletRequest,
                    HttpServletResponse respuesta)
            lanza ServletException, IOException
  {
    // Establecer el tipo de contenido de la respuesta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter cabo response.getWriter = ();
    // Establecer códigos de idioma español response.setHeader ( "Content-Language", "ES");

    String title = "Espa ntilde y; ol";
    Doctype Cadena = "\ n <HTML! DOCTYPE>";
     out.println (+ docType
     "<Html> \ n" +
     "<Head> <title>" + + título "</ title> </ head> \ n" +
     "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
     "<H1>" + "y Espa ntilde; ol:" + "</ h1> \ n" +
     "<H1>" + "& iexcl ;! Hola Mundo" + "</ h1> \ n" +
     "</ Body> </ html>");
  }
} 

Fecha específica para la localización

Puede utilizar la clase java.text.DateFormat y métodos estáticos getDateTimeInstance () hasta la fecha y hora específica para la configuración regional de formato. El siguiente ejemplo muestra cómo dar formato a una fecha específica a un lugar determinado:

import java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;
java.util.Locale importación;
java.text.DateFormat importación;
java.util.Date importación;

clase pública se extiende DateLocale HttpServlet {
    
  pública doGet vacío (solicitud de HttpServletRequest,
                    HttpServletResponse respuesta)
            lanza ServletException, IOException
  {
    // Establecer el tipo de contenido de la respuesta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter cabo response.getWriter = ();
    // Obtener el entorno local de cliente Locale locale = request.getLocale ();
    fecha de secuencia = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale) .formato (new Date ());

    String title = "fecha específica para la localización";
    Doctype Cadena = "\ n <HTML! DOCTYPE>";
      out.println (+ docType
      "<Html> \ n" +
      "<Head> <title>" + + título "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" centro \ ">" + fecha + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Moneda específica para la localización

Puede utilizar la clase java.text.NumberFormat y métodos estáticos getCurrencyInstance () para formatear números (como el tipo doble de largo o tipo) como local a una moneda específica. El siguiente ejemplo muestra cómo dar formato a una moneda específica a un lugar determinado:

import java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;
java.util.Locale importación;
java.text.NumberFormat importación;
java.util.Date importación;

CurrencyLocale clase pública se extiende HttpServlet {
    
  pública doGet vacío (solicitud de HttpServletRequest,
                    HttpServletResponse respuesta)
            lanza ServletException, IOException
  {
    // Establecer el tipo de contenido de la respuesta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter cabo response.getWriter = ();
    // Obtener el entorno local de cliente Locale locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getCurrencyInstance (configuración regional);
    Cadena formattedCurr = nft.format (1000000);

    String title = "moneda específica para la localización";
    Doctype Cadena = "\ n <HTML! DOCTYPE>";
      out.println (+ docType
      "<Html> \ n" +
      "<Head> <title>" + + título "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" centro \ ">" + formattedCurr + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Porcentaje configuración regional específica

Puede utilizar la clase java.text.NumberFormat y métodos estáticos getPercentInstance () para dar formato a la configuración regional específica porcentual. El siguiente ejemplo muestra cómo dar formato a un porcentaje específico a un lugar determinado:

import java.io. *;
javax.servlet importación * .;
javax.servlet.http importación * .;
java.util.Locale importación;
java.text.NumberFormat importación;
java.util.Date importación;

clase pública se extiende PercentageLocale HttpServlet {
    
  pública doGet vacío (solicitud de HttpServletRequest,
                    HttpServletResponse respuesta)
            lanza ServletException, IOException
  {
    // Establecer el tipo de contenido de la respuesta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter cabo response.getWriter = ();
    // Obtener el entorno local de cliente Locale locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getPercentInstance (configuración regional);
    Cadena formattedPerc = nft.format (0,51);

    String title = "locale porcentaje específico";
    Doctype Cadena = "\ n <HTML! DOCTYPE>";
      out.println (+ docType
      "<Html> \ n" +
      "<Head> <title>" + + título "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" centro \ ">" + formattedPerc + "</ h1> \ n" +
      "</ Body> </ html>");
  }
}