使用 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>
我正在以默认数字 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>