// ***************************************************************************
// *
// *   Copyright (C) 2004, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
// 

de {
    // * RuleBasedNumberFormat data for German

    // again, I'm not 100% sure of these rules.  I think both "hundert" and
    // "einhundert" are correct or 100, but I'm not sure which is preferable
    // in situations where this framework is likely to be used.  Also, is it
    // really true that numbers are run together into compound words all the
    // time?
    SpelloutRules {
        // 1 is "eins" when by itself, but turns into "ein" in most
        // combinations
        "%alt-ones:\n"
            "-x: minus >>;\n"
            "x.x: << komma >>;\n"
            "null; eins; =%%main=;\n"
        "%%main:\n"
               // words for numbers from 0 to 12.  Notice that the values
               // from 13 to 19 can derived algorithmically, unlike in most
               // other languages
            "null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
            "zehn; elf; zw\u00f6lf; >>zehn;\n"
               // rules for the multiples of 10.  Notice that the ones digit
               // goes on the front
            "20: [>>und]zwanzig;\n"
            "30: [>>und]drei\u00dfig;\n"
            "40: [>>und]vierzig;\n"
            "50: [>>und]f\u00fcnfzig;\n"
            "60: [>>und]sechzig;\n"
            "70: [>>und]siebzig;\n"
            "80: [>>und]achtzig;\n"
            "90: [>>und]neunzig;\n"
            "100: hundert[>%alt-ones>];\n"
            "200: <<hundert[>%alt-ones>];\n"
            "1000: tausend[>%alt-ones>];\n"
            "2000: <<tausend[>%alt-ones>];\n"
            "1,000,000: eine Million[ >%alt-ones>];\n"
            "2,000,000: << Millionen[ >%alt-ones>];\n"
            "1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
            "2,000,000,000: << Milliarden[ >%alt-ones>];\n"
            "1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
            "2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
            "1,000,000,000,000,000: =#,##0=;"
        "%%lenient-parse:\n"
            "&\u0000 << ' ' << '-'\n"
            "& ae , \u00e4 & ae , \u00c4\n"
            "& oe , \u00f6 & oe , \u00d6\n"
            "& ue , \u00fc & ue , \u00dc\n"
    }
}
