Интернационализация

Существует много деталей, которые относятся к интернационализации (язык, формат даты, времени, валюты и т.д.). Данные о пользователе могут быть получены с помощью класса Locale. Он помогает нам обеспечивать интернационализацию.

Для понимания того, как это работает на практике, рассмотрим простой пример.

В качестве основы возьмем приложение из данной статьи.

Класс LocaleDemo.java

package net.proselyte.servletstutorial;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;

/**
 * Simple servlet that demonstrates work with {@link Locale}.
 *
 * @author Eugene Suleimanov
 */

public class LocaleDemo extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


//        Locale locale = new Locale("uk_UA");
        Locale locale = new Locale("us_US");

        String language = locale.getLanguage();

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");

        String docType = "
<
!DOCTYPE html
>
";
        String title = "Locale Demo";

        PrintWriter writer = response.getWriter();

        if (locale.getLanguage().equalsIgnoreCase("uk_ua")) {
            title = "Демонстрация локализации";
            writer.println(docType + "
<
html
>
" +
                    "
<
head
>
" +
                    "
<
title
>
" + title +
                    "
<
/title
>
" +
                    "
<
/head
>
" +
                    "
<
body
>
" +
                    "
<
h1
>
Данные локализации: 
<
/h1
>
" +
                    "
<
h2
>
Локализация: 
<
/h2
>
" + locale +
                    "
<
h2
>
Язык:  
<
/h2
>
" + language +
                    "
<
/body
>
" +
                    "
<
/html
>
");
        } else {
            writer.println(docType + "
<
html
>
" +
                    "
<
head
>
" +
                    "
<
title
>
" + title +
                    "
<
/title
>
" +
                    "
<
/head
>
" +
                    "
<
body
>
" +
                    "
<
h1
>
Locale Details: 
<
/h1
>
" +
                    "
<
h2
>
Locale: 
<
/h2
>
" + locale +
                    "
<
h2
>
Language:  
<
/h2
>
" + language +
                    "
<
/body
>
" +
                    "
<
/html
>
");
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Файл web.xml

<
!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" 
>
<
web-app
>
<
display-name
>
Servlets Tutorial
<
/display-name
>
<
servlet
>
<
servlet-name
>
SimpleServlet
<
/servlet-name
>
<
servlet-class
>
net.proselyte.servletstutorial.SimpleServlet
<
/servlet-class
>
<
/servlet
>
<
servlet
>
<
servlet-name
>
LocaleDemo
<
/servlet-name
>
<
servlet-class
>
net.proselyte.servletstutorial.LocaleDemo
<
/servlet-class
>
<
/servlet
>
<
servlet-mapping
>
<
servlet-name
>
SimpleServlet
<
/servlet-name
>
<
url-pattern
>
/SimpleServlet
<
/url-pattern
>
<
/servlet-mapping
>
<
servlet-mapping
>
<
servlet-name
>
LocaleDemo
<
/servlet-name
>
<
url-pattern
>
/LocaleDemo
<
/url-pattern
>
<
/servlet-mapping
>
<
/web-app
>

Выполним в консоли команду:

mvn tomcat7:run

Откроем браузер и перейдем по ссылке:

http://localhost:8088/LocaleDemo

В результате получим следующую страницу:

Если мы изменим класс LocaleDemo и выставим локализацию uk_UA:

package net.proselyte.servletstutorial;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;

/**
 * Simple servlet that demonstrates work with {@link Locale}.
 *
 * @author Eugene Suleimanov
 */

public class LocaleDemo extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        Locale locale = new Locale("uk_UA");
//        Locale locale = new Locale("us_US");

        String language = locale.getLanguage();

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");

        String docType = "
<
!DOCTYPE html
>
";
        String title = "Locale Demo";

        PrintWriter writer = response.getWriter();

        if (locale.getLanguage().equalsIgnoreCase("uk_ua")) {
            title = "Демонстрация локализации";
            writer.println(docType + "
<
html
>
" +
                    "
<
head
>
" +
                    "
<
title
>
" + title +
                    "
<
/title
>
" +
                    "
<
/head
>
" +
                    "
<
body
>
" +
                    "
<
h1
>
Данные локализации: 
<
/h1
>
" +
                    "
<
h2
>
Локализация: 
<
/h2
>
" + locale +
                    "
<
h2
>
Язык:  
<
/h2
>
" + language +
                    "
<
/body
>
" +
                    "
<
/html
>
");
        } else {
            writer.println(docType + "
<
html
>
" +
                    "
<
head
>
" +
                    "
<
title
>
" + title +
                    "
<
/title
>
" +
                    "
<
/head
>
" +
                    "
<
body
>
" +
                    "
<
h1
>
Locale Details: 
<
/h1
>
" +
                    "
<
h2
>
Locale: 
<
/h2
>
" + locale +
                    "
<
h2
>
Language:  
<
/h2
>
" + language +
                    "
<
/body
                    >
                    " +
                    "
<
/html
>
");
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Выполним в консоли команду:

mvn tomcat7:run

Откроем браузер и перейдем по ссылке:

http://localhost:8088/LocaleDemo

В результате получим следующую страницу:

results matching ""

    No results matching ""