English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Online-Tools
Bevor wir beginnen, sehen wir uns drei wichtige Begriffe an:18n):Das bedeutet, dass eine Website verschiedene Versionen von Inhalten bereitstellt, die in die Sprache oder das Land des Besuchers übersetzt sind.
Lokalisierung (l10n):Das bedeutet, dass Ressourcen zum Website hinzugefügt werden, um sie an eine bestimmte geografische oder kulturelle Region anzupassen, z.B. die Website ins Hindi übersetzt.
Regionalkonfiguration (locale):Dies ist ein spezieller kultureller oder geografischer Bereich. Es bezieht sich in der Regel auf ein Sprachsymbol gefolgt von einem Unterstrich und einem Ländersymbol. Zum Beispiel "en_US" bedeutet die Regionalkonfiguration für Englisch in den USA.
Bei der Erstellung einer globalen Website gibt es einige wichtige Punkte zu beachten. Dieses Tutorial wird die vollständigen Details dieser Punkte nicht behandeln, aber es zeigt Ihnen anhand eines guten Beispiels, wie Sie durch Differenziallokalisierung (d.h. Regionalkonfiguration) Webseiten in verschiedenen Sprachen darstellen.
Ein Servlet kann die für den geografischen Standort des Anfragenden entsprechende Websiteversion abrufen und entsprechend der lokalen Sprache, Kultur und Anforderungen die entsprechende Websiteversion bereitstellen. Nachstehend sind die Methoden, die im request-Objekt zur Rückgabe des Locale-Objekts vorhanden sind.
java.util.Locale request.getLocale()
Nachstehend sind wichtige Methoden zur Regionalkonfiguration aufgeführt, die Sie verwenden können, um den geografischen Standort, die Sprache und die Regionalkonfiguration des Anfragenden zu detektieren. Alle nachstehenden Methoden zeigen den in der Browserkonfiguration des Anfragenden gesetzten Ländernamen und den Sprachnamen an.
Nummer | Methode & Beschreibung |
---|---|
1 | String getCountry() Diese Methode verwendet 2 Eine in Großbuchstaben geschriebene ISO 3166 Format gibt den Landcode der Region zurück/Regionencode. |
2 | String getDisplayCountry() Diese Methode gibt den Namen des Landes der Region zurück, der für die Anzeige an den Benutzer geeignet ist. |
3 | String getLanguage() Diese Methode gibt den ISO-Code der Region in Kleinbuchstaben zurück. 639 Format gibt den Sprachcode der Region zurück. |
4 | String getDisplayLanguage() Diese Methode gibt den Namen der Sprache der Region zurück, der für die Anzeige an den Benutzer geeignet ist. |
5 | String getISO3Country() Diese Methode gibt die dreistellige Abkürzung des Landes der Region zurück. |
6 | String getISO3Language() Diese Methode gibt das dreistellige Abkürzung der Sprache der Region zurück. |
Dieses Beispiel zeigt, wie die Sprache und das zugehörige Land einer Anfrage angezeigt werden:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; public class GetLocale extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取客户端的区域设置 Locale locale = request.getLocale(); String language = locale.getLanguage(); String country = locale.getCountry(); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8); PrintWriter out = response.getWriter(); String title = "Sprachregion überprüfen"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + Sprache + "</h1>\n" + "<h2 align="center">" + Land + "</h2>\n" + "</body></html>"); } }
Servlets können Seiten in westeuropäischen Sprachen (wie Englisch, Spanisch, Deutsch, Französisch, Italienisch, Niederländisch etc.) ausgeben. Hier, um alle Zeichen korrekt anzuzeigen, wird Content-Die Sprache Header ist sehr wichtig.
Der zweite Punkt ist die Anzeige aller Special Characters durch HTML Entities, zum Beispiel, "ñ" bedeutet "ñ","¡" bedeutet "¡",wie folgt gezeigt:
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Locale; public class DisplaySpanish extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8); PrintWriter out = response.getWriter(); // Spanische Sprachcode festlegen response.setHeader("Content-Sprache", "es"); String title = "In Spanisch"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1>" + "In Spanisch:" + "</h1>\n" + "<h1>" + "¡Hola Mundo!" + "</h1>\n" + "</body></html>"); } }
Sie können die Klasse java.text.DateFormat und ihre statische Methode getDateTimeInstance() verwenden, um spezifische für die Region angepasste Datum und Uhrzeit zu formatieren. Nachfolgender Beispiel zeigt, wie spezifische für eine bestimmte Region angepasste Datum formatiert werden kann:
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 extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); String date = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); String title = "Pro Region eingestellte Datum"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + date + "</h1>\n" + "</body></html>"); } }
Sie können die Klasse java.text.NumberFormat und ihre statische Methode getCurrencyInstance() verwenden, um Zahlen (z.B. long oder double) in pro Region eingestellte Währungen zu formatieren. Nachfolgender Beispiel zeigt, wie pro Region eingestellte Währungen formatiert werden können:
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 extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); String title = "Pro Region eingestellte Währung"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + formattedCurr + "</h1>\n" + "</body></html>"); } }
Sie können die Klasse java.text.NumberFormat und ihre statische Methode getPercentInstance() verwenden, um pro Region eingestellte Prozentsätze zu formatieren. Nachfolgender Beispiel zeigt, wie pro Region eingestellte Prozentsätze formatiert werden können:
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 extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8); PrintWriter out = response.getWriter(); // 获取客户端的区域设置 Locale locale = request.getLocale( ); NumberFormat nft = NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); String title = "特定于区域设置的百分比"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + formattedPerc + "</h1>\n" + "</body></html>"); } }