使用 numeral.js 将语言环境格式转换回默认格式

convert locale format back to default with numeral.js

我正在以默认数字 js 格式存储数字和货币格式。我允许用户根据他们的区域设置拥有自己的格式。我正在尝试弄清楚如何将他们的自定义格式转换回默认格式,以便一致地存储它,以防他们更改语言环境。

例如电流设置为:

numeral.register('locale', 'fr', {
delimiters: {
    thousands: '.',
    decimal: ','
},
abbreviations: {
    thousand: 'k',
    million: 'm',
    billion: 'b',
    trillion: 't'
},
ordinal : function (number) {
    return number === 1 ? 'er' : 'ème';
},
currency: {
    symbol: '€'
}
});

当我将“0.0,00€”恢复为首选格式时,我如何才能将其转换回默认的 numeral.js 存储设置“0,0.00$”。

您可以通过 numeral.local('en') 设置本地来简单地在本地之间切换。你可以使用一个小帮助函数来为你做这件事。您只需要将所需的本地和可能需要切换的当前数字传递给它即可。

这里有一个例子。我还添加了 money.js 以在货币之间进行转换。 我相信你会明白的。

var yourNumeral = numeral(1234.56);

// helper fn to switch local and convert.
function switchLocal(local, num, convert) {
  numeral.locale(local);
  num.set(fx.convert(num.value(), convert)); 
  return num.format();
}

// set money.js base and rates
fx.base = "EUR";
fx.rates = {
  "USD" : 1.0873 // eg. 1 EUR === 1.0873 USD
};

// set default format.
numeral.defaultFormat('0,0[.]00 $');
// load a locale.
numeral.register('locale', 'fr', {
  delimiters: {
    thousands: ' ',
    decimal: ','
  },
  abbreviations: {
    thousand: 'k',
    million: 'm',
    billion: 'b',
    trillion: 't'
  },
  ordinal : function (number) {
    return number === 1 ? 'er' : 'ème';
  },
  currency: {
    symbol: '€'
  }
});
// set the loaded local.
numeral.locale('fr');

// yourNumeral with loaded local "fr".
console.log(yourNumeral.format());
// yourNumeral switched local to "en" and converted from € to $.
console.log(switchLocal('en', yourNumeral, { from: "EUR", to: "USD" }));
// yourNumeral switched back to "fr" local and converted back to € from $.
console.log(switchLocal('fr', yourNumeral, { from: "USD", to: "EUR" }));
<script src="https://openexchangerates.github.io/money.js/money.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>