Latest web development tutorials

Servlet международный

Прежде чем мы начнем, давайте посмотрим на три важных терминов:

  • Интернационализация (i18n): Это означает , что веб - сайт предоставляет различные версии контента в переводе на язык посетителя или национальности.
  • Локализация (l10n): Это означает , что сайт был добавлен к ресурсам для адаптации конкретной географической области или культуры, такие , как сайт был переведен на хинди (хинди).
  • Locale ( с локалью):Это особый культурный или географический регион. Это обычно относится к символу языка, за которым следует символ подчеркивания и национальный символ. Такие, как "en_US" для американского английского параметра представляет область.

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

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

java.util.Locale request.getLocale () 

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

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

序号方法 & 描述
1String getCountry()
该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。
2String getDisplayCountry()
该方法返回适合向用户显示的区域设置的国家的名称。
3String getLanguage()
该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。
4String getDisplayLanguage()
该方法返回适合向用户显示的区域设置的语言的名称。
5String getISO3Country()
该方法返回该区域设置的国家的三个字母缩写。
6String getISO3Language()
该方法返回该区域设置的语言的三个字母的缩写。

примеров

Этот пример показывает, как отобразить соответствующий национальный язык и запрос:

импорт java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;
импорт java.util.Locale;

Открытый класс GetLocale расширяет HttpServlet {
    
  общественного недействительными doGet (HttpServletRequest запрос,
                    HttpServletResponse ответ)
            бросает ServletException, IOException
  {
      // Получить клиента локали локаль = request.getLocale ();
      Язык String = locale.getLanguage ();
      Строка страна = locale.getCountry ();

      // Установка типа содержимого ответа response.setContentType ( "текст / html; Charset = UTF-8");
      PrintWriter Out = response.getWriter ();

      Строка название = "параметры зоны обнаружения";
      Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
      out.println (DOCTYPE +
        "<HTML> \ п" +
        "<Head> <название>" + название + "</ title> </ голова> \ п" +
        "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
        "<H1 ALIGN = \" центр \ ">" + язык + "</ h1> \ п" +
        "<H2 Align = \" центр \ ">" + страна + "</ h2> \ п" +
        "</ Body> </ html>");
  }
} 

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

Servlet могут быть экспортированы в западноевропейских языках (например, английский, испанский, немецкий, французский, итальянский, голландский и т.д.), написанных страниц. Вот для того, чтобы правильно отобразить все символы, установить заголовок Content-Language очень важно.

Второй момент заключается в использовании HTML-объекты, чтобы отобразить все специальные символы, такие как "& # 241;" представляет "N", "& # 161;" означает "¡" выглядит следующим образом:

импорт java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;
импорт java.util.Locale;

Открытый класс DisplaySpanish расширяет HttpServlet {
    
  общественного недействительными doGet (HttpServletRequest запрос,
                    HttpServletResponse ответ)
            бросает ServletException, IOException
  {
    // Установка типа содержимого ответа response.setContentType ( "текст / html; Charset = UTF-8");
    PrintWriter Out = response.getWriter ();
    // Установка испанского языка кода response.setHeader ( "Content-Language", "ES");

    Название String = "En Espa & ntilde; ол";
    Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
     out.println (DOCTYPE +
     "<HTML> \ п" +
     "<Head> <название>" + название + "</ title> </ голова> \ п" +
     "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
     "<H1>" + "En Espa & ntilde; ола:" + "</ h1> \ п" +
     "<H1>" + "& iexcl ;! Hola Mundo" + "</ h1> \ п" +
     "</ Body> </ html>");
  }
} 

Дата определенного региона

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

импорт java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;
импорт java.util.Locale;
импорт java.text.DateFormat;
импорт java.util.Date;

Открытый класс DateLocale расширяет HttpServlet {
    
  общественного недействительными doGet (HttpServletRequest запрос,
                    HttpServletResponse ответ)
            бросает ServletException, IOException
  {
    // Установка типа содержимого ответа response.setContentType ( "текст / html; Charset = UTF-8");
    PrintWriter Out = response.getWriter ();
    // Получить клиента локали локаль = request.getLocale ();
    дата String = DateFormat.getDateTimeInstance (
                                  DateFormat.FULL, 
                                  DateFormat.SHORT, 
                                  локаль) .format (новая дата ());

    Строка название = "языкового стандарта конкретной даты";
    Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
      out.println (DOCTYPE +
      "<HTML> \ п" +
      "<Head> <название>" + название + "</ title> </ голова> \ п" +
      "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
      "<H1 ALIGN = \" центр \ ">" + дата + "</ h1> \ п" +
      "</ Body> </ html>");
  }
} 

Валюта определенного региона

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

импорт java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;
импорт java.util.Locale;
импорт java.text.NumberFormat;
импорт java.util.Date;

Открытый класс CurrencyLocale расширяет HttpServlet {
    
  общественного недействительными doGet (HttpServletRequest запрос,
                    HttpServletResponse ответ)
            бросает ServletException, IOException
  {
    // Установка типа содержимого ответа response.setContentType ( "текст / html; Charset = UTF-8");
    PrintWriter Out = response.getWriter ();
    // Получить клиента локали локаль = request.getLocale ();
    NumberFormat NFT = NumberFormat.getCurrencyInstance (языковой стандарт);
    Строка formattedCurr = nft.format (1000000);

    Название String = "локализированных валюта";
    Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
      out.println (DOCTYPE +
      "<HTML> \ п" +
      "<Head> <название>" + название + "</ title> </ голова> \ п" +
      "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
      "<H1 ALIGN = \" центр \ ">" + formattedCurr + "</ h1> \ п" +
      "</ Body> </ html>");
  }
} 

Процент определенного региона

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

импорт java.io. *;
импорт javax.servlet * .;
импорт javax.servlet.http * .;
импорт java.util.Locale;
импорт java.text.NumberFormat;
импорт java.util.Date;

Открытый класс PercentageLocale расширяет HttpServlet {
    
  общественного недействительными doGet (HttpServletRequest запрос,
                    HttpServletResponse ответ)
            бросает ServletException, IOException
  {
    // Установка типа содержимого ответа response.setContentType ( "текст / html; Charset = UTF-8");
    PrintWriter Out = response.getWriter ();
    // Получить клиента локали локаль = request.getLocale ();
    NumberFormat NFT = NumberFormat.getPercentInstance (языковой стандарт);
    Строка formattedPerc = nft.format (0,51);

    Название String = "локаль определенный процент";
    Строка DOCTYPE = "\ п <DOCTYPE HTML!>";
      out.println (DOCTYPE +
      "<HTML> \ п" +
      "<Head> <название>" + название + "</ title> </ голова> \ п" +
      "<Body BGCOLOR = \" # f0f0f0 \ "> \ п" +
      "<H1 ALIGN = \" центр \ ">" + formattedPerc + "</ h1> \ п" +
      "</ Body> </ html>");
  }
}