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

eo {
    Version { "4.0" } 
    // 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" }
    }
    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",
        ",",
        "+",
    }
    localPatternChars { "GjMtkHmslTDUSnahKzJd" }
    LocaleScript:array{ 
        "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"
    }
}
