# 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 = b. t. kr., p. t. kr.
eraNames = b. t. kr., p. t. kr.
narrowMonths = J, F, M, P, M, Y, Y, G, S, T, N, D
months = janul, febul, mäzil, prilul, mayul, yunul, yulul, gustul, setul, tobul, novul, dekul
shortMonths = jan, feb, mäz, prl, may, yun, yul, gst, set, ton, nov, dek
standaloneNarrowMonths = J, F, M, P, M, Y, Y, G, S, T, N, D
standaloneMonths = janul, febul, mäzil, prilul, mayul, yunul, yulul, gustul, setul, tobul, novul, dekul
standaloneShortMonths = jan, feb, mäz, prl, may, yun, yul, gst, set, tob, nov, Dek
weekdays = sudel, mudel, tudel, vedel, dödel, fridel, zädel
shortWeekdays = su., mu., tu., ve., dö., fr., zä.
narrowWeekdays = S, M, T, V, D, F, Z
standaloneWeekdays = sudel, mudel, tudel, vedel, dödel, fridel, zädel
standaloneShortWeekdays = Su, Mu, Tu, Ve, Dö, Fr, Zä
standaloneNarrowWeekdays = S, M, T, V, D, F, Z
shortQuarters = Yf1, Yf2, Yf3, Yf4
quarters = 1id yelafoldil, 2id yelafoldil, 3id yelafoldil, 4id yelafoldil
ampms = posz., büz.
dateFormats = y MMMMa 'd'. d'id', y MMMM d, y MMM. d, y-MM-dd
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
