Set CultureInfo-in Asp.net Kern zu haben . als CurrencyDecimalSeparator statt ,

Ich bin verrückt. Ich will nur die Kultur verwendet, in der gesamten Asp.net core-Anwendung auf "en-US". Aber nichts scheint zu funktionieren. Wo ich die Kultur für die gesamte Anwendung? Ich bin nicht daran interessiert, im client-browser Kulturen und welche nicht. Die einzige Sache, die scheint es zu ändern, ist das ändern der Spracheinstellungen von Windows. Ich will nur die Kultur bestimmt werden, aus der Anwendung selbst, nicht durch den client.

Was ich bisher versucht habe:

  • Set <system.web><globalization uiCulture="en" culture="en-US" /></system.web> im web.config
  • Set System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo; und CurrentUICulture im Autostart.Konfigurieren und auch in der controller.
  • Verwenden app.UseRequestLocalization(.. wie unten gezeigt
        var enUsCulture = new CultureInfo("en-US");
        var localizationOptions = new RequestLocalizationOptions()
        {
            SupportedCultures = new List<CultureInfo>()
            {
                enUsCulture
            },
            SupportedUICultures = new List<CultureInfo>()
            {
                enUsCulture
            },
            DefaultRequestCulture = new RequestCulture(enUsCulture),
            FallBackToParentCultures = false,
            FallBackToParentUICultures = false,
            RequestCultureProviders = null
        };
    
        app.UseRequestLocalization(localizationOptions);

Aber es scheint nichts zu ändern, die CurrencyDecimalSeparator aus (nl-NL) , (en-US).

Wie kann die Kultur setzen?

EDIT:
@soren
Dies ist, wie der configure Methode aussieht. Ich habe einen Haltepunkt auf DetermineProviderCultureResult aber es wird nie erreicht, während Sie die website besuchen.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, FinOsDbContext context)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseIdentity();

        //Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        //TODO: Clean up
        //var cultureInfo = new CultureInfo("en-US");
        //System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
        //System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;

        app.UseRequestLocalization();

        //UseCookieAuthentication..
        //UseJwtBearerAuthentication..

        //add userculture provider for authenticated user
        var requestOpt = new RequestLocalizationOptions();
        requestOpt.SupportedCultures = new List<CultureInfo>
        {
            new CultureInfo("en-US")
        };
        requestOpt.SupportedUICultures = new List<CultureInfo>
        {
            new CultureInfo("en-US")
        };
        requestOpt.RequestCultureProviders.Clear();
        requestOpt.RequestCultureProviders.Add(new SingleCultureProvider());

        app.UseRequestLocalization(requestOpt);

        FinOsDbContext.Initialize(context);
        FinOsDbContext.CreateTestData(context);
    }

    public class SingleCultureProvider : IRequestCultureProvider
    {
        public Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
        {
            return Task.Run(() => new ProviderCultureResult("en-US", "en-US"));
        }
    }
.net-core-schauen Sie nicht auf das web.config mehr, aber alles, was Sie getan hatte, war so Recht Mike. Ich habe ein paar mehrsprachiges Projekt .net-core-1.0.1. kannst du uns mehr code aus dem Autostart.cs...
Sollte nicht UseRequestLocalization platziert werden, bevor UseMvc? Othewise Mvc wird bereits behandelt, dem Antrag der Zeit der UseRequestLocalizationmiddleware läuft

InformationsquelleAutor Mike de Klerk | 2016-11-05

Schreibe einen Kommentar