// ***************************************************************************
// *
// *   Copyright (C) 1999-2002, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
//              or better http://www.jtcsv.com/cgibin/icu-bugs

eo {
    Version { "2.1" } 

    // collation: accented characters have primary (base character) differences
    // see Jitterbug 1440 http://www.jtcsv.com/cgibin/icu-bugs?findid=1440
    CollationElements { 
        Version { "1.0" }
        Sequence { "&C<\u0109<<<\u0108 &G<\u011d<<<\u011c &H<\u0125<<<\u0124"
                   "&J<\u0135<<<\u0134 &S<\u015d<<<\u015c &U<\u016d<<<\u016c" }
    }

    Countries { 
        AT { "A\u016dstrujo" }
        BE { "Belgujo" }
        CA { "Kanado" }
        CH { "Svisujo" }
        DE { "Germanujo" }
        DK { "Danujo" }
        ES { "Hispanujo" }
        FI { "Finnlando" }
        GR { "Grekujo" }
        IT { "Italujo" }
        JP { "Japanujo" }
        NL { "Nederlando" }
        NO { "Norvego" }
        PT { "Portugalujo" }
        SE { "Svedujo" }
        TR { "Turkujo" }
        US { "Usono" }
    }
    DateTimePatterns { 
        "H'-a horo kaj 'm z",
        "HH:mm:ss z",
        "HH:mm:ss",
        "HH:mm",
        "EEEE, d'-a de 'MMMM yyyy",
        "yyyy-MMMM-dd",
        "yyyy-MMM-dd",
        "yy-MM-dd",
        "{1} {0}",
    }
    DateTimeElements:intvector { 
        2,
        4,
    }
    AmPmMarkers { 
        "atm",
        "ptm",
    }
    DayAbbreviations { 
        "di",
        "lu",
        "ma",
        "me",
        "\u0135a",
        "ve",
        "sa",
    }
    DayNames { 
        "diman\u0109o",
        "lundo",
        "mardo",
        "merkredo",
        "\u0135a\u016ddo",
        "vendredo",
        "sabato",
    }
    Eras { 
        "aK",
        "pK",
    }
    Languages { 
        da { "dana" }
        de { "germana" }
        el { "greka" }
        en { "angla" }
        eo { "esperanto" }
        es { "hispana" }
        fi { "finna" }
        it { "itala" }
        ja { "japana" }
        nl { "nederlanda" }
        no { "norvega" }
        pt { "portugala" }
        sv { "sveda" }
        tr { "turka" }
    }
    //LocaleID { "07e0" }
//    LocaleString { "eo" }
    MonthAbbreviations { 
        "jan",
        "feb",
        "mar",
        "apr",
        "maj",
        "jun",
        "jul",
        "a\u016dg",
        "sep",
        "okt",
        "nov",
        "dec",
    }
    MonthNames { 
        "januaro",
        "februaro",
        "marto",
        "aprilo",
        "majo",
        "junio",
        "julio",
        "a\u016dgusto",
        "septembro",
        "oktobro",
        "novembro",
        "decembro",
    }
    NumberElements { 
        ",",
        "\u00a0",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "\u2030",
        "\u221E",
        "\uFFFD",
    }
//    ShortLanguage { "epo" }
    localPatternChars { "GjMtkHmslTDUSnahKzJd" }
//    LocaleScript{ 
//        "Latn",  // ISO 15924 Name 
//    }
    ExemplarCharacters { "[a-z \u016d \u0109 \u011d \u0125 \u0135 \u015d]" }
    //------------------------------------------------------------
    // Rule Based Number Format Support
    //------------------------------------------------------------

// data from 'Esperanto-programita 1' courtesy of Markus Scherer

    SpelloutRules {
        "-x: minus >>;\n"
        "x.x: << komo >>;\n"
        "nulo; unu; du; tri; kvar; kvin; ses; sep; ok; na\u016d;\n"
        "10: dek[ >>];\n"
        "20: <<dek[ >>];\n"
        "100: cent[ >>];\n"
        "200: <<cent[ >>];\n"
        "1000: mil[ >>];\n"
        "2000: <<mil[ >>];\n"
        "10000: dekmil[ >>];\n"
        "11000>: << mil[ >>];\n"
        "1,000,000: miliono[ >>];\n"
        "2,000,000: << milionoj[ >>];\n"
        "1,000,000,000: miliardo[ >>];\n"
        "2,000,000,000: << miliardoj[ >>];\n"
        "1,000,000,000,000: biliono[ >>];\n"
        "2,000,000,000,000: << bilionoj[ >>];\n"
        "1,000,000,000,000,000: =#,##0=;\n"
    }
}
