如何根据语言国家代码自定义货币符号?

问题描述 投票:0回答:4

因为我期待基于语言国家/地区代码作为输入的货币符号。但是,当我输入“沙特阿拉伯”国家/地区时,我会得到一个出乎意料的结果,因为我只期望沙特货币符号,而不是阿拉伯语的所有内容。因此,如果有人知道如何使用与下面提到的相同的代码来自定义货币符号。请帮我解决这个问题。我在下面的代码和图像中提到了代码和结果。enter image description here

let formated = (new Intl.NumberFormat('ar-SA', { style: 'currency', currency: 'SAR' }).format(value));

我期望货币符号然后是正常的英文数字而不是阿拉伯数字。

(瑞.斯.u200f --> 这是沙特阿拉伯的货币符号 & ٦٠٠٫٠٠ --> 这是需要以正常英文数字显示的数字。请帮忙在 ---> 瑞中显示.S.u200f 0.00 使用上述代码)

javascript angular
4个回答
0
投票
let formated = (new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'SAR' }).format(value));

0
投票

您有 2 个解决方案:

  • formatCurrency
    来自
    @angular/common
    :
import { formatCurrency } from '@angular/common';

[...]

let formated = formatCurrency(value, 'en-US', '\u0631\u002e\u0633\u002e');
  • CurrencyPipe
    :
<p>{{ value | currency:'SAR':'\u0631\u002e\u0633\u002e'}}</p>

将显示 2 个解决方案:

世.10.00

(我不确定unicode,但它似乎是正确的)


0
投票

您需要通过在区域设置后添加 u-nu-latn 告诉格式化程序使用

拉丁编号系统

这将以阿拉伯语显示货币代码,但以拉丁语显示数字。

这是:

let value = 123.45

let formated = (new Intl.NumberFormat('ar-SA-u-nu-latn', { style: 'currency', currency: 'SAR' }).format(value));

console.log(formated);


-1
投票

//设置英文为数字符号

val currencyFormatSymbols = DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.ENGLISH)).decimalFormatSymbols
val numberFormat = NumberFormat.getCurrencyInstance(currentLocale)
currencyFormatSymbols.currencySymbol = numberFormat.currency.symbol//Set your preferred symbol mostly from the apps current locale.
val formatter: DecimalFormat = numberFormat as DecimalFormat
formatter.decimalFormatSymbols = currencyFormatSymbols
formatter.format(2344.56)

输出: 2,344.56 瑞.斯.u200f

© www.soinside.com 2019 - 2024. All rights reserved.