Интернационализация (форматирование чисел "num.toLocaleString ()") не работает для Chrome - PullRequest
2 голосов
/ 18 января 2012

я хочу сделать форматирование чисел в Javascript .. и я использую следующий метод num.toLocaleString (), который будет работать для Firefox, IE, но не работает для Google Chrome. Ват мне нужно добавить для этого работу в браузере Chrome.

Ответы [ 4 ]

4 голосов
/ 18 января 2012

Метод toLocaleString() по определению зависит от реализации: он использует локаль реализации, такую ​​как локаль браузера.Поэтому, если бы я смотрел на вашу страницу, которая использует метод, я бы увидел числа, отформатированные в соответствии с финским или английским языком, в зависимости от того, какой браузер я использую. page , а для этого нужно что-то еще.В простых случаях вы можете кодировать его самостоятельно, но форматирование чисел, как правило, сложно, поэтому разумно использовать библиотеку, такую ​​как Globalize .Посмотрите компактный источник простого демо .В Globalize вы используете стандартные языковые коды при указании локали.

3 голосов
/ 18 января 2012

Интернационализация всегда сопряжена с трудностями, и, к сожалению, кажется, что нет последовательного / всеобъемлющего решения. Лучше всего использовать стороннюю библиотеку, чтобы позаботиться о вас. Мы в значительной степени полагаемся на библиотеку googles closure, в которой есть довольно мощные инструменты 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

1 голос
/ 04 марта 2012

Поддержка интернационализации JavaScript довольно слабая (как вы обнаружили). Вы можете взглянуть на https://github.com/jquery/globalize Он обрабатывает форматирование чисел, а также даты, время и валюты.

0 голосов
/ 11 мая 2016

Немного voodoo может реализовать собственное форматирование чисел.Вы можете встроить это в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...