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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
// ***************************************************************************
// *
// * Copyright (C) 2004, 2007 International Business Machines
// * Corporation and others. All Rights Reserved.
// *
// ***************************************************************************
//
it {
//------------------------------------------------------------
// Rule Based Number Format Support
//------------------------------------------------------------
// * Spellout rules for Italian. Like German, most Italian numbers are
// * written as single words. What makes these rules complicated is the rule
// * that says that when a word ending in a vowel and a word beginning with
// * a vowel are combined into a compound, the vowel is dropped from the
// * end of the first word: 180 is "centottanta," not "centoottanta."
// * The complexity of this rule set is to produce this behavior.
// * The "no-final" stanzas are used to deal with the fact that the number
// * three ( "tre" ) takes an accent when it is at the end of a word
// * like 23 ( ventitr<e-accent> ), but would NOT take an accent
// * in the context of a thousands or millions, for example,
// * 23,000 would be ventitremila, and would not have an accent on the "tre".
//
SpelloutRules {
// main rule set. Follows the patterns of the preceding rule sets,
// except that the final vowel is omitted from words ending in
// vowels when they are followed by another word; instead, we have
// separate rule sets that are identical to this one, except that
// all the words that don't begin with a vowel have a vowel tacked
// onto them at the front. A word ending in a vowel calls a
// substitution that will supply that vowel, unless that vowel is to
// be elided.
"%main:\n"
"-x: meno >>;\n"
"x.x: << virgola >>;\n"
"zero; uno; due; tre; quattro; cinque; sei; sette; otto; nove;\n"
"dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
" diciasette; diciotto; diciannove;\n"
"20: venti; vent>%%with-i>;\n"
"30: trenta; trent>%%with-a>;\n"
"40: quaranta; quarant>%%with-a>;\n"
"50: cinquanta; cinquant>%%with-a>;\n"
"60: sessanta; sessant>%%with-a>;\n"
"70: settanta; settant>%%with-a>;\n"
"80: ottanta; ottant>%%with-a>;\n"
"90: novanta; novant>%%with-a>;\n"
"100: cento; cent[>%%with-o>];\n"
"200: <<cento; <<cent[>%%with-o>];\n"
"1000: mille; mille>>;\n"
"2000: <%%no-final<mila; <%%no-final<mil>%%with-a>;\n"
"100,000>>: <%%no-final<mila[ >>];\n"
"1,000,000: un milione; un milione >>;\n"
"2,000,000: << milioni[ >>];\n"
"1,000,000,000: un miliardo; un miliardo >>;\n"
"2,000,000,000: << miliardi[ >>];\n"
"1,000,000,000,000: =#,##0= (incomplete data);\n"
"%%no-final:\n"
"zero; uno; due; tre; quattro; cinque; sei; sette; otto; nove;\n"
"dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
" diciasette; diciotto; diciannove;\n"
"20: venti; vent>%%with-i-nofinal>;\n"
"30: trenta; trent>%%with-a-nofinal>;\n"
"40: quaranta; quarant>%%with-a-nofinal>;\n"
"50: cinquanta; cinquant>%%with-a-nofinal>;\n"
"60: sessanta; sessant>%%with-a-nofinal>;\n"
"70: settanta; settant>%%with-a-nofinal>;\n"
"80: ottanta; ottant>%%with-a-nofinal>;\n"
"90: novanta; novant>%%with-a-nofinal>;\n"
"100: cento; cent[>%%with-o-nofinal>];\n"
"200: <<cento; <<cent[>%%with-o-nofinal>];\n"
"1,000: =%main=;\n"
"%%with-a:\n"
"azero; uno; adue; atr\u00E9; aquattro; acinque; asei; asette; otto; anove;\n"
"adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
" adiciasette; adiciotto; adiciannove;\n"
"20: aventi; avent>%%with-i>;\n"
"30: atrenta; atrent>%%with-a>;\n"
"40: aquaranta; aquarant>%%with-a>;\n"
"50: acinquanta; acinquant>%%with-a>;\n"
"60: asessanta; asessant>%%with-a>;\n"
"70: asettanta; asettant>%%with-a>;\n"
"80: ottanta; ottant>%%with-a>;\n"
"90: anovanta; anovant>%%with-a>;\n"
"100: acento; acent[>%%with-o>];\n"
"200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
"1000: amille; amill[>%%with-i>];\n"
"2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
"100,000: =%main=;\n"
"%%with-a-nofinal:\n"
"azero; uno; adue; atre; aquattro; acinque; asei; asette; otto; anove;\n"
"adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
" adiciasette; adiciotto; adiciannove;\n"
"20: aventi; avent>%%with-i-nofinal>;\n"
"30: atrenta; atrent>%%with-a-nofinal>;\n"
"40: aquaranta; aquarant>%%with-a-nofinal>;\n"
"50: acinquanta; acinquant>%%with-a-nofinal>;\n"
"60: asessanta; asessant>%%with-a-nofinal>;\n"
"70: asettanta; asettant>%%with-a-nofinal>;\n"
"80: ottanta; ottant>%%with-a-nofinal>;\n"
"90: anovanta; anovant>%%with-a-nofinal>;\n"
"100: acento; acent[>%%with-o-nofinal>];\n"
"200: <%%with-a-nofinal<cento; <%%with-a-nofinal<cent[>%%with-o-nofinal>];\n"
"1,000: =%main=;\n"
"%%with-i:\n"
"izero; uno; idue; itr\u00E9; iquattro; icinque; isei; isette; otto; inove;\n"
"idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
" idiciasette; idiciotto; idiciannove;\n"
"20: iventi; ivent>%%with-i>;\n"
"30: itrenta; itrent>%%with-a>;\n"
"40: iquaranta; iquarant>%%with-a>;\n"
"50: icinquanta; icinquant>%%with-a>;\n"
"60: isessanta; isessant>%%with-a>;\n"
"70: isettanta; isettant>%%with-a>;\n"
"80: ottanta; ottant>%%with-a>;\n"
"90: inovanta; inovant>%%with-a>;\n"
"100: icento; icent[>%%with-o>];\n"
"200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
"1000: imille; imill[>%%with-i>];\n"
"2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
"100,000: =%main=;\n"
"%%with-i-nofinal:\n"
"izero; uno; idue; itre; iquattro; icinque; isei; isette; otto; inove;\n"
"idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
" idiciasette; idiciotto; idiciannove;\n"
"20: iventi; ivent>%%with-i-nofinal>;\n"
"30: itrenta; itrent>%%with-a-nofinal>;\n"
"40: iquaranta; iquarant>%%with-a-nofinal>;\n"
"50: icinquanta; icinquant>%%with-a-nofinal>;\n"
"60: isessanta; isessant>%%with-a-nofinal>;\n"
"70: isettanta; isettant>%%with-a-nofinal>;\n"
"80: ottanta; ottant>%%with-a-nofinal>;\n"
"90: inovanta; inovant>%%with-a-nofinal>;\n"
"100: icento; icent[>%%with-o-nofinal>];\n"
"200: <%%with-i-nofinal<cento; <%%with-i-nofinal<cent[>%%with-o-nofinal>];\n"
"1,000: =%main=;\n"
"%%with-o:\n"
"ozero; uno; odue; otr\u00E9; oquattro; ocinque; osei; osette; otto; onove;\n"
"odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
" odiciasette; odiciotto; odiciannove;\n"
"20: oventi; ovent>%%with-i>;\n"
"30: otrenta; otrent>%%with-a>;\n"
"40: oquaranta; oquarant>%%with-a>;\n"
"50: ocinquanta; ocinquant>%%with-a>;\n"
"60: osessanta; osessant>%%with-a>;\n"
"70: osettanta; osettant>%%with-a>;\n"
"80: ottanta; ottant>%%with-a>;\n"
"90: onovanta; onovant>%%with-a>;\n"
"100: ocento; ocent[>%%with-o>];\n"
"200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
"1000: omille; omill[>%%with-i>];\n"
"2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
"100,000: =%main=;\n"
"%%with-o-nofinal:\n"
"ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto; onove;\n"
"odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
" odiciasette; odiciotto; odiciannove;\n"
"20: oventi; ovent>%%with-i-nofinal>;\n"
"30: otrenta; otrent>%%with-a-nofinal>;\n"
"40: oquaranta; oquarant>%%with-a-nofinal>;\n"
"50: ocinquanta; ocinquant>%%with-a-nofinal>;\n"
"60: osessanta; osessant>%%with-a-nofinal>;\n"
"70: osettanta; osettant>%%with-a-nofinal>;\n"
"80: ottanta; ottant>%%with-a-nofinal>;\n"
"90: onovanta; onovant>%%with-a-nofinal>;\n"
"100: ocento; ocent[>%%with-o-nofinal>];\n"
"200: <%%with-o-nofinal<cento; <%%with-o-nofinal<cent[>%%with-o-nofinal>];\n"
"1,000: =%main=;\n"
}
}
|