4.0.1 • Published 2 months ago

to-words v4.0.1

Weekly downloads
3,211
License
MIT
Repository
github
Last release
2 months ago

Number to Words

Introduction

Converts Numbers (including decimal points) into words. It also converts the numbers into words for currency.

Installation

npm install to-words --save

Usage

Importing

const { ToWords } = require('to-words');

OR

import { ToWords } from 'to-words';

Config Options

const toWords = new ToWords({
  localeCode: 'en-IN',
  converterOptions: {
    currency: true,
    ignoreDecimal: false,
    ignoreZeroCurrency: false,
    doNotAddOnly: false,
    currencyOptions: {
      // can be used to override defaults for the selected locale
      name: 'Rupee',
      plural: 'Rupees',
      symbol: '₹',
      fractionalUnit: {
        name: 'Paisa',
        plural: 'Paise',
        symbol: '',
      },
    },
  },
});

Options can be set at instance level, or along with individual call to convert method.

const toWords = new ToWords();

let words = toWords.convert(123);
// words = One Hundred Twenty Three

words = toWords.convert(123.45);
// words = One Hundred Twenty Three Point Fourty Five

words = toWords.convert(123.045);
// words = One Hundred Twenty Three Point Zero Four Five

Note: When fractional part starts with zero, the digits after decimal points are converted into respective numbers individually

To convert to currency

const toWords = new ToWords();

let words = toWords.convert(452, { currency: true });
// words = Four Hundred Fifty Two Rupees Only

words = toWords.convert(452.36, { currency: true });
// words = Four Hundred Fifty Two Rupees And Thirty Six Paise Only

To discard fractional unit

const toWords = new ToWords();

let words = toWords.convert(452.36, { currency: true, ignoreDecimal: true });
// words = Four Hundred Fifty Two Rupees Only

To ignore major currency number when it's zero

const toWords = new ToWords();

let words = toWords.convert(0.572, { currency: true, ignoreZeroCurrency: true });
// words = Five Hundred Seventy Two Paise Only

Options

OptionTypeDefaultDescription
localeCodestring'en-IN'Locale code for selecting i18n.
currencybooleanfalseWhether the number to be converted into words written as currency.Note: When currency:true, number will be rounded off to two decimals before converting to words
ignoreDecimalbooleanfalseWhether to ignore fractional unit of number while converting into words.
ignoreZeroCurrencybooleanfalseWhether to ignore zero currency value while converting into words.
doNotAddOnlybooleanfalseDo not add only at the end of the words. This works only when currency = true
currencyOptionsobjectundefinedBy default currency options are taken from the specified locale.This option allows to specify different currency options while keeping the language details from the selected locale (e.g. convert to English text but use EUR as a currency). You can define different currencies for each call to convert() so it works also if you need to dynamically support multiple currencies.This works only when currency = true

Supported Locale

CountryLanguageLocale
UAEEnglishen-AE
BangladeshEnglishen-BD
UKEnglishen-GB
GhanaEnglishen-GH
IrelandEnglishen-IE
IndiaEnglishen-IN (default)
MyanmarEnglishen-MM
MauritiusEnglishen-MU
NigeriaEnglishen-NG
NepalEnglishen-NP
USAEnglishen-US
PhilippinesEnglishen-PH
EstoniaEstonianee-EE
IranPersianfa-IR
BelgiumFrenchfr-BE
FranceFrenchfr-FR
IndiaGujaratigu-IN
IndiaHindihi-IN
IndiaMarathimr-IN
SurinameDutchnl-SR
BrazilPortuguesept-BR
TurkeyTurkishtr-TR
Korean, Republic ofHangulko-KR

Inspiration for core logic

https://stackoverflow.com/a/46221860