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

fr {
    CollationElements { 
	    Version { "1.0" }
		Override { "FALSE" }
		Sequence { "@" }
	}
    Countries { 
        AR { "Argentine" }
        AT { "Autriche" }
        AU { "Australie" }
        BE { "Belgique" }
        BM { "Bermudes" }
        BR { "Br\u00E9zil" }
        CA { "Canada" }
        CH { "Suisse" }
        CL { "Chili" }
        CN { "Chine" }
        CO { "Colombie" }
        CU { "Cuba" }
        CY { "Chypre" }
        CZ { "R\u00E9publique Tch\u00e8que" }
        DE { "Allemagne" }
        DK { "Danemark" }
        DO { "R\u00E9publique Dominicaine" } 
        DZ { "Alg\u00E9rie" }
        ES { "Espagne" }
        FI { "Finlande" }
        FR { "France" }
        GB { "Royaume Uni" }
        GR { "Gr\u00E8ce" }
        HR { "Croatie" }
        ID { "Indon\u00E9sie" }
        IE { "Irlande" }
        IL { "Isra\u00EBl" }
        IT { "Italie" }
        JP { "Japon" }
        MT { "Malte" }
        MX { "Mexique" }
        NL { "Pays-Bas" }
        NO { "Norv\u00E8ge" }
        NZ { "Nouvelle-Z\u00E9lande" }
        PT { "Portugal" }
        RU { "Russie" }
        SE { "Su\u00E8de" }
        TR { "Turquie" }
        US { "\u00C9tats-Unis" }
        VE { "Venezuela" }
        YU { "Yougoslavie" }
        ZA { "Afrique du Sud" }
    }

    Languages { 
    root  { "racine" }
        cs { "tch\u00e8que" }
        da { "danois" }
        de { "allemand" }
        el { "grec" }
        en { "anglais" }
        es { "espagnol" }
        fi { "finnois" }
        fr { "fran\u00E7ais" }
        hr { "croate" }
        it { "italien" }
        ja { "japonais" }
        mt { "maltais" }
        nl { "hollandais" } // ne'erlandais ?
        no { "norv\u00E9gien" }
        pt { "portugais" }
        ru { "russe" }
        sv { "su\u00E9dois" }
        tr { "turc" }
        zh { "chinois" }
    }

    DateTimeElements { 
            "2",
            "1",
    }
    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 { "0c" }
    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",
            ";",
            "%",
            "0",
            "#",
            "-",
            "E",
            "\u2030",
            "\u221E",
            "\uFFFD",
    }
    NumberPatterns { 
            "#,##0.###;-#,##0.###",
            "#,##0.00 \u00A4;-#,##0.00 \u00A4",
            "#,##0%",
    }
    ShortLanguage { "fra" }
    localPatternChars { "GanjkHmsSEDFwWxhKzAe" }
    zoneStrings { 
        {
                "Africa/Casablanca",
                "GMT",
                "GMT",
                "GMT",
                "GMT",
        }

// 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

    }
}






