diff options
Diffstat (limited to 'app/assets/javascripts/locale/index.js')
-rw-r--r-- | app/assets/javascripts/locale/index.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/assets/javascripts/locale/index.js b/app/assets/javascripts/locale/index.js index 35087b920c7..10518fa73d9 100644 --- a/app/assets/javascripts/locale/index.js +++ b/app/assets/javascripts/locale/index.js @@ -58,10 +58,30 @@ const pgettext = (keyOrContext, key) => { */ const createDateTimeFormat = (formatOptions) => Intl.DateTimeFormat(languageCode(), formatOptions); +/** + * Formats a number as a string using `toLocaleString`. + * + * @param {Number} value - number to be converted + * @param {options?} options - options to be passed to + * `toLocaleString` such as `unit` and `style`. + * @param {langCode?} langCode - If set, forces a different + * language code from the one currently in the document. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat + * + * @returns If value is a number, the formatted value as a string + */ +function formatNumber(value, options = {}, langCode = languageCode()) { + if (typeof value !== 'number' && typeof value !== 'bigint') { + return value; + } + return value.toLocaleString(langCode, options); +} + export { languageCode }; export { gettext as __ }; export { ngettext as n__ }; export { pgettext as s__ }; export { sprintf }; export { createDateTimeFormat }; +export { formatNumber }; export default locale; |