# 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., e.Kr.
eraNames = f.Kr., e.Kr.
narrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
months = januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember
shortMonths = jan., feb., mars, apr., mai, juni, juli, aug., sep., okt., nov., des.
standaloneNarrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
standaloneMonths = januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember
standaloneShortMonths = jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des
weekdays = søndag, måndag, tysdag, onsdag, torsdag, fredag, laurdag
shortWeekdays = sø., må., ty., on., to., fr., la.
narrowWeekdays = S, M, T, O, T, F, L
standaloneWeekdays = søndag, måndag, tysdag, onsdag, torsdag, fredag, laurdag
standaloneShortWeekdays = søn, mån, tys, ons, tor, fre, lau
standaloneNarrowWeekdays = S, M, T, O, T, F, L
shortQuarters = K1, K2, K3, K4
quarters = 1. kvartal, 2. kvartal, 3. kvartal, 4. kvartal
ampms = formiddag, ettermiddag
dateFormats = EEEE d. MMMM y, d. MMMM y, d. MMM y, dd.MM.yy
timeFormats = 'kl'. HH:mm:ss zzzz, HH:mm:ss z, HH:mm:ss, HH:mm
dateTimeFormats = {1} {0}, {1} 'kl.' {0}, {1}\\, {0}, {1}\\, {0}
firstDayOfTheWeek = 2
weekendRange = 7, 1
