// ****************************************************************************
// *                                                                          *
// * COPYRIGHT:                                                               *
// *   Copyright (C) 1997-2001, International Business Machines
// * Licensed Material - Program-Property of IBM - All Rights Reserved.       *
// * US Government Users Restricted Rights - Use, duplication, or disclosure  *
// * restricted by GSA ADP Schedule Contract with IBM Corp.                   *
// *                                                                          *
// ****************************************************************************
// Feedback to : schererm@us.ibm.com

eo {
    Version { "1.1.1" } 
    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 { 
            "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 { "GjMtkHmslTJUSnahKz" }
    LocaleScript{ 
                "Latn",  // ISO 15924 Name 
    }

    //------------------------------------------------------------
    // 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"
    }
}
