sto cercando di realizzare due cose:Localizzazione in ASP.NET MVC 4 utilizzando App_GlobalResources
- localizzare i messaggi di errore “built-in” per “FieldMustBeDate” e "FieldMustBeNumeric".
- Localizza alcuni degli altri messaggi di errore che potresti incontrare, ad esempio "PropertyValueRequired".
Utilizzando http://forums.asp.net/t/1862672.aspx/1 per il problema 1 e MVC 4 ignores DefaultModelBinder.ResourceClassKey per problema 2 sono riuscito a ottenere entrambi lavoro a livello locale.
Tuttavia, non appena pubblico su un sito Web, i messaggi di errore "built-in" tornano automaticamente in inglese mentre gli altri messaggi di errore rimangono localizzati.
Ho letto diversi punti in cui è consigliabile evitare l'utilizzo di App_GlobalResources, tuttavia non riesco a risolvere il problema 1 senza utilizzare questo.
Ho creato un file .resx con il nome "WebResources.resx", impostare l'azione di compilazione su "Embedded", impostare la directory Copia su output su "Non copiare", impostare lo strumento personalizzato su "PublicResXFileCodeGenerator" e imposta lo spazio dei nomi degli strumenti personalizzati su "Risorse". Il progetto stesso è impostato per pubblicare solo i file necessari.
mio Global.asax.cs contiene il seguente codice (rilevante):
ClientDataTypeModelValidatorProvider.ResourceClassKey = "WebResources";
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter));
E il MyRequiredAttributeAdapter classe contiene il seguente codice:
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";
}
}
}
Questo è il lavoro a livello locale tuttavia qualcuno ha qualche idea su come far funzionare i messaggi "integrati" dopo che questo è stato pubblicato?
Grazie per il vostro aiuto!
Con i migliori saluti, Andreas
Grazie! Questo problema mi ha fatto impazzire! – KTW