to-words
Version:
Convert numbers to words in 132 locales with currency, ordinal, and BigInt support (TypeScript, ESM/CJS/UMD).
298 lines (297 loc) • 14 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: 'Euro',
plural: 'Euro',
singular: 'Euro',
symbol: '€',
fractionalUnit: {
name: 'Cent',
singular: 'Cent',
plural: 'Cent',
symbol: 'ct',
},
},
texts: {
and: 'Und',
minus: 'Minus',
only: '',
point: 'Komma',
},
numberWordsMapping: [
{ number: 1000000000000000000000000000n, value: 'Quadrilliarde' },
{ number: 1000000000000000000000000n, value: 'Quadrillion' },
{ number: 1000000000000000000000n, value: 'Trilliarde' },
{ number: 1000000000000000000n, value: 'Trillion' },
{ number: 1000000000000000, value: 'Billiarde' },
{ number: 1000000000000, value: 'Billion' },
{ number: 1000000000, value: 'Milliarde' },
{ number: 1000000, value: 'Million' },
{ number: 1000, value: 'Tausend' },
{ number: 100, value: 'Hundert' },
{ number: 99, value: 'Neunundneunzig' },
{ number: 98, value: 'Achtundneunzig' },
{ number: 97, value: 'Siebenundneunzig' },
{ number: 96, value: 'Sechsundneunzig' },
{ number: 95, value: 'Fünfundneunzig' },
{ number: 94, value: 'Vierundneunzig' },
{ number: 93, value: 'Dreiundneunzig' },
{ number: 92, value: 'Zweiundneunzig' },
{ number: 91, value: 'Einundneunzig' },
{ number: 90, value: 'Neunzig' },
{ number: 89, value: 'Neunundachtzig' },
{ number: 88, value: 'Achtundachtzig' },
{ number: 87, value: 'Siebenundachtzig' },
{ number: 86, value: 'Sechsundachtzig' },
{ number: 85, value: 'Fünfundachtzig' },
{ number: 84, value: 'Vierundachtzig' },
{ number: 83, value: 'Dreiundachtzig' },
{ number: 82, value: 'Zweiundachtzig' },
{ number: 81, value: 'Einundachtzig' },
{ number: 80, value: 'Achtzig' },
{ number: 79, value: 'Neunundsiebzig' },
{ number: 78, value: 'Achtundsiebzig' },
{ number: 77, value: 'Siebenundsiebzig' },
{ number: 76, value: 'Sechsundsiebzig' },
{ number: 75, value: 'Fünfundsiebzig' },
{ number: 74, value: 'Vierundsiebzig' },
{ number: 73, value: 'Dreiundsiebzig' },
{ number: 72, value: 'Zweiundsiebzig' },
{ number: 71, value: 'Einundsiebzig' },
{ number: 70, value: 'Siebzig' },
{ number: 69, value: 'Neunundsechzig' },
{ number: 68, value: 'Achtundsechzig' },
{ number: 67, value: 'Siebenundsechzig' },
{ number: 66, value: 'Sechsundsechzig' },
{ number: 65, value: 'Fünfundsechzig' },
{ number: 64, value: 'Vierundsechzig' },
{ number: 63, value: 'Dreiundsechzig' },
{ number: 62, value: 'Zweiundsechzig' },
{ number: 61, value: 'Einundsechzig' },
{ number: 60, value: 'Sechzig' },
{ number: 59, value: 'Neunundfünfzig' },
{ number: 58, value: 'Achtundfünfzig' },
{ number: 57, value: 'Siebenundfünfzig' },
{ number: 56, value: 'Sechsundfünfzig' },
{ number: 55, value: 'Fünfundfünfzig' },
{ number: 54, value: 'Vierundfünfzig' },
{ number: 53, value: 'Dreiundfünfzig' },
{ number: 52, value: 'Zweiundfünfzig' },
{ number: 51, value: 'Einundfünfzig' },
{ number: 50, value: 'Fünfzig' },
{ number: 49, value: 'Neunundvierzig' },
{ number: 48, value: 'Achtundvierzig' },
{ number: 47, value: 'Siebenundvierzig' },
{ number: 46, value: 'Sechsundvierzig' },
{ number: 45, value: 'Fünfundvierzig' },
{ number: 44, value: 'Vierundvierzig' },
{ number: 43, value: 'Dreiundvierzig' },
{ number: 42, value: 'Zweiundvierzig' },
{ number: 41, value: 'Einundvierzig' },
{ number: 40, value: 'Vierzig' },
{ number: 39, value: 'Neununddreißig' },
{ number: 38, value: 'Achtunddreißig' },
{ number: 37, value: 'Siebenunddreißig' },
{ number: 36, value: 'Sechsunddreißig' },
{ number: 35, value: 'Fünfunddreißig' },
{ number: 34, value: 'Vierunddreißig' },
{ number: 33, value: 'Dreiunddreißig' },
{ number: 32, value: 'Zweiunddreißig' },
{ number: 31, value: 'Einunddreißig' },
{ number: 30, value: 'Dreißig' },
{ number: 29, value: 'Neunundzwanzig' },
{ number: 28, value: 'Achtundzwanzig' },
{ number: 27, value: 'Siebenundzwanzig' },
{ number: 26, value: 'Sechsundzwanzig' },
{ number: 25, value: 'Fünfundzwanzig' },
{ number: 24, value: 'Vierundzwanzig' },
{ number: 23, value: 'Dreiundzwanzig' },
{ number: 22, value: 'Zweiundzwanzig' },
{ number: 21, value: 'Einundzwanzig' },
{ number: 20, value: 'Zwanzig' },
{ number: 19, value: 'Neunzehn' },
{ number: 18, value: 'Achtzehn' },
{ number: 17, value: 'Siebzehn' },
{ number: 16, value: 'Sechzehn' },
{ number: 15, value: 'Fünfzehn' },
{ number: 14, value: 'Vierzehn' },
{ number: 13, value: 'Dreizehn' },
{ number: 12, value: 'Zwölf' },
{ number: 11, value: 'Elf' },
{ number: 10, value: 'Zehn' },
{ number: 9, value: 'Neun' },
{ number: 8, value: 'Acht' },
{ number: 7, value: 'Sieben' },
{ number: 6, value: 'Sechs' },
{ number: 5, value: 'Fünf' },
{ number: 4, value: 'Vier' },
{ number: 3, value: 'Drei' },
{ number: 2, value: 'Zwei' },
{ number: 1, value: 'Eins' },
{ number: 0, value: 'Null' },
],
exactWordsMapping: [{ number: 100, value: 'Hundert' }],
ignoreOneForWords: ['Hundert', 'Tausend'],
ordinalWordsMapping: [
{ number: 1000000000000000, value: 'Billiardste' },
{ number: 1000000000000, value: 'Billionste' },
{ number: 1000000000, value: 'Milliardste' },
{ number: 1000000, value: 'Millionste' },
{ number: 1000, value: 'Tausendste' },
{ number: 100, value: 'Hundertste' },
{ number: 99, value: 'Neunundneunzigste' },
{ number: 98, value: 'Achtundneunzigste' },
{ number: 97, value: 'Siebenundneunzigste' },
{ number: 96, value: 'Sechsundneunzigste' },
{ number: 95, value: 'Fünfundneunzigste' },
{ number: 94, value: 'Vierundneunzigste' },
{ number: 93, value: 'Dreiundneunzigste' },
{ number: 92, value: 'Zweiundneunzigste' },
{ number: 91, value: 'Einundneunzigste' },
{ number: 90, value: 'Neunzigste' },
{ number: 89, value: 'Neunundachtzigste' },
{ number: 88, value: 'Achtundachtzigste' },
{ number: 87, value: 'Siebenundachtzigste' },
{ number: 86, value: 'Sechsundachtzigste' },
{ number: 85, value: 'Fünfundachtzigste' },
{ number: 84, value: 'Vierundachtzigste' },
{ number: 83, value: 'Dreiundachtzigste' },
{ number: 82, value: 'Zweiundachtzigste' },
{ number: 81, value: 'Einundachtzigste' },
{ number: 80, value: 'Achtzigste' },
{ number: 79, value: 'Neunundsiebzigste' },
{ number: 78, value: 'Achtundsiebzigste' },
{ number: 77, value: 'Siebenundsiebzigste' },
{ number: 76, value: 'Sechsundsiebzigste' },
{ number: 75, value: 'Fünfundsiebzigste' },
{ number: 74, value: 'Vierundsiebzigste' },
{ number: 73, value: 'Dreiundsiebzigste' },
{ number: 72, value: 'Zweiundsiebzigste' },
{ number: 71, value: 'Einundsiebzigste' },
{ number: 70, value: 'Siebzigste' },
{ number: 69, value: 'Neunundsechzigste' },
{ number: 68, value: 'Achtundsechzigste' },
{ number: 67, value: 'Siebenundsechzigste' },
{ number: 66, value: 'Sechsundsechzigste' },
{ number: 65, value: 'Fünfundsechzigste' },
{ number: 64, value: 'Vierundsechzigste' },
{ number: 63, value: 'Dreiundsechzigste' },
{ number: 62, value: 'Zweiundsechzigste' },
{ number: 61, value: 'Einundsechzigste' },
{ number: 60, value: 'Sechzigste' },
{ number: 59, value: 'Neunundfünfzigste' },
{ number: 58, value: 'Achtundfünfzigste' },
{ number: 57, value: 'Siebenundfünfzigste' },
{ number: 56, value: 'Sechsundfünfzigste' },
{ number: 55, value: 'Fünfundfünfzigste' },
{ number: 54, value: 'Vierundfünfzigste' },
{ number: 53, value: 'Dreiundfünfzigste' },
{ number: 52, value: 'Zweiundfünfzigste' },
{ number: 51, value: 'Einundfünfzigste' },
{ number: 50, value: 'Fünfzigste' },
{ number: 49, value: 'Neunundvierzigste' },
{ number: 48, value: 'Achtundvierzigste' },
{ number: 47, value: 'Siebenundvierzigste' },
{ number: 46, value: 'Sechsundvierzigste' },
{ number: 45, value: 'Fünfundvierzigste' },
{ number: 44, value: 'Vierundvierzigste' },
{ number: 43, value: 'Dreiundvierzigste' },
{ number: 42, value: 'Zweiundvierzigste' },
{ number: 41, value: 'Einundvierzigste' },
{ number: 40, value: 'Vierzigste' },
{ number: 39, value: 'Neununddreißigste' },
{ number: 38, value: 'Achtunddreißigste' },
{ number: 37, value: 'Siebenunddreißigste' },
{ number: 36, value: 'Sechsunddreißigste' },
{ number: 35, value: 'Fünfunddreißigste' },
{ number: 34, value: 'Vierunddreißigste' },
{ number: 33, value: 'Dreiunddreißigste' },
{ number: 32, value: 'Zweiunddreißigste' },
{ number: 31, value: 'Einunddreißigste' },
{ number: 30, value: 'Dreißigste' },
{ number: 29, value: 'Neunundzwanzigste' },
{ number: 28, value: 'Achtundzwanzigste' },
{ number: 27, value: 'Siebenundzwanzigste' },
{ number: 26, value: 'Sechsundzwanzigste' },
{ number: 25, value: 'Fünfundzwanzigste' },
{ number: 24, value: 'Vierundzwanzigste' },
{ number: 23, value: 'Dreiundzwanzigste' },
{ number: 22, value: 'Zweiundzwanzigste' },
{ number: 21, value: 'Einundzwanzigste' },
{ number: 20, value: 'Zwanzigste' },
{ number: 19, value: 'Neunzehnte' },
{ number: 18, value: 'Achtzehnte' },
{ number: 17, value: 'Siebzehnte' },
{ number: 16, value: 'Sechzehnte' },
{ number: 15, value: 'Fünfzehnte' },
{ number: 14, value: 'Vierzehnte' },
{ number: 13, value: 'Dreizehnte' },
{ number: 12, value: 'Zwölfte' },
{ number: 11, value: 'Elfte' },
{ number: 10, value: 'Zehnte' },
{ number: 9, value: 'Neunte' },
{ number: 8, value: 'Achte' },
{ number: 7, value: 'Siebte' },
{ number: 6, value: 'Sechste' },
{ number: 5, value: 'Fünfte' },
{ number: 4, value: 'Vierte' },
{ number: 3, value: 'Dritte' },
{ number: 2, value: 'Zweite' },
{ number: 1, value: 'Erste' },
{ number: 0, value: 'Nullte' },
],
fractionDenominatorMapping: {
1: { singular: 'Zehntel', plural: 'Zehntel' },
2: { singular: 'Hundertstel', plural: 'Hundertstel' },
3: { singular: 'Tausendstel', plural: 'Tausendstel' },
4: { singular: 'Zehntausendstel', plural: 'Zehntausendstel' },
5: { singular: 'Hunderttausendstel', plural: 'Hunderttausendstel' },
6: { singular: 'Millionstel', plural: 'Millionstel' },
},
};
}
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/de-DE';
* 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 });
}