Skip to content

Add support for Kyrgyz language #83

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ writtenNumber(1234, {lang: 'eo'}); // => 'mil ducent tridek kvar'
writtenNumber(1234, {lang: 'vi'}); // => 'một ngàn hai trăm và ba mươi bốn'
writtenNumber(1234, {lang: 'uk'}); // => 'одна тисяча двісті тридцять чотири'
writtenNumber(1234, {lang: 'id'}); // => 'seribu dua ratus tiga puluh empat'
writtenNumber(1234, {lang: 'ky'}); // => 'миң эки жүз отуз төрт'
```

## Options
Expand Down Expand Up @@ -65,7 +66,7 @@ Currently supported languages are:
| Ukrainian | `uk` |
| Indonesian | `id` |
| Russian | `ru` |

| Kyrgyz | `ky` |

## Contributing

Expand Down
74 changes: 64 additions & 10 deletions dist/written-number.js
Original file line number Diff line number Diff line change
Expand Up @@ -946,6 +946,59 @@ module.exports={
}

},{}],11:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " ",
"unitSeparator": "",
"base": {
"0": "нөл",
"1": "бир",
"2": "эки",
"3": "үч",
"4": "төрт",
"5": "беш",
"6": "алты",
"7": "жети",
"8": "сегиз",
"9": "тогуз",
"10": "он",
"20": "жыйырма",
"30": "отуз",
"40": "кырк",
"50": "элүү",
"60": "алтымыш",
"70": "жетимиш",
"80": "сексен",
"90": "токсон"
},
"units" : [
{
"singular": "жүз",
"avoidPrefixException": [1]
},
{
"singular": "миң",
"avoidPrefixException": [1]
},
"миллион",
"миллиард",
"триллион",
"квадрильон",
"квинтиллион",
"секстиллион",
"септиллион",
"октиллион",
"нониллион",
"дециллион",
"ундециллион",
"дуодециллион",
"тредециллион",
"кватуордециллион",
"квиндециллион"
],
"unitExceptions": []
}
},{}],12:[function(require,module,exports){
module.exports={
"useLongScale": true,
"baseSeparator": " e ",
Expand Down Expand Up @@ -1052,7 +1105,7 @@ module.exports={
]
}

},{}],12:[function(require,module,exports){
},{}],13:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " e ",
Expand Down Expand Up @@ -1171,7 +1224,7 @@ module.exports={
]
}

},{}],13:[function(require,module,exports){
},{}],14:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " ",
Expand Down Expand Up @@ -1358,7 +1411,7 @@ module.exports={
],
"unitExceptions": []
}
},{}],14:[function(require,module,exports){
},{}],15:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " ",
Expand Down Expand Up @@ -1411,7 +1464,7 @@ module.exports={
],
"unitExceptions": []
}
},{}],15:[function(require,module,exports){
},{}],16:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " ",
Expand Down Expand Up @@ -1599,7 +1652,7 @@ module.exports={
"unitExceptions": []
}

},{}],16:[function(require,module,exports){
},{}],17:[function(require,module,exports){
module.exports={
"useLongScale": false,
"baseSeparator": " ",
Expand Down Expand Up @@ -1650,12 +1703,12 @@ module.exports={
],
"unitExceptions": []
}
},{}],17:[function(require,module,exports){
},{}],18:[function(require,module,exports){
"use strict";
exports = module.exports = writtenNumber;
var util = require("./util");

var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id", "ky"];
var i18n = {
en: require("./i18n/en.json"),
es: require("./i18n/es.json"),
Expand All @@ -1672,7 +1725,8 @@ var i18n = {
enIndian: require("./i18n/en-indian.json"),
uk: require("./i18n/uk.json"),
ru: require("./i18n/ru.json"),
id: require("./i18n/id.json")
id: require("./i18n/id.json"),
ky: require("./i18n/ky.json"),
};
exports.i18n = i18n;

Expand Down Expand Up @@ -1876,7 +1930,7 @@ function handleSmallerThan100(n, language, unit, baseCardinals, alternativeBaseC
return alternativeBaseCardinals[dec] || baseCardinals[dec];
}

},{"./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){
},{"./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/ky.json":11,"./i18n/pt-PT.json":12,"./i18n/pt.json":13,"./i18n/ru.json":14,"./i18n/tr.json":15,"./i18n/uk.json":16,"./i18n/vi.json":17,"./util":19}],19:[function(require,module,exports){
"use strict";
/**
* Merges a set of default keys with a target object
Expand All @@ -1899,5 +1953,5 @@ function defaults(target, defs) {
}
exports.defaults = defaults;

},{}]},{},[17])(17)
},{}]},{},[18])(18)
});
2 changes: 1 addition & 1 deletion dist/written-number.min.js

Large diffs are not rendered by default.

52 changes: 52 additions & 0 deletions lib/i18n/ky.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"useLongScale": false,
"baseSeparator": " ",
"unitSeparator": "",
"base": {
"0": "нөл",
"1": "бир",
"2": "эки",
"3": "үч",
"4": "төрт",
"5": "беш",
"6": "алты",
"7": "жети",
"8": "сегиз",
"9": "тогуз",
"10": "он",
"20": "жыйырма",
"30": "отуз",
"40": "кырк",
"50": "элүү",
"60": "алтымыш",
"70": "жетимиш",
"80": "сексен",
"90": "токсон"
},
"units" : [
{
"singular": "жүз",
"avoidPrefixException": [1]
},
{
"singular": "миң",
"avoidPrefixException": [1]
},
"миллион",
"миллиард",
"триллион",
"квадрильон",
"квинтиллион",
"секстиллион",
"септиллион",
"октиллион",
"нониллион",
"дециллион",
"ундециллион",
"дуодециллион",
"тредециллион",
"кватуордециллион",
"квиндециллион"
],
"unitExceptions": []
}
5 changes: 3 additions & 2 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
exports = module.exports = writtenNumber;
var util = require("./util");

var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id"];
var languages = ["en", "es", "ar", "az", "pt", "fr", "eo", "it", "vi", "tr", "uk", "ru", "id", "ky"];
var i18n = {
en: require("./i18n/en.json"),
es: require("./i18n/es.json"),
Expand All @@ -19,7 +19,8 @@ var i18n = {
enIndian: require("./i18n/en-indian.json"),
uk: require("./i18n/uk.json"),
ru: require("./i18n/ru.json"),
id: require("./i18n/id.json")
id: require("./i18n/id.json"),
ky: require("./i18n/ky.json"),
};
exports.i18n = i18n;

Expand Down
78 changes: 78 additions & 0 deletions test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -982,4 +982,82 @@ describe("written-number", function () {
);
});
});

describe("writtenNumber(n, { lang: 'ky', ... })", function () {
before(function () {
writtenNumber.defaults.lang = "ky";
});

it("gets exposed", function () {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});

it("doesn't blow up weirdly with invalid input", function () {
writtenNumber("asdfasdfasdf").should.equal("");
writtenNumber("0.as").should.equal("");
writtenNumber("0.123").should.equal("нөл");
writtenNumber("0.8").should.equal("бир");
writtenNumber("2.8").should.equal("үч");
writtenNumber("asdf.8").should.equal("");
writtenNumber("120391938123..").should.equal("");
writtenNumber("1/3").should.equal("");
writtenNumber(1 / 3).should.equal("нөл");
writtenNumber("1/2").should.equal("");
writtenNumber("1.123/2").should.equal("");
});

it("correctly converts numbers < 10", function () {
writtenNumber(0).should.equal("нөл");
writtenNumber(3).should.equal("үч");
writtenNumber(6).should.equal("алты");
});

it("correctly converts numbers < 20", function () {
writtenNumber(13).should.equal("он үч");
writtenNumber(19).should.equal("он тогуз");
});

it("correctly converts numbers < 100", function () {
writtenNumber(20).should.equal("жыйырма");
writtenNumber(25).should.equal("жыйырма беш");
writtenNumber(40).should.equal("кырк");
writtenNumber(88).should.equal("сексен сегиз");
writtenNumber(73).should.equal("жетимиш үч");
});

it("correctly converts numbers < 10000", function () {
writtenNumber(200).should.equal("эки жүз");
writtenNumber(242).should.equal("эки жүз кырк эки");
writtenNumber(1234).should.equal(
"миң эки жүз отуз төрт"
);
writtenNumber(4323).should.equal(
"төрт миң үч жүз жыйырма үч"
);
});

it("correctly converts numbers > 10000", function () {
writtenNumber(4323000).should.equal(
"төрт миллион үч жүз жыйырма үч миң"
);
writtenNumber(4323055).should.equal(
"төрт миллион үч жүз жыйырма үч миң элүү беш"
);
writtenNumber(1570025).should.equal(
"бир миллион беш жүз жетимиш миң жыйырма беш"
);
});

it("correctly converts numbers > 1 000 000 000", function () {
writtenNumber(1000000000).should.equal("бир миллиард");
writtenNumber(2580000000).should.equal(
"эки миллиард беш жүз сексен миллион"
);
writtenNumber(1000000000000).should.equal("бир триллион");
writtenNumber(3627000000000).should.equal(
"үч триллион алты жүз жыйырма жети миллиард"
);
});
});
});