# 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.
# File generated from CLDR ver. 25

eras = IJ, IZ
eraNames = Isaa jine, Isaa zamanoo
narrowMonths = Ž, F, M, A, M, Ž, Ž, U, S, O, N, D
months = Žanwiye, Feewiriye, Marsi, Awiril, Me, Žuweŋ, Žuyye, Ut, Sektanbur, Oktoobur, Noowanbur, Deesanbur
shortMonths = Žan, Fee, Mar, Awi, Me, Žuw, Žuy, Ut, Sek, Okt, Noo, Dee
standaloneNarrowMonths = Ž, F, M, A, M, Ž, Ž, U, S, O, N, D
standaloneMonths = Žanwiye, Feewiriye, Marsi, Awiril, Me, Žuweŋ, Žuyye, Ut, Sektanbur, Oktoobur, Noowanbur, Deesanbur
standaloneShortMonths = Žan, Fee, Mar, Awi, Me, Žuw, Žuy, Ut, Sek, Okt, Noo, Dee
weekdays = Alhadi, Atinni, Atalaata, Alarba, Alhamisi, Alzuma, Asibti
shortWeekdays = Alh, Ati, Ata, Ala, Alm, Alz, Asi
narrowWeekdays = H, T, T, L, M, Z, S
standaloneWeekdays = Alhadi, Atinni, Atalaata, Alarba, Alhamisi, Alzuma, Asibti
standaloneShortWeekdays = Alh, Ati, Ata, Ala, Alm, Alz, Asi
standaloneNarrowWeekdays = H, T, T, L, M, Z, S
shortQuarters = A1, A2, A3, A4
quarters = Arrubu 1, Arrubu 2, Arrubu 3, Arrubu 4
ampms = Subbaahi, Zaarikay b
dateFormats = EEEE d MMMM y, d MMMM y, d MMM\\, y, d/M/y
timeFormats = HH:mm:ss zzzz, HH:mm:ss z, HH:mm:ss, HH:mm
dateTimeFormats = {1} {0}, {1} {0}, {1} {0}, {1} {0}
firstDayOfTheWeek = 2
weekendRange = 7, 1
