Хорошо, должно быть какое-то решение ENTERPRISE для этого с интенсивной поддержкой i18n
var numberLocaleFormat = (function() {
var cache = {};
return (function (separator, grouping, groupingAdd) {
separator = separator || ",";
grouping = grouping || 3;
groupingAdd = groupingAdd || grouping;
var key = grouping + "+" + groupingAdd + "/" + separator;
if (key in cache) return cache[key];
return (cache[key] = function(number){
var str = [], number = number.toString();
var separatorIndex = grouping;
for (var i = number.length-1, idx = 0; i >= 0; i--, idx++) {
str.push(number.charAt(i));
if ((idx == separatorIndex-1) && i) {
separatorIndex += groupingAdd;
str.push(separator);
}
}
return str.reverse().join('');
});
});
})();
Использование:
numberLocaleFormat()(1234578); // "12,345,678", America
numberLocaleFormat(" ")(12345678); // "12 345 678", Europe
numberLocaleFormat(",",4)(12345678); // "1234,5678", Japan
numberLocaleFormat(",", 3, 2)(12345678); // "1,23,45,678", India