// *************************************************************************** // * // * 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);" } }