国际化(数字格式“num.toLocaleString()”)不适用于chrome

时间:2012-01-18 07:24:27

标签: javascript internationalization

我想在Javascript中进行数字格式化...我使用以下方法 num.toLocaleString()适用于Firefox,IE但不适用于谷歌浏览器.. Wat我需要在Chrome浏览器中添加它。

4 个答案:

答案 0 :(得分:4)

根据定义,toLocaleString()方法依赖于实现:它使用实现区域设置,例如浏览器区域设置。因此,如果我查看使用该方法的页面,我会看到根据芬兰语或英语区域设置格式化的数字,具体取决于我使用的浏览器。

您想要的是按页面的区域设置进行本地化,为此您还需要其他内容。在简单的情况下,您可以自己编写代码,但数字格式通常很复杂,因此使用库是合理的,例如Globalize。查看简单demo的紧凑来源。在Globalize中,您在指定区域设置时使用standard language codes

答案 1 :(得分:3)

国际化始终具有挑战性,不幸的是,它似乎没有一致/普遍的解决方案。您最好的选择是使用第三方图书馆为您处理事情。 我们严重依赖googles闭包库,它有一些非常强大的i18n(国际化)工具。请查看http://www.daveoncode.com/2009/11/26/goog-i18n-numberformat-formatting-number-locale-string/以获取如何使用它的示例。最后,它变得如此简单:

// define italian number format symbols 
goog.i18n.NumberFormatSymbols = goog.i18n.NumberFormatSymbols_it_IT; 

// create new decimal formatter (PERCENT, CURRENCY, SCIENTIFIC are options)
formatter = new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);

// view formatted and localized string
alert(formatter.format(15650.579));

如果您不熟悉关闭,请不要担心。设置并不难,并且有许多优秀的帮助程序类,您可能会发现它们很有用。 http://code.google.com/closure/library/docs/gettingstarted.html

答案 2 :(得分:1)

JavaScript国际化支持非常差(正如您所发现的那样)。 你可以看一下https://github.com/jquery/globalize 它处理数字格式,以及日期,时间,货币。

答案 3 :(得分:0)

A bit of voodoo can implement your own number formatting. You could build this into String.prototype, but I didnt want that, since its localized.

function reverse(str) {
    return str.split('').reverse().join(''); 
}

function num2str(num) {
    var str = num+"";
    // european
    // return reverse(reverse(str.replace('.',',')).replace(/\d{3}/g,'$&.').replace(/\.$/,''));
    // american
    return reverse(reverse(str).replace(/\d{3}/g,'$&,').replace(/\,$/,''));
}

and then its

> console.log(25000.45)
> 25,000.45