¿Dónde está la lista completa de mensajes de error predeterminados para las anotaciones de datos en MVC 3

Sin embargo, otra pregunta de localización MVC ...

Estoy tratando de localizar una aplicación ASP.Net MVC 3 usando archivos de recursos localizados para mostrar textos en las vistas, como se recomienda.

l problema es, como de costumbre, cuando se intenta localizar los mensajes de error predeterminados de las anotaciones de datos.

Sé que puede especificar el archivo de recursos y la clave en cada Atributo:

[Required(
ErrorMessageResourceType = typeof(CustomResourceManager), 
ErrorMessageResourceName = "ResourceKey")]
public string Username { get; set; }

e incluso, que es mejor y preferido, puede anular el mensaje predeterminado, como este: Recurso predeterminado para anotaciones de datos en ASP.NET MVC, para que pueda dejar los Atributos como:

[Required]
public string Username { get; set; }

Este último enfoque es el que estaba siguiendo, y funciona, pero solo cuando la Anotación de datos que desea anular tiene UNO y SOLO UN mensaje de error, ya que siempre busca una clave de recurso llamada igual que el atributo en el recurso personalizado archivo (por ejemplo, "Obligatorio" necesita una entrada "Atributo obligatorio" en el archivo de recursos)

Otros atributos, como StringLength, tienen más de un mensaje de error, según los parámetros opcionales que utilice. Entonces, si tienes un modelo como:

public class Person
{
    [Required]
    [StringLengthLocalizedAttribute(10, MinimumLength = 5)]
    [Display(Name = "User name")]
    public string UserName { get; set; }
}

El mensaje de error es "El campoNombre de usuari debe ser una cadena con una longitud mínima de5 y una longitud máxima de 10."

Y si cambia el atributo StringLength a:

    [StringLengthLocalizedAttribute(10)]

el mensaje de error cambia a "El campoNombre de usuari debe ser una cadena con una longitud máxima de 10. "Entonces, en este caso, hay al menos 2 mensajes de error predeterminados para anular, y las soluciones dadas por @ kim-tranjan fallan.

Mi solución parcial a esto es implementar mi propio atributo StringLength de esta manera:

public class StringLengthLocalizedAttribute : StringLengthAttribute
{
    public StringLengthLocalizedAttribute(int maximumLength) : base(maximumLength)
    {
        ErrorMessageResourceType = typeof(CustomValidationResource);
    }

    public override string FormatErrorMessage(string name)
    {
        ErrorMessageResourceName = MinimumLength > 0 ? "StringLengthAttributeMinMax" : "StringLengthAttributeMax";
        return base.FormatErrorMessage(name);
    }
}

Donde tengo un recurso localizado "CustomValidationResource" con los mensajes de validación y lo configuro como ErrorMessageResourceType. Luego, anulando la función FormatErrorMessage, decido qué cadena de mensaje se debe aplicar según los parámetros opcionales.

Entonces, la pregunta aquí es: ¿Alguien sabe dónde podemos encontrar la lista completa de claves de recursos utilizadas por los Atributos de Anotación de Datos y ver cuántos mensajes de error diferentes tenemos en cada uno sin probar cada uno?

O incluso mejor, ¿podemos tener el archivo RESX original para ver las plantillas de cadena y localizarlas usando las mismas claves de recursos? De esta manera, cambiar solo el ErrorMessageResourceType debería funcionar para todos los Atribuciones de Anotaciones de Datos, y no debería tener que adivinar dónde poner "{1}" o "{2}" en mi cadena localizada.

Gracias, Sergi