// ***************************************************************************
// *
// *   Copyright (C) 2001-2002, 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{ "1.0" }
    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" }
    }
}
