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

fr_CH {
    Version { "2.0" }
    DateTimeElements:intvector { 
        2,
        4,
    }
    DateTimePatterns { 
        "HH.mm:ss' h' z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "EEEE, d MMMM yyyy",
        "d MMMM yyyy",
        "d MMM yy",
        "dd.MM.yy",
        "{1} {0}",
    }
    NumberElements { 
        ".",
        "'",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ".",
        "+",
    }
    NumberPatterns { 
        "#,##0.###;-#,##0.###",
        "\u00A4 #,##0.00;\u00A4-#,##0.00",
        "#,##0%",
        "#E0",
    }


    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

//         * Spellout rules for Swiss French.  Swiss French differs from French French
//         * in that it does have words for 70, 80, and 90.  This rule set shows them,
//         * and is simpler as a result.

    // again, I'm missing information on negative numbers and decimals for
    // these to rule sets.  Also, I'm not 100% sure about Swiss French.  Is
    // this correct?  Is "onze cents" commonly used for 1,100 in both France
    // and Switzerland?  Can someone fill me in on the rules for the other
    // French-speaking countries?  I've heard conflicting opinions on which
    // version is used in Canada, and I understand there's an alternate set
    // of words for 70, 80, and 90 that is used somewhere, but I don't know
    // what those words are or where they're used.

    SpelloutRules {
        "%main:\n"
            "-x: moins >>;\n"
            "x.x: << virgule >>;\n"
            "z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
            "dix; onze; douze; treize; quatorze; quinze; seize;\n"
            "    dix-sept; dix-huit; dix-neuf;\n"
            "20: vingt[->%%alt-ones>];\n"
            "30: trente[->%%alt-ones>];\n"
            "40: quarante[->%%alt-ones>];\n"
            "50: cinquante[->%%alt-ones>];\n"
            "60: soixante[->%%alt-ones>];\n"
               // notice new words for 70, 80, and 90
            "70: septante[->%%alt-ones>];\n"
            "80: huitante[->%%alt-ones>];\n"
            "90: nonante[->%%alt-ones>];\n"
            "100: cent[ >>];\n"
            "200: << cents[ >>];\n"
            "1000: mille[ >>];\n"
            "1100>: onze cents[ >>];\n"
            "1200: mille >>;\n"
            "2000: << mille[ >>];\n"
            "1,000,000: << million[ >>];\n"
            "1,000,000,000: << milliarde[ >>];\n"
            "1,000,000,000,000: << billion[ >>];\n"
            "1,000,000,000,000,000: =#,##0=;\n"
        "%%alt-ones:\n"
            "; et-un; =%main=;" 
    }
}
