# Following code is generated from CLDR data by script. You can do
# emergency fix here, but you fix will be lost unless it is also
# fixed in CLDR. The data generation scripts exists outside GWT and
# will be run manually after each major CLDR updates. Each update
# will be manually checked before check in to make sure undesired
# changes in CLDR will not break existing applications as possible.

eras = Ciise ka hor, Ciise ka dib
eraNames = Ciise ka hor, Ciise ka dib
narrowMonths = K, L, S, A, S, L, T, S, S, T, K, L
months = 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
shortMonths = Kob, Lab, Sad, Afr, Sha, Lix, Tod, Sid, Sag, Tob, KIT, LIT
standaloneNarrowMonths = K, L, S, A, S, L, T, S, S, T, K, L
standaloneMonths = 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
standaloneShortMonths = Kob, Lab, Sad, Afr, Sha, Lix, Tod, Sid, Sag, Tob, KIT, LIT
weekdays = Axad, Isniin, Salaaso, Arbaco, Khamiis, Jimco, Sabti
shortWeekdays = Axa, Isn, Sal, Arb, Kha, Jim, Sab
narrowWeekdays = A, I, S, A, K, J, S
standaloneWeekdays = Axad, Isniin, Salaaso, Arbaco, Khamiis, Jimco, Sabti
standaloneShortWeekdays = Axa, Isn, Sal, Arb, Kha, Jim, Sab
standaloneNarrowWeekdays = A, I, S, A, K, J, S
shortQuarters = Q1, Q2, Q3, Q4
quarters = Q1, Q2, Q3, Q4
ampms = sn, gn
dateFormats = EEEE\\, MMMM dd\\, yyyy, dd MMMM yyyy, dd-MMM-yyyy, dd/MM/yy
timeFormats = h:mm:ss a v, h:mm:ss a z, h:mm:ss a, h:mm a
firstDayOfTheWeek = 7
weekendRange = 7, 1
