Работаю сейчас над одним модулем для SugarCRM и сразу делаю его многоязычным. Думаю, вдруг заморским девелоперам пригодится, так что сразу создам его на русском и английском. Те, кто работал с поддержкой нескольких языков, знают, что на php это реализуется довольно просто, вернее, я бы сказал, что это уже реализовано. Но в данном модуле некоторые проверки у меня вынесены в javascript, и хотелось бы сообщения тоже выдавать на дефолтном языке crm. Недолго покопавшись в документации, нашел решение. Оказывается, и здесь уже разработчики SugarCRM обо всем позаботились.
// LBL_MODULE_CONTACT строка, хранящаяся в $app_strings SUGAR.language.get('app_strings', 'LBL_MODULE_CONTACT'); // LBL_LIST_LAST_NAME строка, хранящаяся в модуле Accounts $mod_strings SUGAR.language.get('Accounts', 'LBL_NAME');
И, как всегда, разберем ”живой” пример для того, чтобы усвоить материал и увидеть, как этим можно пользоваться на практике.
Задача: Не допустить некорректного ввода суммы в модуле сделки. Например, пользователь может свободно ввести отрицательную сумму сделки.
Наш javascript файл будет выглядеть следующим образом:
function formSubmiter() { var node = YAHOO.util.Dom.get('amount'); //Берем нод суммы if (node) { var amount = parseFloat(node.value); //Преобразуем во float if (isNaN(amount))//Если не получилось преобразовать { alert(SUGAR.language.get('Opportunities', 'LBL_INCORECT_AMOUNT')); return false; } else if (amount <= 0) //Если сумма отрицательная { alert(SUGAR.language.get('Opportunities', 'LBL_INCORECT_AMOUNT')); return false; } } return true; } YAHOO.util.Dom.get('EditView').onsubmit = function(){return formSubmiter()};
Результат:
Я немного прокомментировал js файл, чтобы было все понятно. На событие submit формы вызывается функция formSubmiter, и если сумма введена некорректно, то форма не сабмитится, и отображается сообщение об ошибке на языке, установленном пользователем по дефолту.
Все, что осталось – это добавить перевод LBL_INCORECT_AMOUNT в необходимые языковые файлы модуля сделки в вашей crm и вывести на странице редактирования сделки данный скрипт. Будем считать это вашим домашним заданием .
Высказать своё мнение о статье Вы можете в комментариях, если Вас интересуют какие либо вопросы или дополнения, то обсуждение по данной теме доступно на нашем форуме.
Может не совсем к этому посту запись, но часто во всяких мануалах по SugarCRM, как и в этой статье — нахожу YAHOO.util. Что это такое? Как им пользоваться? И какое отношение оно имеет к SugarCRM?
Для работы с javascript разработчики SugarCRM используют Yahoo! UI Library. Почитать о библиотеке можно по ссылке Yahoo! UI Library. Если вкратце то с помощью этой библиотеки можно легко работать с Ajax, json, drag-and-drop (используется в sugar студии). Раньше еще разработчики использовали и включали в SugarCRM ExtJS, но так как с 5 версии перешли на GPLv3 лицензцию, оказались от этой библиотеки , и оставили только Yahoo library, использующую BSD лицензию. А очень жаль