# 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 = daɛ, dfɛ
eraNames = dat n ɛisa, dffir n ɛisa
narrowMonths = i, b, m, i, m, y, y, ɣ, c, k, n, d
months = innayr, bṛayṛ, maṛṣ, ibrir, mayyu, yunyu, yulyuz, ɣuct, cutanbir, ktubr, nuwanbir, dujanbir
shortMonths = inn, bṛa, maṛ, ibr, may, yun, yul, ɣuc, cut, ktu, nuw, duj
standaloneNarrowMonths = i, b, m, i, m, y, y, ɣ, c, k, n, d
standaloneMonths = innayr, bṛayṛ, maṛṣ, ibrir, mayyu, yunyu, yulyuz, ɣuct, cutanbir, ktubr, nuwanbir, dujanbir
standaloneShortMonths = inn, bṛa, maṛ, ibr, may, yun, yul, ɣuc, cut, ktu, nuw, duj
weekdays = asamas, aynas, asinas, akṛas, akwas, asimwas, asiḍyas
shortWeekdays = asa, ayn, asi, akṛ, akw, asim, asiḍ
narrowWeekdays = S, M, T, W, T, F, S
standaloneWeekdays = asamas, aynas, asinas, akṛas, akwas, asimwas, asiḍyas
standaloneShortWeekdays = asa, ayn, asi, akṛ, akw, asim, asiḍ
standaloneNarrowWeekdays = S, M, T, W, T, F, S
shortQuarters = ak 1, ak 2, ak 3, ak 4
quarters = akṛaḍyur 1, akṛaḍyur 2, akṛaḍyur 3, akṛaḍyur 4
ampms = tifawt, tadggʷat
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 = 7
weekendRange = 6, 7
