Блок приложения для проверки корпоративных библиотек и интернационализация

Сценарий

Настольное приложение .NET / WPF должно быть локализовано (или в терминах MS глобализировано ) на язык, отличный от английского. То есть пользовательский интерфейс должен быть полностью адаптирован (ярлыки, значки, ...).

Записи файла журнала, записи журнала аудита и другие выходные данные приложения, однако, должен оставаться на английском языке, чтобы англоязычный обслуживающий / вспомогательный персонал мог его просмотреть. Они не говорят по-французски или по-китайски.

Приложение использует файлы RESX для выполнения локализации.

Блок проверки библиотеки предприятия используется для проверки бизнес-правил на объектной модели.

Теперь предположим, что существует служба, которая проверяет свои заданные аргументы объектной модели перед выполнением реальной бизнес-логики. При некоторых обстоятельствах он получает недопустимые аргументы объектной модели, но продолжает выполнение с максимальной отдачей. Однако предоставление недопустимых данных объектной модели должно регистрироваться в журнале аудита и в файле журнала.

Пример службы, использующей блок проверки.

public class Service : IService
{
    public void MyMethod(MyObjectModelObject obj)
    {
        Validator validator = ValidationFactory.CreateValidator(typeof(MyObjectModelObject));
        ValidationResults results = validator.Validate(this);

        // !!! The messages in the validation results are now already localized to CurrentCulture.

        // ... build a log message: msg
        if (results.Count > 0)
        {
            Logger.Log(msg);
        }
    }
}

Как указано в комментарии к коду, когда вы вызываете Validate () на валидаторе EnterpriseLibrary, Сообщения проверки уже локализованы на французский, и у вас нет возможности записать их, например, в файл журнала на английском языке.

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

Есть идеи, как внедрить аналогичный механизм в блок валидации Enterprise Library? Идеи до сих пор:

  • Временное переключение CurrentCulture (мне это не нравится, и это решает только половину проблемы)
  • Исправление блока валидации Enterprise Library (мне тоже это не нравится)

Спасибо за Ваша помощь и общие идеи!

5
задан Steven 31 August 2010 в 07:58
поделиться