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

fr_CH {
    Version { "1.0" }
    CurrencyElements { 
        "SFr.",
        "CHF",
        ".",
    }
    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: 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=;" 
    }
}
