Localización en ASP.NET MVC 4 usando App_GlobalResources

Estoy tratando de lograr dos cosas:

Localice los mensajes de error "incorporados" para "FieldMustBeDate" y "FieldMustBeNumeric".Localice algunos de los otros mensajes de error que podría encontrar, por ejemplo, "PropertyValueRequired".

Mediante el usohttp://forums.asp.net/t/1862672.aspx/1 para el problema 1 yMVC 4 ignora DefaultModelBinder.ResourceClassKey para el problema 2 he conseguido que ambos trabajen localmente.

Sin embargo, tan pronto como publico en un sitio web, los mensajes de error "incorporados" vuelven por defecto al inglés, mientras que los otros mensajes de error permanecen localizados.

He leído varios lugares donde se debe evitar el uso de App_GlobalResources, sin embargo no puedo resolver el problema 1 sin usar esto.

He creado un archivo .resx con el nombre “WebResources.resx”, configuré la Acción de compilación como “Incrustada”, configuré la Copia al directorio de salida como “No copiar”, configuré la Herramienta personalizada como “PublicResXFileCodeGenerator” y configuré la Personalizada Espacio de nombres de la herramienta a "Recursos". El proyecto en sí está configurado para publicar solo los archivos que son necesarios.

Mi Global.asax.cs contiene el siguiente código (relevante):

  ClientDataTypeModelValidatorProvider.ResourceClassKey = "WebResources";  
  DataAnnotationsModelValidatorProvider.RegisterAdapter(
  typeof(RequiredAttribute),
  typeof(MyRequiredAttributeAdapter));

Y la clase MyRequiredAttributeAdapter contiene el siguiente código:

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
    public MyRequiredAttributeAdapter(
        ModelMetadata metadata,
        ControllerContext context,
        RequiredAttribute attribute
    )
        : base(metadata, context, attribute)
    {
        if (attribute.ErrorMessageResourceType == null)
        {
            attribute.ErrorMessageResourceType = typeof(Resources.WebResources);
        }
        if (attribute.ErrorMessageResourceName == null)
        {
            attribute.ErrorMessageResourceName = "PropertyValueRequired";
        }
    }
}

Esto funciona a nivel local; sin embargo, ¿alguien tiene alguna idea sobre cómo hacer que funcionen los mensajes "incorporados" después de que se publique esto?

¡Gracias por tu ayuda!

Saludos cordiales, Andreas

Respuestas a la pregunta(2)

Su respuesta a la pregunta