// ***************************************************************************
// *
// *   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",
    }
// Fall back to French
//    zoneStrings { 
//        {
//            "Africa/Casablanca",
//            "GMT",
//            "GMT",
//            "GMT",
//            "GMT",
//        }
//    }

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