npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

to-words

v4.2.0

Published

Converts numbers (including decimal points) into words & currency.

Downloads

220,233

Readme

Number to Words

Introduction

Convert numbers (including decimals) into words with multi-locale and currency support. Ideal for invoicing, e-commerce, and financial apps.

Features

  • Number to Words: Convert integers and decimals to text.
  • Currency Support: Easily handle conversions with locale-specific currency options.
  • Multi-Locale: Supports multiple languages and regions.
  • Highly Configurable: Tailor conversion rules to your needs.

Use Cases

  • Financial Applications: Generate amount-in-words for invoices or cheques.
  • E-commerce Platforms: Display totals in words for user receipts.
  • Educational Tools: Teach number systems through text conversions.
  • Localization: Support multiple languages and currencies seamlessly.

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

| Option | Type | Default | Description | | ------------------ | ------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | localeCode | string | 'en-IN' | Locale code for selecting i18n. | | currency | boolean | false | Whether 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 | | ignoreDecimal | boolean | false | Whether to ignore fractional unit of number while converting into words. | | ignoreZeroCurrency | boolean | false | Whether to ignore zero currency value while converting into words. | | doNotAddOnly | boolean | false | Do not add only at the end of the words. This works only when currency = true | | currencyOptions | object | undefined | By 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

| Country | Language | Locale | | ------------------- | ---------- | --------------- | | UAE | English | en-AE | | Bangladesh | English | en-BD | | UK | English | en-GB | | Ghana | English | en-GH | | Ireland | English | en-IE | | India | English | en-IN (default) | | Myanmar | English | en-MM | | Mauritius | English | en-MU | | Nigeria | English | en-NG | | Nepal | English | en-NP | | USA | English | en-US | | Philippines | English | en-PH | | Estonia | Estonian | ee-EE | | Iran | Persian | fa-IR | | Belgium | French | fr-BE | | France | French | fr-FR | | India | Gujarati | gu-IN | | India | Hindi | hi-IN | | India | Marathi | mr-IN | | Suriname | Dutch | nl-SR | | Brazil | Portuguese | pt-BR | | Argentina | Spanish | es-AR | | España | Spanish | es-ES | | Mexico | Spanish | es-MX | | Turkey | Turkish | tr-TR | | Korean, Republic of | Hangul | ko-KR |

Inspiration for core logic

https://stackoverflow.com/a/46221860