我想更改我们在 Entity Framework 4.3 中验证时获得的默认 ErrorMessage。我们找到了适用于 EF4.1 的语言包,但没有适用于 4.3 的语言包吗?
问问题
214 次
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 回答