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;
undCurrentUICulture
im Autostart.Konfigurieren und auch in der controller. - Verwenden
app.UseRequestLocalization(..
wie unten gezeigtvar 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"));
}
}
Sollte nicht
UseRequestLocalization
platziert werden, bevor UseMvc
? Othewise Mvc wird bereits behandelt, dem Antrag der Zeit der UseRequestLocalization
middleware läuftInformationsquelleAutor Mike de Klerk | 2016-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, was löst es für mich:
Einstellung der folgenden, die in
StartUp.Configure
Mike hat Sie gesehen, die Antwort von Benutzer mindingdata ? Es scheint, dass ist der Weg zu gehen...
Ich habe nicht selber ausprobiert. Wenn mehr Menschen upvoting Ihren Kommentar, oder die andere Antwort, bin ich natürlich bereit zu machen, dass die akzeptierte Antwort. Mich verurteilt, aber ich habe keine motivation, gerade jetzt, um es auszuprobieren, mich :$.
UseRequestLocalization ist eine andere Sache, es macht die Anwendung zu verwenden, das client-Gebietsschema, das ist Total unterschiedlich von der Einstellung der Kultur nicht Global für alle Benutzer
InformationsquelleAutor Mike de Klerk
Etwas verspätet, aber hier ist was für mich gearbeitet :
Es war die beste Lösung, die ich gelesen habe
IMHO, hier ist ein schöner Artikel zu erklären, was Los ist: dotnetcoretutorials.com/2017/06/22/request-culture-asp-net-core
InformationsquelleAutor benraay
Dein code sieht alle gut. Das Problem ist der Aufruf
Geschehen muss, bevor Ihr Anruf an
Den Grund Ihrer breakpoint wird nie erreicht wird, weil es geht nie so weit. UseMVC schließt die Anforderung und gibt das Ergebnis zurück. Denken Sie daran, Middleware passiert in Ordnung ist und eine der middleware können Kurzschluss, die Prozess-und halt die Verarbeitung weitermachen.
InformationsquelleAutor MindingData