Latest web development tutorials

Servlet międzynarodowa

Zanim zaczniemy, spójrzmy na trzech ważnych kategoriach:

  • Internacjonalizacja (i18n): Oznacza to, że strona internetowa zawiera różne wersje treści tłumaczone na język odwiedzającego lub narodowości.
  • Lokalizacja (l10n): Oznacza to, że witryna została dodana do zasobów w celu dostosowania określonego regionu geograficznego i kultury, takich jak strony przekłada się na hindi (hindi).
  • Locale (lokalnego): Jest to specjalny region kulturowe lub geograficzne.Zwykle odnosi się do symbolu języka, a następnie znaku podkreślenia i symbolu narodowego. Takie jak "pl_PL" dla ustawienia US English reprezentuje obszar.

Istnieją pewne rozważania podczas tworzenia globalnej stronie internetowej. Ten poradnik nie wyjaśni wszystkie szczegóły tych rozważań, to minie dobry przykład, aby pokazać, w jaki sposób zróżnicowany pozycjonowanie (tj locale) do stron internetowych prezentowane w różnych językach.

Aplet może wybrać odpowiednią wersję serwisu w zależności od lokalizacji od wnioskodawcy i zapewnić odpowiednią wersję serwisu Zgodnie z miejscowym językiem, kulturą i potrzeb. Poniżej znajduje się obiekt żądania zwrócone Locale obiektu.

java.util.Locale request.getLocale () 

Wykrywanie locale

Poniżej wymienione są ważnym sposobem ustawienia regionalne, można ich używać do wykrywania położenia geograficznego, język i ustawienia regionalne żądanie. Wszystkie z poniższych metod, aby wyświetlić nazwę nazwy krajów i języków ustawieniach przeglądarki żądającego.

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

Przykłady

Ten przykład pokazuje, jak wyświetlić odpowiedni język danego kraju oraz żądanie:

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

public class getLocale rozszerza HttpServlet {
    
  public void doGet (HttpServletRequest request,
                    HttpServletResponse odpowiedź)
            rzuca ServletException, IOException
  {
      // Pobierz lokum klient Locale locale = request.getLocale ();
      Język String = locale.getLanguage ();
      Country Strong = locale.getCountry ();

      // Ustaw typ zawartości odpowiedzi response.setContentType ( "text / html; charset = UTF-8");
      PrintWriter out = response.getWriter ();

      tytuł String = "Ustawienia stref detekcji";
      Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (DOCTYPE +
        "<Html> \ n" +
        "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + język + "</ h1> \ n" +
        "<H2 align = \" center \ ">" + kraj + "</ h2> \ n" +
        "</ Body> </ html>");
  }
} 

Ustawienia języka

Servlet mogą być eksportowane do języków zachodnioeuropejskich (takich jak angielski, hiszpański, niemiecki, francuski, włoski, holenderski, itp) pisemnych stron. Tutaj, w celu wyświetlenia poprawnie wszystkie znaki, należy ustawić nagłówek Content-Language jest bardzo ważne.

Drugą kwestią jest wykorzystanie jednostek HTML do wyświetlania wszystkich znaków specjalnych, takich jak "& # 241;" reprezentuje "n", "& # 161;" oznacza "¡" w następujący sposób:

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

public class DisplaySpanish rozszerza HttpServlet {
    
  public void doGet (HttpServletRequest request,
                    HttpServletResponse odpowiedź)
            rzuca ServletException, IOException
  {
    // Ustaw typ zawartości odpowiedzi response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Ustawienie języka hiszpańskiego Kod response.setHeader ( "Content-Language", "es");

    tytuł String = "en Espa & ntilde; ol";
    Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
     out.println (DOCTYPE +
     "<Html> \ n" +
     "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
     "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
     "<H1>" + "En Espa & ntilde; ol:" + "</ h1> \ n" +
     "<H1>" + "& iexcl ;! Hola Mundo" + "</ h1> \ n" +
     "</ Body> </ html>");
  }
} 

Data specyficzne narodowe

Można użyć klasy java.text.DateFormat i metody statyczne getDateTimeInstance (), aby data i godzina specyficzne dla danej lokalizacji formatu. Poniższy przykład pokazuje, jak sformatować datę specyficzne dla danej lokalizacji:

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

public class DateLocale rozszerza HttpServlet {
    
  public void doGet (HttpServletRequest request,
                    HttpServletResponse odpowiedź)
            rzuca ServletException, IOException
  {
    // Ustaw typ zawartości odpowiedzi response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Pobierz lokum klient Locale locale = request.getLocale ();
    data String = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale) .format (new Date ());

    Tytuł: String = "date locale-specific";
    Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (DOCTYPE +
      "<Html> \ n" +
      "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + data + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

specyficzne narodowe waluty

Można użyć klasy java.text.NumberFormat i metody statyczne getCurrencyInstance () do numerów Format (takich jak długi typu double lub rodzaj waluty) jako lokalizacji specyficzne. Poniższy przykład pokazuje, jak formatować walutę specyficzne dla danej lokalizacji:

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

public class CurrencyLocale rozszerza HttpServlet {
    
  public void doGet (HttpServletRequest request,
                    HttpServletResponse odpowiedź)
            rzuca ServletException, IOException
  {
    // Ustaw typ zawartości odpowiedzi response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Pobierz lokum klient Locale locale = request.getLocale ();
    NUMBERFORMAT NFT = NumberFormat.getCurrencyInstance (narodowe);
    String formattedCurr = nft.format (1000000);

    Tytuł: String = "waluty narodowe specyficzne";
    Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (DOCTYPE +
      "<Html> \ n" +
      "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedCurr + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Procent specyficzne narodowe

Można użyć klasy java.text.NumberFormat i metody statyczne getPercentInstance (), aby sformatować konkretne lokum procentach. Poniższy przykład pokazuje, jak sformatować procentową właściwą dla danej lokalizacji:

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

public class PercentageLocale rozszerza HttpServlet {
    
  public void doGet (HttpServletRequest request,
                    HttpServletResponse odpowiedź)
            rzuca ServletException, IOException
  {
    // Ustaw typ zawartości odpowiedzi response.setContentType ( "text / html; charset = UTF-8");
    PrintWriter out = response.getWriter ();
    // Pobierz lokum klient Locale locale = request.getLocale ();
    NUMBERFORMAT NFT = NumberFormat.getPercentInstance (narodowe);
    String formattedPerc = nft.format (0,51);

    Tytuł: String = "locale określony procent";
    Ciąg DOCTYPE = "\ n <DOCTYPE html!>";
      out.println (DOCTYPE +
      "<Html> \ n" +
      "<Head> <title>" + nazwa + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedPerc + "</ h1> \ n" +
      "</ Body> </ html>");
  }
}