提问人:jrad09 提问时间:11/14/2023 更新时间:11/14/2023 访问量:24
JavaScript/React - 加拿大法语的货币格式
JavaScript/React - Currency Formatting For Canadian French
问:
我正在尝试编写一个函数,该函数说:“如果 URL 包含 /fr,请将法语格式应用于定价。否则,如果 URL 包含 /en,则保留默认定价”。
在加拿大法语中,数字的格式略有不同。示例:19 304,45 $ 而不是 19,304.45 美元。
我的以下尝试不起作用。如何更正我的代码以使其正常工作?
formatPrice 函数:
export function formatPrice(price: any) {
const language = window.location.pathname.includes("/fr") ? "fr" : "en";
const options = {
style: "currency",
currency: "CAD",
minimumFractionDigits: 2,
maximumFractionDigits: 2,
};
return price.toLocaleString(language, options);
}
用法:
<Td className="align-right reg-price">
${formatPrice(Number(equipment["regular-price"]?.text).toLocaleString())}
</Td>
<Td className="align-right sale-price">
<strong>${formatPrice(Number(equipment["sale-price"]?.text).toLocaleString())}</strong>
</Td>
答:
1赞
Ale_Bianco
11/14/2023
#1
问题:该方法主要用于根据语言和地区设置数字格式,但可能不适合使用特定符号和位置设置货币格式。中的语言参数需要 BCP 47 语言标记,而“fr”或“en”可能不足以设置货币格式。toLocaleString
toLocaleString
溶液:您可以使用构造函数,它允许您指定用于设置数字(包括货币)格式的语言和样式。Intl.NumberFormat
export function formatPrice(price: any) {
const language = window.location.pathname.includes("/fr") ? "fr-CA" : "en-CA";
const options = {
style: "currency",
currency: "CAD",
minimumFractionDigits: 2,
maximumFractionDigits: 2,
};
return new Intl.NumberFormat(language, options).format(price);
}
评论
0赞
Yevhen Horbunkov
11/15/2023
Number.prototype.toLocaleString()
在支持此 API 的任何地方进行调用。无论哪种方式,您的答案都不能解决 OP 的问题,因为他们的问题显然是正确设置变量(如果您将其作为参数传递给 ,即使以 / 的形式,它也会完美地工作)。Intl.NumberFormat()
language
formatPrice()
'en'
'fr'
0赞
jrad09
11/15/2023
谢谢@Ale_Bianco!快速调整您的代码以使其正常工作..用 替换了你的语句,然后在我的用法中,删除了 的两个实例,现在它起作用了!return
return price.toLocaleString(language, options);
.toLocaleString()
评论
window.location
/from
price
number
any