У нас сайт и интерфейс Creatio на нескольких языках. Посетители сайта, естественно, тоже могут заполнять формы на разных языках. При этом в формах присутствуют поля Страна, Регион, Город.

 

Вопрос: есть ли у кого-то такая же ситуация и как вы реализуете передачу значений из полей Страна, Регион, Город на нескольких языках с сайта в Creatio?

 

Где берёте и как поддерживаете актуальность самих значений в справочниках? 

 

Нравится

2 комментария

Сергей, сама по себе мультиязычность обеспечивается механизмом схем с хранением данных на разных языках в отдельных записях специальных служебных таблиц (Sys...Lcz).

 

А по поводу того, как это интегрировать с актуализацией, всё зависит от конкретной системы, откуда берутся данные. Обычно у каждой страны есть свой стандарт, своя база, как правило, только на государственном языке, но есть и универсальные для нескольких стран. В маркете есть примеры таких коннекторов: Address database (для России, Украины, Казахстана), FIAS address hints (только РФ).

Спасибо) Не совсем то, что нам нужно. Когда сделаем - отпишусь.

Показать все комментарии

Коллеги, что вы можете посоветовать для решения такого вопроса:

Есть мультиязычная система. В конфигурации объектов и страниц всё хорошо записывается в Localizable string. Но в БП и System settings тоже встречается необходимость использовать текстовые данные (в уведомлениях, например).

Но там можно указать только одно значение. Как лучше поступить в этой ситуации?

Нравится

1 комментарий
Лучший ответ

Здравствуйте.

Локализировать нужные значения можно через раздел 'Переводы'.

Правда, в БП не все значения попадают в локализируемые.

Здравствуйте.

Локализировать нужные значения можно через раздел 'Переводы'.

Правда, в БП не все значения попадают в локализируемые.

Показать все комментарии

Настроил свой БП на обращения. В нем есть отправка письма.

Для отправки письма используется мультиязычный шаблон. Для формирования письча делаю читать данные схемы Case, потом Действие процесса Обработать шаблон письма с макросами (где указан мой шаблон), затем добавляю данные в раздел Активности и далее отправляю письмо скриптом:

var activityId = Get<Guid>("AddDataID");
if (UserConnection.GetIsFeatureEnabled("UseAsyncEmailSender")) {
	AsyncEmailSender emailSender = new AsyncEmailSender(UserConnection);
	emailSender.SendAsync(activityId);
} else {
	var emailClientFactory = ClassFactory.Get<EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
	var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
	activityEmailSender.Send(activityId);
}
return true;

Все работает за исключение того, что всегда отправляется только английский вариант письма.

Пример такой настройки взят и стандартного БП Отправка письма при смене статуса обращения.

Вопрос как мне заставить отправлять письмо по настройкам языка получателя?

Нравится

5 комментариев

EmailSender скорее всего берет тело сообщения из активности, а там уже лежит текст сообщения на каком то языке.

Почему бы не воспользоваться стандартным блоком "Отправить Email"?

Письмо должно быть привязано в хронологию обращения. К тому делал через отправку стандартным блоком Отправить Email и постоянно какие то ошибки. Не дружу я с ним )

К тому же все стандартные процессы по отправке писем не используют блок Отправить Email, а отправляют скриптами

Попробуй поигратся со сменой языковой культуры перед отправкой

Как то так

cultureId = UserConnection.CurrentUser.SysCultureId;

//cultureId бери из настроек пользователя те тот язык на котором хочешь чтобы было письмо пользователя

esq.SetLocalizationCultureId(cultureId);

Ну или более глобально как то так

userConnection.CurrentUser.SysCultureName = "en-US";

 

В итоге выяснилось путем тестов. Элемент БП Выполнить действие -  - Обработать шаблон письма с макросами не учитывает мультиязычные шаблоны.  Делал подмену шаблона из таблицы EmailTemplate на EmailTemplateLang. 

var mailTemplateID = Get&lt;Guid&gt;("MailTemplateID");
var usrLangId = Get&lt;Guid&gt;("UserLanguageID")==Guid.Empty
    ? new Guid("6EBC31FA-EE6C-48E9-81BF-8003AC03B019")
    : Get&lt;Guid&gt;("UserLanguageID");
var newMailTemplate = new EmailTemplateStore(UserConnection);
Set&lt;Guid&gt;("MailTemplateID", newMailTemplate.GetTemplate(mailTemplateID, usrLangId).PrimaryColumnValue);
return true;

И подавал на вход Элементу Обработать шаблон письма с макросами - результате пустое письмо. Поэтому перешел на другую отправку писем:

var contactEmail = Get&lt;string&gt;("ContactEmail");
var senderEmail = Get&lt;string&gt;("SenderEmail");
var caseId = Get&lt;Guid&gt;("RecordId");
var templateId = Get&lt;Guid&gt;("MailTemplateID");
var emailTemplateMacrosManager = new EmailWithMacrosManager(UserConnection);
emailTemplateMacrosManager.SendEmailFromTo(caseId, templateId, senderEmail, contactEmail);
return true;

Хорошо что раздел обращения. Полагаю в другом разделе такая отправка не заработает (

Показать все комментарии

Добрый день, коллеги!



Как можно в bpm'online перевести кроме элементов интерфейса на несколько языков еще и данные?

Необходимо отображать на языке пользователя некоторые поля справочников (Name, Description), а также некоторые поля разделов (например, названия, описания сервисов или продуктов)

Нравится

3 комментария
Лучший ответ

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

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

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

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

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

Спасибо!



Но есть дополнительный вопрос. При обновлении переводов показываются только те записи, которые были добавлены после отметки поля как переводимого.



А как все уже существовавшие записи добавить для перевода?

Посмотреть в профайлере, какие записи добавляются в какие таблицы при добавлении записей в справочник, а потом по всем старым SQL-запросом по аналогии?

Показать все комментарии

Добрый день!

При настройки колонок в данные настройки колонок добавляется только одно значение SysProfileData текущего языковой настройки. При добавления настройки для другого языка приходится перезаходить в систему и заново настраивать колонки.

Предлагаю в системе учитывать мультиязычность и реализовать возможность добавления записей SysProfileData для нескольких языков

1 комментарий

Здравствуйте, Илья!

Передали данное пожелание команде разработки, для анализа возможности внедрения данного функционала в будущих версиях.

Показать все комментарии