Skip to content

Commit f4cf079

Browse files
forzagreenyamadapc
authored andcommitted
Add support for Turkish language (#41)
* Add support for Turkish * Add test cases for Turkish * Add Support for Turkish
1 parent dd6637c commit f4cf079

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Currently supported languages are:
4444
- French `lang = "fr"`
4545
- Esperanto `lang = "eo"`
4646
- Vietnamese `lang = "vi"`
47+
- Turkish `lang = "tr"`
4748
- English (Indian) `lang = "enIndian"`
4849

4950
### Spanish Example

lib/i18n/tr.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ört",
11+
"5": "beş",
12+
"6": "altı",
13+
"7": "yedi",
14+
"8": "sekiz",
15+
"9": "dokuz",
16+
"10": "on",
17+
"20": "yirmi",
18+
"30": "otuz",
19+
"40": "kırk",
20+
"50": "elli",
21+
"60": "altmış",
22+
"70": "yetmiş",
23+
"80": "seksen",
24+
"90": "doksan"
25+
},
26+
"units" : [
27+
{
28+
"singular": "yüz",
29+
"avoidPrefixException": [1]
30+
},
31+
{
32+
"singular": "bin",
33+
"avoidPrefixException": [1]
34+
},
35+
"milyon",
36+
"milyar",
37+
"trilyon",
38+
"katrilyon",
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,7 +2,7 @@
22
exports = module.exports = writtenNumber;
33
var util = require("./util");
44

5-
var languages = ["en", "es", "pt", "fr", "eo", "it", "vi"];
5+
var languages = ["en", "es", "pt", "fr", "eo", "it", "vi", "tr"];
66
var i18n = {
77
en: require("./i18n/en.json"),
88
es: require("./i18n/es.json"),
@@ -11,6 +11,7 @@ var i18n = {
1111
eo: require("./i18n/eo.json"),
1212
it: require("./i18n/it.json"),
1313
vi: require("./i18n/vi.json"),
14+
tr: require("./i18n/tr.json"),
1415
enIndian: require("./i18n/en-indian.json")
1516
};
1617
exports.i18n = i18n;

test/index.test.js

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,4 +434,82 @@ describe("written-number", function() {
434434
);
435435
});
436436
});
437+
438+
describe("writtenNumber(n, { lang: 'tr', ... })", function() {
439+
before(function() {
440+
writtenNumber.defaults.lang = "tr";
441+
});
442+
443+
it("gets exposed", function() {
444+
should.exist(writtenNumber);
445+
writtenNumber.should.be.instanceof(Function);
446+
});
447+
448+
it("doesn't blow up weirdly with invalid input", function() {
449+
writtenNumber("asdfasdfasdf").should.equal("");
450+
writtenNumber("0.as").should.equal("");
451+
writtenNumber("0.123").should.equal("sıfır");
452+
writtenNumber("0.8").should.equal("bir");
453+
writtenNumber("2.8").should.equal("üç");
454+
writtenNumber("asdf.8").should.equal("");
455+
writtenNumber("120391938123..").should.equal("");
456+
writtenNumber("1/3").should.equal("");
457+
writtenNumber(1 / 3).should.equal("sıfır");
458+
writtenNumber("1/2").should.equal("");
459+
writtenNumber("1.123/2").should.equal("");
460+
});
461+
462+
it("correctly converts numbers < 10", function() {
463+
writtenNumber(0).should.equal("sıfır");
464+
writtenNumber(3).should.equal("üç");
465+
writtenNumber(6).should.equal("altı");
466+
});
467+
468+
it("correctly converts numbers < 20", function() {
469+
writtenNumber(13).should.equal("on üç");
470+
writtenNumber(19).should.equal("on dokuz");
471+
});
472+
473+
it("correctly converts numbers < 100", function() {
474+
writtenNumber(20).should.equal("yirmi");
475+
writtenNumber(25).should.equal("yirmi beş");
476+
writtenNumber(40).should.equal("kırk");
477+
writtenNumber(88).should.equal("seksen sekiz");
478+
writtenNumber(73).should.equal("yetmiş üç");
479+
});
480+
481+
it("correctly converts numbers < 1000", function() {
482+
writtenNumber(200).should.equal("iki yüz");
483+
writtenNumber(242).should.equal("iki yüz kırk iki");
484+
writtenNumber(1234).should.equal(
485+
"bin iki yüz otuz dört"
486+
);
487+
writtenNumber(4323).should.equal(
488+
"dört bin üç yüz yirmi üç"
489+
);
490+
});
491+
492+
it("correctly converts numbers > 1000", function() {
493+
writtenNumber(4323000).should.equal(
494+
"dört milyon üç yüz yirmi üç bin"
495+
);
496+
writtenNumber(4323055).should.equal(
497+
"dört milyon üç yüz yirmi üç bin elli beş"
498+
);
499+
writtenNumber(1570025).should.equal(
500+
"bir milyon beş yüz yetmiş bin yirmi beş"
501+
);
502+
});
503+
504+
it("correctly converts numbers > 1 000 000 000", function() {
505+
writtenNumber(1000000000).should.equal("bir milyar");
506+
writtenNumber(2580000000).should.equal(
507+
"iki milyar beş yüz seksen milyon"
508+
);
509+
writtenNumber(1000000000000).should.equal("bir trilyon");
510+
writtenNumber(3627000000000).should.equal(
511+
"üç trilyon altı yüz yirmi yedi milyar"
512+
);
513+
});
514+
});
437515
});

0 commit comments

Comments
 (0)