// ***************************************************************************
// *
// *   Copyright (C) 2001-2004, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
// * Somali language locale.
// * Contributed by :
// *    Daniel Yacob <yacob@geez.org>, Ge'ez Frontier Foundation
// *    Mohamed Diriye Abdullahi <diriyeam@magellan.umontreal.ca>
// *    Department of Linguistics and Translation, Universite de Montreal, Montreal

so{ 
    Version{ "2.0" }
    Countries { 
        AE { "Imaaraadka Carabta ee Midoobay" }
        AF { "Afgaanistaan" }
        AM { "Armeeniya" }
        AO { "Angoola" }
        AT { "Osteeriya" }
        AU { "Awstraaliya" }

        BA { "Boosniya Heersigoviina" }
        BB { "Baarbadoos" }
        BD { "Bangaala-Deesh" }
        BE { "Beljiyam" }
        BH { "Baxrayn" }
        BJ { "Beniin" }
        BR { "Braasiil" }

        CA { "Kanada" }
        CH { "Swiiserlaand" }
        CL { "Jili" }
        CM { "Kameruun" }
        CN { "Shiinaha" }
        CU { "Kuuba" }

        DE { "Jarmal" }
        DJ { "Jabuuti" }
        DK { "Danmaark" }

        EG { "Masar" }
        ES { "Isbeyn" }
        ET { "Itoobiya" }

        FI { "Fiinlaand" }
        FR { "Faransiis" }

        GD { "Giriinaada" }
        GN { "Gini" }
        GR { "Giriigga" }

        HR { "Korweeshiya" }
        HU { "Hangeri" }

        ID { "Indoneesiya" }
        IE { "Ayrlaanda" }
        IL { "Israa'iil" }
        IN { "Hindiya" }
        IQ { "Ciraaq" }
        IR { "Iiraan" }
        IS { "Iislaand" }
        IT { "Talyaani" }

        JM { "Jameyka" }
        JO { "Urdun" }
        JP { "Jabbaan" }

        KE { "Kiiniya" }
        KH { "Kamboodiya" }
        KP { "Kuuriyada Waqooyi" }
        KR { "Kuuriyada Koonfureed" }
        KW { "Kuwayt" }
        KZ { "Kasaakhistaan" }

        LB { "Lubnaan" }
        LK { "Siirilaanka" }
        LR { "Laybeeriya" }
        LS { "Losooto" }
        LU { "Luksemboorg" }
        LV { "Laatfiya" }
        LY { "Liibiya" }

        MA { "Marooko" }
        MC { "Moonako" }
        MK { "Makadooniya" }
        ML { "Maali" }
        MR { "Muritaaniya" }
        MT { "Maalda" }
        MV { "Maaldiqeen" }
        MW { "Malaawi" }
        MX { "Meksiko" }
        MZ { "Musambiig" }

        NA { "Namiibiya" }
        NG { "Nayjeeriya" }
        NI { "Nikaraaguwa" }
        NO { "Noorweey" }
        NZ { "Neyuusilaand" }

        OM { "Cumaan" }

        PH { "Filibiin" }
        PK { "Bakistaan" }
        PL { "Booland" }
        PT { "Bortuqaal" }

        QA { "Qadar" }

        RO { "Rumaaniya" }
        RU { "Ruush" }

        SA { "Sacuudi Carabiya" }
        SD { "Sudaan" }
        SE { "Iswidhan" }
        SL { "Siraaliyoon" }
        SO { "Soomaaliya" }
        SY { "Suuriya" }

        TD { "Jaad" }
        TG { "Toogo" }
        TH { "Taylaand" }
        TN { "Tuniisiya" }
        TR { "Turki" }
        TZ { "Tansaaniya" }

        UG { "Ugaanda" }
        US { "Qaramada Midoobey ee Maraykanka" }

        VA { "Faatikaan" }
        VE { "Fenisuweela" }
        VN { "Fiyetnaam" }

        YE { "Yaman" }

        ZA { "Koonfur Afrika" }
        ZM { "Saambiya" }
        ZW { "Simbaabwe" }
    }
    Currencies {
        KES { "Ksh", "KES" }
    }

    ExemplarCharacters { "[a-z]" }
    LocaleScript:array{ 
       "Latn",  // ISO 15924 Name 
    }
    Languages { 
        so { "Soomaali" }
    }
    calendar{
        gregorian{
            AmPmMarkers{
                "sn",
                "gn",
            }
            DateTimeElements:intvector { 
                7,
                1,
            }
            DateTimePatterns{
                "h:mm:ss a",
                "h:mm:ss a",
                "h:mm:ss a",
                "h:mm a",
                "EEEE, MMMM dd, yyyy",
                "dd MMMM yyyy",
                "dd-MMM-yyyy",
                "dd/MM/yy",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "Axa",
                        "Isn",
                        "Sal",
                        "Arb",
                        "Kha",
                        "Jim",
                        "Sab",
                    }
                    wide{
                        "Axad",
                        "Isniin",
                        "Salaaso",
                        "Arbaco",
                        "Khamiis",
                        "Jimco",
                        "Sabti",
                    }
                }
            }
            eras{
                "Ciise ka hor",
                "Ciise ka dib"
            }
            monthNames{
                format{
                    abbreviated{
                        "Kob",
                        "Lab",
                        "Sad",
                        "Afr",
                        "Sha",
                        "Lix",
                        "Tod",
                        "Sid",
                        "Sag",
                        "Tob",
                        "KIT",
                        "LIT",
                    }
                    wide{
                        "Bisha Koobaad",
                        "Bisha Labaad",
                        "Bisha Saddexaad",
                        "Bisha Afraad",
                        "Bisha Shanaad",
                        "Bisha Lixaad",
                        "Bisha Todobaad",
                        "Bisha Sideedaad",
                        "Bisha Sagaalaad",
                        "Bisha Tobnaad",
                        "Bisha Kow iyo Tobnaad",
                        "Bisha Laba iyo Tobnaad",
                    }
                }
            }
        }
    }
}
