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,"&#241;" reprezentuje "ñ", i "&#161;" 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>