Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 国际化(数字格式“num.toLocaleString()”)不适用于chrome_Javascript_Internationalization - Fatal编程技术网

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

Javascript 国际化(数字格式“num.toLocaleString()”)不适用于chrome,javascript,internationalization,Javascript,Internationalization,我想在Javascript中设置数字格式。。我使用下面的方法 num.tolocalString()适用于Firefox,但不适用于Google Chrome。。 我需要在chrome浏览器中添加哪些it工作。国际化总是充满挑战,不幸的是,似乎没有一个一致/普遍的解决方案。你最好的选择是使用第三方库为你处理事情。 我们严重依赖谷歌闭包库,它有一些非常强大的i18n(国际化)工具。请看一个如何使用它的示例。最后,它变得非常简单: // define italian number format sy

我想在Javascript中设置数字格式。。我使用下面的方法 num.tolocalString()适用于Firefox,但不适用于Google Chrome。。
我需要在chrome浏览器中添加哪些it工作。

国际化总是充满挑战,不幸的是,似乎没有一个一致/普遍的解决方案。你最好的选择是使用第三方库为你处理事情。 我们严重依赖谷歌闭包库,它有一些非常强大的i18n(国际化)工具。请看一个如何使用它的示例。最后,它变得非常简单:

// 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));
如果你是新手,不要担心。设置起来并不难,它有许多优秀的助手类,您可能会发现它们很有用。

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


您需要的是根据页面的区域设置进行本地化,为此,您需要其他东西。在简单的情况下,您可以自己编写代码,但数字格式通常比较复杂,因此使用库(例如)是合理的。查看一个简单的压缩源代码。在Globalize中,您可以在指定区域设置时使用。JavaScript国际化支持非常差(如您所发现的)。 你可以看看
它可以处理数字格式,还可以处理日期、时间和货币。

一点巫毒可以实现您自己的数字格式。您可以将其构建到String.prototype中,但我不希望这样,因为它是本地化的

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(/\,$/,''));
}
然后它

> console.log(25000.45)
> 25,000.45

也可以看到这一点。你应该关闭这个…你的链接谈到“使用默认语言环境”,close是否真的检测到了用户的语言环境并选择了合适的数字格式?还是默认的语言环境总是相同的?谷歌的国际化工具是静态的。无法在运行时检测语言并选择要使用的翻译。也就是说,在“numberformatsymbols.js”中,您将看到:
goog.i18n.numberformatsymbols=goog.i18n.numberformatsymbols\u en
换句话说,它默认为英语。紧接着你会发现:
if(goog.LOCALE='aa'){goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_aa;}
if(goog.i18n.NumberFormatSymbols='en'/默认为en这是一个编译时定义语句,用于控制语言使用另一种语言。如果您需要动态语言功能,还可以使用其他工具。签出以执行动态翻译,并扫描源代码以查找可翻译字符串。您应该熟悉worksSee。jQuery globalize自您撰写评论以来似乎发生了重大变化。目前(2014年)仅支持日期格式DEHM,仅限于逗号后面的两位数字