to-words
Version:
Convert numbers to words in 132 locales with currency, ordinal, and BigInt support (TypeScript, ESM/CJS/UMD).
294 lines (293 loc) • 13.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ToWords = void 0;
exports.toWords = toWords;
exports.toOrdinal = toOrdinal;
exports.toCurrency = toCurrency;
const ToWordsCore_js_1 = require("../ToWordsCore.js");
class Locale {
config = {
currency: {
name: 'Krone',
plural: 'Kroner',
singular: 'Krone',
symbol: 'kr',
fractionalUnit: {
name: 'Øre',
singular: 'Øre',
plural: 'Øre',
symbol: 'øre',
},
},
texts: {
and: 'Og',
minus: 'Minus',
only: '',
point: 'Komma',
},
numberWordsMapping: [
{ number: 1000000000000000, value: 'Billiard' },
{ number: 1000000000000, value: 'Billion' },
{ number: 1000000000, value: 'Milliard' },
{ number: 1000000, value: 'Million' },
{ number: 1000, value: 'Tusind' },
{ number: 100, value: 'Hundrede' },
{ number: 99, value: 'Nioghalvfems' },
{ number: 98, value: 'Otteoghalvfems' },
{ number: 97, value: 'Syvoghalvfems' },
{ number: 96, value: 'Seksoghalvfems' },
{ number: 95, value: 'Femoghalvfems' },
{ number: 94, value: 'Fireoghalvfems' },
{ number: 93, value: 'Treoghalvfems' },
{ number: 92, value: 'Tooghalvfems' },
{ number: 91, value: 'Enoghalvfems' },
{ number: 90, value: 'Halvfems' },
{ number: 89, value: 'Niogfirs' },
{ number: 88, value: 'Otteogfirs' },
{ number: 87, value: 'Syvogfirs' },
{ number: 86, value: 'Seksogfirs' },
{ number: 85, value: 'Femogfirs' },
{ number: 84, value: 'Fireogfirs' },
{ number: 83, value: 'Treogfirs' },
{ number: 82, value: 'Toogfirs' },
{ number: 81, value: 'Enogfirs' },
{ number: 80, value: 'Firs' },
{ number: 79, value: 'Nioghalvfjerds' },
{ number: 78, value: 'Otteoghalvfjerds' },
{ number: 77, value: 'Syvoghalvfjerds' },
{ number: 76, value: 'Seksoghalvfjerds' },
{ number: 75, value: 'Femoghalvfjerds' },
{ number: 74, value: 'Fireoghalvfjerds' },
{ number: 73, value: 'Treoghalvfjerds' },
{ number: 72, value: 'Tooghalvfjerds' },
{ number: 71, value: 'Enoghalvfjerds' },
{ number: 70, value: 'Halvfjerds' },
{ number: 69, value: 'Niogtres' },
{ number: 68, value: 'Otteogtres' },
{ number: 67, value: 'Syvogtres' },
{ number: 66, value: 'Seksogtres' },
{ number: 65, value: 'Femogtres' },
{ number: 64, value: 'Fireogtres' },
{ number: 63, value: 'Treogtres' },
{ number: 62, value: 'Toogtres' },
{ number: 61, value: 'Enogtres' },
{ number: 60, value: 'Tres' },
{ number: 59, value: 'Nioghalvtreds' },
{ number: 58, value: 'Otteoghalvtreds' },
{ number: 57, value: 'Syvoghalvtreds' },
{ number: 56, value: 'Seksoghalvtreds' },
{ number: 55, value: 'Femoghalvtreds' },
{ number: 54, value: 'Fireoghalvtreds' },
{ number: 53, value: 'Treoghalvtreds' },
{ number: 52, value: 'Tooghalvtreds' },
{ number: 51, value: 'Enoghalvtreds' },
{ number: 50, value: 'Halvtreds' },
{ number: 49, value: 'Niogfyrre' },
{ number: 48, value: 'Otteogfyrre' },
{ number: 47, value: 'Syvogfyrre' },
{ number: 46, value: 'Seksogfyrre' },
{ number: 45, value: 'Femogfyrre' },
{ number: 44, value: 'Fireogfyrre' },
{ number: 43, value: 'Treogfyrre' },
{ number: 42, value: 'Toogfyrre' },
{ number: 41, value: 'Enogfyrre' },
{ number: 40, value: 'Fyrre' },
{ number: 39, value: 'Niogtredive' },
{ number: 38, value: 'Otteogtredive' },
{ number: 37, value: 'Syvogtredive' },
{ number: 36, value: 'Seksogtredive' },
{ number: 35, value: 'Femogtredive' },
{ number: 34, value: 'Fireogtredive' },
{ number: 33, value: 'Treogtredive' },
{ number: 32, value: 'Toogtredive' },
{ number: 31, value: 'Enogtredive' },
{ number: 30, value: 'Tredive' },
{ number: 29, value: 'Niogtyve' },
{ number: 28, value: 'Otteogtyve' },
{ number: 27, value: 'Syvogtyve' },
{ number: 26, value: 'Seksogtyve' },
{ number: 25, value: 'Femogtyve' },
{ number: 24, value: 'Fireogtyve' },
{ number: 23, value: 'Treogtyve' },
{ number: 22, value: 'Toogtyve' },
{ number: 21, value: 'Enogtyve' },
{ number: 20, value: 'Tyve' },
{ number: 19, value: 'Nitten' },
{ number: 18, value: 'Atten' },
{ number: 17, value: 'Sytten' },
{ number: 16, value: 'Seksten' },
{ number: 15, value: 'Femten' },
{ number: 14, value: 'Fjorten' },
{ number: 13, value: 'Tretten' },
{ number: 12, value: 'Tolv' },
{ number: 11, value: 'Elleve' },
{ number: 10, value: 'Ti' },
{ number: 9, value: 'Ni' },
{ number: 8, value: 'Otte' },
{ number: 7, value: 'Syv' },
{ number: 6, value: 'Seks' },
{ number: 5, value: 'Fem' },
{ number: 4, value: 'Fire' },
{ number: 3, value: 'Tre' },
{ number: 2, value: 'To' },
{ number: 1, value: 'En' },
{ number: 0, value: 'Nul' },
],
exactWordsMapping: [{ number: 100, value: 'Hundrede' }],
ignoreOneForWords: ['Hundrede', 'Tusind'],
ordinalWordsMapping: [
{ number: 1000000000000000, value: 'Billiardte' },
{ number: 1000000000000, value: 'Billionte' },
{ number: 1000000000, value: 'Milliardste' },
{ number: 1000000, value: 'Millionte' },
{ number: 1000, value: 'Tusindende' },
{ number: 100, value: 'Hundredende' },
{ number: 99, value: 'Nioghalvfemsende' },
{ number: 98, value: 'Otteoghalvfemsende' },
{ number: 97, value: 'Syvoghalvfemsende' },
{ number: 96, value: 'Seksoghalvfemsende' },
{ number: 95, value: 'Femoghalvfemsende' },
{ number: 94, value: 'Fireoghalvfemsende' },
{ number: 93, value: 'Treoghalvfemsende' },
{ number: 92, value: 'Tooghalvfemsende' },
{ number: 91, value: 'Enoghalvfemsende' },
{ number: 90, value: 'Halvfemsende' },
{ number: 89, value: 'Niogfirsende' },
{ number: 88, value: 'Otteogfirsende' },
{ number: 87, value: 'Syvogfirsende' },
{ number: 86, value: 'Seksogfirsende' },
{ number: 85, value: 'Femogfirsende' },
{ number: 84, value: 'Fireogfirsende' },
{ number: 83, value: 'Treogfirsende' },
{ number: 82, value: 'Toogfirsende' },
{ number: 81, value: 'Enogfirsende' },
{ number: 80, value: 'Firsende' },
{ number: 79, value: 'Nioghalvfjerdsende' },
{ number: 78, value: 'Otteoghalvfjerdsende' },
{ number: 77, value: 'Syvoghalvfjerdsende' },
{ number: 76, value: 'Seksoghalvfjerdsende' },
{ number: 75, value: 'Femoghalvfjerdsende' },
{ number: 74, value: 'Fireoghalvfjerdsende' },
{ number: 73, value: 'Treoghalvfjerdsende' },
{ number: 72, value: 'Tooghalvfjerdsende' },
{ number: 71, value: 'Enoghalvfjerdsende' },
{ number: 70, value: 'Halvfjerdsende' },
{ number: 69, value: 'Niogtresende' },
{ number: 68, value: 'Otteogtresende' },
{ number: 67, value: 'Syvogtresende' },
{ number: 66, value: 'Seksogtresende' },
{ number: 65, value: 'Femogtresende' },
{ number: 64, value: 'Fireogtresende' },
{ number: 63, value: 'Treogtresende' },
{ number: 62, value: 'Toogtresende' },
{ number: 61, value: 'Enogtresende' },
{ number: 60, value: 'Tresende' },
{ number: 59, value: 'Nioghalvtredsende' },
{ number: 58, value: 'Otteoghalvtredsende' },
{ number: 57, value: 'Syvoghalvtredsende' },
{ number: 56, value: 'Seksoghalvtredsende' },
{ number: 55, value: 'Femoghalvtredsende' },
{ number: 54, value: 'Fireoghalvtredsende' },
{ number: 53, value: 'Treoghalvtredsende' },
{ number: 52, value: 'Tooghalvtredsende' },
{ number: 51, value: 'Enoghalvtredsende' },
{ number: 50, value: 'Halvtredsende' },
{ number: 49, value: 'Niogfyrretyvende' },
{ number: 48, value: 'Otteogfyrretyvende' },
{ number: 47, value: 'Syvogfyrretyvende' },
{ number: 46, value: 'Seksogfyrretyvende' },
{ number: 45, value: 'Femogfyrretyvende' },
{ number: 44, value: 'Fireogfyrretyvende' },
{ number: 43, value: 'Treogfyrretyvende' },
{ number: 42, value: 'Toogfyrretyvende' },
{ number: 41, value: 'Enogfyrretyvende' },
{ number: 40, value: 'Fyrretyvende' },
{ number: 39, value: 'Niogtredivte' },
{ number: 38, value: 'Otteogtredivte' },
{ number: 37, value: 'Syvogtredivte' },
{ number: 36, value: 'Seksogtredivte' },
{ number: 35, value: 'Femogtredivte' },
{ number: 34, value: 'Fireogtredivte' },
{ number: 33, value: 'Treogtredivte' },
{ number: 32, value: 'Toogtredivte' },
{ number: 31, value: 'Enogtredivte' },
{ number: 30, value: 'Tredivte' },
{ number: 29, value: 'Niogtyvende' },
{ number: 28, value: 'Otteogtyvende' },
{ number: 27, value: 'Syvogtyvende' },
{ number: 26, value: 'Seksogtyvende' },
{ number: 25, value: 'Femogtyvende' },
{ number: 24, value: 'Fireogtyvende' },
{ number: 23, value: 'Treogtyvende' },
{ number: 22, value: 'Toogtyvende' },
{ number: 21, value: 'Enogtyvende' },
{ number: 20, value: 'Tyvende' },
{ number: 19, value: 'Nittende' },
{ number: 18, value: 'Attende' },
{ number: 17, value: 'Syttende' },
{ number: 16, value: 'Sekstende' },
{ number: 15, value: 'Femtende' },
{ number: 14, value: 'Fjortende' },
{ number: 13, value: 'Trettende' },
{ number: 12, value: 'Tolvte' },
{ number: 11, value: 'Ellevte' },
{ number: 10, value: 'Tiende' },
{ number: 9, value: 'Niende' },
{ number: 8, value: 'Ottende' },
{ number: 7, value: 'Syvende' },
{ number: 6, value: 'Sjette' },
{ number: 5, value: 'Femte' },
{ number: 4, value: 'Fjerde' },
{ number: 3, value: 'Tredje' },
{ number: 2, value: 'Anden' },
{ number: 1, value: 'Første' },
{ number: 0, value: 'Nulte' },
],
fractionDenominatorMapping: {
1: { singular: 'Tiendedel', plural: 'Tiendedele' },
2: { singular: 'Hundredel', plural: 'Hundredele' },
3: { singular: 'Tusindedel', plural: 'Tusindedele' },
4: { singular: 'Titusindedel', plural: 'Titusindedele' },
5: { singular: 'Hundredtusindedel', plural: 'Hundredtusindedele' },
6: { singular: 'Milliondel', plural: 'Milliondele' },
},
};
}
exports.default = Locale;
/**
* ToWords class pre-configured for this locale.
* This is a lightweight version that only bundles this specific locale.
*
* @example
* import { ToWords } from 'to-words/da-DK';
* const tw = new ToWords();
* tw.convert(1234);
*/
class ToWords extends ToWordsCore_js_1.ToWordsCore {
constructor(options = {}) {
super(options);
this.setLocale(Locale);
}
}
exports.ToWords = ToWords;
// Module-level singleton — reused across calls to avoid per-call instance creation
const instance = new ToWords();
/**
* Convert a number to words for this locale (functional style).
*/
function toWords(number, options) {
return instance.convert(number, options);
}
/**
* Convert a number to ordinal words for this locale (functional style).
*/
function toOrdinal(number, options) {
return instance.toOrdinal(number, options);
}
/**
* Convert a number to currency words for this locale (functional style).
* Shorthand for toWords(number, { currency: true, ...options }).
*/
function toCurrency(number, options) {
return instance.convert(number, { ...options, currency: true });
}