1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
// ***************************************************************************
// *
// * Copyright (C) 2004, International Business Machines
// * Corporation and others. All Rights Reserved.
// *
// ***************************************************************************
//
es {
//------------------------------------------------------------
// Rule Based Number Format Support
//------------------------------------------------------------
// * Spellout rules for Spanish. The Spanish rules are quite similar to
// * the English rules, but there are some important differences:
// * First, we have to provide separate rules for most of the twenties
// * because the ones digit frequently picks up an accent mark that it
// * doesn't have when standing alone. Second, each multiple of 100 has
// * to be specified separately because the multiplier on 100 very often
// * changes form in the contraction: 500 is "quinientos," not
// * "cincocientos." In addition, the word for 100 is "cien" when
// * standing alone, but changes to "ciento" when followed by more digits.
// * There also some other differences.
// The Spanish rules are incomplete. I'm missing information on negative
// numbers and numbers with fractional parts. I also don't have
// information on numbers higher than the millions.
SpelloutRules {
// negative-number and fraction rules
"-x: menos >>;\n"
"x.x: << punto >>;\n"
// words for values from 0 to 19
"cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
"diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
" diecisiete; dieciocho; diecinueve;\n"
// words for values from 20 to 29 (necessary because the ones digit
// often picks up an accent mark it doesn't have when standing alone)
"veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
" veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
" veintinueve;\n"
// words for multiples of 10 (notice that the tens digit is separated
// from the ones digit by the word "y".)
"30: treinta[ y >>];\n"
"40: cuarenta[ y >>];\n"
"50: cincuenta[ y >>];\n"
"60: sesenta[ y >>];\n"
"70: setenta[ y >>];\n"
"80: ochenta[ y >>];\n"
"90: noventa[ y >>];\n"
// 100 by itself is "cien," but 100 followed by something is "cineto"
"100: cien;\n"
"101: ciento >>;\n"
// words for multiples of 100 (must be stated because they're
// rarely simple concatenations)
"200: doscientos[ >>];\n"
"300: trescientos[ >>];\n"
"400: cuatrocientos[ >>];\n"
"500: quinientos[ >>];\n"
"600: seiscientos[ >>];\n"
"700: setecientos[ >>];\n"
"800: ochocientos[ >>];\n"
"900: novecientos[ >>];\n"
// for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
// but 1,000 is just "mil."
"1000: mil[ >>];\n"
"2000: << mil[ >>];\n"
// 1,000,000 is "un millon," not "uno millon"
"1,000,000: un mill\u00f3n[ >>];\n"
"2,000,000: << mill\u00f3n[ >>];\n"
// overflow rule
"1,000,000,000: =#,##0= (incomplete data);"
}
}
|