UNPKG

to-words

Version:

Convert numbers to words in 132 locales with currency, ordinal, and BigInt support (TypeScript, ESM/CJS/UMD).

208 lines (207 loc) 8.76 kB
"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: 'Лев', plural: 'Лева', singular: 'Лев', symbol: 'лв', fractionalUnit: { name: 'Стотинка', singular: 'Стотинка', plural: 'Стотинки', symbol: 'ст.', }, }, texts: { and: 'И', minus: 'Минус', only: 'Само', point: 'Цяло', }, numberWordsMapping: [ { number: 1000000000000000, value: 'Квадрилион' }, { number: 1000000000000, value: 'Трилион' }, { number: 1000000000, value: 'Милиард' }, { number: 1000000, value: 'Милион' }, { number: 1000, value: 'Хиляда', singularValue: 'Хиляда' }, { number: 900, value: 'Деветстотин' }, { number: 800, value: 'Осемстотин' }, { number: 700, value: 'Седемстотин' }, { number: 600, value: 'Шестстотин' }, { number: 500, value: 'Петстотин' }, { number: 400, value: 'Четиристотин' }, { number: 300, value: 'Триста' }, { number: 200, value: 'Двеста' }, { number: 100, value: 'Сто' }, { number: 90, value: 'Деветдесет' }, { number: 80, value: 'Осемдесет' }, { number: 70, value: 'Седемдесет' }, { number: 60, value: 'Шестдесет' }, { number: 50, value: 'Петдесет' }, { number: 40, value: 'Четиридесет' }, { number: 30, value: 'Тридесет' }, { number: 20, value: 'Двадесет' }, { number: 19, value: 'Деветнадесет' }, { number: 18, value: 'Осемнадесет' }, { number: 17, value: 'Седемнадесет' }, { number: 16, value: 'Шестнадесет' }, { number: 15, value: 'Петнадесет' }, { number: 14, value: 'Четиринадесет' }, { number: 13, value: 'Тринадесет' }, { number: 12, value: 'Дванадесет' }, { number: 11, value: 'Единадесет' }, { number: 10, value: 'Десет' }, { number: 9, value: 'Девет' }, { number: 8, value: 'Осем' }, { number: 7, value: 'Седем' }, { number: 6, value: 'Шест' }, { number: 5, value: 'Пет' }, { number: 4, value: 'Четири' }, { number: 3, value: 'Три' }, { number: 2, value: 'Две' }, { number: 1, value: 'Едно', feminineValue: 'Една' }, { number: 0, value: 'Нула' }, ], exactWordsMapping: [{ number: 100, value: 'Сто' }], pluralForms: { 1000: { paucal: 'Хиляди', plural: 'Хиляди', }, 1000000: { paucal: 'Милиона', plural: 'Милиона', }, 1000000000: { paucal: 'Милиарда', plural: 'Милиарда', }, 1000000000000: { paucal: 'Трилиона', plural: 'Трилиона', }, 1000000000000000: { paucal: 'Квадрилиона', plural: 'Квадрилиона', }, }, paucalConfig: { min: 2, max: 4, }, ignoreOneForWords: [ 'Сто', 'Двеста', 'Триста', 'Четиристотин', 'Петстотин', 'Шестстотин', 'Седемстотин', 'Осемстотин', 'Деветстотин', 'Хиляда', 'Милион', 'Милиард', 'Трилион', 'Квадрилион', ], ordinalWordsMapping: [ { number: 1000000000000000, value: 'Квадрилионен' }, { number: 1000000000000, value: 'Трилионен' }, { number: 1000000000, value: 'Милиарден' }, { number: 1000000, value: 'Милионен' }, { number: 1000, value: 'Хиляден' }, { number: 900, value: 'Деветстотен' }, { number: 800, value: 'Осемстотен' }, { number: 700, value: 'Седемстотен' }, { number: 600, value: 'Шестстотен' }, { number: 500, value: 'Петстотен' }, { number: 400, value: 'Четиристотен' }, { number: 300, value: 'Тристотен' }, { number: 200, value: 'Двестотен' }, { number: 100, value: 'Стотен' }, { number: 90, value: 'Деветдесети' }, { number: 80, value: 'Осемдесети' }, { number: 70, value: 'Седемдесети' }, { number: 60, value: 'Шестдесети' }, { number: 50, value: 'Петдесети' }, { number: 40, value: 'Четиридесети' }, { number: 30, value: 'Тридесети' }, { number: 20, value: 'Двадесети' }, { number: 19, value: 'Деветнадесети' }, { number: 18, value: 'Осемнадесети' }, { number: 17, value: 'Седемнадесети' }, { number: 16, value: 'Шестнадесети' }, { number: 15, value: 'Петнадесети' }, { number: 14, value: 'Четиринадесети' }, { number: 13, value: 'Тринадесети' }, { number: 12, value: 'Дванадесети' }, { number: 11, value: 'Единадесети' }, { number: 10, value: 'Десети' }, { number: 9, value: 'Девети' }, { number: 8, value: 'Осми' }, { number: 7, value: 'Седми' }, { number: 6, value: 'Шести' }, { number: 5, value: 'Пети' }, { number: 4, value: 'Четвърти' }, { number: 3, value: 'Трети' }, { number: 2, value: 'Втори' }, { number: 1, value: 'Първи' }, { number: 0, value: 'Нулев' }, ], ordinalExactWordsMapping: [{ number: 100, value: 'Стотен' }], fractionDenominatorMapping: { 1: { singular: 'Десетина', plural: 'Десетини' }, 2: { singular: 'Стотина', plural: 'Стотини' }, 3: { singular: 'Хилядна', plural: 'Хиляди' }, 4: { singular: 'Десетохилядна', plural: 'Десетохиляди' }, 5: { singular: 'Стохилядна', plural: 'Стохиляди' }, 6: { singular: 'Милионна', plural: 'Милиони' }, }, }; } 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/bg-BG'; * 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 }); }