Как справиться с локализацией ошибок бизнес-уровня, когда есть отдельные интерфейсы пользовательского интерфейса и API? - PullRequest
1 голос
/ 29 июня 2011

Мое приложение имеет как интерфейс пользователя (ASP.Net), так и интерфейс API веб-сервисов (WCF), которые оба вызывают один бизнес-уровень.Мы используем пользовательский тип исключения для передачи ошибок бизнес-уровня, которые безопасно отображать для конечных пользователей.Например, если пользователь пытается выполнить действие, которое выходит за рамки его полномочий, бизнес-уровень выдаст новое исключение FriendlyException («У вас нет разрешения»).Затем уровень пользовательского интерфейса обрабатывает это исключение и показывает это сообщение конечному пользователю.Если API сделал этот вызов, то внутри данных FaultException было бы сообщение «У вас нет прав».

Проблема, с которой мы столкнулись сейчас, заключается в том, что нам нужно начать локализацию всех этих сообщений.В настоящее время предполагается, что BusinessLayer генерирует статические строки («NO_PERMISSION_ERROR»), которые будут использоваться обработчиками пользовательского интерфейса и API для поиска локализованной строки в соответствующих файлах ресурсов.Единственным недостатком этого является наша локализация API и локализация пользовательского интерфейса в США практически одинаковы и дублируются.Можем ли мы избежать этого, используя какой-то другой шаблон, или мы на правильном пути?

Спасибо, J

1 Ответ

0 голосов
/ 29 июня 2011

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

Теоретически вы можете добавить что-то вроде «getLocalizedMessage (CultureInfo ci)» в ваш пользовательский класс исключений, но это не такочень хорошо работают с распределенными приложениями.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...