Поддержи Openmeetings

суббота, 26 декабря 2009 г.

Локализация CalemEAM

На данный момент существует множество систем управления активами предприятия (EAM — Enterprise Asset Management). Наиболее известной и полной системой этого класса является IBM Maximo, но так как моим клиентом является государственное учреждение, мне были интересны системы с открытым исходным кодом. Среди них я нашла два работающих решения: это Apache Ofbiz и CalemEAM. Дистрибутив продукта Apache весит треть гигабайта, и в нём реализовано достаточно много возможностей в дополнение к EAM: там можно найти готовый Интернет-магазин и систему планирования производства. Вторая система узко направлена на управление активами, реализует специфичные функции для данной предметной области, в 100 раз легче и немного красивее. Далее я постараюсь беспристрастно остановиться на сравнении систем.

Apache Ofbiz Vs CalemEAM

Согласно следующей таблице, Apache Ofbiz мне пришлось бы сильно кастомизировать для использования в целях управления активами. CalemEAM же подходит в своем почти первозданном состоянии. Сначала, впрочем, CalemEAM отказался запускаться, но после выключения печати ошибок и передачи сжатых javascript библиотек я смогла войти в систему.

Требуемая функциональность CalemEAM Apache Ofbiz
Ведение складского учета + +
Поддержка специфичных для оборудования атрибутов (отказоустойчивость, гарантия и т. д.) + -
Возможность создания иерархической структуры оборудования (одно оборудование содержит в себе другое) + -
Создание плана графика регламентных работ по обслуживанию оборудования + -
Создание задания на проведение внеплановых работ, поддержка статуса выполнения данного задания + -
Учёт информации по вендорам оборудования + -
Учёт информации по контрактам с вендорами + -
Возможность создания документации + -
Учёт проводимых проверок + -

Для наших российских чиновников использовать систему управления активами на английском языке было бы достаточно проблематично и понизило бы ожидаемый эффект от внедрения. Поэтому я решила локализовать CalemEAM.

Итак, локализация CalemEAM на примере настройки русского языка.

  • Создаем файлы AjxMsg_ru.properties, CalemMsg_ru.properties, I18nMsg_ru.properties, I18nMsg_ru_RU.properties и кладем их в каталог CalemEAM\client\lang. Причем создать эти файлы лучше всего путём копирования из исходных файлов, например, AjxMsg.properties, CalemMsg.properties, I18nMsg_en.properties, I18nMsg_en_UK.properties. В этих файлах собственно и находятся текстовые поля, которые необходимо перевести на требуемый язык.
  • Изменяем настройки кастомизации в файле CalemEAM\server\conf\calem.custom.php, а именно добавляем в конец следующий код:
    /** Add Russian */ 
    $_CALEM_dist['client_lang_list']['CalemMsg_ru.js']=array('AjxMsg'=>array('AjxMsg_ru'), 
        'I18nMsg'=>array('I18nMsg', 'I18nMsg_ru', 'I18nMsg_ru_RU'), 
        'CalemMsg'=>array('CalemMsg_ru', 'CalemMsgCustom_ru')); 
    $_CALEM_dist['client_language']='ru';
    
  • Запускаем скрипт deploy.sh (или deploy.bat build для Windows) из CalemEAM\bin. В результате этой операции в CalemEAM\client\launchpad\resource должны сгенерироваться следующие файлы: CalemMsg_ru.js, CalemMsg_ru.js.min, CalemMsg_ru.js.gz, CalemMsg_ru.phpo.
  • Изменяем строку под номером 51 в CalemEAM\client\launchpad\CalemIncludeJsPkg.php, а именно $lang=isset($_REQUEST['lang'])?$_REQUEST['lang']:$_CALEM_conf['client_language']; заменяем на $lang=isset($_REQUEST['lang'])?$_REQUEST['lang']:null;
  • Для того чтобы при выборе языка при входе в программу появился пункт Russian изменяем файл CalemEAM\server\cong\calem.php. Находим объявление массива client_lang_list (строка 196) и добавляем в него следующее 'CalemMsg_ru.js'=>array('AjxMsg'=>array('AjxMsg_ru'), 'I18nMsg'=>array('I18nMsg_ru','I18nMsg_ru_RU'), 'CalemMsg'=>array('CalemMsg_ru','CalemMsgCustom_ru')) Далее в массив client_lang_select (строка 243) добавляем код: 'Russian'=>array('id'=>'ru').

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

Проблема Решение
После выполнения скрипта deploy.sh заявленные файлы не генерируются. Установить в файле deploy.sh переменную CALEM_BUILD равной 1.
При входе в программу появляется ошибка pattern is undefined. В скрипте CalemEAM\client\launchpad\resource\Ajax.js
найти функцию AjxDateFormat (строка 1233):
function AjxDateFormat(pattern)
и перед циклом for (строка 1244) добавить код:
pattern=I18nMsg.formatDateShort;

Комментариев нет :

Отправить комментарий