Latest web development tutorials

servlet internacional

Antes de começar, vamos olhar para três termos importantes:

  • Internacionalização (i18n): Isto significa que um site oferece diferentes versões do conteúdo traduzido para a língua ou nacionalidade do visitante.
  • Localização (l10n): Isto significa que o local foi adicionado aos recursos para se adaptar de uma região geográfica particular ou de cultura, tais como o local traduzida em Hindi (Hindi).
  • Locale (locale): Esta é uma região cultural ou geográfica especial.Ela normalmente se refere ao símbolo linguagem seguido por um sublinhado e um símbolo nacional. Tal como "en_US" para a definição de US Inglês representa a área.

Há algumas considerações ao criar um site global. Este tutorial não explica os detalhes completos destas considerações, ele vai passar um bom exemplo para mostrar como posicionamento diferenciado (ou seja, local) para tornar as páginas apresentadas em idiomas diferentes.

Servlet pode escolher a versão apropriada do local de acordo com o local do solicitante, e fornecer a versão apropriada do local de acordo com o idioma local, cultura e necessidades. O seguinte é o objeto do pedido retornado objeto Locale.

java.util.Locale request.getLocale () 

locale Detecção

Listados abaixo são importantes método de configuração regional, você pode usá-los para detectar a localização geográfica, idioma e configurações solicitante regional. Todos os seguintes métodos para exibir o nome das configurações do navegador solicitante nomes de país e idioma.

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

Exemplos

Este exemplo demonstra como para exibir a língua nacional e um pedido:

import java.io. *;
importação javax.servlet * .;
importação javax.servlet.http * .;
importação java.util.Locale;

classe pública GetLocale estende HttpServlet {
    
  doGet public void (HttpServletRequest pedido,
                    HttpServletResponse resposta)
            lança ServletException, IOException
  {
      // Obter a localidade do cliente local Locale = request.getLocale ();
      linguagem String = locale.getLanguage ();
      país String = locale.getCountry ();

      // Defina o tipo de conteúdo de resposta response.setContentType ( "text / html; charset = UTF-8");
      PrintWriter out = response.getWriter ();

      String title = "configurações de zona de detecção";
      Cordas docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<Html> \ n" +
        "<Head> <title>" + título + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" Centro \ ">" + linguagem + "</ h1> \ n" +
        "<H2 align = \" Centro \ ">" + país + "</ h2> \ n" +
        "</ Body> </ html>");
  }
} 

Configurações de idioma

Servlet podem ser exportados para idiomas da Europa Ocidental (como o Inglês, Espanhol, Alemão, Francês, Italiano, Holandês, etc.) páginas escritas. Aqui, a fim de exibir todos os caracteres corretamente, defina o cabeçalho Content-Language é muito importante.

O segundo ponto é a utilização de entidades HTML para exibir todos os caracteres especiais, como "& # 241;" representa "N", "& # 161;" significa "¡" como se segue:

import java.io. *;
importação javax.servlet * .;
importação javax.servlet.http * .;
importação java.util.Locale;

classe pública DisplaySpanish estende HttpServlet {
    
  doGet public void (HttpServletRequest pedido,
                    HttpServletResponse resposta)
            lança ServletException, IOException
  {
    // Defina o tipo de conteúdo de resposta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Definir Idioma Espanhol Código response.setHeader ( "Content-Language", "es");

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

local específico Data

Você pode usar a classe java.text.DateFormat e métodos estáticos getDateTimeInstance () para data e hora específicas para o local formato. O exemplo a seguir demonstra como formatar uma data específica para uma determinada localidade:

import java.io. *;
importação javax.servlet * .;
importação javax.servlet.http * .;
importação java.util.Locale;
importação java.text.DateFormat;
import java.util.Date;

classe pública DateLocale estende HttpServlet {
    
  doGet public void (HttpServletRequest pedido,
                    HttpServletResponse resposta)
            lança ServletException, IOException
  {
    // Defina o tipo de conteúdo de resposta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obter a localidade do cliente local Locale = request.getLocale ();
    data String = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale) .format (new Date ());

    String title = "data específica de localidade";
    Cordas docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + título + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" Centro \ ">" + data + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

local específico moeda

Você pode usar a classe java.text.NumberFormat e métodos estáticos getCurrencyInstance () para formatar números (tais como tipo double long ou tipo) como local específico-moeda. O exemplo a seguir demonstra como formatar uma moeda específica a um determinado local:

import java.io. *;
importação javax.servlet * .;
importação javax.servlet.http * .;
importação java.util.Locale;
importação java.text.NumberFormat;
import java.util.Date;

classe pública CurrencyLocale estende HttpServlet {
    
  doGet public void (HttpServletRequest pedido,
                    HttpServletResponse resposta)
            lança ServletException, IOException
  {
    // Defina o tipo de conteúdo de resposta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obter a localidade do cliente local Locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getCurrencyInstance (locale);
    Cordas formattedCurr = nft.format (1000000);

    String title = "moeda específica da localidade";
    Cordas docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + título + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" Centro \ ">" + formattedCurr + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

localidade específica percentual

Você pode usar a classe java.text.NumberFormat e métodos estáticos getPercentInstance () para formatar a localidade específica percentual. O exemplo a seguir demonstra como formatar um percentual específico para uma determinada localidade:

import java.io. *;
importação javax.servlet * .;
importação javax.servlet.http * .;
importação java.util.Locale;
importação java.text.NumberFormat;
import java.util.Date;

classe pública PercentageLocale estende HttpServlet {
    
  doGet public void (HttpServletRequest pedido,
                    HttpServletResponse resposta)
            lança ServletException, IOException
  {
    // Defina o tipo de conteúdo de resposta response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obter a localidade do cliente local Locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getPercentInstance (locale);
    Cordas formattedPerc = nft.format (0,51);

    título String = "locale porcentagem específica";
    Cordas docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + título + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" Centro \ ">" + formattedPerc + "</ h1> \ n" +
      "</ Body> </ html>");
  }
}