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
package/lib/i18n/id.js
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import AbstractLanguage from '../classes/abstract-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsID extends AbstractLanguage {
|
|
4
|
-
base = {
|
|
5
|
-
0: [],
|
|
6
|
-
1: ['satu'],
|
|
7
|
-
2: ['dua'],
|
|
8
|
-
3: ['tiga'],
|
|
9
|
-
4: ['empat'],
|
|
10
|
-
5: ['lima'],
|
|
11
|
-
6: ['enam'],
|
|
12
|
-
7: ['tujuh'],
|
|
13
|
-
8: ['delapan'],
|
|
14
|
-
9: ['sembilan'],
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
thousands = {
|
|
18
|
-
3: 'ribu', // 10^3
|
|
19
|
-
6: 'juta', // 10^6
|
|
20
|
-
9: 'miliar', // 10^9
|
|
21
|
-
12: 'triliun',
|
|
22
|
-
15: 'kuadriliun',
|
|
23
|
-
18: 'kuantiliun',
|
|
24
|
-
21: 'sekstiliun',
|
|
25
|
-
24: 'septiliun',
|
|
26
|
-
27: 'oktiliun',
|
|
27
|
-
30: 'noniliun',
|
|
28
|
-
33: 'desiliun',
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
constructor(options) {
|
|
32
|
-
options = Object.assign({
|
|
33
|
-
negativeWord: 'min',
|
|
34
|
-
separatorWord: 'koma',
|
|
35
|
-
zero: 'nol'
|
|
36
|
-
}, options);
|
|
37
|
-
|
|
38
|
-
super(options);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
splitBy3(number) {
|
|
42
|
-
// Split to groups of 3 numbers: 1234567 -> [['1'], ['234'], ['567']]
|
|
43
|
-
let blocks = [];
|
|
44
|
-
let stringNumber = number.toString();
|
|
45
|
-
let length = stringNumber.length;
|
|
46
|
-
let firstBlock;
|
|
47
|
-
|
|
48
|
-
if (length < 3) {
|
|
49
|
-
blocks.push([stringNumber]);
|
|
50
|
-
} else {
|
|
51
|
-
let firstBlockLength = length % 3;
|
|
52
|
-
|
|
53
|
-
if (firstBlockLength > 0) {
|
|
54
|
-
firstBlock = [stringNumber.slice(0, firstBlockLength)];
|
|
55
|
-
blocks.push(firstBlock);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
for (let index = firstBlockLength; index < length; index += 3) {
|
|
59
|
-
let nextBlock = [stringNumber.slice(index, index + 3)];
|
|
60
|
-
blocks.push(nextBlock);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return blocks;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
spell(blocks) {
|
|
67
|
-
// Example:
|
|
68
|
-
// blocks: [['1'], ['234']]
|
|
69
|
-
// return: [['1', ['satu']], ['234', ['dua', 'ratus', 'tiga', 'puluh', ['empat']]]]
|
|
70
|
-
let wordBlocks = [];
|
|
71
|
-
let spelling;
|
|
72
|
-
let firstBlock = blocks[0];
|
|
73
|
-
if (firstBlock[0].length == 1) {
|
|
74
|
-
spelling = firstBlock[0] == '0' ? ['nol'] : this.base[Math.trunc(firstBlock[0])];
|
|
75
|
-
} else if (firstBlock[0].length == 2) {
|
|
76
|
-
spelling = this.getTens(firstBlock[0]);
|
|
77
|
-
} else {
|
|
78
|
-
spelling = [...this.getHundreds(firstBlock[0][0]), ...this.getTens(firstBlock[0].slice(1, 3))];
|
|
79
|
-
}
|
|
80
|
-
wordBlocks = [...wordBlocks, [firstBlock[0], spelling]];
|
|
81
|
-
for (let index = 1; index < blocks.length; index++) {
|
|
82
|
-
let block = blocks[index];
|
|
83
|
-
spelling = [...this.getHundreds(block[0][0]), ...this.getTens(block[0].slice(1, 3))];
|
|
84
|
-
block = [...block, spelling];
|
|
85
|
-
wordBlocks = [...wordBlocks, block];
|
|
86
|
-
}
|
|
87
|
-
return wordBlocks;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
getHundreds(number) { // 'ratus'
|
|
91
|
-
if (number == '1') {
|
|
92
|
-
return ['seratus'];
|
|
93
|
-
} else if (number == '0') {
|
|
94
|
-
return [];
|
|
95
|
-
} else {
|
|
96
|
-
return [...this.base[Math.trunc(number)], 'ratus'];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
getTens(number) { // 'puluh'
|
|
101
|
-
if (number[0] == '1') {
|
|
102
|
-
if (number[1] == '0') {
|
|
103
|
-
return ['sepuluh'];
|
|
104
|
-
} else if (number[1] == '1') {
|
|
105
|
-
return ['sebelas'];
|
|
106
|
-
} else {
|
|
107
|
-
return [...this.base[Math.trunc(number[1])], 'belas'];
|
|
108
|
-
}
|
|
109
|
-
} else if (number[0] == '0') {
|
|
110
|
-
return this.base[Math.trunc(number[1])];
|
|
111
|
-
} else {
|
|
112
|
-
return [...this.base[Math.trunc(number[0])], 'puluh', this.base[Math.trunc(number[1])]];
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
join(wordBlocks) {
|
|
117
|
-
let wordList = [];
|
|
118
|
-
let length = wordBlocks.length - 1;
|
|
119
|
-
let firstBlock = [wordBlocks[0]];
|
|
120
|
-
let start = 0;
|
|
121
|
-
if (length == 1 && firstBlock[0][0] == '1') {
|
|
122
|
-
wordList.push('seribu');
|
|
123
|
-
start = 1;
|
|
124
|
-
}
|
|
125
|
-
for (let index = start; index < length + 1; index++) {
|
|
126
|
-
wordList = [...wordList, ...wordBlocks[index][1]];
|
|
127
|
-
if (wordBlocks[index][1].length === 0) {
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
if (index == length) {
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
wordList = [...wordList, this.thousands[(length - index) * 3]];
|
|
134
|
-
}
|
|
135
|
-
return wordList.join(' ');
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
toCardinal(number) {
|
|
139
|
-
return this.join(
|
|
140
|
-
this.spell(
|
|
141
|
-
this.splitBy3(number)
|
|
142
|
-
)
|
|
143
|
-
).trim();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Converts a value to cardinal (written) form.
|
|
149
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
150
|
-
* @param {object} [options] Options for class.
|
|
151
|
-
* @returns {string} Value in cardinal (written) format.
|
|
152
|
-
* @throws {Error} Value cannot be invalid.
|
|
153
|
-
*/
|
|
154
|
-
export default function floatToCardinal (value, options = {}) {
|
|
155
|
-
return new N2WordsID(options).floatToCardinal(value);
|
|
156
|
-
}
|
package/lib/i18n/it.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsIT extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
cardinalWords: string[];
|
|
12
|
-
strTens: {
|
|
13
|
-
'2': string;
|
|
14
|
-
'3': string;
|
|
15
|
-
'4': string;
|
|
16
|
-
'6': string;
|
|
17
|
-
};
|
|
18
|
-
exponentPrefixes: string[];
|
|
19
|
-
accentuate(string: any): any;
|
|
20
|
-
omitIfZero(numberToString: any): any;
|
|
21
|
-
phoneticContraction(string: any): any;
|
|
22
|
-
tensToCardinal(number: any): any;
|
|
23
|
-
hundredsToCardinal(number: any): any;
|
|
24
|
-
thousandsToCardinal(number: any): string;
|
|
25
|
-
exponentLengthToString(exponentLength: any): string;
|
|
26
|
-
bigNumberToCardinal(number: any): string;
|
|
27
|
-
toCardinal(number: any): any;
|
|
28
|
-
}
|
|
29
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/it.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
// TODO Adapt language to work with {@link BaseLanguage} better
|
|
4
|
-
export class N2WordsIT extends BaseLanguage {
|
|
5
|
-
cardinalWords = [
|
|
6
|
-
this.zero, 'uno', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'otto',
|
|
7
|
-
'nove', 'dieci', 'undici', 'dodici', 'tredici', 'quattordici', 'quindici',
|
|
8
|
-
'sedici', 'diciassette', 'diciotto', 'diciannove',
|
|
9
|
-
];
|
|
10
|
-
|
|
11
|
-
strTens = { '2': 'venti', '3': 'trenta', '4': 'quaranta', '6': 'sessanta' };
|
|
12
|
-
|
|
13
|
-
exponentPrefixes = [this.zero, 'm', 'b', 'tr', 'quadr', 'quint', 'sest', 'sett', 'ott', 'nov', 'dec'];
|
|
14
|
-
|
|
15
|
-
constructor(options) {
|
|
16
|
-
options = Object.assign({
|
|
17
|
-
negativeWord: 'meno',
|
|
18
|
-
separatorWord: 'virgola',
|
|
19
|
-
zero: 'zero'
|
|
20
|
-
}, options);
|
|
21
|
-
|
|
22
|
-
super(options, []);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
accentuate(string) {
|
|
26
|
-
const splittedString = string.split(' ');
|
|
27
|
-
|
|
28
|
-
const result = splittedString.map(word => {
|
|
29
|
-
return word.slice(-3) == 'tre' && word.length > 3 ? word.replaceAll('tré', 'tre').slice(0, -3) + 'tré' : word.replaceAll('tré', 'tre');
|
|
30
|
-
});
|
|
31
|
-
return result.join(' ');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
omitIfZero(numberToString) {
|
|
35
|
-
return numberToString == this.zero ? '' : numberToString;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
phoneticContraction(string) {
|
|
39
|
-
return string.replaceAll('oo', 'o').replaceAll('ao', 'o').replaceAll('io', 'o').replaceAll('au', 'u').replaceAll('iu', 'u');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
tensToCardinal(number) {
|
|
43
|
-
const tens = Math.floor(number / 10);
|
|
44
|
-
const units = number % 10;
|
|
45
|
-
let prefix;
|
|
46
|
-
prefix = Object.prototype.hasOwnProperty.call(this.strTens, tens) ? this.strTens[tens] : this.cardinalWords[tens].slice(0, -1) + 'anta';
|
|
47
|
-
const postfix = this.omitIfZero(this.cardinalWords[units]);
|
|
48
|
-
return this.phoneticContraction(prefix + postfix);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
hundredsToCardinal(number) {
|
|
52
|
-
const hundreds = Math.floor(number / 100);
|
|
53
|
-
let prefix = 'cento';
|
|
54
|
-
if (hundreds != 1) {
|
|
55
|
-
prefix = this.cardinalWords[hundreds] + prefix;
|
|
56
|
-
}
|
|
57
|
-
const postfix = this.omitIfZero(this.toCardinal(number % 100));
|
|
58
|
-
return this.phoneticContraction(prefix + postfix);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
thousandsToCardinal(number) {
|
|
62
|
-
const thousands = Math.floor(number / 1000);
|
|
63
|
-
let prefix;
|
|
64
|
-
prefix = thousands == 1 ? 'mille' : this.toCardinal(thousands) + 'mila';
|
|
65
|
-
const postfix = this.omitIfZero(this.toCardinal(number % 1000));
|
|
66
|
-
return prefix + postfix;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
exponentLengthToString(exponentLength) {
|
|
70
|
-
const prefix = this.exponentPrefixes[Math.floor(exponentLength / 6)];
|
|
71
|
-
return exponentLength % 6 == 0 ? prefix + 'ilione' : prefix + 'iliardo';
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
bigNumberToCardinal(number) {
|
|
75
|
-
const digits = [...number.toString()];
|
|
76
|
-
|
|
77
|
-
let preDigits = digits.length % 3;
|
|
78
|
-
if (preDigits == 0) {
|
|
79
|
-
preDigits = 3;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const multiplier = digits.slice(0, preDigits); // first `preDigits` elements
|
|
83
|
-
const exponent = digits.slice(preDigits); // without the first `preDigits` elements
|
|
84
|
-
|
|
85
|
-
let prefix, postfix;
|
|
86
|
-
let infix = this.exponentLengthToString(exponent.length);
|
|
87
|
-
|
|
88
|
-
if (multiplier == '1') {
|
|
89
|
-
prefix = 'un ';
|
|
90
|
-
} else {
|
|
91
|
-
prefix = this.toCardinal(Math.trunc(Number(multiplier.join(''))));
|
|
92
|
-
infix = ' ' + infix.slice(0, -1) + 'i'; // without last element
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// TODO ESLint suggestion
|
|
96
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
97
|
-
const isSetsEqual = (a, b) => a.size == b.size && [...a].every(value => b.has(value));
|
|
98
|
-
if (isSetsEqual(new Set(exponent), new Set(['0']))) {
|
|
99
|
-
postfix = '';
|
|
100
|
-
} else {
|
|
101
|
-
postfix = this.toCardinal(Math.trunc(exponent.join('')));
|
|
102
|
-
|
|
103
|
-
infix += (postfix.includes(' e ') ? ', ' : ' e ');
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return prefix + infix + postfix;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
toCardinal(number) {
|
|
110
|
-
let words = '';
|
|
111
|
-
|
|
112
|
-
if (number < 20) {
|
|
113
|
-
words = this.cardinalWords[number];
|
|
114
|
-
} else if (number < 100) {
|
|
115
|
-
words = this.tensToCardinal(Number(number));
|
|
116
|
-
} else if (number < 1000) {
|
|
117
|
-
words = this.hundredsToCardinal(Number(number));
|
|
118
|
-
} else if (number < 1_000_000) {
|
|
119
|
-
words = this.thousandsToCardinal(Number(number));
|
|
120
|
-
} else {
|
|
121
|
-
words = this.bigNumberToCardinal(number);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return this.accentuate(words);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Converts a value to cardinal (written) form.
|
|
130
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
131
|
-
* @param {object} [options] Options for class.
|
|
132
|
-
* @returns {string} Value in cardinal (written) format.
|
|
133
|
-
* @throws {Error} Value cannot be invalid.
|
|
134
|
-
*/
|
|
135
|
-
export default function floatToCardinal (value, options = {}) {
|
|
136
|
-
return new N2WordsIT(options).floatToCardinal(value);
|
|
137
|
-
}
|
package/lib/i18n/ko.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsKO extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
merge(lPair: any, rPair: any): {
|
|
12
|
-
[x: string]: bigint;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/ko.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsKO extends BaseLanguage {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
options = Object.assign({
|
|
6
|
-
negativeWord: '마이너스',
|
|
7
|
-
separatorWord: '점',
|
|
8
|
-
zero: '영'
|
|
9
|
-
}, options);
|
|
10
|
-
|
|
11
|
-
super(options, [
|
|
12
|
-
[10_000_000_000_000_000_000_000_000_000n, '양'],
|
|
13
|
-
[1_000_000_000_000_000_000_000_000n, '자'],
|
|
14
|
-
[100_000_000_000_000_000_000n, '해'],
|
|
15
|
-
[10_000_000_000_000_000n, '경'],
|
|
16
|
-
[1_000_000_000_000n, '조'],
|
|
17
|
-
[100_000_000n, '억'],
|
|
18
|
-
[10_000n, '만'],
|
|
19
|
-
[1000n, '천'],
|
|
20
|
-
[100n, '백'],
|
|
21
|
-
[10n, '십'],
|
|
22
|
-
[9n, '구'],
|
|
23
|
-
[8n, '팔'],
|
|
24
|
-
[7n, '칠'],
|
|
25
|
-
[6n, '육'],
|
|
26
|
-
[5n, '오'],
|
|
27
|
-
[4n, '사'],
|
|
28
|
-
[3n, '삼'],
|
|
29
|
-
[2n, '이'],
|
|
30
|
-
[1n, '일'],
|
|
31
|
-
[0n, '영']
|
|
32
|
-
]);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
merge(lPair, rPair) {
|
|
36
|
-
const lText = Object.keys(lPair)[0];
|
|
37
|
-
const rText = Object.keys(rPair)[0];
|
|
38
|
-
const lNumber = BigInt(Object.values(lPair)[0]);
|
|
39
|
-
const rNumber = BigInt(Object.values(rPair)[0]);
|
|
40
|
-
if (lNumber == 1 && rNumber <= 10_000) return { [rText]: rNumber };
|
|
41
|
-
else if (10_000 > lNumber && lNumber > rNumber) return { [`${lText}${rText}`]: lNumber + rNumber };
|
|
42
|
-
else if (lNumber >= 10_000 && lNumber > rNumber) return { [`${lText} ${rText}`]: lNumber + rNumber };
|
|
43
|
-
else return { [`${lText}${rText}`]: lNumber * rNumber };
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Converts a value to cardinal (written) form.
|
|
49
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
50
|
-
* @param {object} [options] Options for class.
|
|
51
|
-
* @returns {string} Value in cardinal (written) format.
|
|
52
|
-
* @throws {Error} Value cannot be invalid.
|
|
53
|
-
*/
|
|
54
|
-
export default function floatToCardinal (value, options = {}) {
|
|
55
|
-
return new N2WordsKO(options).floatToCardinal(value);
|
|
56
|
-
}
|
package/lib/i18n/lt.d.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsLT extends N2WordsRU {
|
|
10
|
-
ones: {
|
|
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
|
-
onesFeminine: {
|
|
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
|
-
tens: {
|
|
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
|
-
twenties: {
|
|
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
|
-
hundreds: string[];
|
|
55
|
-
thousands: {
|
|
56
|
-
1: string[];
|
|
57
|
-
2: string[];
|
|
58
|
-
3: string[];
|
|
59
|
-
4: string[];
|
|
60
|
-
5: string[];
|
|
61
|
-
6: string[];
|
|
62
|
-
7: string[];
|
|
63
|
-
8: string[];
|
|
64
|
-
9: string[];
|
|
65
|
-
10: string[];
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
import { N2WordsRU } from './ru.js';
|
package/lib/i18n/lt.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { N2WordsRU } from './ru.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsLT extends N2WordsRU {
|
|
4
|
-
ones = {
|
|
5
|
-
1: 'vienas',
|
|
6
|
-
2: 'du',
|
|
7
|
-
3: 'trys',
|
|
8
|
-
4: 'keturi',
|
|
9
|
-
5: 'penki',
|
|
10
|
-
6: 'šeši',
|
|
11
|
-
7: 'septyni',
|
|
12
|
-
8: 'aštuoni',
|
|
13
|
-
9: 'devyni'
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
onesFeminine = {
|
|
17
|
-
1: 'viena',
|
|
18
|
-
2: 'dvi',
|
|
19
|
-
3: 'trys',
|
|
20
|
-
4: 'keturios',
|
|
21
|
-
5: 'penkios',
|
|
22
|
-
6: 'šešios',
|
|
23
|
-
7: 'septynios',
|
|
24
|
-
8: 'aštuonios',
|
|
25
|
-
9: 'devynios'
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
tens = {
|
|
29
|
-
0: 'dešimt',
|
|
30
|
-
1: 'vienuolika',
|
|
31
|
-
2: 'dvylika',
|
|
32
|
-
3: 'trylika',
|
|
33
|
-
4: 'keturiolika',
|
|
34
|
-
5: 'penkiolika',
|
|
35
|
-
6: 'šešiolika',
|
|
36
|
-
7: 'septyniolika',
|
|
37
|
-
8: 'aštuoniolika',
|
|
38
|
-
9: 'devyniolika'
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
twenties = {
|
|
42
|
-
2: 'dvidešimt',
|
|
43
|
-
3: 'trisdešimt',
|
|
44
|
-
4: 'keturiasdešimt',
|
|
45
|
-
5: 'penkiasdešimt',
|
|
46
|
-
6: 'šešiasdešimt',
|
|
47
|
-
7: 'septyniasdešimt',
|
|
48
|
-
8: 'aštuoniasdešimt',
|
|
49
|
-
9: 'devyniasdešimt'
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
hundreds = ['šimtas', 'šimtai'];
|
|
53
|
-
|
|
54
|
-
thousands = {
|
|
55
|
-
1: ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
|
|
56
|
-
2: ['milijonas', 'milijonai', 'milijonų'],
|
|
57
|
-
3: ['milijardas', 'milijardai', 'milijardų'],
|
|
58
|
-
4: ['trilijonas', 'trilijonai', 'trilijonų'],
|
|
59
|
-
5: ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
|
|
60
|
-
6: ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
|
|
61
|
-
7: ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
|
|
62
|
-
8: ['septilijonas', 'septilijonai', 'septilijonų'],
|
|
63
|
-
9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
|
|
64
|
-
10: ['naintilijonas', 'naintilijonai', 'naintilijonų'],
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
constructor(options) {
|
|
68
|
-
options = Object.assign({
|
|
69
|
-
negativeWord: 'minus',
|
|
70
|
-
separatorWord: 'kablelis',
|
|
71
|
-
zero: 'nulis'
|
|
72
|
-
}, options);
|
|
73
|
-
|
|
74
|
-
super(options);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
pluralize(n, forms) {
|
|
78
|
-
let form = 1;
|
|
79
|
-
const [n1, n2] = this.getDigits(n);
|
|
80
|
-
if (n2 == 1 || n1 == 0 || n == 0) {
|
|
81
|
-
form = 2;
|
|
82
|
-
} else if (n1 == 1) {
|
|
83
|
-
form = 0;
|
|
84
|
-
}
|
|
85
|
-
return forms[form];
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
toCardinal(number) {
|
|
89
|
-
if (number == 0) {
|
|
90
|
-
return this.zero;
|
|
91
|
-
}
|
|
92
|
-
const words = [];
|
|
93
|
-
const chunks = this.splitByX(number.toString(), 3);
|
|
94
|
-
let index = chunks.length;
|
|
95
|
-
for (const x of chunks) {
|
|
96
|
-
index = index - 1;
|
|
97
|
-
if (x == 0) {
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
const [n1, n2, n3] = this.getDigits(x);
|
|
101
|
-
if (n3 > 0) {
|
|
102
|
-
words.push(this.ones[n3]);
|
|
103
|
-
if (n3 > 1) {
|
|
104
|
-
words.push(this.hundreds[1]);
|
|
105
|
-
} else {
|
|
106
|
-
words.push(this.hundreds[0]);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (n2 > 1) {
|
|
110
|
-
words.push(this.twenties[n2]);
|
|
111
|
-
}
|
|
112
|
-
if (n2 == 1) {
|
|
113
|
-
words.push(this.tens[n1]);
|
|
114
|
-
} else if (n1 > 0) {
|
|
115
|
-
if ((index == 1 || this.feminine && index == 0) && number < 1000) {
|
|
116
|
-
words.push(this.onesFeminine[n1]);
|
|
117
|
-
} else {
|
|
118
|
-
words.push(this.ones[n1]);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (index > 0) {
|
|
122
|
-
words.push(this.pluralize(x, this.thousands[index]));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
return words.join(' ');
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Converts a value to cardinal (written) form.
|
|
131
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
132
|
-
* @param {object} [options] Options for class.
|
|
133
|
-
* @returns {string} Value in cardinal (written) format.
|
|
134
|
-
* @throws {Error} Value cannot be invalid.
|
|
135
|
-
*/
|
|
136
|
-
export default function floatToCardinal (value, options = {}) {
|
|
137
|
-
return new N2WordsLT(options).floatToCardinal(value);
|
|
138
|
-
}
|
package/lib/i18n/lv.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsLV extends N2WordsRU {
|
|
10
|
-
ones: {
|
|
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
|
-
tens: {
|
|
22
|
-
0: string;
|
|
23
|
-
1: string;
|
|
24
|
-
2: string;
|
|
25
|
-
3: string;
|
|
26
|
-
4: string;
|
|
27
|
-
5: string;
|
|
28
|
-
6: string;
|
|
29
|
-
7: string;
|
|
30
|
-
8: string;
|
|
31
|
-
9: string;
|
|
32
|
-
};
|
|
33
|
-
twenties: {
|
|
34
|
-
2: string;
|
|
35
|
-
3: string;
|
|
36
|
-
4: string;
|
|
37
|
-
5: string;
|
|
38
|
-
6: string;
|
|
39
|
-
7: string;
|
|
40
|
-
8: string;
|
|
41
|
-
9: string;
|
|
42
|
-
};
|
|
43
|
-
hundreds: string[];
|
|
44
|
-
thousands: {
|
|
45
|
-
1: string[];
|
|
46
|
-
2: string[];
|
|
47
|
-
3: string[];
|
|
48
|
-
4: string[];
|
|
49
|
-
5: string[];
|
|
50
|
-
6: string[];
|
|
51
|
-
7: string[];
|
|
52
|
-
8: string[];
|
|
53
|
-
9: string[];
|
|
54
|
-
10: string[];
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
import { N2WordsRU } from './ru.js';
|