staram się osiągnąć dwie rzeczy:Lokalizacja w ASP.NET MVC 4 stosując App_GlobalResources
- zlokalizować „wbudowane” Komunikaty o błędach dla „FieldMustBeDate” i „FieldMustBeNumeric”.
- Lokalizacja niektórych innych komunikatów o błędach, które można napotkać, na przykład "PropertyValueRequired".
Korzystając http://forums.asp.net/t/1862672.aspx/1 dla problemu 1 i 2 MVC 4 ignores DefaultModelBinder.ResourceClassKey dla problemu udało mi się dostać pracę zarówno lokalnie.
Jednak od razu po opublikowaniu na stronie internetowej "wbudowane" komunikaty o błędach domyślnie powracają do języka angielskiego, a pozostałe komunikaty o błędach pozostają zlokalizowane.
Przeczytałem kilka miejsc, w których należy unikać App_GlobalResources, jednak nie jestem w stanie wykonać problemu 1 bez użycia tego.
Utworzyłem plik .resx o nazwie "WebResources.resx", ustaw działanie kompilacji na "Embedded", ustaw opcję Copy to Output Directory na "Do no Copy", ustaw Narzędzie niestandardowe na "PublicResXFileCodeGenerator" i ustaw Przestrzeń nazw narzędzia niestandardowego na "Zasoby". Sam projekt jest ustawiony tak, aby publikować tylko potrzebne pliki.
My Global.asax.cs zawiera następujące istotne) (kod:
ClientDataTypeModelValidatorProvider.ResourceClassKey = "WebResources";
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter));
A MyRequiredAttributeAdapter klasa zawiera następujący kod:
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";
}
}
}
ta działa lokalnie jednak ktoś ma wszelkie pomysł, jak uruchomić komunikaty "wbudowane" po opublikowaniu?
Dziękuję za pomoc!
poważaniem, Andreas
Dziękujemy! Ten problem doprowadza mnie do szaleństwa! – KTW