+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 65.40 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Разработка многоязычных портлетов в Rational Application Developer

24.05.2018 11:11

IBM® WebSphere® Portal поддерживает более 30 языков. Различные международные организации предоставляют свои порталы для пользователей различных стран или регионов посредством многоязычных Web-сайтов. В этом контексте портал параллельно обслуживает запросы большого числа пользователей на предпочитаемых ими языках. WebSphere Portal поддерживает портлеты, отображаемые на разных языках. Если запрашиваемый язык не поддерживается, портал пытается подобрать соответствие языковым предпочтениям пользователя.

В этой статье рассматривается разработка многоязычных портлетов при помощи IBM® Rational® Application Developer for WebSphere Software v9 (для работы с приведенными примерами можно использовать версию v7.5 или выше). Ссылки на фрагменты исходного кода для многоязычных портлетов, использующих ResourceBundle, предоставлены в разделе Загрузки.

Предварительные условия

Для выполнения описанных ниже шагов необходимы:

  • IBM Rational Application Developer v7.5 и выше
    • Многоязычные портлеты можно разрабатывать в Rational Application Developer v7.5 и выше.
  • IBM WebSphere Portal v7 и выше
    • Основанные на ResourceBundle многоязычные портлеты поддерживаются в IBM WebSphere Portal v7.x, а также в новейших версиях (v8.x и v8.5.x).
  • Знакомство с Rational Application Developer, а также с разработкой портлетов и J2EE-приложений.

Как разработать многоязычный портлет

Многоязычный портлет можно легко разработать при помощи ResourceBundle. Класс ResourceBundle имеет абстрактный подкласс ListResourceBundle, который локализует ресурсы в виде удобного и простого в использовании списка. ListResourceBundle доступен в библиотеке java.util (java.util.ListResourceBundle).

Создание нового проекта портлета

Первым шагом является создание нового проекта портлета в Rational Application Developer.

  1. В Rational Application Developer выберите File > New > Other, как показано на рисунке 1.
Рисунок 1. Создание нового проекта портлета

Рисунок 1. Создание нового проекта портлета 

  1. В окне Select a wizard выберите Portlet Project (можно также выполнить поиск, используя текстовое поле ), а затем нажмите Next (см. рисунок 2).
Рисунок 2. Выбор проекта портлета в окне Select a wizard

Рисунок 2. Выбор проекта портлета в окне Select a wizard 

  1. Откроется окно New Portlet Project. В текстовом окне Project name введите Multilingual, укажите параметры портлета, такие как Portlet name, Target runtime и т.д., а затем нажмите Finish.
Рисунок 3. Создание проекта портлета с именем Multilingual

Рисунок 3. Создание проекта портлета с именем Multilingual 

Создание ResourceBundle

Для каждого класса конкретного языка необходим пакет. Для создания пакета в Rational Application Developer:

  1. Щелкните правой кнопкой мыши на папке src (расположена внутри Java Resources).
  2. Выберите New, а затем Package (см. рисунок 4).
Рисунок 4. Создание нового пакет

Рисунок 4. Создание нового пакет 

Откроется окно New Java Package.

  1. В текстовом поле Name введите com.teg.resources (см. рисунок 5).
  2. Нажмите Finish.
Рисунок 5. Создание нового пакета с именем com.teg.resource

Рисунок 5. Создание нового пакета с именем com.teg.resource 

Создание класса

Теперь создадим класс для языка по умолчанию. Для создания этого нового класса в Rational Application Developer щелкните правой кнопкой мыши на имени пакета и выберите New > Class (см. рисунок 6).

Рисунок 6. Создание нового класса в пакете com.teg.resources

Рисунок 6. Создание нового класса в пакете com.teg.resources 

Откроется окно Java Class. В текстовом поле Name введите MyProviderBundle (см. рисунок 7), а затем нажмите Finish.

Рисунок 7. Создание нового класса с именем MyProviderBundl

Рисунок 7. Создание нового класса с именем MyProviderBundl 

Теперь скопируйте фрагмент кода, приведенный в листинге 1, в MyProviderBundle.java.

Листинг 1. MyProviderBundle.java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.teg.resources;
import java.util.ListResourceBundle;
public class MyProviderBundle extends ListResourceBundle {
public static String WELCOME_MSG = "MyPortletHelloMessage";
public static String INFO_MSG = "MyPortletInfoMessage";
public Object[][] getContents() {
    return contents;
    }
static private final Object[][] contents = {
{WELCOME_MSG, "Hello"},
{INFO_MSG, "This is demo for Multilingual Portlet using WebSphere Portal"}
    };
}

Примечание.
Класс MyProviderBundle должен расширять ListResourceBundle (java.util.ListResourceBundle), как показано в листинге 1.

Для хранения связанной с языком информации в классе MyProviderBundle используются переменные. В переменных WELCOME_MSG и INFO_MSG хранится информация, отображающаяся на экране портала (см. рисунок 8).

Рисунок 8. Класс набора ресурсов для языка, выбираемого по умолчанию

Рисунок 8. Класс набора ресурсов для языка, выбираемого по умолчанию 

Создание набора ресурсов для конкретного языка

Для создания набора ресурсов для конкретного языка необходимо создать класс аналогично тому, как это делалось ранее. Назовите этот класс MyProviderBundle_<lang>, где <lang> - это язык.

На рисунке 9 показан класс MyProviderBundle_fr, созданный для французского языка. Соответствующее содержимое для французского языка назначается переменным WELCOME_MSG и INFO_MSG.

Рисунок 9. Класс набора ресурсов для конкретного языка

Рисунок 9. Класс набора ресурсов для конкретного языка 

Исходный код MyProviderBundle_fr.java приведен в листинге 2.

Листинг 2. MyProviderBundle_fr.java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.teg.resources;
 
import java.util.ListResourceBundle;
 
public class MyProviderBundle_fr extends ListResourceBundle {
public Object[][] getContents() {
    return contents;
    }
static private final Object[][] contents = {
{MyProviderBundle.WELCOME_MSG, "Bonjour"},
{MyProviderBundle.INFO_MSG, "C'estdémo pour portletmultilingueutilisant WebSphere Portal."}
    };
}

Можно создать классы ResourceBundle для всех языков, поддерживаемых портлетом. Язык, поддерживаемый WebSphere Portal по умолчанию, указывается в файле portlet.xml.

Структура пакета портлета в Rational Application Develop

На рисунке 10 показана структура пакета портлета в Rational Application Developer. Для просмотра созданных наборов ресурсов разверните пакет com.teg.resources.

Рисунок 10. Структура пакета портлета в Rational Application Developer

Рисунок 10. Структура пакета портлета в Rational Application Developer 

Использование ResourceBundle в JSP

После создания ResourceBundle для отображения в JSP (MultilingualView.jsp) содержимого на конкретном языке необходимо использовать переменные, объявленные в файлах классов (см. рисунок 11).

В JSP локаль определяется в renderRequestobject. Очередность использования локалей следующая:

  • Локаль, указанная в URL.
  • Локаль, указанная в предпочтениях пользователя.
  • Локаль, указанная в заголовке accept-language.
  • Локаль, указанная в настройках сервера по умолчанию.

Например , если при развертывании выбран испанский язык, то при отправке браузером информации о том, что языком пользователя является французский, содержимое все равно возвращается на испанском. Причина в том, что предпочтения пользователя имеют более высокий приоритет, чем информация браузера (accept-language).

Рисунок 11. Использование набора ресурсов в JSP

Рисунок 11. Использование набора ресурсов в JSP 

Исходный код MultiLingualPortletView.jsp приведен в листинге 3.

Листинг 3. MultilingualPortletView.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@page session="false" contentType="text/html" pageEncoding="ISO-8859-1"
import="java.util.*,javax.portlet.*,com.teg.multilingual.*" %>
<%@ tagliburi="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects/>
<DIV style="margin: 6px">
<h1>MultiLingualPortlet</h1>
<p>
<% ResourceBundlerb = ResourceBundle.getBundle("com.teg.resources.MyProviderBundle",
renderRequest.getLocale());%>
<b><%= rb.getString(com.teg.resources.MyProviderBundle.WELCOME_MSG) %></b
<%= rb.getString(com.teg.resources.MyProviderBundle.INFO_MSG) %>
</p>
</DIV>

Просмотр многоязычного портлета

После развертывания портлета на WebSphere Portal и добавления его на страницу (как для неподдерживаемого языка, так и для языка по умолчанию) содержимое в портлете отображается на языке по умолчанию (в данном примере на английском).

Рисунок 12. Портлет с содержимым на языке по умолчани

Рисунок 12. Портлет с содержимым на языке по умолчани 

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

Рисунок 13. Содержимое портала на французском языке

Рисунок 13. Содержимое портала на французском языке 

Заключение

В статье описывалось использование IBM Rational Application Developer для разработки многоязычных портлетов для IBM WebSphere Portal. Я считаю, что на данный момент самым простым способом создания многоязычных порталов является ResourceBundle.

Благодарности

Автор благодарит руководителя подразделения IBM Social Business в Tata Consultancy Services Панкаджа Бозе (Pankaj Bose) и старшего разработчика Tata Consultancy Services Сушри Пухана (Sushree Puhan) за их рекомендации и поддержку при написании данной статьи.

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Популярные статьи
Разработка ПО СУБД и хранилища данных Информационная безопасность Microsoft Oracle Офисное ПО Управление разработкой ПО Антивирусное ПО и защита от спама Eset Software
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2016. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2016 Standard
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

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



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года