# 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 = e.ə., b.e.
eraNames = eramızdan əvvəl, bizim eramızın
narrowMonths = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
months = Yanvar, Fevral, Mart, Aprel, May, İyun, İyul, Avqust, Sentyabr, Oktyabr, Noyabr, Dekabr
shortMonths = yan, fev, mar, apr, may, iyn, iyl, avq, sen, okt, noy, dek
standaloneNarrowMonths = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
standaloneMonths = Yanvar, Fevral, Mart, Aprel, May, İyun, İyul, Avqust, Sentyabr, Oktyabr, Noyabr, Dekabr
standaloneShortMonths = yan, fev, mar, apr, may, iyn, iyl, avq, sen, okt, noy, dek
weekdays = bazar, bazar ertəsi, çərşənbə axşamı, çərşənbə, cümə axşamı, cümə, şənbə
shortWeekdays = B., B.E., Ç.A., Ç., C.A., C, Ş.
narrowWeekdays = 7, 1, 2, 3, 4, 5, 6
standaloneWeekdays = bazar, bazar ertəsi, çərşənbə axşamı, çərşənbə, cümə axşamı, cümə, şənbə
standaloneShortWeekdays = B., B.E., Ç.A., Ç., C.A., C, Ş.
standaloneNarrowWeekdays = 7, 1, 2, 3, 4, 5, 6
shortQuarters = 1-ci kv., 2-ci kv., 3-cü kv., 4-cü kv.
quarters = 1-ci kvartal, 2-ci kvartal, 3-cü kvartal, 4-cü kvartal
ampms = AM, PM
dateFormats = EEEE\\, d\\, MMMM\\, y, d MMMM \\, y, d MMM\\, y, yy/MM/dd
timeFormats = HH:mm:ss zzzz, HH:mm:ss z, HH:mm:ss, HH:mm
firstDayOfTheWeek = 1
weekendRange = 7, 1
