n2words 1.23.1 → 2.0.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 +317 -59
- package/dist/ArabicConverter.js +3 -0
- package/dist/ArabicConverter.js.map +1 -0
- package/dist/AzerbaijaniConverter.js +3 -0
- package/dist/AzerbaijaniConverter.js.map +1 -0
- package/dist/BanglaConverter.js +3 -0
- package/dist/BanglaConverter.js.map +1 -0
- package/dist/BiblicalHebrewConverter.js +3 -0
- package/dist/BiblicalHebrewConverter.js.map +1 -0
- package/dist/CroatianConverter.js +3 -0
- package/dist/CroatianConverter.js.map +1 -0
- package/dist/CzechConverter.js +3 -0
- package/dist/CzechConverter.js.map +1 -0
- package/dist/DanishConverter.js +3 -0
- package/dist/DanishConverter.js.map +1 -0
- package/dist/DutchConverter.js +3 -0
- package/dist/DutchConverter.js.map +1 -0
- package/dist/EnglishConverter.js +3 -0
- package/dist/EnglishConverter.js.map +1 -0
- package/dist/FilipinoConverter.js +3 -0
- package/dist/FilipinoConverter.js.map +1 -0
- package/dist/FrenchBelgiumConverter.js +3 -0
- package/dist/FrenchBelgiumConverter.js.map +1 -0
- package/dist/FrenchConverter.js +3 -0
- package/dist/FrenchConverter.js.map +1 -0
- package/dist/GermanConverter.js +3 -0
- package/dist/GermanConverter.js.map +1 -0
- package/dist/GreekConverter.js +3 -0
- package/dist/GreekConverter.js.map +1 -0
- package/dist/GujaratiConverter.js +3 -0
- package/dist/GujaratiConverter.js.map +1 -0
- package/dist/HebrewConverter.js +3 -0
- package/dist/HebrewConverter.js.map +1 -0
- package/dist/HindiConverter.js +3 -0
- package/dist/HindiConverter.js.map +1 -0
- package/dist/HungarianConverter.js +3 -0
- package/dist/HungarianConverter.js.map +1 -0
- package/dist/IndonesianConverter.js +3 -0
- package/dist/IndonesianConverter.js.map +1 -0
- package/dist/ItalianConverter.js +3 -0
- package/dist/ItalianConverter.js.map +1 -0
- package/dist/JapaneseConverter.js +3 -0
- package/dist/JapaneseConverter.js.map +1 -0
- package/dist/KannadaConverter.js +3 -0
- package/dist/KannadaConverter.js.map +1 -0
- package/dist/KoreanConverter.js +3 -0
- package/dist/KoreanConverter.js.map +1 -0
- package/dist/LatvianConverter.js +3 -0
- package/dist/LatvianConverter.js.map +1 -0
- package/dist/LithuanianConverter.js +3 -0
- package/dist/LithuanianConverter.js.map +1 -0
- package/dist/MalayConverter.js +3 -0
- package/dist/MalayConverter.js.map +1 -0
- package/dist/MarathiConverter.js +3 -0
- package/dist/MarathiConverter.js.map +1 -0
- package/dist/NorwegianBokmalConverter.js +3 -0
- package/dist/NorwegianBokmalConverter.js.map +1 -0
- package/dist/PersianConverter.js +3 -0
- package/dist/PersianConverter.js.map +1 -0
- package/dist/PolishConverter.js +3 -0
- package/dist/PolishConverter.js.map +1 -0
- package/dist/PortugueseConverter.js +3 -0
- package/dist/PortugueseConverter.js.map +1 -0
- package/dist/PunjabiConverter.js +3 -0
- package/dist/PunjabiConverter.js.map +1 -0
- package/dist/RomanianConverter.js +3 -0
- package/dist/RomanianConverter.js.map +1 -0
- package/dist/RussianConverter.js +3 -0
- package/dist/RussianConverter.js.map +1 -0
- package/dist/SerbianCyrillicConverter.js +3 -0
- package/dist/SerbianCyrillicConverter.js.map +1 -0
- package/dist/SerbianLatinConverter.js +3 -0
- package/dist/SerbianLatinConverter.js.map +1 -0
- package/dist/SimplifiedChineseConverter.js +3 -0
- package/dist/SimplifiedChineseConverter.js.map +1 -0
- package/dist/SpanishConverter.js +3 -0
- package/dist/SpanishConverter.js.map +1 -0
- package/dist/SwahiliConverter.js +3 -0
- package/dist/SwahiliConverter.js.map +1 -0
- package/dist/SwedishConverter.js +3 -0
- package/dist/SwedishConverter.js.map +1 -0
- package/dist/TamilConverter.js +3 -0
- package/dist/TamilConverter.js.map +1 -0
- package/dist/TeluguConverter.js +3 -0
- package/dist/TeluguConverter.js.map +1 -0
- package/dist/ThaiConverter.js +3 -0
- package/dist/ThaiConverter.js.map +1 -0
- package/dist/TraditionalChineseConverter.js +3 -0
- package/dist/TraditionalChineseConverter.js.map +1 -0
- package/dist/TurkishConverter.js +3 -0
- package/dist/TurkishConverter.js.map +1 -0
- package/dist/UkrainianConverter.js +3 -0
- package/dist/UkrainianConverter.js.map +1 -0
- package/dist/UrduConverter.js +3 -0
- package/dist/UrduConverter.js.map +1 -0
- package/dist/VietnameseConverter.js +3 -0
- package/dist/VietnameseConverter.js.map +1 -0
- package/dist/n2words.js +3 -2
- package/dist/n2words.js.map +1 -1
- package/lib/classes/abstract-language.d.ts +158 -34
- package/lib/classes/abstract-language.js +223 -115
- package/lib/classes/greedy-scale-language.d.ts +109 -0
- package/lib/classes/greedy-scale-language.js +201 -0
- package/lib/classes/slavic-language.d.ts +148 -0
- package/lib/classes/slavic-language.js +281 -0
- package/lib/classes/south-asian-language.d.ts +70 -0
- package/lib/classes/south-asian-language.js +154 -0
- package/lib/classes/turkic-language.d.ts +26 -0
- package/lib/classes/turkic-language.js +59 -0
- package/lib/languages/ar.d.ts +30 -0
- package/lib/languages/ar.js +159 -0
- package/lib/languages/az.d.ts +12 -0
- package/lib/languages/az.js +42 -0
- package/lib/languages/bn.d.ts +11 -0
- package/lib/languages/bn.js +131 -0
- package/lib/languages/cs.d.ts +88 -0
- package/lib/languages/cs.js +143 -0
- package/lib/languages/da.d.ts +15 -0
- package/lib/languages/da.js +120 -0
- package/lib/languages/de.d.ts +14 -0
- package/lib/languages/de.js +101 -0
- package/lib/languages/el.d.ts +14 -0
- package/lib/languages/el.js +90 -0
- package/lib/languages/en.d.ts +16 -0
- package/lib/languages/en.js +86 -0
- package/lib/languages/es.d.ts +15 -0
- package/lib/languages/es.js +121 -0
- package/lib/languages/fa.d.ts +47 -0
- package/lib/languages/fa.js +144 -0
- package/lib/languages/fil.d.ts +16 -0
- package/lib/languages/fil.js +121 -0
- package/lib/languages/fr-BE.d.ts +11 -0
- package/lib/languages/fr-BE.js +25 -0
- package/lib/languages/fr.d.ts +15 -0
- package/lib/languages/fr.js +106 -0
- package/lib/languages/gu.d.ts +11 -0
- package/lib/languages/gu.js +132 -0
- package/lib/languages/hbo.d.ts +113 -0
- package/lib/languages/hbo.js +251 -0
- package/lib/languages/he.d.ts +80 -0
- package/lib/languages/he.js +206 -0
- package/lib/languages/hi.d.ts +11 -0
- package/lib/languages/hi.js +131 -0
- package/lib/languages/hr.d.ts +80 -0
- package/lib/languages/hr.js +113 -0
- package/lib/languages/hu.d.ts +22 -0
- package/lib/languages/hu.js +137 -0
- package/lib/languages/id.d.ts +37 -0
- package/lib/languages/id.js +159 -0
- package/lib/languages/it.d.ts +37 -0
- package/lib/languages/it.js +132 -0
- package/lib/languages/ja.d.ts +17 -0
- package/lib/languages/ja.js +137 -0
- package/lib/languages/kn.d.ts +11 -0
- package/lib/languages/kn.js +42 -0
- package/lib/languages/ko.d.ts +14 -0
- package/lib/languages/ko.js +55 -0
- package/lib/{i18n/pl.d.ts → languages/lt.d.ts} +18 -15
- package/lib/languages/lt.js +136 -0
- package/lib/{i18n/lt.d.ts → languages/lv.d.ts} +16 -14
- package/lib/languages/lv.js +130 -0
- package/lib/languages/mr.d.ts +11 -0
- package/lib/languages/mr.js +132 -0
- package/lib/languages/ms.d.ts +31 -0
- package/lib/languages/ms.js +150 -0
- package/lib/languages/nb.d.ts +12 -0
- package/lib/languages/nb.js +100 -0
- package/lib/languages/nl.d.ts +16 -0
- package/lib/languages/nl.js +155 -0
- package/lib/languages/pa.d.ts +11 -0
- package/lib/languages/pa.js +131 -0
- package/lib/{i18n/uk.d.ts → languages/pl.d.ts} +16 -14
- package/lib/languages/pl.js +110 -0
- package/lib/languages/pt.d.ts +29 -0
- package/lib/languages/pt.js +112 -0
- package/lib/languages/ro.d.ts +158 -0
- package/lib/languages/ro.js +273 -0
- package/lib/languages/ru.d.ts +85 -0
- package/lib/languages/ru.js +96 -0
- package/lib/languages/sr-Cyrl.d.ts +80 -0
- package/lib/languages/sr-Cyrl.js +113 -0
- package/lib/{i18n/cz.d.ts → languages/sr-Latn.d.ts} +26 -14
- package/lib/languages/sr-Latn.js +113 -0
- package/lib/languages/sv.d.ts +14 -0
- package/lib/languages/sv.js +90 -0
- package/lib/languages/sw.d.ts +39 -0
- package/lib/languages/sw.js +126 -0
- package/lib/languages/ta.d.ts +20 -0
- package/lib/languages/ta.js +226 -0
- package/lib/languages/te.d.ts +22 -0
- package/lib/languages/te.js +219 -0
- package/lib/languages/th.d.ts +17 -0
- package/lib/languages/th.js +117 -0
- package/lib/languages/tr.d.ts +12 -0
- package/lib/languages/tr.js +56 -0
- package/lib/languages/uk.d.ts +85 -0
- package/lib/{i18n → languages}/uk.js +33 -32
- package/lib/languages/ur.d.ts +11 -0
- package/lib/languages/ur.js +131 -0
- package/lib/{i18n → languages}/vi.d.ts +15 -13
- package/lib/languages/vi.js +147 -0
- package/lib/languages/zh-Hans.d.ts +21 -0
- package/lib/languages/zh-Hans.js +111 -0
- package/lib/languages/zh-Hant.d.ts +21 -0
- package/lib/languages/zh-Hant.js +111 -0
- package/lib/n2words.d.ts +207 -7
- package/lib/n2words.js +535 -81
- package/package.json +126 -79
- 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/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.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.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.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/vi.js +0 -151
- package/lib/i18n/zh.d.ts +0 -18
- package/lib/i18n/zh.js +0 -78
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ukrainian language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Three-form pluralization (one/few/many)
|
|
6
|
+
* - Gender agreement (один/одна, два/дві)
|
|
7
|
+
* - Ukrainian orthography and phonology
|
|
8
|
+
*/
|
|
9
|
+
export class Ukrainian extends SlavicLanguage {
|
|
10
|
+
onesWords: {
|
|
11
|
+
1: string;
|
|
12
|
+
2: string;
|
|
13
|
+
3: string;
|
|
14
|
+
4: string;
|
|
15
|
+
5: string;
|
|
16
|
+
6: string;
|
|
17
|
+
7: string;
|
|
18
|
+
8: string;
|
|
19
|
+
9: string;
|
|
20
|
+
};
|
|
21
|
+
onesFeminineWords: {
|
|
22
|
+
1: string;
|
|
23
|
+
2: string;
|
|
24
|
+
3: string;
|
|
25
|
+
4: string;
|
|
26
|
+
5: string;
|
|
27
|
+
6: string;
|
|
28
|
+
7: string;
|
|
29
|
+
8: string;
|
|
30
|
+
9: string;
|
|
31
|
+
};
|
|
32
|
+
teensWords: {
|
|
33
|
+
0: string;
|
|
34
|
+
1: string;
|
|
35
|
+
2: string;
|
|
36
|
+
3: string;
|
|
37
|
+
4: string;
|
|
38
|
+
5: string;
|
|
39
|
+
6: string;
|
|
40
|
+
7: string;
|
|
41
|
+
8: string;
|
|
42
|
+
9: string;
|
|
43
|
+
};
|
|
44
|
+
twentiesWords: {
|
|
45
|
+
2: string;
|
|
46
|
+
3: string;
|
|
47
|
+
4: string;
|
|
48
|
+
5: string;
|
|
49
|
+
6: string;
|
|
50
|
+
7: string;
|
|
51
|
+
8: string;
|
|
52
|
+
9: string;
|
|
53
|
+
};
|
|
54
|
+
hundredsWords: {
|
|
55
|
+
1: string;
|
|
56
|
+
2: string;
|
|
57
|
+
3: string;
|
|
58
|
+
4: string;
|
|
59
|
+
5: string;
|
|
60
|
+
6: string;
|
|
61
|
+
7: string;
|
|
62
|
+
8: string;
|
|
63
|
+
9: string;
|
|
64
|
+
};
|
|
65
|
+
pluralForms: {
|
|
66
|
+
1: string[];
|
|
67
|
+
2: string[];
|
|
68
|
+
3: string[];
|
|
69
|
+
4: string[];
|
|
70
|
+
5: string[];
|
|
71
|
+
6: string[];
|
|
72
|
+
7: string[];
|
|
73
|
+
8: string[];
|
|
74
|
+
9: string[];
|
|
75
|
+
10: string[];
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Ukrainian thousands (тисяча) are feminine, requiring одна/двi forms.
|
|
79
|
+
* Other scales (million, billion, etc.) are masculine.
|
|
80
|
+
*/
|
|
81
|
+
scaleGenders: {
|
|
82
|
+
1: boolean;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
import { SlavicLanguage } from '../classes/slavic-language.js';
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SlavicLanguage } from '../classes/slavic-language.js'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Ukrainian language converter.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Three-form pluralization (one/few/many)
|
|
8
|
+
* - Gender agreement (один/одна, два/дві)
|
|
9
|
+
* - Ukrainian orthography and phonology
|
|
10
|
+
*/
|
|
11
|
+
export class Ukrainian extends SlavicLanguage {
|
|
12
|
+
negativeWord = 'мiнус'
|
|
13
|
+
decimalSeparatorWord = 'кома'
|
|
14
|
+
zeroWord = 'нуль'
|
|
15
|
+
|
|
16
|
+
onesWords = {
|
|
5
17
|
1: 'один',
|
|
6
18
|
2: 'два',
|
|
7
19
|
3: 'три',
|
|
@@ -11,9 +23,9 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
11
23
|
7: 'сiм',
|
|
12
24
|
8: 'вiсiм',
|
|
13
25
|
9: 'дев\'ять'
|
|
14
|
-
}
|
|
26
|
+
}
|
|
15
27
|
|
|
16
|
-
|
|
28
|
+
onesFeminineWords = {
|
|
17
29
|
1: 'одна',
|
|
18
30
|
2: 'двi',
|
|
19
31
|
3: 'три',
|
|
@@ -23,9 +35,9 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
23
35
|
7: 'сiм',
|
|
24
36
|
8: 'вiсiм',
|
|
25
37
|
9: 'дев\'ять'
|
|
26
|
-
}
|
|
38
|
+
}
|
|
27
39
|
|
|
28
|
-
|
|
40
|
+
teensWords = {
|
|
29
41
|
0: 'десять',
|
|
30
42
|
1: 'одинадцять',
|
|
31
43
|
2: 'дванадцять',
|
|
@@ -36,9 +48,9 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
36
48
|
7: 'сiмнадцять',
|
|
37
49
|
8: 'вiсiмнадцять',
|
|
38
50
|
9: 'дев\'ятнадцять'
|
|
39
|
-
}
|
|
51
|
+
}
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
twentiesWords = {
|
|
42
54
|
2: 'двадцять',
|
|
43
55
|
3: 'тридцять',
|
|
44
56
|
4: 'сорок',
|
|
@@ -47,9 +59,9 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
47
59
|
7: 'сiмдесят',
|
|
48
60
|
8: 'вiсiмдесят',
|
|
49
61
|
9: 'дев\'яносто'
|
|
50
|
-
}
|
|
62
|
+
}
|
|
51
63
|
|
|
52
|
-
|
|
64
|
+
hundredsWords = {
|
|
53
65
|
1: 'сто',
|
|
54
66
|
2: 'двiстi',
|
|
55
67
|
3: 'триста',
|
|
@@ -59,9 +71,9 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
59
71
|
7: 'сiмсот',
|
|
60
72
|
8: 'вiсiмсот',
|
|
61
73
|
9: 'дев\'ятсот'
|
|
62
|
-
}
|
|
74
|
+
}
|
|
63
75
|
|
|
64
|
-
|
|
76
|
+
pluralForms = {
|
|
65
77
|
1: ['тисяча', 'тисячi', 'тисяч'], // 10^ 3
|
|
66
78
|
2: ['мiльйон', 'мiльйони', 'мiльйонiв'], // 10^ 6
|
|
67
79
|
3: ['мiльярд', 'мiльярди', 'мiльярдiв'], // 10^ 9
|
|
@@ -71,25 +83,14 @@ export class N2WordsUK extends N2WordsRU {
|
|
|
71
83
|
7: ['секстильйон', 'секстильйони', 'секстильйонiв'], // 10^ 21
|
|
72
84
|
8: ['септильйон', 'септильйони', 'септильйонiв'], // 10^ 24
|
|
73
85
|
9: ['октильйон', 'октильйони', 'октильйонiв'], // 10^ 27
|
|
74
|
-
10: ['нонiльйон', 'нонiльйони', 'нонiльйонiв']
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
constructor(options) {
|
|
78
|
-
super(Object.assign({
|
|
79
|
-
negativeWord: 'мiнус',
|
|
80
|
-
separatorWord: 'кома',
|
|
81
|
-
zero: 'нуль'
|
|
82
|
-
}, options));
|
|
86
|
+
10: ['нонiльйон', 'нонiльйони', 'нонiльйонiв'] // 10^ 30
|
|
83
87
|
}
|
|
84
|
-
}
|
|
85
88
|
|
|
86
|
-
/**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
export default function floatToCardinal (value, options = {}) {
|
|
94
|
-
return new N2WordsUK(options).floatToCardinal(value);
|
|
89
|
+
/**
|
|
90
|
+
* Ukrainian thousands (тисяча) are feminine, requiring одна/двi forms.
|
|
91
|
+
* Other scales (million, billion, etc.) are masculine.
|
|
92
|
+
*/
|
|
93
|
+
scaleGenders = {
|
|
94
|
+
1: true // thousands are feminine
|
|
95
|
+
}
|
|
95
96
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Urdu language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Indian numbering system (ہزار, لاکھ, کروڑ)
|
|
6
|
+
* - Urdu script (right-to-left)
|
|
7
|
+
* - Complete word forms for 0-99
|
|
8
|
+
*/
|
|
9
|
+
export class Urdu extends SouthAsianLanguage {
|
|
10
|
+
}
|
|
11
|
+
import { SouthAsianLanguage } from '../classes/south-asian-language.js';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { SouthAsianLanguage } from '../classes/south-asian-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Urdu language converter.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Indian numbering system (ہزار, لاکھ, کروڑ)
|
|
8
|
+
* - Urdu script (right-to-left)
|
|
9
|
+
* - Complete word forms for 0-99
|
|
10
|
+
*/
|
|
11
|
+
export class Urdu extends SouthAsianLanguage {
|
|
12
|
+
negativeWord = 'منفی'
|
|
13
|
+
decimalSeparatorWord = 'اعشاریہ'
|
|
14
|
+
zeroWord = 'صفر'
|
|
15
|
+
hundredWord = 'سو'
|
|
16
|
+
|
|
17
|
+
belowHundredWords = [
|
|
18
|
+
'صفر',
|
|
19
|
+
'ایک',
|
|
20
|
+
'دو',
|
|
21
|
+
'تین',
|
|
22
|
+
'چار',
|
|
23
|
+
'پانچ',
|
|
24
|
+
'چھ',
|
|
25
|
+
'سات',
|
|
26
|
+
'آٹھ',
|
|
27
|
+
'نو',
|
|
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
|
+
scaleWords = [
|
|
121
|
+
'',
|
|
122
|
+
'ہزار',
|
|
123
|
+
'لاکھ',
|
|
124
|
+
'کروڑ',
|
|
125
|
+
'ارب',
|
|
126
|
+
'کھرب',
|
|
127
|
+
'نیل',
|
|
128
|
+
'پدم',
|
|
129
|
+
'شنکھ'
|
|
130
|
+
]
|
|
131
|
+
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Vietnamese language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Special pronunciation rules (lăm for 5, mốt for final 1)
|
|
6
|
+
* - "Lẻ" (odd/extra) when tens place is zero
|
|
7
|
+
* - Vietnamese diacritical marks
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
base: {
|
|
9
|
+
export class Vietnamese extends AbstractLanguage {
|
|
10
|
+
belowTwentyWords: {
|
|
12
11
|
0: string;
|
|
13
12
|
1: string;
|
|
14
13
|
2: string;
|
|
@@ -30,7 +29,7 @@ export class N2WordsID extends AbstractLanguage {
|
|
|
30
29
|
18: string;
|
|
31
30
|
19: string;
|
|
32
31
|
};
|
|
33
|
-
|
|
32
|
+
twentiesWords: {
|
|
34
33
|
20: string;
|
|
35
34
|
30: string;
|
|
36
35
|
40: string;
|
|
@@ -40,7 +39,7 @@ export class N2WordsID extends AbstractLanguage {
|
|
|
40
39
|
80: string;
|
|
41
40
|
90: string;
|
|
42
41
|
};
|
|
43
|
-
|
|
42
|
+
scaleWords: {
|
|
44
43
|
1: string;
|
|
45
44
|
2: string;
|
|
46
45
|
3: string;
|
|
@@ -62,9 +61,12 @@ export class N2WordsID extends AbstractLanguage {
|
|
|
62
61
|
19: string;
|
|
63
62
|
20: string;
|
|
64
63
|
};
|
|
64
|
+
/** Convert numbers less than 100 to Vietnamese words. */
|
|
65
65
|
convertLess100(number: any): any;
|
|
66
|
+
/** Convert numbers less than 1000 to Vietnamese words. */
|
|
66
67
|
convertLess1000(number: any): any;
|
|
68
|
+
/** Convert numbers greater than 1000 to Vietnamese words. */
|
|
67
69
|
convertMore1000(number: any): any;
|
|
68
|
-
|
|
70
|
+
integerToWords(integerPart: any): any;
|
|
69
71
|
}
|
|
70
|
-
import AbstractLanguage from '../classes/abstract-language.js';
|
|
72
|
+
import { AbstractLanguage } from '../classes/abstract-language.js';
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { AbstractLanguage } from '../classes/abstract-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Vietnamese language converter.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Special pronunciation rules (lăm for 5, mốt for final 1)
|
|
8
|
+
* - "Lẻ" (odd/extra) when tens place is zero
|
|
9
|
+
* - Vietnamese diacritical marks
|
|
10
|
+
*/
|
|
11
|
+
export class Vietnamese extends AbstractLanguage {
|
|
12
|
+
negativeWord = 'âm'
|
|
13
|
+
decimalSeparatorWord = 'phẩy'
|
|
14
|
+
zeroWord = 'không'
|
|
15
|
+
|
|
16
|
+
belowTwentyWords = {
|
|
17
|
+
0: 'không',
|
|
18
|
+
1: 'một',
|
|
19
|
+
2: 'hai',
|
|
20
|
+
3: 'ba',
|
|
21
|
+
4: 'bốn',
|
|
22
|
+
5: 'năm',
|
|
23
|
+
6: 'sáu',
|
|
24
|
+
7: 'bảy',
|
|
25
|
+
8: 'tám',
|
|
26
|
+
9: 'chín',
|
|
27
|
+
10: 'mười',
|
|
28
|
+
11: 'mười một',
|
|
29
|
+
12: 'mười hai',
|
|
30
|
+
13: 'mười ba',
|
|
31
|
+
14: 'mười bốn',
|
|
32
|
+
15: 'mười lăm',
|
|
33
|
+
16: 'mười sáu',
|
|
34
|
+
17: 'mười bảy',
|
|
35
|
+
18: 'mười tám',
|
|
36
|
+
19: 'mười chín'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
twentiesWords = {
|
|
40
|
+
20: 'hai mươi',
|
|
41
|
+
30: 'ba mươi',
|
|
42
|
+
40: 'bốn mươi',
|
|
43
|
+
50: 'năm mươi',
|
|
44
|
+
60: 'sáu mươi',
|
|
45
|
+
70: 'bảy mươi',
|
|
46
|
+
80: 'tám mươi',
|
|
47
|
+
90: 'chín mươi'
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
scaleWords = {
|
|
51
|
+
1: 'nghìn', // 10^1
|
|
52
|
+
2: 'triệu', // 10^2
|
|
53
|
+
3: 'tỷ', // 10^3
|
|
54
|
+
4: 'nghìn tỷ',
|
|
55
|
+
5: 'trăm nghìn tỷ',
|
|
56
|
+
6: 'Quintillion',
|
|
57
|
+
7: 'Sextillion',
|
|
58
|
+
8: 'Septillion',
|
|
59
|
+
9: 'Octillion',
|
|
60
|
+
10: 'Nonillion',
|
|
61
|
+
11: 'Decillion',
|
|
62
|
+
12: 'Undecillion',
|
|
63
|
+
13: 'Duodecillion',
|
|
64
|
+
14: 'Tredecillion',
|
|
65
|
+
15: 'Quattuordecillion',
|
|
66
|
+
16: 'Sexdecillion',
|
|
67
|
+
17: 'Septendecillion',
|
|
68
|
+
18: 'Octodecillion',
|
|
69
|
+
19: 'Novemdecillion',
|
|
70
|
+
20: 'Vigintillion'
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Convert numbers less than 100 to Vietnamese words. */
|
|
74
|
+
convertLess100 (number) {
|
|
75
|
+
const unitsPart = number % 10
|
|
76
|
+
const tensPart = number - unitsPart
|
|
77
|
+
const tensPartText = this.twentiesWords[tensPart]
|
|
78
|
+
if (unitsPart === 0) {
|
|
79
|
+
return tensPartText
|
|
80
|
+
}
|
|
81
|
+
const unitsPartText = this.belowTwentyWords[unitsPart]
|
|
82
|
+
let suffix = unitsPartText
|
|
83
|
+
if (unitsPart === 1) {
|
|
84
|
+
suffix = 'mốt'
|
|
85
|
+
}
|
|
86
|
+
if (unitsPart === 5) {
|
|
87
|
+
suffix = 'lăm'
|
|
88
|
+
}
|
|
89
|
+
return tensPartText + ' ' + suffix
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Convert numbers less than 1000 to Vietnamese words. */
|
|
93
|
+
convertLess1000 (number) {
|
|
94
|
+
const words = []
|
|
95
|
+
const tensUnitsPart = number % 100
|
|
96
|
+
const hundredsPart = number - tensUnitsPart
|
|
97
|
+
if (hundredsPart > 0) {
|
|
98
|
+
words.push(this.belowTwentyWords[hundredsPart / 100], 'trăm')
|
|
99
|
+
}
|
|
100
|
+
if (tensUnitsPart > 0 && tensUnitsPart < 10) {
|
|
101
|
+
if (words.length > 0) {
|
|
102
|
+
words.push('lẻ')
|
|
103
|
+
}
|
|
104
|
+
if (tensUnitsPart === 5) {
|
|
105
|
+
words.push('năm')
|
|
106
|
+
} else {
|
|
107
|
+
words.push(this.belowTwentyWords[tensUnitsPart])
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (tensUnitsPart >= 10) {
|
|
111
|
+
words.push(this.integerToWords(tensUnitsPart))
|
|
112
|
+
}
|
|
113
|
+
return words.join(' ')
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Convert numbers greater than 1000 to Vietnamese words. */
|
|
117
|
+
convertMore1000 (number) {
|
|
118
|
+
const words = []
|
|
119
|
+
let division = number / 1000n
|
|
120
|
+
let power = 1
|
|
121
|
+
while (division >= 1000n) {
|
|
122
|
+
division = division / 1000n
|
|
123
|
+
power = power + 1
|
|
124
|
+
}
|
|
125
|
+
const r = number - (division * BigInt(Math.pow(1000, power)))
|
|
126
|
+
words.push(this.integerToWords(division), this.scaleWords[power])
|
|
127
|
+
if (r > 0n) {
|
|
128
|
+
if (r <= 99n) {
|
|
129
|
+
words.push('lẻ')
|
|
130
|
+
}
|
|
131
|
+
words.push(this.integerToWords(r))
|
|
132
|
+
}
|
|
133
|
+
return words.join(' ')
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
integerToWords (integerPart) {
|
|
137
|
+
if (integerPart < 20n) {
|
|
138
|
+
return this.belowTwentyWords[Number(integerPart)]
|
|
139
|
+
} else {
|
|
140
|
+
if (integerPart < 100n) {
|
|
141
|
+
return this.convertLess100(Number(integerPart))
|
|
142
|
+
} else {
|
|
143
|
+
return (integerPart < 1000n ? this.convertLess1000(Number(integerPart)) : this.convertMore1000(integerPart))
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simplified Chinese language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Simplified Chinese characters (简体中文)
|
|
6
|
+
* - No word separators (concatenated format)
|
|
7
|
+
* - Optional formal (financial) vs common numerals
|
|
8
|
+
*/
|
|
9
|
+
export class SimplifiedChinese extends GreedyScaleLanguage {
|
|
10
|
+
constructor(options?: {});
|
|
11
|
+
scaleWords: (string | bigint)[][];
|
|
12
|
+
/** Combines two word-sets according to Chinese grammar rules. */
|
|
13
|
+
combineWordSets(preceding: any, following: any): any;
|
|
14
|
+
/** Returns the number of digits in a number. */
|
|
15
|
+
digit(number_: any): any;
|
|
16
|
+
/** Counts the number of zero digits in a number. */
|
|
17
|
+
zeroDigit(number_: any): number;
|
|
18
|
+
/** Converts decimal digits to words by reading each digit individually. */
|
|
19
|
+
decimalDigitsToWords(decimalString: any): string[];
|
|
20
|
+
}
|
|
21
|
+
import { GreedyScaleLanguage } from '../classes/greedy-scale-language.js';
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { GreedyScaleLanguage } from '../classes/greedy-scale-language.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Simplified Chinese language converter.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Simplified Chinese characters (简体中文)
|
|
8
|
+
* - No word separators (concatenated format)
|
|
9
|
+
* - Optional formal (financial) vs common numerals
|
|
10
|
+
*/
|
|
11
|
+
export class SimplifiedChinese extends GreedyScaleLanguage {
|
|
12
|
+
negativeWord = '负'
|
|
13
|
+
decimalSeparatorWord = '点'
|
|
14
|
+
zeroWord = '零'
|
|
15
|
+
wordSeparator = ''
|
|
16
|
+
|
|
17
|
+
constructor (options = {}) {
|
|
18
|
+
super()
|
|
19
|
+
|
|
20
|
+
this.setOptions({
|
|
21
|
+
formal: true
|
|
22
|
+
}, options)
|
|
23
|
+
|
|
24
|
+
if (this.options.formal) {
|
|
25
|
+
this.scaleWords = [
|
|
26
|
+
[1_000_000_000_000n, '万'],
|
|
27
|
+
[100_000_000n, '亿'],
|
|
28
|
+
[10_000n, '万'],
|
|
29
|
+
[1000n, '仟'],
|
|
30
|
+
[100n, '佰'],
|
|
31
|
+
[10n, '拾'],
|
|
32
|
+
[9n, '玖'],
|
|
33
|
+
[8n, '捌'],
|
|
34
|
+
[7n, '柒'],
|
|
35
|
+
[6n, '陆'],
|
|
36
|
+
[5n, '伍'],
|
|
37
|
+
[4n, '肆'],
|
|
38
|
+
[3n, '叁'],
|
|
39
|
+
[2n, '贰'],
|
|
40
|
+
[1n, '壹'],
|
|
41
|
+
[0n, '零']
|
|
42
|
+
]
|
|
43
|
+
} else {
|
|
44
|
+
this.scaleWords = [
|
|
45
|
+
[1_000_000_000_000n, '万'],
|
|
46
|
+
[100_000_000n, '亿'],
|
|
47
|
+
[10_000n, '万'],
|
|
48
|
+
[1000n, '千'],
|
|
49
|
+
[100n, '百'],
|
|
50
|
+
[10n, '十'],
|
|
51
|
+
[9n, '九'],
|
|
52
|
+
[8n, '八'],
|
|
53
|
+
[7n, '七'],
|
|
54
|
+
[6n, '六'],
|
|
55
|
+
[5n, '五'],
|
|
56
|
+
[4n, '四'],
|
|
57
|
+
[3n, '三'],
|
|
58
|
+
[2n, '二'],
|
|
59
|
+
[1n, '一'],
|
|
60
|
+
[0n, '零']
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Combines two word-sets according to Chinese grammar rules. */
|
|
66
|
+
combineWordSets (preceding, following) {
|
|
67
|
+
const precedingWord = Object.keys(preceding)[0]
|
|
68
|
+
const precedingValue = Object.values(preceding)[0]
|
|
69
|
+
const followingWord = Object.keys(following)[0]
|
|
70
|
+
const followingValue = Object.values(following)[0]
|
|
71
|
+
|
|
72
|
+
// Implicit one: omit 1 before single digits (< 10)
|
|
73
|
+
if (precedingValue === 1n && followingValue < 10n) {
|
|
74
|
+
return following
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Multiply when following > preceding (scale words like 仁, 万, 亿)
|
|
78
|
+
if (followingValue > precedingValue) {
|
|
79
|
+
return { [`${precedingWord}${followingWord}`]: precedingValue * followingValue }
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Insert "零" (zero) when position skip levels (e.g., 1003 = 千零三)
|
|
83
|
+
// zeroDigit() checks if gap exists between preceding and following magnitude
|
|
84
|
+
if (this.zeroDigit(precedingValue) > this.digit(followingValue)) {
|
|
85
|
+
return { [`${precedingWord}${this.zeroWord}${followingWord}`]: precedingValue + followingValue }
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Default: concatenate without zero insertion
|
|
89
|
+
return { [`${precedingWord}${followingWord}`]: precedingValue + followingValue }
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Returns the number of digits in a number. */
|
|
93
|
+
digit (number_) {
|
|
94
|
+
return number_.toString().length
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Counts the number of zero digits in a number. */
|
|
98
|
+
zeroDigit (number_) {
|
|
99
|
+
return [...number_.toString()].filter(c => c === '0').length
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Converts decimal digits to words by reading each digit individually. */
|
|
103
|
+
decimalDigitsToWords (decimalString) {
|
|
104
|
+
const words = []
|
|
105
|
+
for (let i = 0; i < decimalString.length; i++) {
|
|
106
|
+
const digitValue = BigInt(decimalString[i])
|
|
107
|
+
words.push(this.integerToWords(digitValue))
|
|
108
|
+
}
|
|
109
|
+
return words
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traditional Chinese language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Traditional Chinese characters (繁體中文)
|
|
6
|
+
* - No word separators (concatenated format)
|
|
7
|
+
* - Optional formal (financial) vs common numerals
|
|
8
|
+
*/
|
|
9
|
+
export class TraditionalChinese extends GreedyScaleLanguage {
|
|
10
|
+
constructor(options?: {});
|
|
11
|
+
scaleWords: (string | bigint)[][];
|
|
12
|
+
/** Combines two word-sets with Traditional Chinese grammar rules and zero insertion. */
|
|
13
|
+
combineWordSets(preceding: any, following: any): any;
|
|
14
|
+
/** Returns the number of digits in a number. */
|
|
15
|
+
digit(number_: any): any;
|
|
16
|
+
/** Counts the number of zero digits in a number. */
|
|
17
|
+
zeroDigit(number_: any): number;
|
|
18
|
+
/** Converts decimal digits to words by reading each digit individually. */
|
|
19
|
+
decimalDigitsToWords(decimalString: any): string[];
|
|
20
|
+
}
|
|
21
|
+
import { GreedyScaleLanguage } from '../classes/greedy-scale-language.js';
|