Skip to content

Commit f10c816

Browse files
asmarquesyamadapc
authored andcommitted
Add support for Portuguese (Portugal) (#42)
1 parent f4cf079 commit f10c816

File tree

4 files changed

+192
-2
lines changed

4 files changed

+192
-2
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ writtenNumber(1234); // => 'one thousand two hundred and thirty-four'
3939
## Internationalization
4040
Currently supported languages are:
4141
- English `lang = "en"`
42-
- Portuguese `lang = "pt"`
42+
- Portuguese (Brazil) `lang = "pt"`
43+
- Portuguese (Portugal) `lang = "ptPT"`
4344
- Spanish `lang = "es"`
4445
- French `lang = "fr"`
4546
- Esperanto `lang = "eo"`
@@ -59,7 +60,7 @@ writtenNumber.defaults.lang = 'es';
5960
writtenNumber(4758); // => 'cuatro mil setecientos cincuenta y ocho'
6061
```
6162

62-
### Portuguese Example
63+
### Portuguese (Brazil) Example
6364
```javascript
6465
var writtenNumber = require('written-number');
6566
writtenNumber(1234, { lang: 'pt' }); // => 'mil duzentos e trinta e quatro'

lib/i18n/pt-PT.json

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"useLongScale": true,
3+
"baseSeparator": " e ",
4+
"unitSeparator": "e ",
5+
"andWhenTrailing": true,
6+
"base": {
7+
"0": "zero",
8+
"1": "um",
9+
"2": "dois",
10+
"3": "três",
11+
"4": "quatro",
12+
"5": "cinco",
13+
"6": "seis",
14+
"7": "sete",
15+
"8": "oito",
16+
"9": "nove",
17+
"10": "dez",
18+
"11": "onze",
19+
"12": "doze",
20+
"13": "treze",
21+
"14": "catorze",
22+
"15": "quinze",
23+
"16": "dezasseis",
24+
"17": "dezassete",
25+
"18": "dezoito",
26+
"19": "dezanove",
27+
"20": "vinte",
28+
"30": "trinta",
29+
"40": "quarenta",
30+
"50": "cinquenta",
31+
"60": "sessenta",
32+
"70": "setenta",
33+
"80": "oitenta",
34+
"90": "noventa",
35+
"100": "cem",
36+
"200": "duzentos",
37+
"300": "trezentos",
38+
"400": "quatrocentos",
39+
"500": "quinhentos",
40+
"600": "seiscentos",
41+
"700": "setecentos",
42+
"800": "oitocentos",
43+
"900": "novecentos",
44+
"1000": "mil"
45+
},
46+
"unitExceptions": {
47+
"1": "um"
48+
},
49+
"units" : [
50+
{
51+
"singular": "cento",
52+
"useBaseInstead": true,
53+
"useBaseException": [
54+
1
55+
],
56+
"useBaseExceptionWhenNoTrailingNumbers": true,
57+
"andException": true
58+
},
59+
{
60+
"singular": "mil",
61+
"avoidPrefixException": [1],
62+
"andException": true
63+
},
64+
{
65+
"singular": "milhão",
66+
"plural": "milhões"
67+
},
68+
{
69+
"singular": "bilião",
70+
"plural": "biliões"
71+
},
72+
{
73+
"singular": "trilião",
74+
"plural": "triliões"
75+
},
76+
{
77+
"singular": "quadrilião",
78+
"plural": "quadriliões"
79+
},
80+
{
81+
"singular": "quintilião",
82+
"plural": "quintiliões"
83+
},
84+
{
85+
"singular": "sextilião",
86+
"plural": "sextiliões"
87+
},
88+
{
89+
"singular": "septilião",
90+
"plural": "septiliões"
91+
},
92+
{
93+
"singular": "octilião",
94+
"plural": "octiliões"
95+
},
96+
{
97+
"singular": "nonilião",
98+
"plural": "noniliões"
99+
},
100+
{
101+
"singular": "decilião",
102+
"plural": "deciliões"
103+
}
104+
]
105+
}

lib/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var i18n = {
77
en: require("./i18n/en.json"),
88
es: require("./i18n/es.json"),
99
pt: require("./i18n/pt.json"),
10+
ptPT: require("./i18n/pt-PT.json"),
1011
fr: require("./i18n/fr.json"),
1112
eo: require("./i18n/eo.json"),
1213
it: require("./i18n/it.json"),

test/index.test.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,89 @@ describe("written-number", function() {
224224
});
225225
});
226226

227+
describe("writtenNumber(n, { lang: 'ptPT', ... })", function() {
228+
before(function() {
229+
writtenNumber.defaults.lang = "ptPT";
230+
});
231+
232+
it("gets exposed", function() {
233+
should.exist(writtenNumber);
234+
writtenNumber.should.be.instanceof(Function);
235+
});
236+
237+
it("correctly converts numbers < 10", function() {
238+
writtenNumber(3).should.equal("três");
239+
writtenNumber(8).should.equal("oito");
240+
});
241+
242+
it("correctly converts numbers < 20", function() {
243+
writtenNumber(13).should.equal("treze");
244+
writtenNumber(19).should.equal("dezanove");
245+
});
246+
247+
it("correctly converts numbers < 100", function() {
248+
writtenNumber(20).should.equal("vinte");
249+
writtenNumber(25).should.equal("vinte e cinco");
250+
writtenNumber(88).should.equal("oitenta e oito");
251+
writtenNumber(73).should.equal("setenta e três");
252+
});
253+
254+
it("correctly converts numbers < 1000", function() {
255+
writtenNumber(144).should.equal("cento e quarenta e quatro");
256+
writtenNumber(200).should.equal("duzentos");
257+
writtenNumber(1234).should.equal("mil duzentos e trinta e quatro");
258+
writtenNumber(4323).should.equal("quatro mil trezentos e vinte e três");
259+
writtenNumber(242).should.equal("duzentos e quarenta e dois");
260+
});
261+
262+
it("correctly converts numbers > 1000", function() {
263+
writtenNumber(4323000).should.equal(
264+
"quatro milhões trezentos e vinte e três mil"
265+
);
266+
writtenNumber(4323055).should.equal(
267+
"quatro milhões trezentos e vinte e três mil e cinquenta e cinco"
268+
);
269+
writtenNumber(1570025).should.equal(
270+
"um milhão quinhentos e setenta mil e vinte e cinco"
271+
);
272+
});
273+
274+
it("works for 14101 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
275+
writtenNumber(14101).should.equal("catorze mil cento e um");
276+
});
277+
278+
it("works for 14201 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
279+
writtenNumber(14201).should.equal("catorze mil duzentos e um");
280+
});
281+
282+
it("works for 1001000 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
283+
writtenNumber(1001000).should.equal("um milhão e mil");
284+
});
285+
286+
it("works for 1001200 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
287+
writtenNumber(1001200).should.equal("um milhão mil e duzentos");
288+
});
289+
290+
it("works for 14200 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
291+
writtenNumber(14200).should.equal("catorze mil e duzentos");
292+
});
293+
294+
it("works for 14100 (https://github.com/yamadapc/js-written-number/issues/38)", function() {
295+
writtenNumber(14100).should.equal("catorze mil e cem");
296+
});
297+
298+
it("correctly converts numbers > 1 000 000 000", function() {
299+
writtenNumber(1000000000).should.equal("mil milhões");
300+
writtenNumber(2580000000).should.equal(
301+
"dois mil quinhentos e oitenta milhões"
302+
);
303+
writtenNumber(1000000000000000).should.equal("mil biliões");
304+
writtenNumber(3627000000000).should.equal(
305+
"três biliões seiscentos e vinte e sete mil milhões"
306+
);
307+
});
308+
});
309+
227310
describe("writtenNumber(n, { lang: 'fr', ... })", function() {
228311
before(function() {
229312
writtenNumber.defaults.lang = "fr";

0 commit comments

Comments
 (0)