// ***************************************************************************
// *
// *   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' 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:int { 0x100c }
//    LocaleString { "fr_CH" }
    NumberElements { 
        ".",
        "'",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
        ".",
    }
    NumberPatterns { 
        "#,##0.###;-#,##0.###",
        "\u00A4 #,##0.00;\u00A4-#,##0.00",
        "#,##0%",
        "#E0",
    }
//    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: 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=;" 
    }
}
