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

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

    }
}






