1

我想更改我们在 Entity Framework 4.3 中验证时获得的默认 ErrorMessage。我们找到了适用于 EF4.1 的语言包,但没有适用于 4.3 的语言包吗?

4

1 回答 1

-1

我们通过手动翻译我们遇到的所有验证消息解决了这个问题!我们使用一些正则表达式从最终错误消息中提取消息资源字符串。

    private static Dictionary<string, string> _errorTranslation;

    private static string TranslateErrorMessage(string errorMessage)
    {
        if (_errorTranslation == null)
        {
            _errorTranslation = new Dictionary<string, string>();

            // MaxLength-Attribute
            _errorTranslation.Add(
                @"^The field (.*) must be a string or array type with a maximum length of (.*)\.$",
                @"Das Feld $1 hat eine maximale Länge von $2.");

            // MinLength-Attribute
            _errorTranslation.Add(
                @"^The field (.*) must be a string or array type with a minimum length of (.*)\.$",
                @"Das Feld $1 hat eine minimale Länge von $2.");

            // StringLength-Attribute
            _errorTranslation.Add(
                @"^The field (.*) must be a string with a maximum length of (.*)\.$",
                @"Das Feld $1 hat eine maximale Länge von $2.");

            // Range-Attribute
            _errorTranslation.Add(
                @"^The field (.*) must be between (.*) and (.*)\.$",
                @"Das Feld $1 muss zwichen $2 und $3 liegen.");

            // Required-Attribute
            _errorTranslation.Add(
                @"^The (.*) field is required\.$",
                @"Das Feld $1 wird zwingend benötigt.");
        }

        foreach (var pattern in _errorTranslation)
            if (Regex.IsMatch(errorMessage, pattern.Key))
                return Regex.Replace(errorMessage, pattern.Key, pattern.Value);

        return errorMessage;
    }

编辑 自从我 5 个月前发布我的问题以来没有人回答,我们提出了这个糟糕的解决方案。很遗憾地问,为什么我对此投了反对票?

于 2012-12-07T21:59:45.617 回答