[英]Angular uses comma instead of dot as decimal separator after changing culture
我為本地化功能添加了多種文化,將 NumberDecimalSeparator 和 CurrencyDecimalSeparator 設置為“。” 對於他們所有人。 然而,在前端 Angular 將文化更改為“es”時仍然顯示逗號。
啟動文件
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”?
你似乎很不走運。 語言環境當前與貨幣的前端描述無關。
角度存儲庫中的功能請求。 當前提供的解決方案(似乎即使在 9.0 版本的 angular 中也不會應用此全局貨幣處理程序),是在貨幣管道的任何地方應用。
似乎將貨幣與語言環境相關聯被認為是一種不好的做法。
@MickL 讓我舉一個例子,說明為什么只使用 LOCALE_ID 的方法會導致問題。 假設我有一個提供德語 (de) 和英語 (en) 的應用程序。 我在這個應用程序中有歐元價格。 您的方法意味着當我將 LOCALE_ID 更改為 en 時,我的價格將從歐元切換為英鎊。 使用 CURRENCY_ID 時,它們是分開的,可以分開更改。
這幾乎是說 UI 在收到數字時不知道您的格式是什么。 如果您以數字形式發送美元並且該網站是德語,那么它是否需要匯率轉換器或以歐元或美元顯示相同的金額。
並且由於這可能取決於位置、服務和合理性,我們幾乎無法在任何地方使用管道和格式化指令(尤其是在輸入中)。
我知道答案已被接受,但也許對您有用。
您可以從后端將語言環境發送到前端,然后只需應用貨幣管道。
C#:
[HttpPost]
public async Task<IActionResult> Post([FromBody]FooDto fooDto)
{
return Ok({Locale = "CAD"});
}
打字稿:
myLocale: string;
HTML:
<p>A: {{ a | currency: myLocale }}</p>
可以在此處查看更多示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.