В этом уроке мы поговорим о интернационализации и локализации в 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
9 комментариев к статье "Spring 3: Интернационализации и Локализации"