【发布时间】:2020-04-07 15:04:48
【问题描述】:
我为本地化功能添加了多种文化,将 NumberDecimalSeparator 和 CurrencyDecimalSeparator 设置为“。”为他们所有人。然而,在将文化更改为“es”时,前端 Angular 仍然显示逗号。
Startup.cs
private List<CultureInfo> cultures = new List<CultureInfo>()
{ new CultureInfo("es"),
new CultureInfo("en"),
....
};
在配置服务中:
services.Configure<RequestLocalizationOptions>(
opts =>
{
cultures.ForEach(c => c.NumberFormat.NumberDecimalSeparator = ".");
cultures.ForEach(c => c.NumberFormat.CurrencyDecimalSeparator = ".");
opts.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =>
{
var userLang = context?.Request?.Cookies["locale"]?.ToString();
var lang = string.IsNullOrEmpty(userLang) ? "es" : userLang;
return Task.FromResult(new ProviderCultureResult(lang, "en"));
}));
opts.SupportedCultures = cultures;
opts.SupportedUICultures = cultures;
});
在配置中:
var op = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(op.Value);
app.UseRewriter(new RewriteOptions().AddRedirect("index.html", "/"));
app.UseMvc(routes =>
{routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}"); });
在控制器操作中,我正在检查是否有逗号被替换为点:
var rqf = Request.HttpContext.Features.Get<IRequestCultureFeature>();
var culture = rqf.RequestCulture.Culture;
显然 Angular 忽略了这些设置,有什么想法吗? 任何关于文化如何传递给 Angular 的信息? 任何方式将响应文化设置为“en”?
【问题讨论】: