public static IMvcBuilder AddLocalization <TResource>(this IMvcBuilder builder, string resourcePath) where TResource : class, new() { return(builder.AddMvcLocalization(o => { if (!string.IsNullOrWhiteSpace(resourcePath)) { o.ResourcesPath = resourcePath; } }) .AddDataAnnotationsLocalization(o => o.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(TResource)))); }
/// <summary> /// localize ModelBinding messages, e.g. when user enters string value instead of number... /// these messages can't be localized like data attributes /// </summary> /// <param name="mvc"></param> /// <param name="services"></param> /// <returns></returns> public static IMvcBuilder AddModelBindingMessagesLocalizer (this IMvcBuilder mvc, IServiceCollection services) { try { return(mvc); //return services.AddRazorPages().AddMvcOptions(options => options.EnableEndpointRouting = false); //return mvc.AddMvcOptions(o => //{ // try // { // //var factory = services.BuildServiceProvider().GetService<IStringLocalizerFactory>(); // //var L = factory.Create(null); // //o.ModelBindingMessageProvider.SetValueIsInvalidAccessor((x) => L["The value '{0}' is invalid.", x]); // //o.ModelBindingMessageProvider.SetValueMustBeANumberAccessor((x) => L["The field {0} must be a number.", x]); // //o.ModelBindingMessageProvider.SetMissingBindRequiredValueAccessor((x) => L["A value for the '{0}' property was not provided.", x]); // //o.ModelBindingMessageProvider.SetAttemptedValueIsInvalidAccessor((x, y) => L["The value '{0}' is not valid for {1}.", x, y]); // //o.ModelBindingMessageProvider.SetMissingKeyOrValueAccessor(() => L["A value is required."]); // //o.ModelBindingMessageProvider.SetMissingRequestBodyRequiredValueAccessor(() => L["A non-empty request body is required."]); // //o.ModelBindingMessageProvider.SetNonPropertyAttemptedValueIsInvalidAccessor((x) => L["The value '{0}' is not valid.", x]); // //o.ModelBindingMessageProvider.SetNonPropertyUnknownValueIsInvalidAccessor(() => L["The value provided is invalid."]); // //o.ModelBindingMessageProvider.SetNonPropertyValueMustBeANumberAccessor(() => L["The field must be a number."]); // //o.ModelBindingMessageProvider.SetUnknownValueIsInvalidAccessor((x) => L["The supplied value is invalid for {0}.", x]); // //o.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor((x) => L["Null value is invalid."]); // } // catch (Exception ex) // { // ex.Message.ToString(); // } //}); } catch (Exception ex) { return(mvc.AddMvcLocalization()); } }