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

et {
    CollationElements { 
	    Version { "1.0" }
		Override { "FALSE" }
		Sequence { "@& S < s\u030C, S\u030C < z , Z < z\u030C , Z\u030C & V"
        " ; w , W < o\u0303 , O\u0303< a\u0308 , A\u0308 < o\u0308 , O\u0308 ; w\u0302 ,"
        " W\u0302< u\u0308 , U\u0308& Y < \u01B6 , \u01B5 " }
	}
    Countries { 
        EE { "Eesti" }
    }
    DateTimePatterns { 
            "H:mm:ss z",
            "H:mm:ss z",
            "H:mm:ss",
            "H:mm",
            "EEEE, d, MMMM yyyy",
            "EEEE, d, MMMM yyyy",
            "d-M-yyyy",
            "d-M-yy",
            "{1} {0}",
    }
    DayAbbreviations { 
            "P",
            "E",
            "T",
            "K",
            "N",
            "R",
            "L",
    }
    DayNames { 
            "p\u00FChap\u00E4ev",
            "esmasp\u00E4ev",
            "teisip\u00E4ev",
            "kolmap\u00E4ev",
            "neljap\u00E4ev",
            "reede",
            "laup\u00E4ev",
    }
    Eras { 
            "e.m.a.",
            "m.a.j.",
    }
    Languages { 
        et { "Eesti" }
    }
    LocaleID { "0425" }
    LocaleString { "et" }
    MonthAbbreviations { 
            "Jaan",
            "Veebr",
            "M\u00E4rts",
            "Apr",
            "Mai",
            "Juuni",
            "Juuli",
            "Aug",
            "Sept",
            "Okt",
            "Nov",
            "Dets",
            "",
    }
    MonthNames { 
            "Jaanuar",
            "Veebruar",
            "M\u00E4rts",
            "Aprill",
            "Mai",
            "Juuni",
            "Juuli",
            "August",
            "September",
            "Oktoober",
            "November",
            "Detsember",
            "",
    }
    NumberElements { 
            ",",
            "\u00A0",
            ";",
            "%",
            "0",
            "#",
            "-",
            "E",
            "\u2030",
            "\u221E",
            "\uFFFD",
    }
    ShortLanguage { "est" }
    localPatternChars { "GanjkHmsSEDFwWxhKzAe" }
    zoneStrings { 
        {
                "Africa/Casablanca",
                "GMT",
                "GMT",
                "GMT",
                "GMT",
        }
    }
}
