# 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 = f.Kr., n.Kr.
eraNames = Foar Kristus, nei Kristus
narrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
months = jannewaris, febrewaris, maart, april, maaie, juny, july, augustus, septimber, oktober, novimber, desimber
shortMonths = jan., feb., mrt., apr., mai, jun., jul., aug., sep., okt., nov., des.
standaloneNarrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
standaloneMonths = jannewaris, febrewaris, maart, april, maaie, juny, july, augustus, septimber, oktober, novimber, desimber
standaloneShortMonths = jan, feb, mrt, apr, mai, jun, jul, aug, sep, okt, nov, des
weekdays = snein, moandei, tiisdei, woansdei, tongersdei, freed, sneon
shortWeekdays = si, mo, ti, wo, to, fr, so
narrowWeekdays = Z, M, D, W, D, V, Z
standaloneWeekdays = snein, moandei, tiisdei, woansdei, tongersdei, freed, sneon
standaloneShortWeekdays = si, mo, ti, wo, to, fr, so
standaloneNarrowWeekdays = Z, M, D, W, D, V, Z
shortQuarters = K1, K2, K3, K4
quarters = 1e kwartaal, 2e kwartaal, 3e kwartaal, 4e kwartaal
ampms = AM, PM
dateFormats = EEEE d MMMM y, d MMMM y, d MMM y, dd-MM-yy
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
