No service for type 'Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer' has been registered

asp.net, asp.net-core, asp.net-mvc-4, globalization, localization

Solution

Add a type to the IHtmlLocalizer like the docs demonstrate.

@inject IHtmlLocalizer<MyType> MyTypeLocalizer

Also, I noticed that you have not registered the `ViewLocalization` service. You might need to do that too.

public void ConfigureServices(IServiceCollection services)
{
    services
       .AddLocalization(options => options.ResourcesPath = "Resources");

    services
      .AddMvc()
      .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix;

    ...

Problem

I try with ASP.Core to have a multilanguages website. So, I have in my StartUp.cs: ``` public void ConfigureServices(IServiceCollection services) { services.AddLocalization(); services.Configure<RequestLocalizationOptions>( opts => { var supportedCultures = new[] { new CultureInfo("de-DE"), new CultureInfo("de"), new CultureInfo("fr-FR"), new CultureInfo("fr"), }; opts.DefaultRequestCulture = new RequestCulture("fr-FR"); // Formatting numbers, dates, etc. opts.SupportedCultures = supportedCultures; // UI strings that we have localized. opts.SupportedUICultures = supportedCultures; }); // Add framework services. services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.AddMvc(); // Add application services. services.AddTransient<IEmailSender, AuthMessageSender>(); services.AddTransient<ISmsSender, AuthMessageSender>(); } ``` In my _ViewImports.cs I have: ``` @using System.Threading.Tasks @using Microsoft.AspNetCore.Builder @using Microsoft.AspNetCore.Localization @using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.Extensions.Options @inject IHtmlLocalizer Localizer @inject IOptions<RequestLocalizationOptions> LocOptions @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers ``` The errors: ``` An unhandled exception occurred while processing the request. InvalidOperationException: No service for type 'Microsoft.AspNetCore.Mvc.Localization.IHtmlLocalizer' has been registered. ```

Original source