# 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 = a.C., d.C.
eraNames = antes de Cristo, anno Dómini
narrowMonths = E, F, M, A, M, J, J, A, S, O, N, D
months = enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre
shortMonths = ene, feb, mar, abr, may, jun, jul, ago, sep, oct, nov, dic
standaloneNarrowMonths = E, F, M, A, M, J, J, A, S, O, N, D
standaloneMonths = enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre
standaloneShortMonths = ene, feb, mar, abr, may, jun, jul, ago, sep, oct, nov, dic
weekdays = domingo, lunes, martes, miércoles, jueves, viernes, sábado
shortWeekdays = dom, lun, mar, mié, jue, vie, sáb
narrowWeekdays = D, L, M, M, J, V, S
standaloneWeekdays = domingo, lunes, martes, miércoles, jueves, viernes, sábado
standaloneShortWeekdays = dom, lun, mar, mié, jue, vie, sáb
standaloneNarrowWeekdays = D, L, M, M, J, V, S
shortQuarters = T1, T2, T3, T4
quarters = 1er trimestre, 2º trimestre, 3er trimestre, 4º trimestre
ampms = a.m., p.m.
dateFormats = EEEE d 'de' MMMM 'de' y, d 'de' MMMM 'de' y, d/MM/yyyy, d/MM/yy
timeFormats = HH:mm:ss zzzz, H:mm:ss z, H:mm:ss, H:mm
firstDayOfTheWeek = 2
weekendRange = 7, 1
