Spring 3: Интернационализации и Локализации – Devcolibri

Spring 3: Интернационализации и Локализации

В этом уроке мы поговорим о интернационализации и локализации в Spring 3.0 MVC. Мы добавим поддержку i18n с l10n для приложения Spring.

Что такое i18n и l10n?

В программировании, интернационализации и локализации являются средством адаптации компьютерных программ на различные языки и региональные различия. Интернационализация представляет собой процесс проектирования программного приложения таким образом, что оно может быть адаптировано к различным языкам и регионам без технических изменений. Локализация это процесс адаптации разного программного обеспечение для конкретного региона или языка, добавив локали компонентов и их перевод.

В английском языке для слова «internationalization» принято сокращение «i18n». При этом число 18 означает количество пропущенных между «i» и «n» букв. Для Локализации «Localization» применяют сокращение «L10n». Заглавная буква «L» используется чтобы не путать с «i» в «i18n», число 10 — количество букв между «L» и «n».

Цель:

Наша цель заключается в добавлении интернационализации и локализации для нашего приложения Spring MVC. После завершения нашего приложения будет выглядеть.

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

Resouces File

Создадим два propperty файла, который будет содержать все сообщения, которое будет отображаться в приложении.

Эти файлы хранятся в исходной папке под названием “resources”.

Создадим два файла lable_en.properties and lable_ru.properties в папке resources.

language = en
label.registration = Registration
label.login = Log In
language = ru
label.registration = Регистрация
label.login = Войти на сайт

Настройка интернационализации (i18n) / локализации (l10n) в Spring MVC

Мы создали resource properties для нашего приложения. Теперь мы должны объявить эти файлы в конфигурационом файле spring *-servlet.xml.

Будем использовать класс org.springframework.context.support.ReloadableResourceBundleMessageSource для определения resource properties.

Кроме того, обратите внимание, что мы будем предоставлять функцию, где пользователь сможет выбрать язык для приложения в виде влагов. Это реализуется с помощью org.springframework.web.servlet.i18n.LocaleChangeInterceptor класс.

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

org.springframework.web.servlet.i18n.CookieLocaleResolver класс будет использоваться для хранения локализации изменений в cookies.

Добавить следующий код в *-servlet.xml файл.

<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:label" />
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

<bean id="localeChangeInterceptor"
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en"/>
</bean>

<bean id="handlerMapping"
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
        <ref bean="localeChangeInterceptor" />
    </property>
</bean>

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="lang" />
    </bean>
</mvc:interceptors>

Отметим, что в вышеуказанной конфигурации мы определили базовое свойство в MessageSource classpath:messages. По этому spring будет определить, что label_  ресурс и будет использоваться в этом приложении.

Изменить вид – JSP

Теперь, когда мы создали два message resources фала и настроить его в Spring MVC, мы будем использовать эти сообщения в файлах JSP. Откройте все файлы JSP вашего приложения и добавьте в начало каждого файла следующую строку:

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

эта библиотека которую мы подключили выше даст нам возможность использовать теги spring.

Для переключение локали добавьте следующий код:

<span style="float: right">
    <a href="?lang=en">en</a> 
    | 
    <a href="?lang=de">ru</a>
</span>

В *-servlet.xml мы указали <property name="paramName" value="lang" /> это значит что параметр передаваемый GET lang методом будет определять локаль.

И последний шаг, это вывод сообщений:

<p><spring:message code="label.registration"/></p>
<p><spring:message code="label.login"/></p>

Отметим, что в JSP выше, мы использовали <spring:message> теги для отображения сообщения от ресурсов.

Многоязычное приложение готово!

ПОХОЖИЕ ПУБЛИКАЦИИ

    None Found

32259
29/10/2012

9 комментариев к статье "Spring 3: Интернационализации и Локализации"

  1. хорошая информация, спасибо!
    а не подскажите что надо сделать для вывода в строке адреса “/en/” или “/ru/”, вместо “?lang=XX”

  2. а за что отвечает этот бин

    он случайно не лишний? у меня все норм заработало и без него.

  3. Спасибо огромное, отличная статья. И не только эта)

  4. А что делать с get запросами типа http://localhost:8080/index?id=5 ___?
    ведь при смене языка нас перекинет сюда http://localhost:8080/indexr?lang=en
    и мы потеряем параметр id

  5. А если я хочу добавить немецкий язык или французский, как тогда???

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)