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

fr {
    Version{"1.1"}
    CollationElements { 
        Version { "1.0" }
        Sequence { "[backwards 2]&A<<\u00e6/e<<<\u00c6/E" }
    }
    Countries { 
        AL { "Albanie" }
        DZ { "Alg\u00e9rie" }
        AD { "Andorre" }
        AR { "Argentine" }
        AM { "Arm\u00e9nie" }
        AU { "Australie" }
        AT { "Autriche" }
        AZ { "Azerba\u00efdjan" }
        BH { "Bahre\u00efn" }
        BB { "Barbade" }
        BY { "Bi\u00e9lo-Russie" }
        BE { "Belgique" }
        BZ { "B\u00e9lize" }
        BM { "Bermudes" }
        BT { "Bhoutan" }
        BO { "Bolivie" }
        BA { "Bosnie-Herz\u00e9govine" }
        BR { "Br\u00e9sil" }
        BG { "Bulgarie" }
        KH { "Cambodge" }
        CM { "Cameroun" }
        CV { "Cap Vert" }
        CF { "R\u00e9publique Centre-Africaine" }
        TD { "Tchad" }
        CL { "Chili" }
        CN { "Chine" }
        CO { "Colombie" }
        KM { "Comores" }
        HR { "Croatie" }
        CY { "Chypre" }
        CZ { "R\u00e9publique Tch\u00e8que" }
        DK { "Danemark" }
        DM { "Dominique" }
        DO { "R\u00e9publique Dominicaine" }
        TP { "Timor Oriental" }
        EC { "Equateur" }
        EG { "Egypte" }
        GQ { "Guin\u00e9e Equatoriale" }
        ER { "Erythr\u00e9e" }
        EE { "Estonie" }
        ET { "Ethiopie" }
        FJ { "Fidji" }
        FI { "Finlande" }
        GF { "Guin\u00e9e Fran\u00e7aise" }
        PF { "Polyn\u00e9sie Fran\u00e7aise" }
        TF { "Territoires Fran\u00e7ais du Sud" }
        GM { "Gambie" }
        GE { "G\u00e9orgie" }
        DE { "Allemagne" }
        GR { "Gr\u00e8ce" }
        GN { "Guin\u00e9e" }
        GW { "Guin\u00e9e-Bissau" }
        GY { "Guyane" }
        HT { "Ha\u00efti" }
        HK { "Hong-Kong SAR" }
        HU { "Hongrie" }
        IS { "Islande" }
        IN { "Inde" }
        ID { "Indon\u00e9sie" }
        IQ { "Irak" }
        IE { "Irlande" }
        IL { "Isra\u00ebl" }
        IT { "Italie" }
        JM { "Jama\u00efque" }
        JP { "Japon" }
        JO { "Jordanie" }
        KP { "Cor\u00e9e du Nord" }
        KR { "Cor\u00e9e du Sud" }
        KW { "Koweit" }
        LV { "Lettonie" }
        LB { "Liban" }
        LY { "Libye" }
        LT { "Lithuanie" }
        MK { "Mac\u00e9doine" }
        MO { "Macao SAR" }
        MY { "Malaisie" }
        MT { "Malte" }
        MR { "Mauritanie" }
        MU { "Maurice" }
        MX { "Mexique" }
        FM { "Micron\u00e9sie" }
        MD { "Moldavie" }
        MN { "Mongolie" }
        MA { "Maroc" }
        NA { "Namibie" }
        NP { "N\u00e9pal" }
        NL { "Pays-Bas" }
        AN { "Antilles N\u00e9erlandaises" }
        NC { "Nouvelle-Cal\u00e9donie" }
        NZ { "Nouvelle-Z\u00e9lande" }
        NG { "Nig\u00e9ria" }
        NO { "Norv\u00e8ge" }
        PG { "Papouasie-Nouvelle-Guin\u00e9e" }
        PE { "P\u00e9rou" }
        PL { "Pologne" }
        PR { "Porto Rico" }
        RO { "Roumanie" }
        RU { "Russie" }
        SA { "Arabie Saoudite" }
        SN { "S\u00e9n\u00e9gal" }
        SP { "Serbie" }
        SG { "Singapour" }
        SK { "Slovaquie" }
        SI { "Slov\u00e9nie" }
        SO { "Somalie" }
        ZA { "Afrique du Sud" }
        ES { "Espagne" }
        SD { "Soudan" }
        SE { "Su\u00e8de" }
        CH { "Suisse" }
        SY { "Syrie" }
        TJ { "Tadjikistan" }
        TZ { "Tanzanie" }
        TH { "Tha\u00eflande" }
        TT { "Trinit\u00e9-et-Tobago" }
        TN { "Tunisie" }
        TR { "Turquie" }
        UG { "Ouganda" }
        AE { "Emirats Arabes Unis" }
        GB { "Royaume-Uni" }
        US { "\u00C9tats-Unis" }
        UZ { "Ouzb\u00e9kistan" }
        VE { "V\u00e9n\u00e9zuela" }
        VG { "Iles Vierges Britanniques" }
        VI { "Iles Vierges Am\u00e9ricaines" }
        EH { "Sahara Occidental" }
        YE { "Y\u00e9men" }
        YU { "Yougoslavie" }
        ZR { "Za\u00efre" }
        ZM { "Zambie" }
    }

    Languages { 
        root  { "racine" }

        ab { "abkhaze" }
        aa { "afar" }
        af { "afrikaans" }
        sq { "albanais" }
        am { "amharique" }
        ar { "arabe" }
        hy { "arm\u00e9nien" }
        as { "assamais" }
        ay { "aymara" }
        az { "az\u00e9ri" }
        ba { "bachkir" }
        eu { "basque" }
        bn { "bengali" }
        dz { "dzongkha" }
        bh { "bihari" }
        bi { "bichlamar" }
        br { "breton" }
        bg { "bulgare" }
        my { "birman" }
        be { "bi\u00e9lorusse" }
        km { "khmer" }
        ca { "catalan" }
        zh { "chinois" }
        co { "corse" }
        hr { "croate" }
        cs { "tch\u00e8que" }
        da { "danois" }
        nl { "hollandais" } // n\u00e9erlandais ?
        en { "anglais" }
        eo { "esp\u00e9ranto" }
        et { "estonien" }
        fo { "f\u00e9ro\u00efen" }
        fj { "fidjien" }
        fi { "finnois" }
        fr { "fran\u00e7ais" }
        fy { "frison" }
        gl { "galicien" }
        ka { "georgien" }
        de { "allemand" }
        el { "grec" }
        kl { "groenlandais" }
        gn { "guarani" }
        gu { "goudjrati" }
        ha { "haoussa" }
        he { "h\u00e9breu" }
        hi { "hindi" }
        hu { "hongrois" }
        is { "islandais" }
        id { "indon\u00e9sien" }
        ia { "interlingua" }
        ie { "interlingue" }
        iu { "inuktitut" }
        ik { "inupiaq" }
        ga { "irlandais" }
        it { "italien" }
        ja { "japonais" }
        jw { "javanais" }
        kn { "kannada" }
        ks { "kashmiri" }
        kk { "kazakh" }
        rw { "rwanda" }
        ky { "kirghize" }
        rn { "rundi" }
        ko { "cor\u00e9en" }
        ku { "kurde" }
        lo { "lao" }
        la { "latin" }
        lv { "letton" }
        ln { "lingala" }
        lt { "lithuanien" }
        mk { "mac\u00e9donien" }
        mg { "malgache" }
        ms { "malais" }
        ml { "malayalam" }
        mt { "maltais" }
        mi { "maori" }
        mr { "marathe" }
        mo { "moldave" }
        mn { "mongol" }
        na { "nauruan" }
        ne { "n\u00e9palais" }
        no { "norv\u00e9gien" }
        oc { "occitan" }
        or { "oriya" }
        om { "galla" }
        ps { "pachto" }
        fa { "persan" }
        pl { "polonais" }
        pt { "portugais" }
        pa { "pendjabi" }
        qu { "quechua" }
        rm { "rh\u00e9toroman" }
        ro { "roumain" }
        ru { "russe" }
        sm { "samoan" }
        sg { "sango" }
        sa { "sanscrit" }
        gd { "ecossais ga\u00e9lique" }
        sr { "serbe" }
        sh { "serbo-croate" }
        st { "sotho du sud" }
        tn { "setswana" }
        sn { "shona" }
        sd { "sindhi" }
        si { "singhalais" }
        ss { "swati" }
        sk { "slovaque" }
        sl { "slov\u00e8ne" }
        so { "somali" }
        es { "espagnol" }
        su { "soundanais" }
        sw { "swahili" }
        sv { "su\u00e9dois" }
        tl { "tagalog" }
        tg { "tadjik" }
        ta { "tamoul" }
        tt { "tatare" }
        te { "telugu" }
        th { "tha\u00ef" }
        bo { "tib\u00e9tain" }
        ti { "tigrigna" }
        to { "tonga" }
        ts { "tsonga" }
        tr { "turc" }
        tk { "turkm\u00e8ne" }
        tw { "twi" }
        ug { "ou\u00efgour" }
        uk { "ukrainien" }
        ur { "ourdou" }
        uz { "ouzbek" }
        vi { "vietnamien" }
        vo { "volap\u00fck" }
        cy { "gallois" }
        wo { "wolof" }
        xh { "xhosa" }
        yi { "yiddish" }
        yo { "yoruba" }
        za { "zhuang" }
        zu { "zoulou" }
    }

    DateTimePatterns { 
        "HH' h 'mm 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}",
    }
    DayAbbreviations { 
        "dim.",
        "lun.",
        "mar.",
        "mer.",
        "jeu.",
        "ven.",
        "sam.",
    }
    DayNames { 
        "dimanche",
        "lundi",
        "mardi",
        "mercredi",
        "jeudi",
        "vendredi",
        "samedi",
    }


    Eras { 
        "av. J.-C.",
        "ap. J.-C.",
    }
    LocaleID:int { 0x0c }
//    LocaleString { "fr" }
    MonthAbbreviations { 
        "janv.",
        "f\u00E9vr.",
        "mars",
        "avr.",
        "mai",
        "juin",
        "juil.",
        "ao\u00FBt",
        "sept.",
        "oct.",
        "nov.",
        "d\u00E9c.",
    }
    MonthNames { 
        "janvier",
        "f\u00E9vrier",
        "mars",
        "avril",
        "mai",
        "juin",
        "juillet",
        "ao\u00FBt",
        "septembre",
        "octobre",
        "novembre",
        "d\u00E9cembre",
    }
    NumberElements { 
        ",",
        "\u00A0",  // &nbsp;
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
    }
    NumberPatterns { 
        "#,##0.###;-#,##0.###",
        "#,##0.00 \u00A4;-#,##0.00 \u00A4",
        "#,##0%",
        "#E0",
    }
//    ShortLanguage { "fra" }
    localPatternChars { "GanjkHmsSEDFwWxhKzAe" }
    zoneStrings { 
        {
            "Africa/Casablanca",
            "GMT",
            "GMT",
            "GMT",
            "GMT",
        }
    }
//    LocaleScript{  
//        "Latn",  // ISO 15924 Name 
//    }
    ExemplarCharacters { "[a-z \u00e9 \u00e8 \u00f9 \u00e7 \u00e0 \u00e2 \u00ea \u00ee \u00f4 \u00fb \u00e6 \u0153 \u00eb \u00ef]" }

// http://www.elections.ca/gen_info/backgrounders/ec90815_f.html
// http://lcweb.loc.gov/standards/iso639-2/frenchlangn.html
// http://www.egt.ie/standards/iso3166/iso3166-1-fr.html

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

//         * Spellout rules for French.  French adds some interesting quirks of its
//         * own: 1) The word "et" is interposed between the tens and ones digits,
//         * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
//         * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
//         * "quatre-vingts" ("four twenties") is used for 80, and values proceed
//         * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
//         * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
//         * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
//         * "mille cent" ("one thousand one hundred")

    SpelloutRules {
        // the main rule set
        "%main:\n"
        "    -x: moins >>;\n"
        "    x.x: << virgule >>;\n"
               // words for numbers from 0 to 10
        "    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"
               // ords for the multiples of 10: %%alt-ones inserts "et"
               // when needed
        "    20: vingt[->%%alt-ones>];\n"
        "    30: trente[->%%alt-ones>];\n"
        "    40: quarante[->%%alt-ones>];\n"
        "    50: cinquante[->%%alt-ones>];\n"
               // rule for 60.  The /20 causes this rule's multiplier to be
               // 20 rather than 10, allowinhg us to recurse for all values
               // from 60 to 79...
        "    60/20: soixante[->%%alt-ones>];\n"
               // ...except for 71, which must be special-cased
        "    71: soixante et onze;\n"
               // at 72, we have to repeat the rule for 60 to get us to 79
        "    72/20: soixante->%%alt-ones>;\n"
               // at 80, we state a new rule with the phrase for 80.  Since
               // it changes form when there's a ones digit, we need a second
               // rule at 81.  This rule also includes "/20," allowing it to
               // be used correctly for all values up to 99
        "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
               // "cent" becomes plural when preceded by a multiplier, and
               // the multiplier is omitted from the singular form
        "    100: cent[ >>];\n"
        "    200: << cents[ >>];\n"
        "    1000: mille[ >>];\n"
               // values from 1,100 to 1,199 are rendered as "onze cents..."
               // instead of "mille cent..."  The > after "1000" decreases
               // the rule's exponent, causing its multiplier to be 100 instead
               // of 1,000.  This prevents us from getting "onze cents cent
               // vingt-deux" ("eleven hundred one hundred twenty-two").
        "    1100>: onze cents[ >>];\n"
               // at 1,200, we go back to formating in thousands, so we
               // repeat the rule for 1,000
        "    1200: mille >>;\n"
               // at 2,000, the multiplier is added
        "    2000: << mille[ >>];\n"
        "    1,000,000: << million[ >>];\n"
        "    1,000,000,000: << milliard[ >>];\n"
        "    1,000,000,000,000: << billion[ >>];\n"
        "    1,000,000,000,000,000: =#,##0=;\n"
        // %%alt-ones is used to insert "et" when the ones digit is 1
        "%%alt-ones:\n"
        "    ; et-un; =%main=;\n" 
        "%%lenient-parse:\n"
        "    &\u0000 << ' ' << ',' << '-';\n"
    }
}
