# 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.

# CLDR version 1.7.1 is used in this generation.

eras = fyrir Krist, eftir Krist
eraNames = fyrir Krist, eftir Krist
narrowMonths = j, f, m, a, m, j, j, á, s, o, n, d
months = janúar, febrúar, mars, apríl, maí, júní, júlí, ágúst, september, október, nóvember, desember
shortMonths = jan, feb, mar, apr, maí, jún, júl, ágú, sep, okt, nóv, des
standaloneNarrowMonths = j, f, m, a, m, j, j, á, s, o, n, d
standaloneMonths = janúar, febrúar, mars, apríl, maí, júní, júlí, ágúst, september, október, nóvember, desember
standaloneShortMonths = jan, feb, mar, apr, maí, jún, júl, ágú, sep, okt, nóv, des
weekdays = sunnudagur, mánudagur, þriðjudagur, miðvikudagur, fimmtudagur, föstudagur, laugardagur
shortWeekdays = sun, mán, þri, mið, fim, fös, lau
narrowWeekdays = s, m, þ, m, f, f, l
standaloneWeekdays = sunnudagur, mánudagur, þriðjudagur, miðvikudagur, fimmtudagur, föstudagur, laugardagur
standaloneShortWeekdays = sun, mán, þri, mið, fim, fös, lau
standaloneNarrowWeekdays = s, m, þ, m, f, f, l
shortQuarters = F1, F2, F3, F4
quarters = 1st fjórðungur, 2nd fjórðungur, 3rd fjórðungur, 4th fjórðungur
ampms = f.h., e.h.
dateFormats = EEEE\\, d. MMMM y, d. MMMM y, d.M.yyyy, d.M.yyyy
timeFormats = HH:mm:ss zzzz, HH:mm:ss z, HH:mm:ss, HH:mm
firstDayOfTheWeek = 1
weekendRange = 7, 1
