# 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 = ക്രി.മു., ക്രി.പി.
eraNames = ക്രിസ്തുവിനു് മുമ്പ്‌, ക്രിസ്തുവിന് പിന്‍പ്
narrowMonths = ജ, ഫെ, മാ, ഏ, മേ, ജൂ, ജൂ, ഓ, സെ, ഒ, ന, ഡി
months = ജനുവരി, ഫെബ്രുവരി, മാര്‍ച്ച്, ഏപ്രില്‍, മേയ്, ജൂണ്‍, ജൂലൈ, ഓഗസ്റ്റ്, സെപ്റ്റംബര്‍, ഒക്ടോബര്‍, നവംബര്‍, ഡിസംബര്‍
shortMonths = ജനു, ഫെബ്രു, മാര്‍, ഏപ്രി, മേയ്, ജൂണ്‍, ജൂലൈ, ഓഗ, സെപ്റ്റം, ഒക്ടോ, നവം, ഡിസം
standaloneNarrowMonths = ജ, ഫെ, മാ, ഏ, മേ, ജൂ, ജൂ, ഓ, സെ, ഒ, ന, ഡി
standaloneMonths = ജനുവരി, ഫെബ്രുവരി, മാര്‍ച്ച്, ഏപ്രില്‍, മേയ്, ജൂണ്‍, ജൂലൈ, ഓഗസ്റ്റ്, സെപ്റ്റംബര്‍, ഒക്ടോബര്‍, നവംബര്‍, ഡിസംബര്‍
standaloneShortMonths = ജനു, ഫെബ്രു, മാര്‍, ഏപ്രി, മേയ്, ജൂണ്‍, ജൂലൈ, ഓഗ, സെപ്റ്റം, ഒക്ടോ, നവം, ഡിസം
weekdays = ഞായറാഴ്ച, തിങ്കളാഴ്ച, ചൊവ്വാഴ്ച, ബുധനാഴ്ച, വ്യാഴാഴ്ച, വെള്ളിയാഴ്ച, ശനിയാഴ്ച
shortWeekdays = ഞായര്‍, തിങ്കള്‍, ചൊവ്വ, ബുധന്‍, വ്യാഴം, വെള്ളി, ശനി
narrowWeekdays = ഞാ, തി, ചൊ, ബു, വ്യാ, വെ, ശ
standaloneWeekdays = ഞായറാഴ്ച, തിങ്കളാഴ്ച, ചൊവ്വാഴ്ച, ബുധനാഴ്ച, വ്യാഴാഴ്ച, വെള്ളിയാഴ്ച, ശനിയാഴ്ച
standaloneShortWeekdays = ഞായര്‍, തിങ്കള്‍, ചൊവ്വ, ബുധന്‍, വ്യാഴം, വെള്ളി, ശനി
standaloneNarrowWeekdays = ഞാ, തി, ചൊ, ബു, വ്യാ, വെ, ശ
shortQuarters = Q1, Q2, Q3, Q4
quarters = ഒന്നാം പാദം, രണ്ടാം പാദം, മൂന്നാം പാദം, നാലാം പാദം
ampms = am, pm
dateFormats = y\\, MMMM d\\, EEEE, y\\, MMMM d, y\\, MMM d, dd/MM/yy
timeFormats = h:mm:ss a zzzz, h:mm:ss a z, h:mm:ss a, h:mm a
firstDayOfTheWeek = 1
weekendRange = 1, 1
