# 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, Depois de Cristo
narrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
months = janeiro, fevereiro, março, abril, maio, junho, julho, agosto, setembro, outubro, novembro, dezembro
shortMonths = jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez
standaloneNarrowMonths = J, F, M, A, M, J, J, A, S, O, N, D
standaloneMonths = janeiro, fevereiro, março, abril, maio, junho, julho, agosto, setembro, outubro, novembro, dezembro
standaloneShortMonths = jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez
weekdays = domingo, segunda-feira, terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado
shortWeekdays = dom, seg, ter, qua, qui, sex, sáb
narrowWeekdays = D, S, T, Q, Q, S, S
standaloneWeekdays = domingo, segunda-feira, terça-feira, quarta-feira, quinta-feira, sexta-feira, sábado
standaloneShortWeekdays = dom, seg, ter, qua, qui, sex, sáb
standaloneNarrowWeekdays = D, S, T, Q, Q, S, S
shortQuarters = T1, T2, T3, T4
quarters = 1º trimestre, 2º trimestre, 3º trimestre, 4º trimestre
ampms = AM, PM
dateFormats = EEEE\\, d 'de' MMMM 'de' y, d 'de' MMMM 'de' y, dd/MM/yyyy, dd/MM/yy
timeFormats = HH'h'mm'min'ss's' zzzz, HH'h'mm'min'ss's' z, HH:mm:ss, HH:mm
firstDayOfTheWeek = 1
weekendRange = 7, 1
