Latest web development tutorials

Servlets international

Bevor wir beginnen, lassen auf drei aussehen wichtigen Begriffe:

  • Internationalisierung (i18n): Dies bedeutet , dass eine Website auf verschiedene Versionen der Inhalte in die Sprache des Besuchers oder Nationalität übersetzt bietet.
  • Lokalisierung (L10N): Dies bedeutet , dass die Website zu den Ressourcen hinzugefügt wurde eine bestimmte geografische Region oder Kultur, wie Website in Hindi (Hindi) übersetzt anzupassen.
  • Locale (locale): Dies ist eine besondere kulturelle oder geografische Region.Er bezieht sich in der Regel auf das Sprachsymbol durch einen Unterstrich und einem nationalen Symbol gefolgt. Solche als "en_US" für Einstellung US-Englisch stellt den Bereich.

Es gibt einige Überlegungen, wenn eine globale Website zu erstellen. Dieses Tutorial nicht die vollständigen Details dieser Überlegungen erklären, wird es ein gutes Beispiel passieren, Ihnen zu zeigen, wie differenzierte Positionierung (dh locale) Web-Seiten in verschiedenen Sprachen präsentiert zu machen.

Servlets kann nach dem Gebietsschema des Antragstellers, die entsprechende Version der Website auswählen und die entsprechende Version der Website zur Verfügung stellen entsprechend der lokalen Sprache, Kultur und Bedürfnisse. Im Folgenden wird die Request-Objekt Locale Objekt zurückgegeben.

java.util.Locale request.getLocale () 

Erkennungs locale

Nachfolgend sind Verfahren wichtige regionale Einstellung, können Sie sie verwenden, geografische Lage, die Sprache und regionalen Einstellungen Anforderer zu erkennen. Alle folgenden Methoden, um den Namen des Landes und Sprachnamen Anforderer Browser-Einstellungen angezeigt werden soll.

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

Beispiele

Dieses Beispiel zeigt, wie Sie die jeweiligen Landessprache und eine Anforderung anzuzeigen:

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

public class GetLocale erstreckt HttpServlet {
    
  public void doGet (HttpServletRequest Anfrage,
                    HttpServletResponse Antwort)
            wirft ServletException, IOException
  {
      // Die Client-locale Locale locale Get = request.getLocale ();
      String language = locale.getLanguage ();
      String country = locale.getCountry ();

      // Den Antwortinhalt Typ response.setContentType ( "text / html; charset = UTF-8");
      Printwriter out = response.getWriter ();

      String title = "Detektionszone Einstellungen";
      String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
        "<Html> \ n" +
        "<Head> <title>" + Titel + "</ title> </ head> \ n" +
        "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
        "<H1 align = \" center \ ">" + Sprache + "</ h1> \ n" +
        "<H2 align = \" center \ ">" + Land + "</ h2> \ n" +
        "</ Body> </ html>");
  }
} 

Spracheinstellungen

Servlets können zu den westeuropäischen Sprachen (wie Englisch, Spanisch, Deutsch, Französisch, Italienisch, Niederländisch, etc.) geschrieben Seiten exportiert werden. Hier wird, um korrekt alle Zeichen angezeigt werden, stellen Sie den Content-Language-Header ist sehr wichtig.

Der zweite Punkt ist HTML-Entitäten zu verwenden, um alle Sonderzeichen anzuzeigen, wie "& # 241;" steht für "ñ", "& # 161;" bedeutet "¡" wie folgt:

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

public class DisplaySpanish erstreckt HttpServlet {
    
  public void doGet (HttpServletRequest Anfrage,
                    HttpServletResponse Antwort)
            wirft ServletException, IOException
  {
    // Den Antwortinhalt Typ response.setContentType ( "text / html; charset = UTF-8");
    Printwriter out = response.getWriter ();
    // Set Spanisch Sprachcode response.setHeader ( "Content-Language", "es");

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

Datum spezifischen locale

Sie können java.text.DateFormat Klasse und statische Methoden getDateTimeInstance (), um Format Datum und Uhrzeit spezifisch für das Gebietsschema verwenden. Das folgende Beispiel zeigt, wie ein Datum zu einem bestimmten Land erforderliches formatiert werden soll:

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 erstreckt HttpServlet {
    
  public void doGet (HttpServletRequest Anfrage,
                    HttpServletResponse Antwort)
            wirft ServletException, IOException
  {
    // Den Antwortinhalt Typ response.setContentType ( "text / html; charset = UTF-8");
    Printwriter out = response.getWriter ();
    // Die Client-locale Locale locale Get = request.getLocale ();
    String date = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  locale) .format (new Date ());

    String title = "locale-spezifischen Datum";
    String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + Titel + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + Datum + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Währungs spezifische locale

Sie können java.text.NumberFormat Klasse und statische Methoden getCurrencyInstance (), um Format Nummern (wie lange Doppeltyp oder Typ) als währungsspezifische Gebietsschema verwenden. Das folgende Beispiel zeigt, wie eine Währung zu formatieren, die spezifisch für ein bestimmtes Gebietsschema:

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 erstreckt HttpServlet {
    
  public void doGet (HttpServletRequest Anfrage,
                    HttpServletResponse Antwort)
            wirft ServletException, IOException
  {
    // Den Antwortinhalt Typ response.setContentType ( "text / html; charset = UTF-8");
    Printwriter out = response.getWriter ();
    // Die Client-locale Locale locale Get = request.getLocale ();
    Number NFT = NumberFormat.getCurrencyInstance (locale);
    String formattedCurr = nft.format (1000000);

    String title = "locale-spezifische Währung";
    String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + Titel + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedCurr + "</ h1> \ n" +
      "</ Body> </ html>");
  }
} 

Prozentuale spezifische locale

Sie können java.text.NumberFormat Klasse und statische Methoden getPercentInstance () verwenden, um den Prozentsatz bestimmten Gebietsschema formatiert werden. Das folgende Beispiel zeigt, wie ein Prozentsatz zu einem bestimmten Land erforderliches formatiert werden soll:

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 erstreckt HttpServlet {
    
  public void doGet (HttpServletRequest Anfrage,
                    HttpServletResponse Antwort)
            wirft ServletException, IOException
  {
    // Den Antwortinhalt Typ response.setContentType ( "text / html; charset = UTF-8");
    Printwriter out = response.getWriter ();
    // Die Client-locale Locale locale Get = request.getLocale ();
    Number NFT = NumberFormat.getPercentInstance (locale);
    String formattedPerc = nft.format (0,51);

    String title = "locale bestimmten Prozentsatz";
    String docType = "\ n <DOCTYPE html!>";
      out.println (docType +
      "<Html> \ n" +
      "<Head> <title>" + Titel + "</ title> </ head> \ n" +
      "<Body bgcolor = \" # f0f0f0 \ "> \ n" +
      "<H1 align = \" center \ ">" + formattedPerc + "</ h1> \ n" +
      "</ Body> </ html>");
  }
}