Szaleję. Chcę tylko, aby kultura używana w całej podstawowej aplikacji Asp.net była ustawiona na "en-US". Ale nic nie działa. Gdzie mogę ustawić kulturę dla całej aplikacji? Nie interesują mnie kultury przeglądarek klientów, a co nie. Jedyną rzeczą, która wydaje się to zmieniać, jest zmiana ustawień językowych systemu Windows. Chcę tylko, aby kultura została ustalona z poziomu samej aplikacji, a nie klienta.Ustaw CultureInfo w Asp.net Core, aby mieć. jako CurrencyDecimalSeparator zamiast,
Co próbowałem dotąd:
- Set
<system.web><globalization uiCulture="en" culture="en-US" /></system.web>
w web.config - Ustaw
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
iCurrentUICulture
w Startup.Configure a nawet w kontrolerze. Zastosowanie
app.UseRequestLocalization(..
jak pokazano poniżejvar 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);
Ale nic nie wydaje się, aby zmienić CurrencyDecimalSeparator od (nl-NL), do (en-US).
Jak można ustawić kulturę?
EDIT: @soren ten sposób metoda configure wygląda. Wprowadziłem punkt przerwania na DetermineProviderCultureResult
, ale nigdy nie jest trafiony podczas odwiedzania strony.
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);
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 rdzeń nie patrzeć na web.config już, ale wszystko, co uczynił było tak dobrze Mike. Mam kilka wielojęzycznych projektów w rdzeniu .net 1.0.1. mógłbyś udostępnić więcej kodu z twojego Startup.cs ... – Soren