Language is always english asp.net core 3.1

Viewed 157

I have a strange problem my translations are always coming back in English. I have made sure that edge has the languages installed but still its always English. BTW as a test I only have the words of different countries in the text to ensure they get rendered.

public void ConfigureServices(IServiceCollection services) {
    services.AddLocalization(options => options.ResourcesPath = "Resources");
    services.AddSingleton<LocalizationService>();
    services.AddDbContext<MISDBContext>
(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection")));

    services.AddDefaultIdentity<ApplicationUser>()
    AddEntityFrameworkStores<MISDBContext()
    .AddClaimsPrincipalFactory<MyUserClaimsPrincipalFactory>();  //<---- add this line 

    services.AddControllersWithViews()
   .AddDataAnnotationsLocalization();

    services.Configure<RequestLocalizationOptions>(options => {
        var supportedCultures = new[]
        {
    new CultureInfo("en-US"),
    new CultureInfo("en-GB"),
    new CultureInfo("es"),
    new CultureInfo("fr")
};

    options.DefaultRequestCulture = new RequestCulture(culture: "en-GB", uiCulture: "en-GB");
    options.SupportedCultures = supportedCultures;
    options.SupportedUICultures = supportedCultures;
    options.RequestCultureProviders = new List<IRequestCultureProvider>
    {
      new QueryStringRequestCultureProvider(),
      new CookieRequestCultureProvider()
    };
  }).AddRazorPages().
  AddViewLocalization()
 .AddDataAnnotationsLocalization(options => {
       options.DataAnnotationLocalizerProvider = (type, factory) => {
        var assemblyName = new AssemblyName(typeof(SharedResource).GetTypeInfo().Assembly.FullName);
        return factory.Create("SharedResource", assemblyName.Name);
        };
      });
    services.AddSingleton<ISharedResource, SharedResource>();
   }

Configure section

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
    app.UseRequestLocalization();

    var supportedCultures = new[]
        {
    new CultureInfo("en-US"),
    new CultureInfo("en-GB"),
    new CultureInfo("es"),
    new CultureInfo("fr")
};
    if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
    } else {
        app.UseExceptionHandler("/Home/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }
    app.UseRequestLocalization(new RequestLocalizationOptions() {
        DefaultRequestCulture = new RequestCulture("en-GB"),
        SupportedCultures = supportedCultures,
        SupportedUICultures = supportedCultures
    });

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints => {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
        endpoints.MapRazorPages();
    });
}

Resources Files enter image description here enter image description here

Example

t

The values of the culture at runtime

enter image description here

Just to prove that the cookie is written here.

enter image description here

0 Answers
Related