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

fr {
    CollationElements { 
	    Version { "1.0" }
		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

    }
}






