JSP - Umiędzynarodowienie | i18n | l10n
W tym rozdziale omówimy koncepcję internacjonalizacji w JSP. Zanim przejdziemy dalej, zrozumiemy trzy ważne terminy -
Internationalization (i18n) - Oznacza to umożliwienie stronie internetowej dostarczania różnych wersji treści przetłumaczonych na język lub narodowość odwiedzającego.
Localization (l10n) - Oznacza to dodanie zasobów do witryny internetowej w celu dostosowania jej do określonego regionu geograficznego lub kulturowego, na przykład tłumaczenie na język hindi do witryny internetowej.
locale- To jest określony region kulturowy lub geograficzny. Zwykle określa się go jako symbol języka, po którym następuje symbol kraju, które są oddzielone podkreśleniem. Na przykład, "en_US„reprezentuje język angielski dla Stanów Zjednoczonych.
Istnieje wiele elementów, o które należy zadbać podczas tworzenia globalnej witryny internetowej. Ten samouczek nie zawiera szczegółowych informacji na ten temat, ale daje dobry przykład, w jaki sposób możesz udostępnić swoją stronę internetową w różnych językach społeczności internetowej, różnicując ich lokalizację, tj. Ustawienia regionalne.
Strona JSP może pobrać odpowiednią wersję serwisu w oparciu o ustawienia regionalne żądającego i zapewnić odpowiednią wersję serwisu zgodnie z lokalnym językiem, kulturą i wymaganiami. Poniżej przedstawiono metodę obiektu żądania, która zwraca obiekt Locale.
java.util.Locale request.getLocale()
Wykrywanie ustawień regionalnych
Poniżej przedstawiono ważne metody dotyczące ustawień regionalnych, których można użyć do wykrywania requester's location, language i oczywiście locale. Wszystkie poniższe metody wyświetlają nazwę kraju i nazwę języka ustawioną w przeglądarce osoby wysyłającej zapytanie.
S.No. | Metoda i opis |
---|---|
1 | String getCountry() Ta metoda zwraca kod kraju / regionu wielkimi literami dla tego ustawienia narodowego w dwuliterowym formacie ISO 3166. |
2 | String getDisplayCountry() Ta metoda zwraca nazwę kraju dla ustawień regionalnych, która jest odpowiednia do wyświetlenia użytkownikowi. |
3 | String getLanguage() Ta metoda zwraca kod języka małymi literami dla tych ustawień regionalnych w formacie ISO 639. |
4 | String getDisplayLanguage() Ta metoda zwraca nazwę dla języka lokalnego, która jest odpowiednia do wyświetlenia użytkownikowi. |
5 | String getISO3Country() Ta metoda zwraca trzyliterowy skrót dla kraju tego ustawienia regionalnego. |
6 | String getISO3Language() Ta metoda zwraca trzyliterowy skrót dla tego języka. |
Przykład
Poniższy przykład pokazuje, jak wyświetlić język i kraj powiązany dla żądania na stronie JSP -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
//Get the client's Locale
Locale locale = request.getLocale();
String language = locale.getLanguage();
String country = locale.getCountry();
%>
<html>
<head>
<title>Detecting Locale</title>
</head>
<body>
<center>
<h1>Detecting Locale</h1>
</center>
<p align = "center">
<%
out.println("Language : " + language + "<br />");
out.println("Country : " + country + "<br />");
%>
</p>
</body>
</html>
Ustawienia języków
JSP może wyświetlać stronę napisaną w języku zachodnioeuropejskim, takim jak angielski, hiszpański, niemiecki, francuski, włoski, holenderski itp. W tym miejscu ważne jest, aby ustawić nagłówek Content-Language, aby poprawnie wyświetlać wszystkie znaki.
Innym ważnym punktem jest wyświetlenie wszystkich znaków specjalnych za pomocą encji HTML; na przykład,"ñ" reprezentuje "ñ", i "¡" reprezentuje "¡" w następujący sposób -
<%@ page import = "java.io.*,java.util.Locale" %>
<%@ page import = "javax.servlet.*,javax.servlet.http.* "%>
<%
// Set response content type
response.setContentType("text/html");
// Set spanish language code.
response.setHeader("Content-Language", "es");
String title = "En Español";
%>
<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>
Daty specyficzne dla lokalizacji
Możesz użyć java.text.DateFormat klasa i jej statyczne getDateTimeInstance( )metoda formatowania daty i godziny specyficzna dla ustawień regionalnych. Poniżej znajduje się przykład, który pokazuje, jak formatować daty specyficzne dla danej lokalizacji -
<%@ 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 the client's Locale
Locale locale = request.getLocale( );
String date = DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.SHORT,
locale).format(new Date( ));
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>Local Date: <% out.print(date); %></p>
</div>
</body>
</html>
Waluta specyficzna dla lokalizacji
Możesz użyć java.txt.NumberFormat klasa i jej statyczne getCurrencyInstance( )metoda formatowania liczby, takiej jak długi lub podwójny typ, w walucie specyficznej dla ustawień regionalnych. Poniżej znajduje się przykład, który pokazuje, jak sformatować walutę specyficzną dla danego regionu -
<%@ 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 Currency";
//Get the client's Locale
Locale locale = request.getLocale( );
NumberFormat nft = NumberFormat.getCurrencyInstance(locale);
String formattedCurr = nft.format(1000000);
%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>Formatted Currency: <% out.print(formattedCurr); %></p>
</div>
</body>
</html>
Procent specyficzny dla ustawień regionalnych
Możesz użyć java.txt.NumberFormat klasa i jej statyczne getPercentInstance( )metoda, aby uzyskać procent specyficzny dla lokalizacji. Poniższy przykład pokazuje, jak sformatować wartość procentową specyficzną dla danego języka -
<%@ 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 the client's Locale
Locale locale = request.getLocale( );
NumberFormat nft = 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>Formatted Percentage: <% out.print(formattedPerc); %></p>
</div>
</body>
</html>