Учебники

JSP — Интернационализация | i18n | l10n

В этой главе мы обсудим концепцию интернационализации в JSP. Прежде чем мы продолжим, давайте разберемся в следующих трех важных терминах:

  • Интернационализация (i18n) — это означает, что веб-сайт может предоставлять различные версии контента, переведенные на язык или национальность посетителя.

  • Локализация (l10n) — это означает добавление ресурсов на веб-сайт для его адаптации к определенному географическому или культурному региону, например, перевод на хинди на веб-сайт.

  • локаль — это особый культурный или географический регион. Обычно его называют символом языка, за которым следует символ страны, разделенный подчеркиванием. Например, « en_US » представляет английский язык для США.

Интернационализация (i18n) — это означает, что веб-сайт может предоставлять различные версии контента, переведенные на язык или национальность посетителя.

Локализация (l10n) — это означает добавление ресурсов на веб-сайт для его адаптации к определенному географическому или культурному региону, например, перевод на хинди на веб-сайт.

локаль — это особый культурный или географический регион. Обычно его называют символом языка, за которым следует символ страны, разделенный подчеркиванием. Например, « en_US » представляет английский язык для США.

Есть несколько вещей, о которых следует позаботиться при создании глобального веб-сайта. Это руководство не даст вам полной информации по этому вопросу, но даст вам хороший пример того, как вы можете предложить свою веб-страницу на разных языках интернет-сообществу, дифференцируя их местоположение, то есть локаль.

JSP может подобрать подходящую версию сайта в зависимости от локали запрашивающей стороны и предоставить соответствующую версию сайта в соответствии с местным языком, культурой и требованиями. Ниже приведен метод объекта запроса, который возвращает объект Locale.

java.util.Locale request.getLocale() 

Обнаружение локали

Ниже приведены важные методы локали, которые вы можете использовать для определения местоположения запрашивающего, языка и, конечно, локали . Все перечисленные ниже методы отображают название страны и название языка, заданные в браузере запрашивающей стороны.

S.No. Метод и описание
1

Строка getCountry ()

Этот метод возвращает код страны / региона в верхнем регистре для этой локали в двухбуквенном формате ISO 3166.

2

Строка getDisplayCountry ()

Этот метод возвращает имя страны локали, которая подходит для отображения пользователю.

3

Строка getLanguage ()

Этот метод возвращает код языка в нижнем регистре для этой локали в формате ISO 639.

4

Строка getDisplayLanguage ()

Этот метод возвращает имя языка локали, которое подходит для отображения пользователю.

5

Строка getISO3Country ()

Этот метод возвращает трехбуквенное сокращение для страны этого региона.

6

Строка getISO3Language ()

Этот метод возвращает трехбуквенное сокращение для языка этой локали.

Строка getCountry ()

Этот метод возвращает код страны / региона в верхнем регистре для этой локали в двухбуквенном формате ISO 3166.

Строка getDisplayCountry ()

Этот метод возвращает имя страны локали, которая подходит для отображения пользователю.

Строка getLanguage ()

Этот метод возвращает код языка в нижнем регистре для этой локали в формате ISO 639.

Строка getDisplayLanguage ()

Этот метод возвращает имя языка локали, которое подходит для отображения пользователю.

Строка getISO3Country ()

Этот метод возвращает трехбуквенное сокращение для страны этого региона.

Строка getISO3Language ()

Этот метод возвращает трехбуквенное сокращение для языка этой локали.

пример

В следующем примере показано, как отобразить язык и связанную страну для запроса в 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>

Настройка языков

JSP может выводить страницу, написанную на западноевропейском языке, таком как английский, испанский, немецкий, французский, итальянский, голландский и т. Д. Здесь важно установить заголовок Content-Language для правильного отображения всех символов.

Другим важным моментом является отображение всех специальных символов с использованием сущностей HTML; например, «& # 241;» представляет «ñ» и «& # 161;» представляет «¡» следующим образом —

<%@ 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>

Локальные даты

Вы можете использовать класс java.text.DateFormat и его статический метод getDateTimeInstance () для форматирования даты и времени, специфичных для локали. Ниже приведен пример, который показывает, как форматировать даты, специфичные для данной локали.

<%@ 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>

Локальная валюта

Вы можете использовать класс java.txt.NumberFormat и его статический метод getCurrencyInstance () для форматирования числа, такого как тип long или double, в конкретной валюте. Ниже приведен пример, который показывает, как форматировать валюту, специфичную для данной локали.

<%@ 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>

Процент локали

Вы можете использовать класс java.txt.NumberFormat и его статический метод getPercentInstance (), чтобы получить определенный процент локали. В следующем примере показано, как отформатировать проценты, специфичные для данной локали —