n2words 1.23.1 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +181 -52
- package/dist/languages/ar.js +2 -0
- package/dist/languages/ar.js.map +1 -0
- package/dist/languages/az.js +2 -0
- package/dist/languages/az.js.map +1 -0
- package/dist/languages/bn.js +2 -0
- package/dist/languages/bn.js.map +1 -0
- package/dist/languages/cs.js +2 -0
- package/dist/languages/cs.js.map +1 -0
- package/dist/languages/da.js +2 -0
- package/dist/languages/da.js.map +1 -0
- package/dist/languages/de.js +2 -0
- package/dist/languages/de.js.map +1 -0
- package/dist/languages/el.js +2 -0
- package/dist/languages/el.js.map +1 -0
- package/dist/languages/en.js +2 -0
- package/dist/languages/en.js.map +1 -0
- package/dist/languages/es.js +2 -0
- package/dist/languages/es.js.map +1 -0
- package/dist/languages/fa.js +2 -0
- package/dist/languages/fa.js.map +1 -0
- package/dist/languages/fil.js +2 -0
- package/dist/languages/fil.js.map +1 -0
- package/dist/languages/fr-BE.js +2 -0
- package/dist/languages/fr-BE.js.map +1 -0
- package/dist/languages/fr.js +2 -0
- package/dist/languages/fr.js.map +1 -0
- package/dist/languages/gu.js +2 -0
- package/dist/languages/gu.js.map +1 -0
- package/dist/languages/he.js +2 -0
- package/dist/languages/he.js.map +1 -0
- package/dist/languages/hi.js +2 -0
- package/dist/languages/hi.js.map +1 -0
- package/dist/languages/hr.js +2 -0
- package/dist/languages/hr.js.map +1 -0
- package/dist/languages/hu.js +2 -0
- package/dist/languages/hu.js.map +1 -0
- package/dist/languages/id.js +2 -0
- package/dist/languages/id.js.map +1 -0
- package/dist/languages/it.js +2 -0
- package/dist/languages/it.js.map +1 -0
- package/dist/languages/ja.js +2 -0
- package/dist/languages/ja.js.map +1 -0
- package/dist/languages/kn.js +2 -0
- package/dist/languages/kn.js.map +1 -0
- package/dist/languages/ko.js +2 -0
- package/dist/languages/ko.js.map +1 -0
- package/dist/languages/lt.js +2 -0
- package/dist/languages/lt.js.map +1 -0
- package/dist/languages/lv.js +2 -0
- package/dist/languages/lv.js.map +1 -0
- package/dist/languages/mr.js +2 -0
- package/dist/languages/mr.js.map +1 -0
- package/dist/languages/ms.js +2 -0
- package/dist/languages/ms.js.map +1 -0
- package/dist/languages/nb.js +2 -0
- package/dist/languages/nb.js.map +1 -0
- package/dist/languages/nl.js +2 -0
- package/dist/languages/nl.js.map +1 -0
- package/dist/languages/pa-Guru.js +2 -0
- package/dist/languages/pa-Guru.js.map +1 -0
- package/dist/languages/pl.js +2 -0
- package/dist/languages/pl.js.map +1 -0
- package/dist/languages/pt.js +2 -0
- package/dist/languages/pt.js.map +1 -0
- package/dist/languages/ro.js +2 -0
- package/dist/languages/ro.js.map +1 -0
- package/dist/languages/ru.js +2 -0
- package/dist/languages/ru.js.map +1 -0
- package/dist/languages/sr-Latn.js +2 -0
- package/dist/languages/sr-Latn.js.map +1 -0
- package/dist/languages/sv.js +2 -0
- package/dist/languages/sv.js.map +1 -0
- package/dist/languages/sw.js +2 -0
- package/dist/languages/sw.js.map +1 -0
- package/dist/languages/ta.js +2 -0
- package/dist/languages/ta.js.map +1 -0
- package/dist/languages/te.js +2 -0
- package/dist/languages/te.js.map +1 -0
- package/dist/languages/th.js +2 -0
- package/dist/languages/th.js.map +1 -0
- package/dist/languages/tr.js +2 -0
- package/dist/languages/tr.js.map +1 -0
- package/dist/languages/uk.js +2 -0
- package/dist/languages/uk.js.map +1 -0
- package/dist/languages/ur.js +2 -0
- package/dist/languages/ur.js.map +1 -0
- package/dist/languages/vi.js +2 -0
- package/dist/languages/vi.js.map +1 -0
- package/dist/languages/zh-Hans.js +2 -0
- package/dist/languages/zh-Hans.js.map +1 -0
- package/dist/n2words.js +1 -1
- package/dist/n2words.js.map +1 -1
- package/lib/classes/abstract-language.js +211 -110
- package/lib/classes/greedy-scale-language.js +195 -0
- package/lib/classes/slavic-language.js +251 -0
- package/lib/classes/south-asian-language.js +161 -0
- package/lib/classes/turkic-language.js +63 -0
- package/lib/languages/ar.js +243 -0
- package/lib/languages/az.js +58 -0
- package/lib/languages/bn.js +126 -0
- package/lib/languages/cs.js +212 -0
- package/lib/languages/da.js +167 -0
- package/lib/languages/de.js +135 -0
- package/lib/languages/el.js +116 -0
- package/lib/languages/en.js +123 -0
- package/lib/languages/es.js +153 -0
- package/lib/languages/fa.js +127 -0
- package/lib/languages/fil.js +162 -0
- package/lib/languages/fr-BE.js +61 -0
- package/lib/languages/fr.js +145 -0
- package/lib/languages/gu.js +156 -0
- package/lib/languages/he.js +329 -0
- package/lib/languages/hi.js +126 -0
- package/lib/languages/hr.js +157 -0
- package/lib/languages/hu.js +155 -0
- package/lib/languages/id.js +174 -0
- package/lib/languages/it.js +148 -0
- package/lib/languages/ja.js +190 -0
- package/lib/languages/kn.js +71 -0
- package/lib/languages/ko.js +83 -0
- package/lib/languages/lt.js +171 -0
- package/lib/languages/lv.js +153 -0
- package/lib/languages/mr.js +156 -0
- package/lib/languages/ms.js +146 -0
- package/lib/languages/nb.js +120 -0
- package/lib/languages/nl.js +206 -0
- package/lib/languages/pa-Guru.js +126 -0
- package/lib/languages/pl.js +189 -0
- package/lib/languages/pt.js +147 -0
- package/lib/languages/ro.js +380 -0
- package/lib/languages/ru.js +116 -0
- package/lib/languages/sr-Latn.js +157 -0
- package/lib/languages/sv.js +127 -0
- package/lib/languages/sw.js +121 -0
- package/lib/languages/ta.js +226 -0
- package/lib/languages/te.js +229 -0
- package/lib/languages/th.js +123 -0
- package/lib/languages/tr.js +83 -0
- package/lib/{i18n → languages}/uk.js +50 -23
- package/lib/languages/ur.js +126 -0
- package/lib/languages/vi.js +193 -0
- package/lib/languages/zh-Hans.js +165 -0
- package/lib/n2words.js +246 -75
- package/package.json +80 -72
- package/typings/classes/abstract-language.d.ts +144 -0
- package/typings/classes/greedy-scale-language.d.ts +148 -0
- package/typings/classes/slavic-language.d.ts +145 -0
- package/typings/classes/south-asian-language.d.ts +101 -0
- package/typings/classes/turkic-language.d.ts +42 -0
- package/typings/languages/ar.d.ts +93 -0
- package/typings/languages/az.d.ts +25 -0
- package/typings/languages/bn.d.ts +1 -0
- package/typings/languages/cs.d.ts +120 -0
- package/typings/languages/da.d.ts +53 -0
- package/typings/languages/de.d.ts +26 -0
- package/typings/languages/el.d.ts +11 -0
- package/typings/languages/en.d.ts +30 -0
- package/typings/languages/es.d.ts +43 -0
- package/typings/languages/fa.d.ts +81 -0
- package/typings/languages/fil.d.ts +12 -0
- package/typings/languages/fr-BE.d.ts +41 -0
- package/typings/languages/fr.d.ts +43 -0
- package/typings/languages/gu.d.ts +12 -0
- package/typings/languages/he.d.ts +197 -0
- package/typings/languages/hi.d.ts +1 -0
- package/typings/languages/hr.d.ts +110 -0
- package/typings/languages/hu.d.ts +37 -0
- package/typings/languages/id.d.ts +69 -0
- package/typings/languages/it.d.ts +51 -0
- package/typings/languages/ja.d.ts +58 -0
- package/typings/languages/kn.d.ts +11 -0
- package/typings/languages/ko.d.ts +25 -0
- package/typings/languages/lt.d.ts +110 -0
- package/typings/languages/lv.d.ts +99 -0
- package/typings/languages/mr.d.ts +12 -0
- package/typings/languages/ms.d.ts +37 -0
- package/typings/languages/nb.d.ts +27 -0
- package/typings/languages/nl.d.ts +65 -0
- package/typings/languages/pa-Guru.d.ts +1 -0
- package/typings/languages/pl.d.ts +116 -0
- package/typings/languages/pt.d.ts +39 -0
- package/typings/languages/ro.d.ts +229 -0
- package/typings/languages/ru.d.ts +108 -0
- package/typings/languages/sr-Latn.d.ts +98 -0
- package/typings/languages/sv.d.ts +30 -0
- package/typings/languages/sw.d.ts +1 -0
- package/typings/languages/ta.d.ts +1 -0
- package/typings/languages/te.d.ts +1 -0
- package/typings/languages/th.d.ts +1 -0
- package/typings/languages/tr.d.ts +46 -0
- package/typings/languages/uk.d.ts +117 -0
- package/typings/languages/ur.d.ts +1 -0
- package/typings/languages/vi.d.ts +116 -0
- package/typings/languages/zh-Hans.d.ts +57 -0
- package/typings/n2words.d.ts +177 -0
- package/dist/ar.js +0 -2
- package/dist/ar.js.map +0 -1
- package/dist/az.js +0 -2
- package/dist/az.js.map +0 -1
- package/dist/cz.js +0 -2
- package/dist/cz.js.map +0 -1
- package/dist/de.js +0 -2
- package/dist/de.js.map +0 -1
- package/dist/dk.js +0 -2
- package/dist/dk.js.map +0 -1
- package/dist/en.js +0 -2
- package/dist/en.js.map +0 -1
- package/dist/es.js +0 -2
- package/dist/es.js.map +0 -1
- package/dist/fa.js +0 -2
- package/dist/fa.js.map +0 -1
- package/dist/fr-BE.js +0 -2
- package/dist/fr-BE.js.map +0 -1
- package/dist/fr.js +0 -2
- package/dist/fr.js.map +0 -1
- package/dist/he.js +0 -2
- package/dist/he.js.map +0 -1
- package/dist/hr.js +0 -2
- package/dist/hr.js.map +0 -1
- package/dist/hu.js +0 -2
- package/dist/hu.js.map +0 -1
- package/dist/id.js +0 -2
- package/dist/id.js.map +0 -1
- package/dist/it.js +0 -2
- package/dist/it.js.map +0 -1
- package/dist/ko.js +0 -2
- package/dist/ko.js.map +0 -1
- package/dist/lt.js +0 -2
- package/dist/lt.js.map +0 -1
- package/dist/lv.js +0 -2
- package/dist/lv.js.map +0 -1
- package/dist/n2words.d.ts +0 -2
- package/dist/nl.js +0 -2
- package/dist/nl.js.map +0 -1
- package/dist/no.js +0 -2
- package/dist/no.js.map +0 -1
- package/dist/pl.js +0 -2
- package/dist/pl.js.map +0 -1
- package/dist/pt.js +0 -2
- package/dist/pt.js.map +0 -1
- package/dist/ro.js +0 -2
- package/dist/ro.js.map +0 -1
- package/dist/ru.js +0 -2
- package/dist/ru.js.map +0 -1
- package/dist/sr.js +0 -2
- package/dist/sr.js.map +0 -1
- package/dist/tr.js +0 -2
- package/dist/tr.js.map +0 -1
- package/dist/uk.js +0 -2
- package/dist/uk.js.map +0 -1
- package/dist/vi.js +0 -2
- package/dist/vi.js.map +0 -1
- package/dist/zh.js +0 -2
- package/dist/zh.js.map +0 -1
- package/lib/classes/abstract-language.d.ts +0 -54
- package/lib/classes/base-language.d.ts +0 -58
- package/lib/classes/base-language.js +0 -172
- package/lib/i18n/ar.d.ts +0 -41
- package/lib/i18n/ar.js +0 -209
- package/lib/i18n/az.d.ts +0 -15
- package/lib/i18n/az.js +0 -66
- package/lib/i18n/cz.d.ts +0 -68
- package/lib/i18n/cz.js +0 -135
- package/lib/i18n/de.d.ts +0 -17
- package/lib/i18n/de.js +0 -103
- package/lib/i18n/dk.d.ts +0 -14
- package/lib/i18n/dk.js +0 -110
- package/lib/i18n/en.d.ts +0 -22
- package/lib/i18n/en.js +0 -86
- package/lib/i18n/es.d.ts +0 -16
- package/lib/i18n/es.js +0 -110
- package/lib/i18n/fa.d.ts +0 -54
- package/lib/i18n/fa.js +0 -106
- package/lib/i18n/fr-BE.d.ts +0 -11
- package/lib/i18n/fr-BE.js +0 -20
- package/lib/i18n/fr.d.ts +0 -15
- package/lib/i18n/fr.js +0 -99
- package/lib/i18n/he.d.ts +0 -61
- package/lib/i18n/he.js +0 -132
- package/lib/i18n/hr.d.ts +0 -68
- package/lib/i18n/hr.js +0 -129
- package/lib/i18n/hu.d.ts +0 -17
- package/lib/i18n/hu.js +0 -135
- package/lib/i18n/id.d.ts +0 -43
- package/lib/i18n/id.js +0 -156
- package/lib/i18n/it.d.ts +0 -29
- package/lib/i18n/it.js +0 -137
- package/lib/i18n/ko.d.ts +0 -15
- package/lib/i18n/ko.js +0 -56
- package/lib/i18n/lt.d.ts +0 -68
- package/lib/i18n/lt.js +0 -138
- package/lib/i18n/lv.d.ts +0 -57
- package/lib/i18n/lv.js +0 -120
- package/lib/i18n/nl.d.ts +0 -20
- package/lib/i18n/nl.js +0 -125
- package/lib/i18n/no.d.ts +0 -15
- package/lib/i18n/no.js +0 -77
- package/lib/i18n/pl.d.ts +0 -67
- package/lib/i18n/pl.js +0 -126
- package/lib/i18n/pt.d.ts +0 -26
- package/lib/i18n/pt.js +0 -118
- package/lib/i18n/ro.d.ts +0 -109
- package/lib/i18n/ro.js +0 -360
- package/lib/i18n/ru.d.ts +0 -30
- package/lib/i18n/ru.js +0 -198
- package/lib/i18n/sr.d.ts +0 -56
- package/lib/i18n/sr.js +0 -127
- package/lib/i18n/tr.d.ts +0 -15
- package/lib/i18n/tr.js +0 -64
- package/lib/i18n/uk.d.ts +0 -78
- package/lib/i18n/vi.d.ts +0 -70
- package/lib/i18n/vi.js +0 -151
- package/lib/i18n/zh.d.ts +0 -18
- package/lib/i18n/zh.js +0 -78
- package/lib/n2words.d.ts +0 -9
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts numbers to their word representation in Kannada (ಕನ್ನಡ).
|
|
3
|
+
* @module languages/kn
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import SouthAsianLanguage from '../classes/south-asian-language.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Kannada language implementation using Indian-style number grouping.
|
|
10
|
+
* @extends SouthAsianLanguage
|
|
11
|
+
*/
|
|
12
|
+
class KannadaLanguage extends SouthAsianLanguage {
|
|
13
|
+
negativeWord = 'ಋಣಾತ್ಮಕ'
|
|
14
|
+
decimalSeparatorWord = 'ದಶಮಾಂಶ'
|
|
15
|
+
zeroWord = 'ಸೊನ್ನೆ'
|
|
16
|
+
hundredWord = 'ನೂರು'
|
|
17
|
+
convertDecimalsPerDigit = true
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Array of number words from 0 to 99.
|
|
21
|
+
* Index matches the number value.
|
|
22
|
+
* @type {string[]}
|
|
23
|
+
*/
|
|
24
|
+
belowHundred = [
|
|
25
|
+
'ಸೊನ್ನೆ', 'ಒಂದು', 'ಎರಡು', 'ಮೂರು', 'ನಾಲ್ಕು', 'ಐದು', 'ಆರು', 'ಏಳು', 'ಎಂಟು', 'ಒಂಬತ್ತು',
|
|
26
|
+
'ಹತ್ತು', 'ಹನ್ನೊಂದು', 'ಹನ್ನೆರಡು', 'ಹದಿಮೂರು', 'ಹದಿನಾಲ್ಕು', 'ಹದಿನೈದು', 'ಹದಿನಾರು', 'ಹದಿನೇಳು', 'ಹದಿನೆಂಟು', 'ಹತ್ತೊಂಬತ್ತು',
|
|
27
|
+
'ಇಪ್ಪತ್ತು', 'ಇಪ್ಪತ್ತೊಂದು', 'ಇಪ್ಪತ್ತೆರಡು', 'ಇಪ್ಪತ್ತಮೂರು', 'ಇಪ್ಪತ್ತನಾಲ್ಕು', 'ಇಪ್ಪತ್ತೈದು', 'ಇಪ್ಪತ್ತಾರು', 'ಇಪ್ಪತ್ತೇಳು', 'ಇಪ್ಪತ್ತೆಂಟು', 'ಇಪ್ಪತ್ತೊಂಬತ್ತು',
|
|
28
|
+
'ಮೂವತ್ತು', 'ಮೂವತ್ತೊಂದು', 'ಮೂವತ್ತೆರಡು', 'ಮೂವತ್ತಮೂರು', 'ಮೂವತ್ತನಾಲ್ಕು', 'ಮೂವತ್ತೈದು', 'ಮೂವತ್ತಾರು', 'ಮೂವತ್ತೇಳು', 'ಮೂವತ್ತೆಂಟು', 'ಮೂವತ್ತೊಂಬತ್ತು',
|
|
29
|
+
'ನಲವತ್ತು', 'ನಲವತ್ತೊಂದು', 'ನಲವತ್ತೆರಡು', 'ನಲವತ್ತಮೂರು', 'ನಲವತ್ತನಾಲ್ಕು', 'ನಲವತ್ತೈದು', 'ನಲವತ್ತಾರು', 'ನಲವತ್ತೇಳು', 'ನಲವತ್ತೆಂಟು', 'ನಲವತ್ತೊಂಬತ್ತು',
|
|
30
|
+
'ಐವತ್ತು', 'ಐವತ್ತೊಂದು', 'ಐವತ್ತೆರಡು', 'ಐವತ್ತಮೂರು', 'ಐವತ್ತನಾಲ್ಕು', 'ಐವತ್ತೈದು', 'ಐವತ್ತಾರು', 'ಐವತ್ತೇಳು', 'ಐವತ್ತೆಂಟು', 'ಐವತ್ತೊಂಬತ್ತು',
|
|
31
|
+
'ಅರವತ್ತು', 'ಅರವತ್ತೊಂದು', 'ಅರವತ್ತೆರಡು', 'ಅರವತ್ತಮೂರು', 'ಅರವತ್ತನಾಲ್ಕು', 'ಅರವತ್ತೈದು', 'ಅರವತ್ತಾರು', 'ಅರವತ್ತೇಳು', 'ಅರವತ್ತೆಂಟು', 'ಅರವತ್ತೊಂಬತ್ತು',
|
|
32
|
+
'ಎಪ್ಪತ್ತು', 'ಎಪ್ಪತ್ತೊಂದು', 'ಎಪ್ಪತ್ತೆರಡು', 'ಎಪ್ಪತ್ತಮೂರು', 'ಎಪ್ಪತ್ತನಾಲ್ಕು', 'ಎಪ್ಪತ್ತೈದು', 'ಎಪ್ಪತ್ತಾರು', 'ಎಪ್ಪತ್ತೇಳು', 'ಎಪ್ಪತ್ತೆಂಟು', 'ಎಪ್ಪತ್ತೊಂಬತ್ತು',
|
|
33
|
+
'ಎಂಬತ್ತು', 'ಎಂಬತ್ತೊಂದು', 'ಎಂಬತ್ತೆರಡು', 'ಎಂಬತ್ತಮೂರು', 'ಎಂಬತ್ತನಾಲ್ಕು', 'ಎಂಬತ್ತೈದು', 'ಎಂಬತ್ತಾರು', 'ಎಂಬತ್ತೇಳು', 'ಎಂಬತ್ತೆಂಟು', 'ಎಂಬತ್ತೊಂಬತ್ತು',
|
|
34
|
+
'ತೊಂಬತ್ತು', 'ತೊಂಬತ್ತೊಂದು', 'ತೊಂಬತ್ತೆರಡು', 'ತೊಂಬತ್ತಮೂರು', 'ತೊಂಬತ್ತನಾಲ್ಕು', 'ತೊಂಬತ್ತೈದು', 'ತೊಂಬತ್ತಾರು', 'ತೊಂಬತ್ತೇಳು', 'ತೊಂಬತ್ತೆಂಟು', 'ತೊಂಬತ್ತೊಂಬತ್ತು'
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Scale words for powers of ten in Indian numbering system.
|
|
39
|
+
* Index 0 = units, 1 = thousand, 2 = lakh, 3 = crore, etc.
|
|
40
|
+
* @type {string[]}
|
|
41
|
+
*/
|
|
42
|
+
scaleWords = [
|
|
43
|
+
'', // units
|
|
44
|
+
'ಸಾವಿರ', // thousand (1,000)
|
|
45
|
+
'ಲಕ್ಷ', // lakh (100,000)
|
|
46
|
+
'ಕೋಟಿ', // crore (10,000,000)
|
|
47
|
+
'ಅಬ್ಜ', // arab (1,000,000,000)
|
|
48
|
+
'ಖರ್ವ', // kharab (100,000,000,000)
|
|
49
|
+
'ನೀಲ', // neel (10,000,000,000,000)
|
|
50
|
+
'ಪದ್ಮ', // padma (1,000,000,000,000,000)
|
|
51
|
+
'ಶಂಖ' // shankh (100,000,000,000,000,000)
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Converts numbers using the belowHundred array directly.
|
|
56
|
+
*/
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Converts a number to its word representation in Kannada.
|
|
61
|
+
* @param {number|string|bigint} value - The number to convert
|
|
62
|
+
* @param {Object} [options={}] - Conversion options
|
|
63
|
+
* @returns {string} The word representation of the number
|
|
64
|
+
* @example
|
|
65
|
+
* convertToWords(42) // 'ನಲವತ್ತೆರಡು'
|
|
66
|
+
* convertToWords(1000) // 'ಒಂದು ಸಾವಿರ'
|
|
67
|
+
* convertToWords(100000) // 'ಒಂದು ಲಕ್ಷ'
|
|
68
|
+
*/
|
|
69
|
+
export default function convertToWords (value, options = {}) {
|
|
70
|
+
return new KannadaLanguage(options).convertToWords(value)
|
|
71
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import GreedyScaleLanguage from '../classes/greedy-scale-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Korean language converter.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Space-separated for large numbers (>= 만/10,000)
|
|
8
|
+
* - Concatenated for smaller numbers
|
|
9
|
+
* - Omits '일' (1) before multipliers
|
|
10
|
+
*/
|
|
11
|
+
export class Korean extends GreedyScaleLanguage {
|
|
12
|
+
negativeWord = '마이너스'
|
|
13
|
+
decimalSeparatorWord = '점'
|
|
14
|
+
zeroWord = '영'
|
|
15
|
+
scaleWordPairs = [
|
|
16
|
+
[10_000_000_000_000_000_000_000_000_000n, '양'],
|
|
17
|
+
[1_000_000_000_000_000_000_000_000n, '자'],
|
|
18
|
+
[100_000_000_000_000_000_000n, '해'],
|
|
19
|
+
[10_000_000_000_000_000n, '경'],
|
|
20
|
+
[1_000_000_000_000n, '조'],
|
|
21
|
+
[100_000_000n, '억'],
|
|
22
|
+
[10_000n, '만'],
|
|
23
|
+
[1000n, '천'],
|
|
24
|
+
[100n, '백'],
|
|
25
|
+
[10n, '십'],
|
|
26
|
+
[9n, '구'],
|
|
27
|
+
[8n, '팔'],
|
|
28
|
+
[7n, '칠'],
|
|
29
|
+
[6n, '육'],
|
|
30
|
+
[5n, '오'],
|
|
31
|
+
[4n, '사'],
|
|
32
|
+
[3n, '삼'],
|
|
33
|
+
[2n, '이'],
|
|
34
|
+
[1n, '일'],
|
|
35
|
+
[0n, '영']
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Merges two adjacent word-number pairs according to Korean grammar rules.
|
|
40
|
+
*
|
|
41
|
+
* Korean-specific rules:
|
|
42
|
+
* - Omits '일' (1) before multipliers <= 만 (10,000)
|
|
43
|
+
* - Concatenates without space for small numbers (< 만)
|
|
44
|
+
* - Separates with space for large numbers (>= 만)
|
|
45
|
+
* - Multiplies when right > left, adds when left > right
|
|
46
|
+
*
|
|
47
|
+
* @param {Object} leftPair The left operand as `{ word: number }`.
|
|
48
|
+
* @param {Object} rightPair The right operand as `{ word: number }`.
|
|
49
|
+
* @returns {Object} Merged pair with combined word and resulting number.
|
|
50
|
+
*/
|
|
51
|
+
mergeScales (leftPair, rightPair) {
|
|
52
|
+
const leftWord = Object.keys(leftPair)[0]
|
|
53
|
+
const rightWord = Object.keys(rightPair)[0]
|
|
54
|
+
const leftNumber = Object.values(leftPair)[0] // BigInt
|
|
55
|
+
const rightNumber = Object.values(rightPair)[0] // BigInt
|
|
56
|
+
|
|
57
|
+
// Implicit "일": omit 1 before multipliers up to 만 (10,000)
|
|
58
|
+
if (leftNumber === 1n && rightNumber <= 10_000n) return rightPair
|
|
59
|
+
// Concatenate (no space) for small numbers less than 만
|
|
60
|
+
if (leftNumber < 10_000n && leftNumber > rightNumber) return { [`${leftWord}${rightWord}`]: leftNumber + rightNumber }
|
|
61
|
+
// Space-separate for large numbers (>= 만) when adding
|
|
62
|
+
if (leftNumber >= 10_000n && leftNumber > rightNumber) return { [`${leftWord} ${rightWord}`]: leftNumber + rightNumber }
|
|
63
|
+
// Multiply for all scale combinations
|
|
64
|
+
return { [`${leftWord}${rightWord}`]: leftNumber * rightNumber }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Converts a number to Korean cardinal (written) form.
|
|
70
|
+
*
|
|
71
|
+
* @param {number|string|bigint} value The number to convert.
|
|
72
|
+
* @param {Object} [options] Conversion options (see Korean class options).
|
|
73
|
+
* @returns {string} The number expressed in Korean words.
|
|
74
|
+
* @throws {TypeError} If value is NaN or invalid type.
|
|
75
|
+
* @throws {Error} If value is an invalid number string.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* convertToWords(42); // '사십이'
|
|
79
|
+
* convertToWords(10001); // '만 일'
|
|
80
|
+
*/
|
|
81
|
+
export default function convertToWords (value, options = {}) {
|
|
82
|
+
return new Korean(options).convertToWords(value)
|
|
83
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import SlavicLanguage from '../classes/slavic-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {Object} SlavicOptions
|
|
5
|
+
* @property {boolean} [feminine=false] Use feminine forms for numbers.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Lithuanian language converter.
|
|
10
|
+
*
|
|
11
|
+
* Implements Lithuanian number words using the Slavic language pattern:
|
|
12
|
+
* - Lithuanian number words (vienas/viena, du/dvi, trys, keturi...)
|
|
13
|
+
* - Gender-aware forms (masculine/feminine)
|
|
14
|
+
* - Baltic three-form pluralization (tūkstantis/tūkstančiai/tūkstančių)
|
|
15
|
+
* - Lithuanian-specific declension patterns
|
|
16
|
+
*
|
|
17
|
+
* Key Features:
|
|
18
|
+
* - Three-form pluralization system shared across Slavic/Baltic languages
|
|
19
|
+
* * Form 1 (singular): 1 (e.g., "tūkstantis")
|
|
20
|
+
* * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstančiai")
|
|
21
|
+
* * Form 3 (many): all other numbers (e.g., "tūkstančių")
|
|
22
|
+
* - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
|
|
23
|
+
* - Large number handling via thousands[] array with indexed [singular, few, many] forms
|
|
24
|
+
* - Gender-specific number forms for 1 and 2 (masculine/feminine dual forms)
|
|
25
|
+
*
|
|
26
|
+
* Features:
|
|
27
|
+
* - Dual gender forms (vienas/viena, du/dvi, keturi/keturios)
|
|
28
|
+
* - Complex declension patterns for large numbers
|
|
29
|
+
* - Baltic language characteristics
|
|
30
|
+
*
|
|
31
|
+
* Inherits from SlavicLanguage as Lithuanian uses similar pluralization.
|
|
32
|
+
*/
|
|
33
|
+
export class Lithuanian extends SlavicLanguage {
|
|
34
|
+
negativeWord = 'minus'
|
|
35
|
+
decimalSeparatorWord = 'kablelis'
|
|
36
|
+
zeroWord = 'nulis'
|
|
37
|
+
ones = {
|
|
38
|
+
1: 'vienas',
|
|
39
|
+
2: 'du',
|
|
40
|
+
3: 'trys',
|
|
41
|
+
4: 'keturi',
|
|
42
|
+
5: 'penki',
|
|
43
|
+
6: 'šeši',
|
|
44
|
+
7: 'septyni',
|
|
45
|
+
8: 'aštuoni',
|
|
46
|
+
9: 'devyni'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
onesFeminine = {
|
|
50
|
+
1: 'viena',
|
|
51
|
+
2: 'dvi',
|
|
52
|
+
3: 'trys',
|
|
53
|
+
4: 'keturios',
|
|
54
|
+
5: 'penkios',
|
|
55
|
+
6: 'šešios',
|
|
56
|
+
7: 'septynios',
|
|
57
|
+
8: 'aštuonios',
|
|
58
|
+
9: 'devynios'
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
tens = {
|
|
62
|
+
0: 'dešimt',
|
|
63
|
+
1: 'vienuolika',
|
|
64
|
+
2: 'dvylika',
|
|
65
|
+
3: 'trylika',
|
|
66
|
+
4: 'keturiolika',
|
|
67
|
+
5: 'penkiolika',
|
|
68
|
+
6: 'šešiolika',
|
|
69
|
+
7: 'septyniolika',
|
|
70
|
+
8: 'aštuoniolika',
|
|
71
|
+
9: 'devyniolika'
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
twenties = {
|
|
75
|
+
2: 'dvidešimt',
|
|
76
|
+
3: 'trisdešimt',
|
|
77
|
+
4: 'keturiasdešimt',
|
|
78
|
+
5: 'penkiasdešimt',
|
|
79
|
+
6: 'šešiasdešimt',
|
|
80
|
+
7: 'septyniasdešimt',
|
|
81
|
+
8: 'aštuoniasdešimt',
|
|
82
|
+
9: 'devyniasdešimt'
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
hundreds = ['šimtas', 'šimtai']
|
|
86
|
+
|
|
87
|
+
thousands = {
|
|
88
|
+
1: ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
|
|
89
|
+
2: ['milijonas', 'milijonai', 'milijonų'],
|
|
90
|
+
3: ['milijardas', 'milijardai', 'milijardų'],
|
|
91
|
+
4: ['trilijonas', 'trilijonai', 'trilijonų'],
|
|
92
|
+
5: ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
|
|
93
|
+
6: ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
|
|
94
|
+
7: ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
|
|
95
|
+
8: ['septilijonas', 'septilijonai', 'septilijonų'],
|
|
96
|
+
9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
|
|
97
|
+
10: ['naintilijonas', 'naintilijonai', 'naintilijonų']
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
pluralize (n, forms) {
|
|
101
|
+
if (n === 0n) {
|
|
102
|
+
return forms[2]
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const [n1, n2] = this.getDigits(n)
|
|
106
|
+
|
|
107
|
+
if (n2 === 1n || n1 === 0n) {
|
|
108
|
+
return forms[2]
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (n1 === 1n) {
|
|
112
|
+
return forms[0]
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return forms[1]
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
convertWholePart (number) {
|
|
119
|
+
if (number === 0n) {
|
|
120
|
+
return this.zeroWord
|
|
121
|
+
}
|
|
122
|
+
const words = []
|
|
123
|
+
const chunks = this.splitByX(number.toString(), 3)
|
|
124
|
+
let index = chunks.length
|
|
125
|
+
for (const x of chunks) {
|
|
126
|
+
index = index - 1
|
|
127
|
+
if (x === 0n) {
|
|
128
|
+
continue
|
|
129
|
+
}
|
|
130
|
+
const [n1, n2, n3] = this.getDigits(x)
|
|
131
|
+
if (n3 > 0n) {
|
|
132
|
+
words.push(this.ones[n3])
|
|
133
|
+
if (n3 > 1n) {
|
|
134
|
+
words.push(this.hundreds[1])
|
|
135
|
+
} else {
|
|
136
|
+
words.push(this.hundreds[0])
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (n2 > 1n) {
|
|
140
|
+
words.push(this.twenties[n2])
|
|
141
|
+
}
|
|
142
|
+
if (n2 === 1n) {
|
|
143
|
+
words.push(this.tens[n1])
|
|
144
|
+
} else if (n1 > 0n) {
|
|
145
|
+
if ((index === 1 || (this.feminine && index === 0)) && number < 1000n) {
|
|
146
|
+
words.push(this.onesFeminine[n1])
|
|
147
|
+
} else {
|
|
148
|
+
words.push(this.ones[n1])
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (index > 0) {
|
|
152
|
+
words.push(this.pluralize(x, this.thousands[index]))
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return words.join(' ')
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Converts a number to Lithuanian cardinal (written) form.
|
|
161
|
+
*
|
|
162
|
+
* @param {number|string|bigint} value The number to convert.
|
|
163
|
+
* @param {Object} [options={}] Configuration options.
|
|
164
|
+
* @param {boolean} [options.feminine=false] Use feminine forms for numbers.
|
|
165
|
+
* @returns {string} The number expressed in Lithuanian words.
|
|
166
|
+
* @throws {TypeError} If value is NaN or invalid type.
|
|
167
|
+
* @throws {Error} If value is an invalid number string.
|
|
168
|
+
*/
|
|
169
|
+
export default function convertToWords (value, options = {}) {
|
|
170
|
+
return new Lithuanian(options).convertToWords(value)
|
|
171
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import SlavicLanguage from '../classes/slavic-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {Object} SlavicOptions
|
|
5
|
+
* @property {boolean} [feminine=false] Use feminine forms for numbers.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Latvian language converter.
|
|
10
|
+
*
|
|
11
|
+
* Implements Latvian number words using the Slavic language pattern:
|
|
12
|
+
* - Latvian number words (viens, divi, trīs, četri, pieci...)
|
|
13
|
+
* - Latvian-specific pluralization patterns
|
|
14
|
+
* - Baltic grammatical structure
|
|
15
|
+
* - Simplified gender handling compared to Lithuanian
|
|
16
|
+
*
|
|
17
|
+
* Key Features:
|
|
18
|
+
* - Three-form pluralization system shared across Slavic/Baltic languages
|
|
19
|
+
* * Form 1 (singular): 1 (e.g., "tūkstotis")
|
|
20
|
+
* * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstoši")
|
|
21
|
+
* * Form 3 (many): all other numbers (e.g., "tūkstošu")
|
|
22
|
+
* - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
|
|
23
|
+
* - Large number handling via thousands[] array with indexed [singular, few, many] forms
|
|
24
|
+
*
|
|
25
|
+
* Features:
|
|
26
|
+
* - Latvian diacritical marks (ī, ā, ē, ū, etc.)
|
|
27
|
+
* - Three-form pluralization (adapted for Latvian)
|
|
28
|
+
* - Baltic number naming conventions
|
|
29
|
+
* - Compound number formation (divdesmit, trīsdesmit)
|
|
30
|
+
*
|
|
31
|
+
* Inherits from SlavicLanguage for pluralization algorithms.
|
|
32
|
+
*/
|
|
33
|
+
export class Latvian extends SlavicLanguage {
|
|
34
|
+
negativeWord = 'mīnus'
|
|
35
|
+
decimalSeparatorWord = 'komats'
|
|
36
|
+
zeroWord = 'nulle'
|
|
37
|
+
ones = {
|
|
38
|
+
1: 'viens',
|
|
39
|
+
2: 'divi',
|
|
40
|
+
3: 'trīs',
|
|
41
|
+
4: 'četri',
|
|
42
|
+
5: 'pieci',
|
|
43
|
+
6: 'seši',
|
|
44
|
+
7: 'septiņi',
|
|
45
|
+
8: 'astoņi',
|
|
46
|
+
9: 'deviņi'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
tens = {
|
|
50
|
+
0: 'desmit',
|
|
51
|
+
1: 'vienpadsmit',
|
|
52
|
+
2: 'divpadsmit',
|
|
53
|
+
3: 'trīspadsmit',
|
|
54
|
+
4: 'četrpadsmit',
|
|
55
|
+
5: 'piecpadsmit',
|
|
56
|
+
6: 'sešpadsmit',
|
|
57
|
+
7: 'septiņpadsmit',
|
|
58
|
+
8: 'astoņpadsmit',
|
|
59
|
+
9: 'deviņpadsmit'
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
twenties = {
|
|
63
|
+
2: 'divdesmit',
|
|
64
|
+
3: 'trīsdesmit',
|
|
65
|
+
4: 'četrdesmit',
|
|
66
|
+
5: 'piecdesmit',
|
|
67
|
+
6: 'sešdesmit',
|
|
68
|
+
7: 'septiņdesmit',
|
|
69
|
+
8: 'astoņdesmit',
|
|
70
|
+
9: 'deviņdesmit'
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
hundreds = ['simts', 'simti', 'simtu']
|
|
74
|
+
|
|
75
|
+
thousands = {
|
|
76
|
+
1: ['tūkstotis', 'tūkstoši', 'tūkstošu'],
|
|
77
|
+
2: ['miljons', 'miljoni', 'miljonu'],
|
|
78
|
+
3: ['miljards', 'miljardi', 'miljardu'],
|
|
79
|
+
4: ['triljons', 'triljoni', 'triljonu'],
|
|
80
|
+
5: ['kvadriljons', 'kvadriljoni', 'kvadriljonu'],
|
|
81
|
+
6: ['kvintiljons', 'kvintiljoni', 'kvintiljonu'],
|
|
82
|
+
7: ['sikstiljons', 'sikstiljoni', 'sikstiljonu'],
|
|
83
|
+
8: ['septiljons', 'septiljoni', 'septiljonu'],
|
|
84
|
+
9: ['oktiljons', 'oktiljoni', 'oktiljonu'],
|
|
85
|
+
10: ['nontiljons', 'nontiljoni', 'nontiljonu']
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
pluralize (n, forms) {
|
|
89
|
+
if (n === 0n) {
|
|
90
|
+
return forms[2]
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const lastDigit = n % 10n
|
|
94
|
+
const lastTwoDigits = n % 100n
|
|
95
|
+
|
|
96
|
+
if (lastDigit === 1n && lastTwoDigits !== 11n) {
|
|
97
|
+
return forms[0]
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return forms[1]
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
convertWholePart (number) {
|
|
104
|
+
if (number === 0n) {
|
|
105
|
+
return this.zeroWord
|
|
106
|
+
}
|
|
107
|
+
const words = []
|
|
108
|
+
const chunks = this.splitByX(number.toString(), 3)
|
|
109
|
+
let index = chunks.length
|
|
110
|
+
for (const x of chunks) {
|
|
111
|
+
index = index - 1
|
|
112
|
+
if (x === 0n) {
|
|
113
|
+
continue
|
|
114
|
+
}
|
|
115
|
+
const [n1, n2, n3] = this.getDigits(x)
|
|
116
|
+
if (n3 > 0n) {
|
|
117
|
+
if (n3 === 1n && n2 === 0n && n1 > 0n) {
|
|
118
|
+
words.push(this.hundreds[2])
|
|
119
|
+
} else if (n3 > 1n) {
|
|
120
|
+
words.push(this.ones[n3], this.hundreds[1])
|
|
121
|
+
} else {
|
|
122
|
+
words.push(this.hundreds[0])
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (n2 > 1n) {
|
|
126
|
+
words.push(this.twenties[n2])
|
|
127
|
+
}
|
|
128
|
+
if (n2 === 1n) {
|
|
129
|
+
words.push(this.tens[n1])
|
|
130
|
+
} else if (n1 > 0n && !(index > 0 && x === 1n)) {
|
|
131
|
+
words.push(this.ones[n1])
|
|
132
|
+
}
|
|
133
|
+
if (index > 0) {
|
|
134
|
+
words.push(this.pluralize(x, this.thousands[index]))
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return words.join(' ')
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Converts a number to Latvian cardinal (written) form.
|
|
143
|
+
*
|
|
144
|
+
* @param {number|string|bigint} value The number to convert.
|
|
145
|
+
* @param {Object} [options={}] Configuration options.
|
|
146
|
+
* @param {boolean} [options.feminine=false] Use feminine forms for numbers.
|
|
147
|
+
* @returns {string} The number expressed in Latvian words.
|
|
148
|
+
* @throws {TypeError} If value is NaN or invalid type.
|
|
149
|
+
* @throws {Error} If value is an invalid number string.
|
|
150
|
+
*/
|
|
151
|
+
export default function convertToWords (value, options = {}) {
|
|
152
|
+
return new Latvian(options).convertToWords(value)
|
|
153
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marathi language implementation for n2words
|
|
3
|
+
*
|
|
4
|
+
* Marathi uses Indian-style number grouping (3 digits, then 2-2 from right).
|
|
5
|
+
* Numbers: शून्य (0), एक (1), दोन (2), तीन (3), चार (4), पाच (5)...
|
|
6
|
+
*
|
|
7
|
+
* @module lib/languages/mr
|
|
8
|
+
* @example
|
|
9
|
+
* import mr from './lib/languages/mr.js'
|
|
10
|
+
* mr(42) // 'बेचाळीस'
|
|
11
|
+
* mr(1000) // 'एक हजार'
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import SouthAsianLanguage from '../classes/south-asian-language.js'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Marathi language implementation
|
|
18
|
+
* Extends SouthAsianLanguage for Indian-style grouping
|
|
19
|
+
*/
|
|
20
|
+
class MarathiLanguage extends SouthAsianLanguage {
|
|
21
|
+
negativeWord = 'उणे'
|
|
22
|
+
decimalSeparatorWord = 'दशांश'
|
|
23
|
+
zeroWord = 'शून्य'
|
|
24
|
+
hundredWord = 'शंभर'
|
|
25
|
+
convertDecimalsPerDigit = true
|
|
26
|
+
|
|
27
|
+
belowHundred = [
|
|
28
|
+
'शून्य',
|
|
29
|
+
'एक',
|
|
30
|
+
'दोन',
|
|
31
|
+
'तीन',
|
|
32
|
+
'चार',
|
|
33
|
+
'पाच',
|
|
34
|
+
'सहा',
|
|
35
|
+
'सात',
|
|
36
|
+
'आठ',
|
|
37
|
+
'नऊ',
|
|
38
|
+
'दहा',
|
|
39
|
+
'अकरा',
|
|
40
|
+
'बारा',
|
|
41
|
+
'तेरा',
|
|
42
|
+
'चौदा',
|
|
43
|
+
'पंधरा',
|
|
44
|
+
'सोळा',
|
|
45
|
+
'सतरा',
|
|
46
|
+
'अठरा',
|
|
47
|
+
'एकोणीस',
|
|
48
|
+
'वीस',
|
|
49
|
+
'एकवीस',
|
|
50
|
+
'बावीस',
|
|
51
|
+
'तेवीस',
|
|
52
|
+
'चोवीस',
|
|
53
|
+
'पंचवीस',
|
|
54
|
+
'सव्वीस',
|
|
55
|
+
'सत्तावीस',
|
|
56
|
+
'अठ्ठावीस',
|
|
57
|
+
'एकोणतीस',
|
|
58
|
+
'तीस',
|
|
59
|
+
'एकतीस',
|
|
60
|
+
'बत्तीस',
|
|
61
|
+
'तेहेतीस',
|
|
62
|
+
'चौतीस',
|
|
63
|
+
'पस्तीस',
|
|
64
|
+
'छत्तीस',
|
|
65
|
+
'सदतीस',
|
|
66
|
+
'अडतीस',
|
|
67
|
+
'एकोणचाळीस',
|
|
68
|
+
'चाळीस',
|
|
69
|
+
'एकेचाळीस',
|
|
70
|
+
'बेचाळीस',
|
|
71
|
+
'त्रेचाळीस',
|
|
72
|
+
'चव्वेचाळीस',
|
|
73
|
+
'पंचेचाळीस',
|
|
74
|
+
'सेहेचाळीस',
|
|
75
|
+
'सत्तेचाळीस',
|
|
76
|
+
'अठ्ठेचाळीस',
|
|
77
|
+
'एकोणपन्नास',
|
|
78
|
+
'पन्नास',
|
|
79
|
+
'एक्काव्वन',
|
|
80
|
+
'बावन्न',
|
|
81
|
+
'त्रेपन्न',
|
|
82
|
+
'चोपन्न',
|
|
83
|
+
'पंचाव्वन',
|
|
84
|
+
'छप्पन्न',
|
|
85
|
+
'सत्तावन्न',
|
|
86
|
+
'अठ्ठावन्न',
|
|
87
|
+
'एकोणसाठ',
|
|
88
|
+
'साठ',
|
|
89
|
+
'एकसष्ठ',
|
|
90
|
+
'बासष्ठ',
|
|
91
|
+
'त्रेसष्ठ',
|
|
92
|
+
'चौसष्ठ',
|
|
93
|
+
'पासष्ठ',
|
|
94
|
+
'सहासष्ठ',
|
|
95
|
+
'सदुसष्ठ',
|
|
96
|
+
'अडुसष्ठ',
|
|
97
|
+
'एकोणसत्तर',
|
|
98
|
+
'सत्तर',
|
|
99
|
+
'एकाहत्तर',
|
|
100
|
+
'बाहत्तर',
|
|
101
|
+
'त्र्याहत्तर',
|
|
102
|
+
'चौऱ्याहत्तर',
|
|
103
|
+
'पंच्याहत्तर',
|
|
104
|
+
'शहात्तर',
|
|
105
|
+
'सत्याहत्तर',
|
|
106
|
+
'अठ्ठ्याहत्तर',
|
|
107
|
+
'एकोणऐंशी',
|
|
108
|
+
'ऐंशी',
|
|
109
|
+
'एक्याऐंशी',
|
|
110
|
+
'ब्याऐंशी',
|
|
111
|
+
'त्र्याऐंशी',
|
|
112
|
+
'चौऱ्याऐंशी',
|
|
113
|
+
'पंच्याऐंशी',
|
|
114
|
+
'शहाऐंशी',
|
|
115
|
+
'सत्याऐंशी',
|
|
116
|
+
'अठ्ठ्याऐंशी',
|
|
117
|
+
'एकोणनव्वद',
|
|
118
|
+
'नव्वद',
|
|
119
|
+
'एक्याण्णव',
|
|
120
|
+
'ब्याण्णव',
|
|
121
|
+
'त्र्याण्णव',
|
|
122
|
+
'चौऱ्याण्णव',
|
|
123
|
+
'पंच्याण्णव',
|
|
124
|
+
'शहाण्णव',
|
|
125
|
+
'सत्याण्णव',
|
|
126
|
+
'अठ्ठ्याण्णव',
|
|
127
|
+
'नव्याण्णव'
|
|
128
|
+
]
|
|
129
|
+
|
|
130
|
+
scaleWords = [
|
|
131
|
+
'',
|
|
132
|
+
'हजार',
|
|
133
|
+
'लाख',
|
|
134
|
+
'कोटी',
|
|
135
|
+
'अब्ज',
|
|
136
|
+
'खर्व',
|
|
137
|
+
'निखर्व',
|
|
138
|
+
'महापद्म',
|
|
139
|
+
'शंकू'
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Convert a number to Marathi words
|
|
145
|
+
*
|
|
146
|
+
* @param {number|string|bigint} value - The number to convert
|
|
147
|
+
* @param {Object} [options={}] - Conversion options
|
|
148
|
+
* @returns {string} The Marathi word representation
|
|
149
|
+
* @example
|
|
150
|
+
* convertToWords(42) // 'बेचाळीस'
|
|
151
|
+
* convertToWords(1000) // 'एक हजार'
|
|
152
|
+
* convertToWords(100000) // 'एक लाख'
|
|
153
|
+
*/
|
|
154
|
+
export default function convertToWords (value, options = {}) {
|
|
155
|
+
return new MarathiLanguage(options).convertToWords(value)
|
|
156
|
+
}
|