Bevor wir beginnen, müssen einige wichtige Konzepte erklärt werden:
Internationalisierung (i18n): Gibt an, dass eine Seite je nach Sprache oder Land des Besuchers in unterschiedlichen Übersetzungen gerendert wird.
Lokalisierung (l10n): Hinzufügen von Ressourcen zu einer Website, um sie an verschiedene Regionen und Kulturen anzupassen. Wie die indische Version der Website.
Region: Hierbei handelt es sich um eine bestimmte Region oder Kultur, die normalerweise als sprachliche Markierung und als nationale Markierung betrachtet wird und durch einen Unterstrich verbunden ist. „en_US“ steht beispielsweise für die englischsprachige Region der Vereinigten Staaten.
Wenn Sie eine globale Website erstellen möchten, müssen Sie sich um eine Reihe von Punkten kümmern. In diesem Kapitel erfahren Sie im Detail, wie Sie mit Internationalisierungsproblemen umgehen können, und geben einige Beispiele, um Ihr Verständnis zu vertiefen.
Der JSP-Container kann basierend auf dem Gebietsschemaattribut der Anforderung die richtige Seitenversion bereitstellen. Als nächstes wird die Syntax zum Abrufen des Locale-Objekts über das Anforderungsobjekt angegeben:
java.util.Locale request.getLocale()
In der folgenden Tabelle sind die wichtigeren Methoden im Locale-Objekt aufgeführt, mit denen die Region, die Sprache und die Region des Anforderungsobjekts ermittelt werden. Bei allen diesen Methoden werden der Ländername und der Sprachname im Browser angezeigt:
Seriennummer | Methode und Beschreibung |
---|---|
1 | String getCountry() gibt den Länder-/Regionscode in englischen Großbuchstaben oder die Region im 2-Buchstaben-Format nach ISO 3166 zurück |
2 | String getDisplayCountry() gibt den Ländernamen zurück, der dem Benutzer angezeigt werden soll |
3 | String getLanguage() gibt die englische Kleinbuchstabenversion des Sprachcodes oder den Bereich im ISO 639-Format zurück |
4 | Der String getDisplayLanguage() gibt den Namen der Sprache zurück, die dem Benutzer angezeigt werden soll |
5 | Der String getISO3Country() gibt die dreibuchstabige Abkürzung des Ländernamens zurück |
6 | Der String getISO3Language() gibt die dreibuchstabige Abkürzung des Sprachnamens zurück |
Dieses Beispiel zeigt uns, wie Sprache und Land in JSP angezeigt werden:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //Kunden gewinnen Terminal-Lokalisierungsinformationen Locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); %><html><head><title>Detecting Gebietsschema</title></head><body><center><h1>Gebietsschema erkennen</h1></center><p align="center"><% out.println("Language : " + language + " <br />"); out.println("Land: " + Land + "<br />");%></p></body></html>
JSP kann westeuropäische Sprachen zum Ausgeben einer Seite verwenden, z. B. Englisch, Spanisch, Deutsch, Französisch, Italienisch usw. Es ist ersichtlich, dass es wichtig ist, den Content-Language-Header so festzulegen, dass alle Zeichen korrekt angezeigt werden.
Der zweite Punkt ist, dass Sie HTML-Zeichenentitäten verwenden müssen, um Sonderzeichen anzuzeigen. „¡“ steht für „?“
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // Antwort festlegen Inhaltstyp Response.setContentType("text/html"); // Spanischen Sprachcode festlegen. Response.setHeader("Content-Language", "es"); %><html><head><title><% out.print(title); %></title></head><body><center><h1><% out.print(title %); </h1></center><div align="center"><p>En Espa?ol</p><p>?Hola Mundo!</p></div></body></html>
Sie können die Klasse java.text.DateFormat und ihre statische Methode getDateTimeInstance() verwenden, um Datums- und Uhrzeitangaben zu formatieren. Das folgende Beispiel zeigt, wie Datums- und Uhrzeitangaben gemäß einem angegebenen Bereich formatiert werden:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.DateFormat,java.util.Date" %><% String title = "Locale Specific Dates"; //Get Locale des Clients abrufen locale = request.getLocale( ); DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); %><html><head><title><% out.print(title); /head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>Lokales Datum: <% out.print(date); %></p></div></body></html>
Zahlen können mit der Klasse java.text.NumberFormat und ihrer statischen Methode getCurrencyInstance() formatiert werden. Beispielsweise Long und Double in regionalspezifischen Währungen. Das folgende Beispiel zeigt, wie die Währung entsprechend einem angegebenen Gebietsschema formatiert wird:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "Gebietsspezifische Währung"; //Get Locale des Clients abrufen locale = request.getLocale( ); NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); %><html><head><title><% out.print(title); <center><h1><% out.print(title); %></h1></center><div align="center"><p>Formatierte Währung: <% out.print(formattedCurr); %></p></div></body></html>
Sie können Prozentsätze mit der Klasse java.text.NumberFormat und ihrer statischen Methode getPercentInstance() formatieren. Das folgende Beispiel zeigt uns, wie man einen Prozentsatz basierend auf einem angegebenen Bereich formatiert:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "Locale Specific Percentage"; //Get Locale des Clients abrufen locale = request.getLocale( ); NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); %><html><head><title><% out.print(title %></title></head><body>). <center><h1><% out.print(title); %></h1></center><div align="center"><p>Formatierter Prozentsatz: <% out.print(formattedPerc); %></p></div></body></html>