Silverlight 4: Локализация исключений проверки встроенных аннотаций данных - PullRequest
5 голосов
/ 03 сентября 2010

Я хотел бы использовать аннотации данных для проверки в моем приложении Silverlight. Встроенные атрибуты проверки (в первую очередь StringLength и Required) великолепны и облегчают жизнь. Однако у них, похоже, есть один критический недостаток. Например, если для моей локали задано значение fr-CA, исключения для проверки по-прежнему на английском языке - «Поле имени обязательно», «Имя поля должно быть строкой с максимальной длиной 20» и т. Д.

Это главная проблема. Это означает, что если мне нужны локализованные сообщения об ошибках для встроенных атрибутов проверки, я должен вручную добавить ErrorMessage / ErrorMessageResourceType в каждый атрибут проверки для каждого проверяемого свойства в моем бизнес-уровне и вручную добавить переведенные строки для каждое сообщение об ошибке.

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

Любые комментарии или мысли приветствуются.

1 Ответ

6 голосов
/ 27 сентября 2010

Хорошо, я справился с этим, просто подклассифицировав встроенные атрибуты проверки. Проблема решена!

internal class LocalizedStringLengthAttribute : StringLengthAttribute
{
    public LocalizedStringLengthAttribute(int maximumLength)
        : base(maximumLength)
    {

    }

    public override string FormatErrorMessage(string name)
    {
        return String.Format(CultureInfo.CurrentUICulture, LanguageResources.Resource.Error_StringLength, name, MaximumLength);
    }
}
...