# 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.
# File generated from CLDR ver. 25

eras = KM, TS
eraNames = ki muʻa, taʻu ʻo Sīsū
narrowMonths = S, F, M, E, M, S, S, A, S, O, N, T
months = Sānuali, Fēpueli, Maʻasi, ʻEpeleli, Mē, Sune, Siulai, ʻAokosi, Sepitema, ʻOkatopa, Nōvema, Tīsema
shortMonths = Sān, Fēp, Maʻa, ʻEpe, Mē, Sun, Siu, ʻAok, Sep, ʻOka, Nōv, Tīs
standaloneNarrowMonths = S, F, M, E, M, S, S, A, S, O, N, T
standaloneMonths = Sānuali, Fēpueli, Maʻasi, ʻEpeleli, Mē, Sune, Siulai, ʻAokosi, Sepitema, ʻOkatopa, Nōvema, Tīsema
standaloneShortMonths = Sān, Fēp, Maʻa, ʻEpe, Mē, Sun, Siu, ʻAok, Sep, ʻOka, Nōv, Tīs
weekdays = Sāpate, Mōnite, Tūsite, Pulelulu, Tuʻapulelulu, Falaite, Tokonaki
shortWeekdays = Sāp, Mōn, Tūs, Pul, Tuʻa, Fal, Tok
narrowWeekdays = S, M, T, P, T, F, T
standaloneWeekdays = Sāpate, Mōnite, Tūsite, Pulelulu, Tuʻapulelulu, Falaite, Tokonaki
standaloneShortWeekdays = Sāp, Mōn, Tūs, Pul, Tuʻa, Fal, Tok
standaloneNarrowWeekdays = S, M, T, P, T, F, T
shortQuarters = K1, K2, K3, K4
quarters = kuata ʻuluaki, kuata ua, kuata tolu, kuata fā
ampms = AM, PM
dateFormats = EEEE d MMMM y, d MMMM y, d MMM y, d/M/yy
timeFormats = h:mm:ss a zzzz, HH:mm:ss z, h:mm:ss a, h:mm a
dateTimeFormats = {1}\\, {0}, {1}\\, {0}, {1}\\, {0}, {1} {0}
firstDayOfTheWeek = 2
weekendRange = 7, 1
