Skip to content

Commit cc51979

Browse files
authored
Merge pull request #65 from Faridbabayev001/master
Add support for Azerbaijan language
2 parents 016741f + 9537c90 commit cc51979

File tree

6 files changed

+207
-20
lines changed

6 files changed

+207
-20
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ writtenNumber(4758); // => 'cuatro mil setecientos cincuenta y ocho'
3131

3232
writtenNumber(1234, {lang: 'fr'}); // => 'mille deux cent trente-quatre'
3333
writtenNumber(1234, {lang: 'es'}); // => 'mil doscientos treinta y cuatro'
34+
writtenNumber(1234, {lang: 'az'}); // => 'min iki yüz otuz dörd'
3435
writtenNumber(1234, {lang: 'pt'}); // => 'mil duzentos e trinta e quatro'
3536
writtenNumber(1234, {lang: 'ar'}); // => 'ألف ومائتان وأربعة وثلاثون'
3637
writtenNumber(1234, {lang: 'eo'}); // => 'mil ducent tridek kvar'
@@ -58,6 +59,7 @@ Currently supported languages are:
5859
| Esperanto | `eo` |
5960
| Vietnamese | `vi` |
6061
| Arabic | `ar` |
62+
| Azerbaijan | `az` |
6163
| Turkish | `tr` |
6264
| English (Indian) | `enIndian` |
6365
| Ukrainian | `uk` |

dist/written-number.js

Lines changed: 72 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,59 @@ module.exports={
147147
"unitExceptions": {}
148148
}
149149
},{}],2:[function(require,module,exports){
150+
module.exports={
151+
"useLongScale": false,
152+
"baseSeparator": " ",
153+
"unitSeparator": "",
154+
"base": {
155+
"0": "sıfır",
156+
"1": "bir",
157+
"2": "iki",
158+
"3": "üç",
159+
"4": "dörd",
160+
"5": "beş",
161+
"6": "altı",
162+
"7": "yeddi",
163+
"8": "səkkiz",
164+
"9": "doqquz",
165+
"10": "on",
166+
"20": "iyirmi",
167+
"30": "otuz",
168+
"40": "qırx",
169+
"50": "əlli",
170+
"60": "altmış",
171+
"70": "yetmiş",
172+
"80": "səksən",
173+
"90": "doxsan"
174+
},
175+
"units" : [
176+
{
177+
"singular": "yüz",
178+
"avoidPrefixException": [1]
179+
},
180+
{
181+
"singular": "min",
182+
"avoidPrefixException": [1]
183+
},
184+
"milyon",
185+
"milyard",
186+
"trilyon",
187+
"kvadrilyon",
188+
"kentilyon",
189+
"sekstilyon",
190+
"septilyon",
191+
"oktilyon",
192+
"nonilyon",
193+
"desilyon",
194+
"andesilyon",
195+
"dodesilyon",
196+
"tredesilyon",
197+
"katordesilyon",
198+
"kendesilyon"
199+
],
200+
"unitExceptions": []
201+
}
202+
},{}],3:[function(require,module,exports){
150203
module.exports={
151204
"useLongScale": false,
152205
"baseSeparator": "-",
@@ -189,7 +242,7 @@ module.exports={
189242
},
190243
"unitExceptions": []
191244
}
192-
},{}],3:[function(require,module,exports){
245+
},{}],4:[function(require,module,exports){
193246
module.exports={
194247
"useLongScale": false,
195248
"baseSeparator": "-",
@@ -245,7 +298,7 @@ module.exports={
245298
],
246299
"unitExceptions": []
247300
}
248-
},{}],4:[function(require,module,exports){
301+
},{}],5:[function(require,module,exports){
249302
module.exports={
250303
"useLongScale": false,
251304
"baseSeparator": " ",
@@ -308,7 +361,7 @@ module.exports={
308361
"unitExceptions": []
309362
}
310363

311-
},{}],5:[function(require,module,exports){
364+
},{}],6:[function(require,module,exports){
312365
module.exports={
313366
"useLongScale": true,
314367
"baseSeparator": " y ",
@@ -452,7 +505,7 @@ module.exports={
452505
]
453506
}
454507

455-
},{}],6:[function(require,module,exports){
508+
},{}],7:[function(require,module,exports){
456509
module.exports={
457510
"useLongScale": false,
458511
"baseSeparator": "-",
@@ -587,7 +640,7 @@ module.exports={
587640
}
588641
}
589642

590-
},{}],7:[function(require,module,exports){
643+
},{}],8:[function(require,module,exports){
591644
module.exports={
592645
"useLongScale": true,
593646
"baseSeparator": "",
@@ -713,7 +766,7 @@ module.exports={
713766
]
714767
}
715768

716-
},{}],8:[function(require,module,exports){
769+
},{}],9:[function(require,module,exports){
717770
module.exports={
718771
"useLongScale": false,
719772
"baseSeparator": " ",
@@ -767,7 +820,7 @@ module.exports={
767820
"unitExceptions": []
768821
}
769822

770-
},{}],9:[function(require,module,exports){
823+
},{}],10:[function(require,module,exports){
771824
module.exports={
772825
"useLongScale": false,
773826
"baseSeparator": "",
@@ -892,7 +945,7 @@ module.exports={
892945
]
893946
}
894947

895-
},{}],10:[function(require,module,exports){
948+
},{}],11:[function(require,module,exports){
896949
module.exports={
897950
"useLongScale": true,
898951
"baseSeparator": " e ",
@@ -999,7 +1052,7 @@ module.exports={
9991052
]
10001053
}
10011054

1002-
},{}],11:[function(require,module,exports){
1055+
},{}],12:[function(require,module,exports){
10031056
module.exports={
10041057
"useLongScale": false,
10051058
"baseSeparator": " e ",
@@ -1118,7 +1171,7 @@ module.exports={
11181171
]
11191172
}
11201173

1121-
},{}],12:[function(require,module,exports){
1174+
},{}],13:[function(require,module,exports){
11221175
module.exports={
11231176
"useLongScale": false,
11241177
"baseSeparator": " ",
@@ -1135,7 +1188,7 @@ module.exports={
11351188
"8": "восемь",
11361189
"9": "девять",
11371190
"10": "десять",
1138-
"11": "одиннадцать",
1191+
"11": "одинадцать",
11391192
"12": "двенадцать",
11401193
"13": "тринадцать",
11411194
"14": "четырнадцать",
@@ -1305,7 +1358,7 @@ module.exports={
13051358
],
13061359
"unitExceptions": []
13071360
}
1308-
},{}],13:[function(require,module,exports){
1361+
},{}],14:[function(require,module,exports){
13091362
module.exports={
13101363
"useLongScale": false,
13111364
"baseSeparator": " ",
@@ -1358,7 +1411,7 @@ module.exports={
13581411
],
13591412
"unitExceptions": []
13601413
}
1361-
},{}],14:[function(require,module,exports){
1414+
},{}],15:[function(require,module,exports){
13621415
module.exports={
13631416
"useLongScale": false,
13641417
"baseSeparator": " ",
@@ -1546,7 +1599,7 @@ module.exports={
15461599
"unitExceptions": []
15471600
}
15481601

1549-
},{}],15:[function(require,module,exports){
1602+
},{}],16:[function(require,module,exports){
15501603
module.exports={
15511604
"useLongScale": false,
15521605
"baseSeparator": " ",
@@ -1597,16 +1650,17 @@ module.exports={
15971650
],
15981651
"unitExceptions": []
15991652
}
1600-
},{}],16:[function(require,module,exports){
1653+
},{}],17:[function(require,module,exports){
16011654
"use strict";
16021655
exports = module.exports = writtenNumber;
16031656
var util = require("./util");
16041657

1605-
var languages = ["en", "es", "ar", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
1658+
var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
16061659
var i18n = {
16071660
en: require("./i18n/en.json"),
16081661
es: require("./i18n/es.json"),
16091662
ar: require("./i18n/ar.json"),
1663+
az: require("./i18n/az.json"),
16101664
pt: require("./i18n/pt.json"),
16111665
ptPT: require("./i18n/pt-PT.json"),
16121666
fr: require("./i18n/fr.json"),
@@ -1822,7 +1876,7 @@ function handleSmallerThan100(n, language, unit, baseCardinals, alternativeBaseC
18221876
return alternativeBaseCardinals[dec] || baseCardinals[dec];
18231877
}
18241878

1825-
},{"./i18n/ar.json":1,"./i18n/en-indian.json":2,"./i18n/en.json":3,"./i18n/eo.json":4,"./i18n/es.json":5,"./i18n/fr.json":6,"./i18n/hu.json":7,"./i18n/id.json":8,"./i18n/it.json":9,"./i18n/pt-PT.json":10,"./i18n/pt.json":11,"./i18n/ru.json":12,"./i18n/tr.json":13,"./i18n/uk.json":14,"./i18n/vi.json":15,"./util":17}],17:[function(require,module,exports){
1879+
},{"./i18n/ar.json":1,"./i18n/az.json":2,"./i18n/en-indian.json":3,"./i18n/en.json":4,"./i18n/eo.json":5,"./i18n/es.json":6,"./i18n/fr.json":7,"./i18n/hu.json":8,"./i18n/id.json":9,"./i18n/it.json":10,"./i18n/pt-PT.json":11,"./i18n/pt.json":12,"./i18n/ru.json":13,"./i18n/tr.json":14,"./i18n/uk.json":15,"./i18n/vi.json":16,"./util":18}],18:[function(require,module,exports){
18261880
"use strict";
18271881
/**
18281882
* Merges a set of default keys with a target object
@@ -1845,5 +1899,5 @@ function defaults(target, defs) {
18451899
}
18461900
exports.defaults = defaults;
18471901

1848-
},{}]},{},[16])(16)
1902+
},{}]},{},[17])(17)
18491903
});

dist/written-number.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/i18n/az.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"useLongScale": false,
3+
"baseSeparator": " ",
4+
"unitSeparator": "",
5+
"base": {
6+
"0": "sıfır",
7+
"1": "bir",
8+
"2": "iki",
9+
"3": "üç",
10+
"4": "dörd",
11+
"5": "beş",
12+
"6": "altı",
13+
"7": "yeddi",
14+
"8": "səkkiz",
15+
"9": "doqquz",
16+
"10": "on",
17+
"20": "iyirmi",
18+
"30": "otuz",
19+
"40": "qırx",
20+
"50": "əlli",
21+
"60": "altmış",
22+
"70": "yetmiş",
23+
"80": "səksən",
24+
"90": "doxsan"
25+
},
26+
"units" : [
27+
{
28+
"singular": "yüz",
29+
"avoidPrefixException": [1]
30+
},
31+
{
32+
"singular": "min",
33+
"avoidPrefixException": [1]
34+
},
35+
"milyon",
36+
"milyard",
37+
"trilyon",
38+
"kvadrilyon",
39+
"kentilyon",
40+
"sekstilyon",
41+
"septilyon",
42+
"oktilyon",
43+
"nonilyon",
44+
"desilyon",
45+
"andesilyon",
46+
"dodesilyon",
47+
"tredesilyon",
48+
"katordesilyon",
49+
"kendesilyon"
50+
],
51+
"unitExceptions": []
52+
}

lib/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
exports = module.exports = writtenNumber;
33
var util = require("./util");
44

5-
var languages = ["en", "es", "ar", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
5+
var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
66
var i18n = {
77
en: require("./i18n/en.json"),
88
es: require("./i18n/es.json"),
99
ar: require("./i18n/ar.json"),
10+
az: require("./i18n/az.json"),
1011
pt: require("./i18n/pt.json"),
1112
ptPT: require("./i18n/pt-PT.json"),
1213
fr: require("./i18n/fr.json"),

test/index.test.js

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,84 @@ describe("written-number", function () {
618618
});
619619
});
620620

621+
describe("writtenNumber(n, { lang: 'az', ... })", function () {
622+
before(function () {
623+
writtenNumber.defaults.lang = "az";
624+
});
625+
626+
it("gets exposed", function () {
627+
should.exist(writtenNumber);
628+
writtenNumber.should.be.instanceof(Function);
629+
});
630+
631+
it("doesn't blow up weirdly with invalid input", function () {
632+
writtenNumber("asdfasdfasdf").should.equal("");
633+
writtenNumber("0.as").should.equal("");
634+
writtenNumber("0.123").should.equal("sıfır");
635+
writtenNumber("0.8").should.equal("bir");
636+
writtenNumber("2.8").should.equal("üç");
637+
writtenNumber("asdf.8").should.equal("");
638+
writtenNumber("120391938123..").should.equal("");
639+
writtenNumber("1/3").should.equal("");
640+
writtenNumber(1 / 3).should.equal("sıfır");
641+
writtenNumber("1/2").should.equal("");
642+
writtenNumber("1.123/2").should.equal("");
643+
});
644+
645+
it("correctly converts numbers < 10", function () {
646+
writtenNumber(0).should.equal("sıfır");
647+
writtenNumber(3).should.equal("üç");
648+
writtenNumber(6).should.equal("altı");
649+
});
650+
651+
it("correctly converts numbers < 20", function () {
652+
writtenNumber(13).should.equal("on üç");
653+
writtenNumber(19).should.equal("on doqquz");
654+
});
655+
656+
it("correctly converts numbers < 100", function () {
657+
writtenNumber(20).should.equal("iyirmi");
658+
writtenNumber(25).should.equal("iyirmi beş");
659+
writtenNumber(40).should.equal("qırx");
660+
writtenNumber(88).should.equal("səksən səkkiz");
661+
writtenNumber(73).should.equal("yetmiş üç");
662+
});
663+
664+
it("correctly converts numbers < 10000", function () {
665+
writtenNumber(200).should.equal("iki yüz");
666+
writtenNumber(242).should.equal("iki yüz qırx iki");
667+
writtenNumber(1234).should.equal(
668+
"min iki yüz otuz dörd"
669+
);
670+
writtenNumber(4323).should.equal(
671+
"dörd min üç yüz iyirmi üç"
672+
);
673+
});
674+
675+
it("correctly converts numbers > 10000", function () {
676+
writtenNumber(4323000).should.equal(
677+
"dörd milyon üç yüz iyirmi üç min"
678+
);
679+
writtenNumber(4323055).should.equal(
680+
"dörd milyon üç yüz iyirmi üç min əlli beş"
681+
);
682+
writtenNumber(1570025).should.equal(
683+
"bir milyon beş yüz yetmiş min iyirmi beş"
684+
);
685+
});
686+
687+
it("correctly converts numbers > 1 000 000 000", function () {
688+
writtenNumber(1000000000).should.equal("bir milyard");
689+
writtenNumber(2580000000).should.equal(
690+
"iki milyard beş yüz səksən milyon"
691+
);
692+
writtenNumber(1000000000000).should.equal("bir trilyon");
693+
writtenNumber(3627000000000).should.equal(
694+
"üç trilyon altı yüz iyirmi yeddi milyard"
695+
);
696+
});
697+
});
698+
621699
describe("writtenNumber(n, { lang: 'uk', ... })", function () {
622700
before(function () {
623701
writtenNumber.defaults.lang = "uk";

0 commit comments

Comments
 (0)