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

fr_CH {
    CurrencyElements { 
            "SFr.",
            "CHF",
            ".",
    }
    DateTimeElements { 
            "2",
            "4",
    }
    DateTimePatterns { 
            "HH.mm.' 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}",
    }
    LocaleID { "100c" }
    LocaleString { "fr_CH" }
    NumberElements { 
            ".",
            "'",
            ";",
            "%",
            "0",
            "#",
            "-",
            "E",
            "\u2030",
            "\u221E",
            "\uFFFD",
    }
    NumberPatterns { 
            "#,##0.###;-#,##0.###",
            "\u00A4 #,##0.00;\u00A4-#,##0.00",
            "#,##0%",
    }
    ShortCountry { "CHE" }
    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: octante[->%%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=;" 
    }
}
