# 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 = p.m.ē., m.ē.
eraNames = pirms mūsu ēras, mūsu ērā
narrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
months = janvāris, februāris, marts, aprīlis, maijs, jūnijs, jūlijs, augusts, septembris, oktobris, novembris, decembris
shortMonths = janv., febr., marts, apr., maijs, jūn., jūl., aug., sept., okt., nov., dec.
standaloneNarrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
standaloneMonths = janvāris, februāris, marts, aprīlis, maijs, jūnijs, jūlijs, augusts, septembris, oktobris, novembris, decembris
standaloneShortMonths = janv., febr., marts, apr., maijs, jūn., jūl., aug., sept., okt., nov., dec.
weekdays = svētdiena, pirmdiena, otrdiena, trešdiena, ceturtdiena, piektdiena, sestdiena
shortWeekdays = Sv, Pr, Ot, Tr, Ce, Pk, Se
narrowWeekdays = S, P, O, T, C, P, S
standaloneWeekdays = svētdiena, pirmdiena, otrdiena, trešdiena, ceturtdiena, piektdiena, sestdiena
standaloneShortWeekdays = Sv, Pr, Ot, Tr, Ce, Pk, Se
standaloneNarrowWeekdays = S, P, O, T, C, P, S
shortQuarters = C1, C2, C3, C4
quarters = 1. ceturksnis, 2. ceturksnis, 3. ceturksnis, 4. ceturksnis
ampms = AM, PM
dateFormats = EEEE\\, y. 'gada' d. MMMM, y. 'gada' d. MMMM, y. 'gada' d. MMM, dd.MM.yy
timeFormats = HH:mm:ss zzzz, HH:mm:ss z, HH:mm:ss, HH:mm
firstDayOfTheWeek = 2
weekendRange = 7, 1
