Skip to content

getLocaleMonthNames

getLocaleMonthNames(locale: string | string[], style?: LocaleNameStyle): string[]

Return the 12 Gregorian calendar-month names for a locale, in calendar order (January first, December last — not alphabetical).

  • Uses the host runtime’s Intl data via Temporal.PlainDate, so output depends on the runtime’s ICU build (full-ICU runtimes localize every locale; partial-ICU runtimes fall back to English).
  • Restricted to the Gregorian calendar; non-Gregorian calendar variants are out of scope for this function.
  • A -u-ca- subtag in locale is ignored. Both lookups pass calendar: "gregory" in the options bag, and ECMA-402’s ResolveLocale ranks an options value above the locale extension, so getLocaleMonthNames("en-US-u-ca-hebrew") returns the same twelve Gregorian month names as getLocaleMonthNames("en-US"). That is deliberate — the function is Gregorian by contract — but it means the tag is accepted and overridden, not rejected. For another calendar’s names, format a date in it: formatDate("2024-03-15", "en-US-u-ca-hebrew", { month: "long" }).
  • Returns [] if locale is not a well-formed BCP 47 tag (ECMA-402 IsWellFormedLanguageTag). A well-formed tag with no matching locale data is not an error: it falls back to the host’s default locale, as ECMA-402 ResolveLocale requires.
ParameterTypeDescription
localestring | string[]BCP 47 locale tag (e.g. “en-US”, “fr-FR”, “ar-SA”), or a preference list of tags (ECMA-402; the first with locale data is read). Required: omitted, or an empty list (which ECMA-402 would resolve to the host default), returns []
styleLocaleNameStyleOptional name style: "long" (default), "short", or "narrow"

12-element array of month names in calendar order, or [] on invalid input

import { getLocaleMonthNames } from "@northguild/gmt/plain/locale";
getLocaleMonthNames("en-US") // ["January", "February", ... "December"]
output 

plain/locale/getLocaleMonthNames.ts