文本文件  |  75行  |  3.27 KB

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