Javascript 是否已本地化?

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

你知道

toFixed
是否是本地化函数吗?

我的意思是,这会吗:

var n = 100.67287;
alert(n.toFixed(2));

在美国英语操作系统/浏览器上显示“100.67” 和“100,67”(带逗号)在意大利语操作系统/浏览器上? (意大利语或任何其他使用逗号作为小数点分隔符的本地系统)。

javascript localization
4个回答
47
投票

后期添加:

Number.toLocaleString()
现在可在所有浏览器(IE 10及以下版本)上使用,尽管相当冗长,但它仍然有效:

var n = 100.67287;
console.log(n.toLocaleString(undefined, {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
}));

使用 undefined 或“默认”作为语言代码将使用浏览器默认语言来格式化数字。

请参阅 developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString 了解完整详细信息。

如果您可以自由扩展 Number 原型,您可以定义

Number.toLocaleFixed()


28
投票

不,这总是会返回一个点。 ECMA 262-spec [15.7.4.5] 声明它应该是一个点。


1
投票

您可以使用这个:

var n = 100.67287;
alert(parseFloat(n.toFixed(2)).toLocaleString());

在我的德国系统上,结果是

100,67

-2
投票

遗憾的是,纯 jQuery/JavaScript 中没有真正的解决方案。你需要全球化。问题是 toFixed() 和 toLocaleString() 都接受一个数字并返回一个字符串。所以你永远不能一起使用它们。 :( 如果您调用 foo.toFixed(2).toLocaleString() 您将无法获得本地化(即 en 中的“1.234”应该是 fr 中的“1,234”),因为它对 toFixed() 的结果起作用,这是一个字符串,不是数字。:(

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