Лучший отвечающий
SCSM 2012. Мультиязыковая поддержка для своих User Control (C#)

Вопрос
-
Имеется свой класс, содержащий вывод стандартной формы вида:
MessageBox.Show("Вы уверены?", "Подтверждение", MessageBoxButton.YesNo, MessageBoxImage.Question);
При этом, у нас в пакете управления есть блок <LanguagePacks>.
Вопрос:
Как привязать локализацию своего User Control к языку консоли?
Можно ли брать локализацию из пакета управления?
Проще говоря, если язык консоли Английский, то дожно быть как-то так
MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question);
А если язык консоли русский, то соответственно, перевод как в блоке выше.
Спасибо.
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
- Изменено Dismantled 8 октября 2013 г. 7:48
8 октября 2013 г. 7:47
Ответы
-
Можно, но очень не тривиально. Если для кастомных форм всё довольно просто - есть стандартный биндинг к Strings (http://blogs.technet.com/b/servicemanager/archive/2010/02/25/localizing-forms-service-request-example.aspx), то вот с отдельными строками всё гораздо сложнее. Вам необходимо получать значение StringResource из пакета (http://msdn.microsoft.com/en-us/library/gg469654.aspx , http://msdn.microsoft.com/en-us/library/microsoft.enterprisemanagement.configuration.managementpack.getstringresource.aspx)
ManagementPackStringResource res = mp.GetStringResource(resourceId); try { return res.GetDisplayString(CultureInfo.CurrentUICulture).Name; } catch { try { return mp.GetStringResource(resourceId).DisplayName; } catch (ObjectNotFoundException er) { throw new ObjectNotFoundException(resourceId + " (" + mp.DefaultLanguageCode + ")", er); } }
SCSMSolutions
email: freemanru (at) gmail (dot) com- Помечено в качестве ответа Dismantled 14 октября 2013 г. 11:52
10 октября 2013 г. 1:44Модератор
Все ответы
-
Можно, но очень не тривиально. Если для кастомных форм всё довольно просто - есть стандартный биндинг к Strings (http://blogs.technet.com/b/servicemanager/archive/2010/02/25/localizing-forms-service-request-example.aspx), то вот с отдельными строками всё гораздо сложнее. Вам необходимо получать значение StringResource из пакета (http://msdn.microsoft.com/en-us/library/gg469654.aspx , http://msdn.microsoft.com/en-us/library/microsoft.enterprisemanagement.configuration.managementpack.getstringresource.aspx)
ManagementPackStringResource res = mp.GetStringResource(resourceId); try { return res.GetDisplayString(CultureInfo.CurrentUICulture).Name; } catch { try { return mp.GetStringResource(resourceId).DisplayName; } catch (ObjectNotFoundException er) { throw new ObjectNotFoundException(resourceId + " (" + mp.DefaultLanguageCode + ")", er); } }
SCSMSolutions
email: freemanru (at) gmail (dot) com- Помечено в качестве ответа Dismantled 14 октября 2013 г. 11:52
10 октября 2013 г. 1:44Модератор -
Поковырялись совместно с разработчиком :), вроде получилось. Спасибо.
Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.
14 октября 2013 г. 12:33