diff --git a/apps/locale/locale.html b/apps/locale/locale.html
index f5e064cd6..a6f13b276 100644
--- a/apps/locale/locale.html
+++ b/apps/locale/locale.html
@@ -166,8 +166,8 @@ exports = { name : "en_GB", currencySym:"£",
dateS = dateS.replace(e,"${"+replaceList[e]+"}");
});
var currency = locale.currency_first ?
- `${js(locale.currency_symbol)} + n.toFixed(2)`:
- `n.toFixed(2) + ${js(locale.currency_symbol)}`;
+ `${js(locale.currency_symbol)} + exports.number(n)`:
+ `exports.number(n) + ${js(locale.currency_symbol)}`;
var temperature = locale.temperature=='°F' ? '(t*9/5)+32' : 't';
var localeModule = `
@@ -181,7 +181,21 @@ exports = {
currencySym: ${js(locale.currency_symbol)},
dow: (d,short) => day.split(',')[d.getDay() + (short ? 7 : 0)],
month: (d,short) => month.split(',')[d.getMonth() + (short ? 12 : 0)],
- number: n => n.toString(),
+ number: (n, dec) => {
+ if (dec == null) dec = 2;
+ var w = n.toFixed(dec),
+ k = w|0,
+ b = n < 0 ? 1 : 0,
+ u = Math.abs(w-k),
+ d = (''+u.toFixed(dec)).substr(2, dec),
+ s = ''+k,
+ i = s.length,
+ r = '';
+ while ((i-=3) > b) {
+ r = '${locale.thousands_sep}' + s.substr(i, 3) + r;
+ }
+ return s.substr(0, i + 3) + r + (d ? '${locale.decimal_point}' + d: '');
+ },
currency: n => ${currency},
distance: n => n < ${distanceUnits[locale.distance[1]]} ? round(${unitConv(distanceUnits[locale.distance[0]])}) + ${js(locale.distance[0])} : round(${unitConv(distanceUnits[locale.distance[1]])}) + ${js(locale.distance[1])},
speed: n => round(${unitConv(speedUnits[locale.speed])}) + ${js(locale.speed)},
@@ -192,13 +206,8 @@ exports = {
meridian: d => d.getHours() < 12 ? ${js(locale.ampm[0])}:${js(locale.ampm[1])},
};
`.trim();
-console.log("Locale Module is:",localeModule);
-/*
-FIXME:
-
-* Number/Currency need to add thousands separators: .replace(${js(locale.thousands_sep)}, ${js(locale.decimal_point)}) won't cut it as toString doesn't add separators itself
-*/
+ console.log("Locale Module is:",localeModule);
sendCustomizedApp({
storage:[
{name:"locale", content:localeModule}