// ***************************************************************************
// *
// *   Copyright (C) 2001-2003, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
// * Oromo language locale.
// * Contributed by Daniel Yacob <yacob@geez.org>
// *
// * Oromo terms are provided by Mahdi Hamid Muudee of Sagalee Oromoo
// * Publishing Co. Inc and formatted in Posix format locale by Daniel Yacob of
// * the Ge'ez Frontier Foundation.  The Oromo language terms used here
// * are those considered to be canonical in the Oromo language under
// * contemporary and progressive usage adopted by government bureaus
// * across the Oromo region.  Regional synonyms naturally exist for many
// * of the month and day names.

om {
    Version{ "2.0" }
//    collations {
//        standard { 
//            Version { "1.0" }
//            Sequence { "&Z<ch<<<Ch<<<CH"
//                "<dh<<<Dh<<<DH"
//                "<kh<<<Kh<<<KH"
//                "<ny<<<Ny<<<NY"
//                "<ph<<<Ph<<<PH"
//                "<sh<<<Sh<<<SH"
//            }
//        }
//    }
    DayAbbreviations {
        "Dil",
        "Wix",
        "Qib",
        "Rob",
        "Kam",
        "Jim",
        "San",
    }
    DayNames {
        "Dilbata",
        "Wiixata",
        "Qibxata",
        "Roobii",
        "Kamiisa",
        "Jimaata",
        "Sanbata",
    }
//    LanguageLibraryUse { "orm" }
    MonthAbbreviations {
        "Ama",
        "Gur",
        "Bit",
        "Elb",
        "Cam",
        "Wax",
        "Ado",
        "Hag",
        "Ful",
        "Onk",
        "Sad",
        "Mud",
    }
    MonthNames {
        "Amajjii",
        "Guraandhala",
        "Bitooteessa",
        "Elba",
        "Caamsa",
        "Waxabajjii",
        "Adooleessa",
        "Hagayya",
        "Fuulbana",
        "Onkololeessa",
        "Sadaasa",
        "Muddee",
    }
    Eras { 
        "KD",  // KD = Kiristoos Dura = Before Christ
        "KB",  // KB = Kiristoos Booda = After Christ
    }
    DateTimeElements:intvector { 
        7,
        1,
    }
    Languages { 
        om { "Oromoo" }
    }
    Countries { 
        ET { "Itoophiyaa" }
        KE { "Keeniyaa" }
    }

    // Currency display names
    Currencies {
        KES { "Ksh", "KES" }
    }
    LocaleScript{ 
        "Latn",  // ISO 15924 Name 
    }
    ExemplarCharacters{
        "[a-z]"
    }
}
