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

fr {
    CollationElements { 
	    Version { "1.0" }
		Override { "FALSE" }
		Sequence { "@" }
	}
    Countries { 
        FR { "France" }
        US { "\u00C9tats-Unis" }
        DK { "Danemark" }
        DE { "Allemagne" }
        AT { "Autriche" }
        GR { "Gr\u00E8ce" }
        ES { "Espagne" }
        FI { "Finlande" }
        IT { "Italie" }
        CH { "Suisse" }
        BE { "Belgique" }
        CA { "Canada" }
        JP { "Japon" }
        NL { "Pays-Bas" }
        NO { "Norv\u00E8ge" }
        PT { "Portugal" }
        SE { "Su\u00E8de" }
        TR { "Turquie" }
    }
    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.",
    }
    Languages { 
        fr { "fran\u00E7ais" }
        en { "anglais" }
        de { "allemand" }
        da { "danois" }
        es { "espagnol" }
        el { "grec" }
        fi { "finnois" }
        it { "italien" }
        ja { "japonais" }
        nl { "hollandais" }
        no { "norv\u00E9gien" }
        pt { "portugais" }
        sv { "su\u00E9dois" }
        tr { "turc" }
    }
    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",
        }
    }
}
