AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
CRM
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2013, 16:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Мультиязычный CRM. Как автоматически назначить пользователю нужный язык
Источник: http://axforum.info/forums/blog.php?b=402
==============

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

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

Решение нашлось достаточно простое и элегантное. Создадим и добавим на форму объекта Пользователь (systemuser) новое поле:



Тип - целое число. Формат - Язык. Система будет автоматически отражать в этом поле только те языки, которые включены в параметрах системы:



... и базовый язык, разумеется.

На форме поле будет вести себя так:



Значением этого поля будет числовой код языка. В данном случае 1033 и 1049.

Далее нам необходим плагин, который реализует искомую функциональность и обновит персональные настройки пользователя. Настройки пользователя хранятся в объекте UserSettings, который состоит в отношении 1:1 с объектом Пользователь (SystemUser), что очень удобно, так как нам не придется искать нужный объект в базе. Код плагина предельно прост:
X++:
protected void ExecutePlugin(LocalPluginContext localContext) { IPluginExecutionContext context = localContext.PluginExecutionContext; Entity postImageEntity; if (context.PostEntityImages.TryGetValue(postImageAlias, out postImageEntity) == true) { int? langCode = postImageEntity.GetAttributeValue<span style="color: blue"int/span>("fixrm_defaultlanguage"); if(langCode != null) { Entity usersettings = new Entity { LogicalName = "usersettings", Id = postImageEntity.Id }; usersettings.Attributes.Add("uilanguageid", langCode); usersettings.Attributes.Add("helplanguageid", langCode); localContext.OrganizationService.Update(usersettings); } } }
Данный пример реализован с использованием CRM Toolkit для Visual Studio. Плагин следует повесить на этап пост обработки событий создания и обновления объекта Пользователь. Для обоих событий я использовал снимки (PostImage) с выбором единственного атрибута - Язык по умолчанию.

Так как процедура создания пользователя - это одна из самых дорогостоящих операций в системе, я рекомендую регистрировать плагин как асинхронный.

Если кому из вас нужно готовое решение - пожалуйста, напишите об этом в комментарии, я постараюсь выложить его в ближайшее время.


Источник: http://axforum.info/forums/blog.php?b=402
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 8 Blog bot Dynamics CRM: Blogs 1 30.04.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 13 Blog bot Dynamics CRM: Blogs 0 27.03.2013 22:12
crminthefield: CRM Upgrade Best Practices Blog bot Dynamics CRM: Blogs 0 11.10.2012 00:11
Microsoft Dynamics CRM Team Blog: CRM 2011 Chart Enhancements Blog bot Dynamics CRM: Blogs 0 25.01.2012 10:11
axforum blogs: Developer Toolkit для CRM 2011 - Первые впечатления Blog bot Dynamics CRM: Blogs 0 29.10.2011 16:12

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:28.