Latest web development tutorials

Servlet internationale

Avant de commencer, regardons trois termes importants:

  • Internationalisation (i18n): Cela signifie qu'un site Web fournit des versions différentes du contenu traduit dans la langue ou de la nationalité du visiteur.
  • Localisation (l10n): Cela signifie que le site a été ajouté aux ressources pour adapter une région ou d'une culture géographique particulière, comme site traduit en hindi (hindi).
  • Locale (locale): Ceci est une région culturelle ou géographique particulière.Il se réfère généralement au symbole de la langue suivi d'un trait de soulignement et un symbole national. Tels que "en_US" pour le réglage anglais américain représente la région.

Il y a quelques considérations lors de la création d'un site Web mondial. Ce tutoriel n'explique pas les détails complets de ces considérations, il passera un bon exemple pour vous montrer comment le positionnement différencié (ie locale) pour rendre les pages Web présentées dans des langues différentes.

Servlet peut choisir la version appropriée du site en fonction de la localisation du demandeur, et de fournir la version appropriée du site en fonction de la langue, la culture et aux besoins locaux. Ce qui suit est l'objet de requête retourné objet Locale.

java.util.Locale request.getLocale () 

locale de détection

Ci-dessous sont méthode de réglage régional important, vous pouvez les utiliser pour détecter l'emplacement géographique, la langue et les paramètres régionaux demandeur. Toutes les méthodes suivantes pour afficher le nom des noms de pays et de langue Demandeur paramètres du navigateur.

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

Exemples

Cet exemple montre comment afficher la langue nationale pertinente et une demande:

import java.io. *;
javax.servlet import * .;
javax.servlet.http import * .;
import java.util.Locale;

public class GetLocale étend HttpServlet {
    
  public void doGet (HttpServletRequest demande,
                    HttpServletResponse réponse)
            lance ServletException, IOException
  {
      // Obtenir les paramètres régionaux client locale Locale = request.getLocale ();
      langue String = locale.getLanguage ();
      pays String = locale.getCountry ();

      // Définissez le response.setContentType type de contenu de réponse ( "text / html; charset = UTF-8");
      PrintWriter out = response.getWriter ();

      String title = "Paramètres de la zone de détection";
      Chaîne docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<Html> \ n" +
        "<Head> <title>" + titre + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + langue + "</ h1> \ n" +
        "<H2 align = \" center \ ">" + pays + "</ h2> \ n" +
        "</ Body> </ html>");
  }
} 

Paramètres de langue

Servlet peut être exporté vers les langues européennes occidentales (comme l'anglais, espagnol, allemand, français, italien, néerlandais, etc.) pages écrites. Ici, afin d'afficher tous les caractères correctement, définissez l'en-tête Content-Language est très important.

Le deuxième point est d'utiliser les entités HTML pour afficher tous les caractères spéciaux, tels que "& # 241;" représente "ñ", "& # 161;" signifie "¡" comme suit:

import java.io. *;
javax.servlet import * .;
javax.servlet.http import * .;
import java.util.Locale;

DisplaySpanish public class HttpServlet {
    
  public void doGet (HttpServletRequest demande,
                    HttpServletResponse réponse)
            lance ServletException, IOException
  {
    // Définissez le response.setContentType type de contenu de réponse ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Définir la langue espagnole code response.setHeader ( "Content-Language", "es");

    String title = "En Espa & ntilde; ol";
    Chaîne docType = "\ n <DOCTYPE html!>";
     out.println (docType +
     "<Html> \ n" +
     "<Head> <title>" + titre + "</ title> </ head> \ n" +
     "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
     "<H1>" + "En Espa & ntilde; ol:" + "</ h1> \ n" +
     "<H1>" + "& iexcl ;! Hola Mundo" + "</ h1> \ n" +
     "</ Body> </ html>");
  }
} 

Date de lieu spécifique

Vous pouvez utiliser la classe java.text.DateFormat et méthodes statiques getDateTimeInstance () à la date et l'heure précise de la localisation en forme. L'exemple suivant montre comment formater une date précise à un endroit donné:

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

public class DateLocale étend HttpServlet {
    
  public void doGet (HttpServletRequest demande,
                    HttpServletResponse réponse)
            lance ServletException, IOException
  {
    // Définissez le response.setContentType type de contenu de réponse ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obtenir les paramètres régionaux client locale Locale = request.getLocale ();
    date String = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale) .format (new Date ());

    String title = "date précise-locale";
    Chaîne docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + titre + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + date + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Monnaie locale spécifique

Vous pouvez utiliser la classe java.text.NumberFormat et méthodes statiques getCurrencyInstance () aux numéros de format (comme type long double ou type) en tant que locale spécifique à la monnaie. L'exemple suivant montre comment formater une monnaie spécifique à un endroit donné:

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

CurrencyLocale public class HttpServlet {
    
  public void doGet (HttpServletRequest demande,
                    HttpServletResponse réponse)
            lance ServletException, IOException
  {
    // Définissez le response.setContentType type de contenu de réponse ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obtenir les paramètres régionaux client locale Locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getCurrencyInstance (locale);
    Chaîne formattedCurr = nft.format (1000000);

    title String = "monnaie spécifique à la localisation";
    Chaîne docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + titre + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedCurr + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Pourcentage locale spécifique

Vous pouvez utiliser la classe java.text.NumberFormat et méthodes statiques getPercentInstance () pour formater la langue spécifique de pourcentage. L'exemple suivant montre comment formater un pourcentage spécifique à un endroit donné:

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

public class PercentageLocale étend HttpServlet {
    
  public void doGet (HttpServletRequest demande,
                    HttpServletResponse réponse)
            lance ServletException, IOException
  {
    // Définissez le response.setContentType type de contenu de réponse ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Obtenir les paramètres régionaux client locale Locale = request.getLocale ();
    NumberFormat NFT = NumberFormat.getPercentInstance (locale);
    Chaîne formattedPerc = nft.format (0,51);

    String title = "locale pourcentage spécifique";
    Chaîne docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + titre + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedPerc + "</ h1> \ n" +
      "</ Body> </ html>");
  }
}