From 906a59afe26dc7dd5fd82d46bace9c6875ef34bf Mon Sep 17 00:00:00 2001 From: afc163 Date: Mon, 7 Sep 2026 10:35:29 +0800 Subject: [PATCH 1/2] fix: localize calendar labels without loaded date locales --- LICENSE | 4 + README.md | 6 + package.json | 2 + src/PickerPanel/DatePanel/index.tsx | 22 +--- src/PickerPanel/MonthPanel/index.tsx | 20 +-- src/generate/dayjs.ts | 10 ++ src/generate/index.ts | 3 + src/interface.tsx | 15 +-- src/locale/am_ET.ts | 18 +++ src/locale/ar_EG.ts | 31 +++++ src/locale/az_AZ.ts | 31 +++++ src/locale/bg_BG.ts | 31 +++++ src/locale/bn_BD.ts | 31 +++++ src/locale/by_BY.ts | 31 +++++ src/locale/ca_ES.ts | 31 +++++ src/locale/cs_CZ.ts | 31 +++++ src/locale/da_DK.ts | 31 +++++ src/locale/de_DE.ts | 31 +++++ src/locale/el_GR.ts | 31 +++++ src/locale/en_GB.ts | 31 +++++ src/locale/en_US.ts | 31 +++++ src/locale/es_ES.ts | 31 +++++ src/locale/es_MX.ts | 31 +++++ src/locale/et_EE.ts | 31 +++++ src/locale/eu_ES.ts | 31 +++++ src/locale/fa_IR.ts | 31 +++++ src/locale/fi_FI.ts | 31 +++++ src/locale/fr_BE.ts | 31 +++++ src/locale/fr_CA.ts | 31 +++++ src/locale/fr_FR.ts | 31 +++++ src/locale/ga_IE.ts | 31 +++++ src/locale/gl_ES.ts | 31 +++++ src/locale/he_IL.ts | 31 +++++ src/locale/hi_IN.ts | 31 +++++ src/locale/hr_HR.ts | 31 +++++ src/locale/hu_HU.ts | 31 +++++ src/locale/id_ID.ts | 31 +++++ src/locale/is_IS.ts | 31 +++++ src/locale/it_IT.ts | 31 +++++ src/locale/ja_JP.ts | 18 +++ src/locale/ka_GE.ts | 31 +++++ src/locale/kk_KZ.ts | 31 +++++ src/locale/km_KH.ts | 31 +++++ src/locale/kmr_IQ.ts | 31 +++++ src/locale/kn_IN.ts | 31 +++++ src/locale/ko_KR.ts | 18 +++ src/locale/lt_LT.ts | 31 +++++ src/locale/lv_LV.ts | 31 +++++ src/locale/mk_MK.ts | 31 +++++ src/locale/ml_IN.ts | 31 +++++ src/locale/mn_MN.ts | 31 +++++ src/locale/mr_IN.ts | 31 +++++ src/locale/ms_MY.ts | 31 +++++ src/locale/my_MM.ts | 31 +++++ src/locale/nb_NO.ts | 31 +++++ src/locale/ne_NP.ts | 31 +++++ src/locale/nl_BE.ts | 31 +++++ src/locale/nl_NL.ts | 31 +++++ src/locale/pl_PL.ts | 31 +++++ src/locale/pt_BR.ts | 31 +++++ src/locale/pt_PT.ts | 31 +++++ src/locale/ro_RO.ts | 31 +++++ src/locale/ru_RU.ts | 31 +++++ src/locale/si_LK.ts | 31 +++++ src/locale/sk_SK.ts | 31 +++++ src/locale/sl_SI.ts | 31 +++++ src/locale/sr_Cyrl_RS.ts | 31 +++++ src/locale/sr_RS.ts | 31 +++++ src/locale/sv_SE.ts | 31 +++++ src/locale/ta_IN.ts | 31 +++++ src/locale/te_IN.ts | 83 +++++++++---- src/locale/th_TH.ts | 31 +++++ src/locale/tk_TK.ts | 31 +++++ src/locale/tl_PH.ts | 31 +++++ src/locale/tr_TR.ts | 31 +++++ src/locale/ug_CN.ts | 31 +++++ src/locale/uk_UA.ts | 31 +++++ src/locale/ur_PK.ts | 31 +++++ src/locale/util.ts | 54 +++++++++ src/locale/uz_UZ.ts | 31 +++++ src/locale/vi_VN.ts | 31 +++++ src/locale/zh_CN.ts | 31 +++++ src/locale/zh_TW.ts | 31 +++++ tests/localeFallback.spec.tsx | 175 +++++++++++++++++++++++++++ 84 files changed, 2548 insertions(+), 70 deletions(-) create mode 100644 src/locale/util.ts create mode 100644 tests/localeFallback.spec.tsx diff --git a/LICENSE b/LICENSE index bd0a1f722..235c7f99c 100644 --- a/LICENSE +++ b/LICENSE @@ -2,6 +2,10 @@ MIT License Copyright (c) 2019-present react-component +Calendar fallback locale data: +Copyright (c) 2018-present, iamkun (Day.js) +Copyright (c) JS Foundation and other contributors (Moment.js) + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights diff --git a/README.md b/README.md index 1f510127b..296c03e59 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,12 @@ Then open `http://localhost:8000`. | `locale/*` | Locale objects for picker UI text and formats. | | `interface` | Shared TypeScript types. | +### Calendar locale fallback + +Built-in locales include `calendarFallback` with `months`, `shortMonths`, and `shortWeekDays` (Sunday first). The Day.js adapter uses these panel labels when the requested date-library locale is not loaded. Existing `shortMonths` and `shortWeekDays` overrides and loaded Day.js locale customizations keep their current precedence. Standalone `MMM` and `MMMM` month formats also support fallback labels; other formats, week rules, and input parsing still use the date library. + +Custom adapters can opt in with `generateConfig.locale.isLocaleAvailable`. Without this optional method, their behavior is unchanged. Calendar consumers can share the label resolution through `getShortMonths`, `getShortWeekDays`, and `getMonthText` from `@rc-component/picker/locale/util`. + ### Shared Picker Props | Property | Type | Default | Description | diff --git a/package.json b/package.json index 4eb89f78d..19c4b70fa 100644 --- a/package.json +++ b/package.json @@ -336,6 +336,8 @@ "./locale/uk_UA.js": "./es/locale/uk_UA.js", "./locale/ur_PK": "./es/locale/ur_PK.js", "./locale/ur_PK.js": "./es/locale/ur_PK.js", + "./locale/util": "./es/locale/util.js", + "./locale/util.js": "./es/locale/util.js", "./locale/uz_UZ": "./es/locale/uz_UZ.js", "./locale/uz_UZ.js": "./es/locale/uz_UZ.js", "./locale/vi_VN": "./es/locale/vi_VN.js", diff --git a/src/PickerPanel/DatePanel/index.tsx b/src/PickerPanel/DatePanel/index.tsx index 42013ebff..8e64e85ee 100644 --- a/src/PickerPanel/DatePanel/index.tsx +++ b/src/PickerPanel/DatePanel/index.tsx @@ -1,6 +1,7 @@ import { clsx } from 'clsx'; import * as React from 'react'; import type { PanelMode, SharedPanelProps } from '../../interface'; +import { getMonthText, getShortWeekDays } from '../../locale/util'; import { formatValue, getWeekStartDate, @@ -48,7 +49,6 @@ export default function DatePanel(props: DatePane const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale); const monthStartDate = generateConfig.setDate(pickerValue, 1); const baseDate = getWeekStartDate(locale.locale, generateConfig, monthStartDate); - const month = generateConfig.getMonth(pickerValue); // =========================== PrefixColumn =========================== const showPrefixColumn = showWeek === undefined ? isWeek : showWeek; @@ -91,11 +91,7 @@ export default function DatePanel(props: DatePane // ========================= Cells ========================== // >>> Header Cells const headerCells: React.ReactNode[] = []; - const weekDaysLocale: string[] = - locale.shortWeekDays || - (generateConfig.locale.getShortWeekDays - ? generateConfig.locale.getShortWeekDays(locale.locale) - : []); + const weekDaysLocale = getShortWeekDays(locale, generateConfig); if (prefixColumn) { headerCells.push( @@ -133,12 +129,6 @@ export default function DatePanel(props: DatePane }; // ========================= Header ========================= - const monthsLocale: string[] = - locale.shortMonths || - (generateConfig.locale.getShortMonths - ? generateConfig.locale.getShortMonths(locale.locale) - : []); - const yearNode: React.ReactNode = ( ); diff --git a/src/PickerPanel/MonthPanel/index.tsx b/src/PickerPanel/MonthPanel/index.tsx index cfd22079f..542d4118d 100644 --- a/src/PickerPanel/MonthPanel/index.tsx +++ b/src/PickerPanel/MonthPanel/index.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import type { DisabledDate, SharedPanelProps } from '../../interface'; +import { getMonthText } from '../../locale/util'; import { formatValue } from '../../utils/dateUtil'; import { PanelContext, useInfo } from '../context'; import PanelBody from '../PanelBody'; @@ -24,29 +25,12 @@ export default function MonthPanel( const [info] = useInfo(props, 'month'); const baseDate = generateConfig.setMonth(pickerValue, 0); - // ========================= Month ========================== - const monthsLocale: string[] = - locale.shortMonths || - (generateConfig.locale.getShortMonths - ? generateConfig.locale.getShortMonths(locale.locale) - : []); - // ========================= Cells ========================== const getCellDate = (date: DateType, offset: number) => { return generateConfig.addMonth(date, offset); }; - const getCellText = (date: DateType) => { - const month = generateConfig.getMonth(date); - - return locale.monthFormat - ? formatValue(date, { - locale, - format: locale.monthFormat, - generateConfig, - }) - : monthsLocale[month]; - }; + const getCellText = (date: DateType) => getMonthText(locale, generateConfig, date); const getCellClassName = () => ({ [`${prefixCls}-cell-in-view`]: true, diff --git a/src/generate/dayjs.ts b/src/generate/dayjs.ts index d8fba6780..1b81fccd9 100644 --- a/src/generate/dayjs.ts +++ b/src/generate/dayjs.ts @@ -158,6 +158,16 @@ const generateConfig: GenerateConfig = { isValidate: (date) => getUDayjs(date).isValid(), locale: { + isLocaleAvailable: (locale) => { + const localeName = parseLocale(locale).toLowerCase(); + const language = localeName.split('-')[0]; + + // Check the base language first: Day.js regional fallback can change its global locale. + return ( + dayjs().locale(language).locale() === language || + dayjs().locale(localeName).locale() === localeName + ); + }, getWeekFirstDay: (locale) => dayjs().locale(parseLocale(locale)).localeData().firstDayOfWeek(), getWeekFirstDate: (locale, date) => getUDayjs(date).locale(parseLocale(locale)).weekday(0), getWeek: (locale, date) => getUDayjs(date).locale(parseLocale(locale)).week(), diff --git a/src/generate/index.ts b/src/generate/index.ts index 88b6318f1..9adb7a0c3 100644 --- a/src/generate/index.ts +++ b/src/generate/index.ts @@ -29,6 +29,9 @@ export type GenerateConfig = { isValidate: (date: DateType) => boolean; locale: { + /** Whether the date library has loaded this locale (including supported fallbacks). */ + isLocaleAvailable?: (locale: string) => boolean; + getWeekFirstDay: (locale: string) => number; getWeekFirstDate: (locale: string, value: DateType) => DateType; getWeek: (locale: string, value: DateType) => number; diff --git a/src/interface.tsx b/src/interface.tsx index 63a690d06..f5bae74aa 100644 --- a/src/interface.tsx +++ b/src/interface.tsx @@ -81,6 +81,13 @@ export type Locale = { shortWeekDays?: string[]; shortMonths?: string[]; + + /** Panel labels used only when the date library has not loaded this locale. */ + calendarFallback?: { + months?: string[]; + shortMonths: string[]; + shortWeekDays: string[]; + }; }; export type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade'; @@ -316,13 +323,7 @@ export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix'; export type PreviewValueType = 'hover'; export type PanelSemanticName = - | 'root' - | 'header' - | 'body' - | 'content' - | 'item' - | 'footer' - | 'container'; + 'root' | 'header' | 'body' | 'content' | 'item' | 'footer' | 'container'; export interface SharedPickerProps extends diff --git a/src/locale/am_ET.ts b/src/locale/am_ET.ts index 13a8cd458..ad091e8a4 100644 --- a/src/locale/am_ET.ts +++ b/src/locale/am_ET.ts @@ -27,6 +27,24 @@ const locale: Locale = { nextDecade: 'ቀጣይ አስርት ዓመት', previousCentury: 'ያለፈው ክፍለ ዘመን', nextCentury: 'ቀጣይ ክፍለ ዘመን', + calendarFallback: { + months: [ + 'ጃንዋሪ', + 'ፌብሯሪ', + 'ማርች', + 'ኤፕሪል', + 'ሜይ', + 'ጁን', + 'ጁላይ', + 'ኦገስት', + 'ሴፕቴምበር', + 'ኦክቶበር', + 'ኖቬምበር', + 'ዲሴምበር', + ], + shortMonths: ['ጃንዋ', 'ፌብሯ', 'ማርች', 'ኤፕሪ', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክቶ', 'ኖቬም', 'ዲሴም'], + shortWeekDays: ['እሑ', 'ሰኞ', 'ማክ', 'ረቡ', 'ሐሙ', 'አር', 'ቅዳ'], + }, }; export default locale; diff --git a/src/locale/ar_EG.ts b/src/locale/ar_EG.ts index 1c5ca6368..ff15323fa 100644 --- a/src/locale/ar_EG.ts +++ b/src/locale/ar_EG.ts @@ -25,6 +25,37 @@ const locale: Locale = { nextDecade: 'العقد التالى', previousCentury: 'القرن السابق', nextCentury: 'القرن التالى', + calendarFallback: { + months: [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ], + shortMonths: [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ], + shortWeekDays: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], + }, }; export default locale; diff --git a/src/locale/az_AZ.ts b/src/locale/az_AZ.ts index eaf28311e..cf3876b0e 100644 --- a/src/locale/az_AZ.ts +++ b/src/locale/az_AZ.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Növbəti onillik', previousCentury: 'Sonuncu əsr', nextCentury: 'Növbəti əsr', + calendarFallback: { + months: [ + 'yanvar', + 'fevral', + 'mart', + 'aprel', + 'may', + 'iyun', + 'iyul', + 'avqust', + 'sentyabr', + 'oktyabr', + 'noyabr', + 'dekabr', + ], + shortMonths: [ + 'yan', + 'fev', + 'mar', + 'apr', + 'may', + 'iyn', + 'iyl', + 'avq', + 'sen', + 'okt', + 'noy', + 'dek', + ], + shortWeekDays: ['Bz', 'BE', 'ÇA', 'Çə', 'CA', 'Cü', 'Şə'], + }, }; export default locale; diff --git a/src/locale/bg_BG.ts b/src/locale/bg_BG.ts index 04f452790..5f78e28d4 100644 --- a/src/locale/bg_BG.ts +++ b/src/locale/bg_BG.ts @@ -25,5 +25,36 @@ const locale: Locale = { nextDecade: 'Следващо десетилетие', previousCentury: 'Последен век', nextCentury: 'Следващ век', + calendarFallback: { + months: [ + 'януари', + 'февруари', + 'март', + 'април', + 'май', + 'юни', + 'юли', + 'август', + 'септември', + 'октомври', + 'ноември', + 'декември', + ], + shortMonths: [ + 'яну', + 'фев', + 'мар', + 'апр', + 'май', + 'юни', + 'юли', + 'авг', + 'сеп', + 'окт', + 'ное', + 'дек', + ], + shortWeekDays: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], + }, }; export default locale; diff --git a/src/locale/bn_BD.ts b/src/locale/bn_BD.ts index 5ee9e6338..8c2094af6 100644 --- a/src/locale/bn_BD.ts +++ b/src/locale/bn_BD.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'পরের দশক', previousCentury: 'গত শতাব্দী', nextCentury: 'পরের শতাব্দী', + calendarFallback: { + months: [ + 'জানুয়ারি', + 'ফেব্রুয়ারি', + 'মার্চ', + 'এপ্রিল', + 'মে', + 'জুন', + 'জুলাই', + 'আগস্ট', + 'সেপ্টেম্বর', + 'অক্টোবর', + 'নভেম্বর', + 'ডিসেম্বর', + ], + shortMonths: [ + 'জানু', + 'ফেব্রু', + 'মার্চ', + 'এপ্রিল', + 'মে', + 'জুন', + 'জুলাই', + 'আগস্ট', + 'সেপ্ট', + 'অক্টো', + 'নভে', + 'ডিসে', + ], + shortWeekDays: ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], + }, }; export default locale; diff --git a/src/locale/by_BY.ts b/src/locale/by_BY.ts index 80d4d7f38..705d8ce2a 100644 --- a/src/locale/by_BY.ts +++ b/src/locale/by_BY.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Наступнае дзесяцігоддзе', previousCentury: 'Папярэдні век', nextCentury: 'Наступны век', + calendarFallback: { + months: [ + 'студзень', + 'лютый', + 'сакавік', + 'красавік', + 'травень', + 'чэрвень', + 'ліпень', + 'жнівень', + 'верасень', + 'кастрычнік', + 'лістапад', + 'снежань', + ], + shortMonths: [ + 'студ', + 'лют', + 'сак', + 'крас', + 'трав', + 'чэрв', + 'ліп', + 'жнів', + 'вер', + 'каст', + 'ліст', + 'снеж', + ], + shortWeekDays: ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'], + }, }; export default locale; diff --git a/src/locale/ca_ES.ts b/src/locale/ca_ES.ts index 5ff39a18a..69db7580c 100644 --- a/src/locale/ca_ES.ts +++ b/src/locale/ca_ES.ts @@ -25,6 +25,37 @@ const locale: Locale = { nextDecade: 'Dècada següent', previousCentury: 'Segle anterior', nextCentury: 'Segle següent', + calendarFallback: { + months: [ + 'Gener', + 'Febrer', + 'Març', + 'Abril', + 'Maig', + 'Juny', + 'Juliol', + 'Agost', + 'Setembre', + 'Octubre', + 'Novembre', + 'Desembre', + ], + shortMonths: [ + 'Gen.', + 'Febr.', + 'Març', + 'Abr.', + 'Maig', + 'Juny', + 'Jul.', + 'Ag.', + 'Set.', + 'Oct.', + 'Nov.', + 'Des.', + ], + shortWeekDays: ['Dg', 'Dl', 'Dt', 'Dc', 'Dj', 'Dv', 'Ds'], + }, }; export default locale; diff --git a/src/locale/cs_CZ.ts b/src/locale/cs_CZ.ts index 4ee8ec1d7..1e5d30a32 100644 --- a/src/locale/cs_CZ.ts +++ b/src/locale/cs_CZ.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Následující dekáda', previousCentury: 'Předchozí století', nextCentury: 'Následující století', + calendarFallback: { + months: [ + 'leden', + 'únor', + 'březen', + 'duben', + 'květen', + 'červen', + 'červenec', + 'srpen', + 'září', + 'říjen', + 'listopad', + 'prosinec', + ], + shortMonths: [ + 'led', + 'úno', + 'bře', + 'dub', + 'kvě', + 'čvn', + 'čvc', + 'srp', + 'zář', + 'říj', + 'lis', + 'pro', + ], + shortWeekDays: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], + }, }; export default locale; diff --git a/src/locale/da_DK.ts b/src/locale/da_DK.ts index 4cf0393cc..6512c82df 100644 --- a/src/locale/da_DK.ts +++ b/src/locale/da_DK.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Næste årti', previousCentury: 'Forrige århundrede', nextCentury: 'Næste århundrede', + calendarFallback: { + months: [ + 'januar', + 'februar', + 'marts', + 'april', + 'maj', + 'juni', + 'juli', + 'august', + 'september', + 'oktober', + 'november', + 'december', + ], + shortMonths: [ + 'jan.', + 'feb.', + 'mar.', + 'apr.', + 'maj', + 'juni', + 'juli', + 'aug.', + 'sept.', + 'okt.', + 'nov.', + 'dec.', + ], + shortWeekDays: ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'], + }, }; export default locale; diff --git a/src/locale/de_DE.ts b/src/locale/de_DE.ts index 081284f5b..b7f0ab9a9 100644 --- a/src/locale/de_DE.ts +++ b/src/locale/de_DE.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Nächstes Jahrzehnt', previousCentury: 'Vorheriges Jahrhundert', nextCentury: 'Nächstes Jahrhundert', + calendarFallback: { + months: [ + 'Januar', + 'Februar', + 'März', + 'April', + 'Mai', + 'Juni', + 'Juli', + 'August', + 'September', + 'Oktober', + 'November', + 'Dezember', + ], + shortMonths: [ + 'Jan.', + 'Feb.', + 'März', + 'Apr.', + 'Mai', + 'Juni', + 'Juli', + 'Aug.', + 'Sept.', + 'Okt.', + 'Nov.', + 'Dez.', + ], + shortWeekDays: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], + }, }; export default locale; diff --git a/src/locale/el_GR.ts b/src/locale/el_GR.ts index a94bcaa24..355c0253e 100644 --- a/src/locale/el_GR.ts +++ b/src/locale/el_GR.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Επόμενη δεκαετία', previousCentury: 'Προηγούμενος αιώνας', nextCentury: 'Επόμενος αιώνας', + calendarFallback: { + months: [ + 'Ιανουάριος', + 'Φεβρουάριος', + 'Μάρτιος', + 'Απρίλιος', + 'Μάιος', + 'Ιούνιος', + 'Ιούλιος', + 'Αύγουστος', + 'Σεπτέμβριος', + 'Οκτώβριος', + 'Νοέμβριος', + 'Δεκέμβριος', + ], + shortMonths: [ + 'Ιαν', + 'Φεβ', + 'Μαρ', + 'Απρ', + 'Μαι', + 'Ιουν', + 'Ιουλ', + 'Αυγ', + 'Σεπτ', + 'Οκτ', + 'Νοε', + 'Δεκ', + ], + shortWeekDays: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'], + }, }; export default locale; diff --git a/src/locale/en_GB.ts b/src/locale/en_GB.ts index 5dbb1a860..850f0c1a9 100644 --- a/src/locale/en_GB.ts +++ b/src/locale/en_GB.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Next decade', previousCentury: 'Last century', nextCentury: 'Next century', + calendarFallback: { + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], + shortMonths: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + shortWeekDays: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + }, }; export default locale; diff --git a/src/locale/en_US.ts b/src/locale/en_US.ts index 583591d68..66b51642b 100644 --- a/src/locale/en_US.ts +++ b/src/locale/en_US.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Next decade', previousCentury: 'Last century', nextCentury: 'Next century', + calendarFallback: { + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], + shortMonths: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + shortWeekDays: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + }, }; export default locale; diff --git a/src/locale/es_ES.ts b/src/locale/es_ES.ts index 035d382b8..981b655ad 100644 --- a/src/locale/es_ES.ts +++ b/src/locale/es_ES.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Década siguiente', previousCentury: 'Siglo anterior', nextCentury: 'Siglo siguiente', + calendarFallback: { + months: [ + 'enero', + 'febrero', + 'marzo', + 'abril', + 'mayo', + 'junio', + 'julio', + 'agosto', + 'septiembre', + 'octubre', + 'noviembre', + 'diciembre', + ], + shortMonths: [ + 'ene', + 'feb', + 'mar', + 'abr', + 'may', + 'jun', + 'jul', + 'ago', + 'sep', + 'oct', + 'nov', + 'dic', + ], + shortWeekDays: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], + }, }; export default locale; diff --git a/src/locale/es_MX.ts b/src/locale/es_MX.ts index b21402bc4..ec53d2314 100644 --- a/src/locale/es_MX.ts +++ b/src/locale/es_MX.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Década siguiente', previousCentury: 'Siglo anterior', nextCentury: 'Siglo siguiente', + calendarFallback: { + months: [ + 'enero', + 'febrero', + 'marzo', + 'abril', + 'mayo', + 'junio', + 'julio', + 'agosto', + 'septiembre', + 'octubre', + 'noviembre', + 'diciembre', + ], + shortMonths: [ + 'ene', + 'feb', + 'mar', + 'abr', + 'may', + 'jun', + 'jul', + 'ago', + 'sep', + 'oct', + 'nov', + 'dic', + ], + shortWeekDays: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], + }, }; export default locale; diff --git a/src/locale/et_EE.ts b/src/locale/et_EE.ts index d4dd6c5f5..3f5ea4d9e 100644 --- a/src/locale/et_EE.ts +++ b/src/locale/et_EE.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Järgmine dekaad', previousCentury: 'Eelmine sajand', nextCentury: 'Järgmine sajand', + calendarFallback: { + months: [ + 'jaanuar', + 'veebruar', + 'märts', + 'aprill', + 'mai', + 'juuni', + 'juuli', + 'august', + 'september', + 'oktoober', + 'november', + 'detsember', + ], + shortMonths: [ + 'jaan', + 'veebr', + 'märts', + 'apr', + 'mai', + 'juuni', + 'juuli', + 'aug', + 'sept', + 'okt', + 'nov', + 'dets', + ], + shortWeekDays: ['P', 'E', 'T', 'K', 'N', 'R', 'L'], + }, }; export default locale; diff --git a/src/locale/eu_ES.ts b/src/locale/eu_ES.ts index 8af805a32..4cd0decee 100644 --- a/src/locale/eu_ES.ts +++ b/src/locale/eu_ES.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Urrengo hamarkada', previousCentury: 'Aurreko mendea', nextCentury: 'Urrengo mendea', + calendarFallback: { + months: [ + 'urtarrila', + 'otsaila', + 'martxoa', + 'apirila', + 'maiatza', + 'ekaina', + 'uztaila', + 'abuztua', + 'iraila', + 'urria', + 'azaroa', + 'abendua', + ], + shortMonths: [ + 'urt.', + 'ots.', + 'mar.', + 'api.', + 'mai.', + 'eka.', + 'uzt.', + 'abu.', + 'ira.', + 'urr.', + 'aza.', + 'abe.', + ], + shortWeekDays: ['ig', 'al', 'ar', 'az', 'og', 'ol', 'lr'], + }, }; export default locale; diff --git a/src/locale/fa_IR.ts b/src/locale/fa_IR.ts index e157caaed..d6ba17840 100644 --- a/src/locale/fa_IR.ts +++ b/src/locale/fa_IR.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'دهه بعد', previousCentury: 'قرن قبل', nextCentury: 'قرن بعد', + calendarFallback: { + months: [ + 'ژانویه', + 'فوریه', + 'مارس', + 'آوریل', + 'مه', + 'ژوئن', + 'ژوئیه', + 'اوت', + 'سپتامبر', + 'اکتبر', + 'نوامبر', + 'دسامبر', + ], + shortMonths: [ + 'ژانویه', + 'فوریه', + 'مارس', + 'آوریل', + 'مه', + 'ژوئن', + 'ژوئیه', + 'اوت', + 'سپتامبر', + 'اکتبر', + 'نوامبر', + 'دسامبر', + ], + shortWeekDays: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], + }, }; export default locale; diff --git a/src/locale/fi_FI.ts b/src/locale/fi_FI.ts index d0f73e09e..8d14a8f4c 100644 --- a/src/locale/fi_FI.ts +++ b/src/locale/fi_FI.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Seuraava vuosikymmen', previousCentury: 'Edellinen vuosisata', nextCentury: 'Seuraava vuosisata', + calendarFallback: { + months: [ + 'tammikuu', + 'helmikuu', + 'maaliskuu', + 'huhtikuu', + 'toukokuu', + 'kesäkuu', + 'heinäkuu', + 'elokuu', + 'syyskuu', + 'lokakuu', + 'marraskuu', + 'joulukuu', + ], + shortMonths: [ + 'tammi', + 'helmi', + 'maalis', + 'huhti', + 'touko', + 'kesä', + 'heinä', + 'elo', + 'syys', + 'loka', + 'marras', + 'joulu', + ], + shortWeekDays: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], + }, }; export default locale; diff --git a/src/locale/fr_BE.ts b/src/locale/fr_BE.ts index d7de6972e..029b8d39b 100644 --- a/src/locale/fr_BE.ts +++ b/src/locale/fr_BE.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Décennie suivante', previousCentury: 'Siècle précédent', nextCentury: 'Siècle suivant', + calendarFallback: { + months: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], + shortMonths: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + shortWeekDays: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], + }, }; export default locale; diff --git a/src/locale/fr_CA.ts b/src/locale/fr_CA.ts index 615d43f39..cc247faae 100644 --- a/src/locale/fr_CA.ts +++ b/src/locale/fr_CA.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextDecade: 'Décennie suivante', previousCentury: 'Siècle précédent', nextCentury: 'Siècle suivant', + calendarFallback: { + months: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], + shortMonths: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + shortWeekDays: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], + }, }; export default locale; diff --git a/src/locale/fr_FR.ts b/src/locale/fr_FR.ts index 8941e7c0a..6ee44e5d9 100644 --- a/src/locale/fr_FR.ts +++ b/src/locale/fr_FR.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextDecade: 'Décennie suivante', previousCentury: 'Siècle précédent', nextCentury: 'Siècle suivant', + calendarFallback: { + months: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], + shortMonths: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + shortWeekDays: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], + }, }; export default locale; diff --git a/src/locale/ga_IE.ts b/src/locale/ga_IE.ts index fe8dd412e..f623c0c72 100644 --- a/src/locale/ga_IE.ts +++ b/src/locale/ga_IE.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Deich mbliana amach romhainn', previousCentury: 'An chéid seo caite', nextCentury: 'An chéad aois eile', + calendarFallback: { + months: [ + 'Eanáir', + 'Feabhra', + 'Márta', + 'Aibreán', + 'Bealtaine', + 'Meitheamh', + 'Iúil', + 'Lúnasa', + 'Meán Fómhair', + 'Deireadh Fómhair', + 'Samhain', + 'Nollaig', + ], + shortMonths: [ + 'Ean', + 'Fea', + 'Már', + 'Aib', + 'Beal', + 'Mei', + 'Iúil', + 'Lún', + 'MFómh', + 'DFómh', + 'Samh', + 'Noll', + ], + shortWeekDays: ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'], + }, }; export default locale; diff --git a/src/locale/gl_ES.ts b/src/locale/gl_ES.ts index 9e0db9e36..cae7d8672 100644 --- a/src/locale/gl_ES.ts +++ b/src/locale/gl_ES.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Década seguinte', previousCentury: 'Século anterior', nextCentury: 'Século seguinte', + calendarFallback: { + months: [ + 'xaneiro', + 'febreiro', + 'marzo', + 'abril', + 'maio', + 'xuño', + 'xullo', + 'agosto', + 'setembro', + 'outubro', + 'novembro', + 'decembro', + ], + shortMonths: [ + 'xan.', + 'feb.', + 'mar.', + 'abr.', + 'mai.', + 'xuñ.', + 'xul.', + 'ago.', + 'set.', + 'out.', + 'nov.', + 'dec.', + ], + shortWeekDays: ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'], + }, }; export default locale; diff --git a/src/locale/he_IL.ts b/src/locale/he_IL.ts index 6f6417ccf..7c16a01ad 100644 --- a/src/locale/he_IL.ts +++ b/src/locale/he_IL.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'העשור הבא', previousCentury: 'המאה הקודמת', nextCentury: 'המאה הבאה', + calendarFallback: { + months: [ + 'ינואר', + 'פברואר', + 'מרץ', + 'אפריל', + 'מאי', + 'יוני', + 'יולי', + 'אוגוסט', + 'ספטמבר', + 'אוקטובר', + 'נובמבר', + 'דצמבר', + ], + shortMonths: [ + 'ינו', + 'פבר', + 'מרץ', + 'אפר', + 'מאי', + 'יונ', + 'יול', + 'אוג', + 'ספט', + 'אוק', + 'נוב', + 'דצמ', + ], + shortWeekDays: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו', 'ש׳'], + }, }; export default locale; diff --git a/src/locale/hi_IN.ts b/src/locale/hi_IN.ts index d7ec9571d..9232ea1bc 100644 --- a/src/locale/hi_IN.ts +++ b/src/locale/hi_IN.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'अगले दशक', previousCentury: 'पीछ्ली शताब्दी', nextCentury: 'अगली सदी', + calendarFallback: { + months: [ + 'जनवरी', + 'फ़रवरी', + 'मार्च', + 'अप्रैल', + 'मई', + 'जून', + 'जुलाई', + 'अगस्त', + 'सितम्बर', + 'अक्टूबर', + 'नवम्बर', + 'दिसम्बर', + ], + shortMonths: [ + 'जन.', + 'फ़र.', + 'मार्च', + 'अप्रै.', + 'मई', + 'जून', + 'जुल.', + 'अग.', + 'सित.', + 'अक्टू.', + 'नव.', + 'दिस.', + ], + shortWeekDays: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], + }, }; export default locale; diff --git a/src/locale/hr_HR.ts b/src/locale/hr_HR.ts index dc03f3e55..8630b1f75 100644 --- a/src/locale/hr_HR.ts +++ b/src/locale/hr_HR.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Sljedeće desetljeće', previousCentury: 'Prošlo stoljeće', nextCentury: 'Sljedeće stoljeće', + calendarFallback: { + months: [ + 'siječanj', + 'veljača', + 'ožujak', + 'travanj', + 'svibanj', + 'lipanj', + 'srpanj', + 'kolovoz', + 'rujan', + 'listopad', + 'studeni', + 'prosinac', + ], + shortMonths: [ + 'sij.', + 'velj.', + 'ožu.', + 'tra.', + 'svi.', + 'lip.', + 'srp.', + 'kol.', + 'ruj.', + 'lis.', + 'stu.', + 'pro.', + ], + shortWeekDays: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + }, }; export default locale; diff --git a/src/locale/hu_HU.ts b/src/locale/hu_HU.ts index 47e126e47..c4fb3f134 100644 --- a/src/locale/hu_HU.ts +++ b/src/locale/hu_HU.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextDecade: 'Következő évtized', // 'Next decade', previousCentury: 'Múlt évszázad', // 'Last century', nextCentury: 'Jövő évszázad', // 'Next century', + calendarFallback: { + months: [ + 'január', + 'február', + 'március', + 'április', + 'május', + 'június', + 'július', + 'augusztus', + 'szeptember', + 'október', + 'november', + 'december', + ], + shortMonths: [ + 'jan', + 'feb', + 'márc', + 'ápr', + 'máj', + 'jún', + 'júl', + 'aug', + 'szept', + 'okt', + 'nov', + 'dec', + ], + shortWeekDays: ['v', 'h', 'k', 'sze', 'cs', 'p', 'szo'], + }, }; export default locale; diff --git a/src/locale/id_ID.ts b/src/locale/id_ID.ts index b81c6c754..b21d4454a 100644 --- a/src/locale/id_ID.ts +++ b/src/locale/id_ID.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Dekade berikutnya', previousCentury: 'Abad terakhir', nextCentury: 'Abad berikutnya', + calendarFallback: { + months: [ + 'Januari', + 'Februari', + 'Maret', + 'April', + 'Mei', + 'Juni', + 'Juli', + 'Agustus', + 'September', + 'Oktober', + 'November', + 'Desember', + ], + shortMonths: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'Mei', + 'Jun', + 'Jul', + 'Agt', + 'Sep', + 'Okt', + 'Nov', + 'Des', + ], + shortWeekDays: ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], + }, }; export default locale; diff --git a/src/locale/is_IS.ts b/src/locale/is_IS.ts index 780a860e6..f9899bab0 100644 --- a/src/locale/is_IS.ts +++ b/src/locale/is_IS.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Næsti áratugur', previousCentury: 'Fyrri öld', nextCentury: 'Næsta öld', + calendarFallback: { + months: [ + 'janúar', + 'febrúar', + 'mars', + 'apríl', + 'maí', + 'júní', + 'júlí', + 'ágúst', + 'september', + 'október', + 'nóvember', + 'desember', + ], + shortMonths: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'maí', + 'jún', + 'júl', + 'ágú', + 'sep', + 'okt', + 'nóv', + 'des', + ], + shortWeekDays: ['Su', 'Má', 'Þr', 'Mi', 'Fi', 'Fö', 'La'], + }, }; export default locale; diff --git a/src/locale/it_IT.ts b/src/locale/it_IT.ts index 6786ffe1b..85855f96a 100644 --- a/src/locale/it_IT.ts +++ b/src/locale/it_IT.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextCentury: 'Prossimo secolo', shortWeekDays: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'], shortMonths: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'], + calendarFallback: { + months: [ + 'gennaio', + 'febbraio', + 'marzo', + 'aprile', + 'maggio', + 'giugno', + 'luglio', + 'agosto', + 'settembre', + 'ottobre', + 'novembre', + 'dicembre', + ], + shortMonths: [ + 'gen', + 'feb', + 'mar', + 'apr', + 'mag', + 'giu', + 'lug', + 'ago', + 'set', + 'ott', + 'nov', + 'dic', + ], + shortWeekDays: ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'], + }, }; export default locale; diff --git a/src/locale/ja_JP.ts b/src/locale/ja_JP.ts index 6c3b2a3e6..afd7322f0 100644 --- a/src/locale/ja_JP.ts +++ b/src/locale/ja_JP.ts @@ -28,6 +28,24 @@ const locale: Locale = { previousCentury: '前の世紀', nextCentury: '次の世紀', monthBeforeYear: false, + calendarFallback: { + months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + shortMonths: [ + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + '10月', + '11月', + '12月', + ], + shortWeekDays: ['日', '月', '火', '水', '木', '金', '土'], + }, }; export default locale; diff --git a/src/locale/ka_GE.ts b/src/locale/ka_GE.ts index f8f91ea7e..a9978015f 100644 --- a/src/locale/ka_GE.ts +++ b/src/locale/ka_GE.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'მომდევნო ათწლეული', previousCentury: 'გასული საუკუნე', nextCentury: 'მომდევნო საუკუნე', + calendarFallback: { + months: [ + 'იანვარი', + 'თებერვალი', + 'მარტი', + 'აპრილი', + 'მაისი', + 'ივნისი', + 'ივლისი', + 'აგვისტო', + 'სექტემბერი', + 'ოქტომბერი', + 'ნოემბერი', + 'დეკემბერი', + ], + shortMonths: [ + 'იან', + 'თებ', + 'მარ', + 'აპრ', + 'მაი', + 'ივნ', + 'ივლ', + 'აგვ', + 'სექ', + 'ოქტ', + 'ნოე', + 'დეკ', + ], + shortWeekDays: ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'], + }, }; export default locale; diff --git a/src/locale/kk_KZ.ts b/src/locale/kk_KZ.ts index 252fbaf31..13f0ab22a 100644 --- a/src/locale/kk_KZ.ts +++ b/src/locale/kk_KZ.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Келесі онжылдық', previousCentury: 'Алдыңғы ғасыр', nextCentury: 'Келесі ғасыр', + calendarFallback: { + months: [ + 'қаңтар', + 'ақпан', + 'наурыз', + 'сәуір', + 'мамыр', + 'маусым', + 'шілде', + 'тамыз', + 'қыркүйек', + 'қазан', + 'қараша', + 'желтоқсан', + ], + shortMonths: [ + 'қаң', + 'ақп', + 'нау', + 'сәу', + 'мам', + 'мау', + 'шіл', + 'там', + 'қыр', + 'қаз', + 'қар', + 'жел', + ], + shortWeekDays: ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'], + }, }; export default locale; diff --git a/src/locale/km_KH.ts b/src/locale/km_KH.ts index 0db542a4f..d190f2193 100644 --- a/src/locale/km_KH.ts +++ b/src/locale/km_KH.ts @@ -28,6 +28,37 @@ const locale: Locale = { previousCentury: 'សតវត្សចុងក្រោយ', nextCentury: 'សតវត្សរ៍បន្ទាប់', monthBeforeYear: false, + calendarFallback: { + months: [ + 'មករា', + 'កុម្ភៈ', + 'មីនា', + 'មេសា', + 'ឧសភា', + 'មិថុនា', + 'កក្កដា', + 'សីហា', + 'កញ្ញា', + 'តុលា', + 'វិច្ឆិកា', + 'ធ្នូ', + ], + shortMonths: [ + 'មករា', + 'កុម្ភៈ', + 'មីនា', + 'មេសា', + 'ឧសភា', + 'មិថុនា', + 'កក្កដា', + 'សីហា', + 'កញ្ញា', + 'តុលា', + 'វិច្ឆិកា', + 'ធ្នូ', + ], + shortWeekDays: ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'], + }, }; export default locale; diff --git a/src/locale/kmr_IQ.ts b/src/locale/kmr_IQ.ts index 215b8fa02..c692757f2 100644 --- a/src/locale/kmr_IQ.ts +++ b/src/locale/kmr_IQ.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Dehsalen paş', previousCentury: 'Sedsalen peş', nextCentury: 'Sedsalen paş', + calendarFallback: { + months: [ + 'Rêbendan', + 'Sibat', + 'Adar', + 'Nîsan', + 'Gulan', + 'Hezîran', + 'Tîrmeh', + 'Tebax', + 'Îlon', + 'Cotmeh', + 'Mijdar', + 'Berfanbar', + ], + shortMonths: [ + 'Rêb', + 'Sib', + 'Ada', + 'Nîs', + 'Gul', + 'Hez', + 'Tîr', + 'Teb', + 'Îlo', + 'Cot', + 'Mij', + 'Ber', + ], + shortWeekDays: ['Ye', 'Du', 'Sê', 'Ça', 'Pê', 'În', 'Şe'], + }, }; export default locale; diff --git a/src/locale/kn_IN.ts b/src/locale/kn_IN.ts index 2b4e6586c..f2cfb9054 100644 --- a/src/locale/kn_IN.ts +++ b/src/locale/kn_IN.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'ಮುಂದಿನ ದಶಕ', previousCentury: 'ಕಳೆದ ಶತಮಾನ', nextCentury: 'ಮುಂದಿನ ಶತಮಾನ', + calendarFallback: { + months: [ + 'ಜನವರಿ', + 'ಫೆಬ್ರವರಿ', + 'ಮಾರ್ಚ್', + 'ಏಪ್ರಿಲ್', + 'ಮೇ', + 'ಜೂನ್', + 'ಜುಲೈ', + 'ಆಗಸ್ಟ್', + 'ಸೆಪ್ಟೆಂಬರ್', + 'ಅಕ್ಟೋಬರ್', + 'ನವೆಂಬರ್', + 'ಡಿಸೆಂಬರ್', + ], + shortMonths: [ + 'ಜನ', + 'ಫೆಬ್ರ', + 'ಮಾರ್ಚ್', + 'ಏಪ್ರಿಲ್', + 'ಮೇ', + 'ಜೂನ್', + 'ಜುಲೈ', + 'ಆಗಸ್ಟ್', + 'ಸೆಪ್ಟೆಂ', + 'ಅಕ್ಟೋ', + 'ನವೆಂ', + 'ಡಿಸೆಂ', + ], + shortWeekDays: ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], + }, }; export default locale; diff --git a/src/locale/ko_KR.ts b/src/locale/ko_KR.ts index 15fca41d7..2de58bdd6 100644 --- a/src/locale/ko_KR.ts +++ b/src/locale/ko_KR.ts @@ -27,6 +27,24 @@ const locale: Locale = { nextDecade: '다음 연대', previousCentury: '이전 세기', nextCentury: '다음 세기', + calendarFallback: { + months: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], + shortMonths: [ + '1월', + '2월', + '3월', + '4월', + '5월', + '6월', + '7월', + '8월', + '9월', + '10월', + '11월', + '12월', + ], + shortWeekDays: ['일', '월', '화', '수', '목', '금', '토'], + }, }; export default locale; diff --git a/src/locale/lt_LT.ts b/src/locale/lt_LT.ts index c93717290..79d22b319 100644 --- a/src/locale/lt_LT.ts +++ b/src/locale/lt_LT.ts @@ -29,6 +29,37 @@ const locale: Locale = { nextDecade: 'Kitas dešimtmetis', previousCentury: 'Buvęs amžius', nextCentury: 'Kitas amžius', + calendarFallback: { + months: [ + 'sausis', + 'vasaris', + 'kovas', + 'balandis', + 'gegužė', + 'birželis', + 'liepa', + 'rugpjūtis', + 'rugsėjis', + 'spalis', + 'lapkritis', + 'gruodis', + ], + shortMonths: [ + 'sau', + 'vas', + 'kov', + 'bal', + 'geg', + 'bir', + 'lie', + 'rgp', + 'rgs', + 'spa', + 'lap', + 'grd', + ], + shortWeekDays: ['s', 'p', 'a', 't', 'k', 'pn', 'š'], + }, }; export default locale; diff --git a/src/locale/lv_LV.ts b/src/locale/lv_LV.ts index df92a4268..9b695a702 100644 --- a/src/locale/lv_LV.ts +++ b/src/locale/lv_LV.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Nākamā desmitgade', previousCentury: 'Pagājušajā gadsimtā', nextCentury: 'Nākamajā gadsimtā', + calendarFallback: { + months: [ + 'janvāris', + 'februāris', + 'marts', + 'aprīlis', + 'maijs', + 'jūnijs', + 'jūlijs', + 'augusts', + 'septembris', + 'oktobris', + 'novembris', + 'decembris', + ], + shortMonths: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'mai', + 'jūn', + 'jūl', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec', + ], + shortWeekDays: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'], + }, }; export default locale; diff --git a/src/locale/mk_MK.ts b/src/locale/mk_MK.ts index e19417cbc..6d14a9d5f 100644 --- a/src/locale/mk_MK.ts +++ b/src/locale/mk_MK.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Наредна деценија', previousCentury: 'Претходен век', nextCentury: 'Нареден век', + calendarFallback: { + months: [ + 'јануари', + 'февруари', + 'март', + 'април', + 'мај', + 'јуни', + 'јули', + 'август', + 'септември', + 'октомври', + 'ноември', + 'декември', + ], + shortMonths: [ + 'јан', + 'фев', + 'мар', + 'апр', + 'мај', + 'јун', + 'јул', + 'авг', + 'сеп', + 'окт', + 'ное', + 'дек', + ], + shortWeekDays: ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'], + }, }; export default locale; diff --git a/src/locale/ml_IN.ts b/src/locale/ml_IN.ts index 5ab7e4032..c1ab7d443 100644 --- a/src/locale/ml_IN.ts +++ b/src/locale/ml_IN.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'അടുത്ത ദശാബ്ദം', previousCentury: 'കഴിഞ്ഞ നൂറ്റാണ്ട്', nextCentury: 'അടുത്ത നൂറ്റാണ്ട്', + calendarFallback: { + months: [ + 'ജനുവരി', + 'ഫെബ്രുവരി', + 'മാർച്ച്', + 'ഏപ്രിൽ', + 'മേയ്', + 'ജൂൺ', + 'ജൂലൈ', + 'ഓഗസ്റ്റ്', + 'സെപ്റ്റംബർ', + 'ഒക്ടോബർ', + 'നവംബർ', + 'ഡിസംബർ', + ], + shortMonths: [ + 'ജനു.', + 'ഫെബ്രു.', + 'മാർ.', + 'ഏപ്രി.', + 'മേയ്', + 'ജൂൺ', + 'ജൂലൈ.', + 'ഓഗ.', + 'സെപ്റ്റ.', + 'ഒക്ടോ.', + 'നവം.', + 'ഡിസം.', + ], + shortWeekDays: ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], + }, }; export default locale; diff --git a/src/locale/mn_MN.ts b/src/locale/mn_MN.ts index d5b965d21..a23ddb869 100644 --- a/src/locale/mn_MN.ts +++ b/src/locale/mn_MN.ts @@ -29,6 +29,37 @@ const locale: Locale = { nextDecade: 'Дараа арван', previousCentury: 'Өмнөх зуун', nextCentury: 'Дараа зуун', + calendarFallback: { + months: [ + 'Нэгдүгээр сар', + 'Хоёрдугаар сар', + 'Гуравдугаар сар', + 'Дөрөвдүгээр сар', + 'Тавдугаар сар', + 'Зургадугаар сар', + 'Долдугаар сар', + 'Наймдугаар сар', + 'Есдүгээр сар', + 'Аравдугаар сар', + 'Арван нэгдүгээр сар', + 'Арван хоёрдугаар сар', + ], + shortMonths: [ + '1 сар', + '2 сар', + '3 сар', + '4 сар', + '5 сар', + '6 сар', + '7 сар', + '8 сар', + '9 сар', + '10 сар', + '11 сар', + '12 сар', + ], + shortWeekDays: ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], + }, }; export default locale; diff --git a/src/locale/mr_IN.ts b/src/locale/mr_IN.ts index 521bce969..3689d06bc 100644 --- a/src/locale/mr_IN.ts +++ b/src/locale/mr_IN.ts @@ -45,6 +45,37 @@ const locale: Locale = { 'नोव्हें', 'डिसें', ], + calendarFallback: { + months: [ + 'जानेवारी', + 'फेब्रुवारी', + 'मार्च', + 'एप्रिल', + 'मे', + 'जून', + 'जुलै', + 'ऑगस्ट', + 'सप्टेंबर', + 'ऑक्टोबर', + 'नोव्हेंबर', + 'डिसेंबर', + ], + shortMonths: [ + 'जाने.', + 'फेब्रु.', + 'मार्च.', + 'एप्रि.', + 'मे.', + 'जून.', + 'जुलै.', + 'ऑग.', + 'सप्टें.', + 'ऑक्टो.', + 'नोव्हें.', + 'डिसें.', + ], + shortWeekDays: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], + }, }; export default locale; diff --git a/src/locale/ms_MY.ts b/src/locale/ms_MY.ts index f160813e8..9f916951c 100644 --- a/src/locale/ms_MY.ts +++ b/src/locale/ms_MY.ts @@ -29,6 +29,37 @@ const locale: Locale = { nextCentury: 'Abad depan', monthBeforeYear: false, + calendarFallback: { + months: [ + 'Januari', + 'Februari', + 'Mac', + 'April', + 'Mei', + 'Jun', + 'Julai', + 'Ogos', + 'September', + 'Oktober', + 'November', + 'Disember', + ], + shortMonths: [ + 'Jan', + 'Feb', + 'Mac', + 'Apr', + 'Mei', + 'Jun', + 'Jul', + 'Ogs', + 'Sep', + 'Okt', + 'Nov', + 'Dis', + ], + shortWeekDays: ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], + }, }; export default locale; diff --git a/src/locale/my_MM.ts b/src/locale/my_MM.ts index 7cf8c1478..59811736f 100644 --- a/src/locale/my_MM.ts +++ b/src/locale/my_MM.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'နောက်ဆယ်စုနှစ်', previousCentury: 'ယခင်ရာစုနှစ်', nextCentury: 'နောက်ရာစုနှစ်', + calendarFallback: { + months: [ + 'ဇန်နဝါရီ', + 'ဖေဖော်ဝါရီ', + 'မတ်', + 'ဧပြီ', + 'မေ', + 'ဇွန်', + 'ဇူလိုင်', + 'သြဂုတ်', + 'စက်တင်ဘာ', + 'အောက်တိုဘာ', + 'နိုဝင်ဘာ', + 'ဒီဇင်ဘာ', + ], + shortMonths: [ + 'ဇန်', + 'ဖေ', + 'မတ်', + 'ပြီ', + 'မေ', + 'ဇွန်', + 'လိုင်', + 'သြ', + 'စက်', + 'အောက်', + 'နို', + 'ဒီ', + ], + shortWeekDays: ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'], + }, }; export default locale; diff --git a/src/locale/nb_NO.ts b/src/locale/nb_NO.ts index 22e4b71b8..2a5e0e203 100644 --- a/src/locale/nb_NO.ts +++ b/src/locale/nb_NO.ts @@ -29,6 +29,37 @@ const locale: Locale = { nextDecade: 'Neste tiår', previousCentury: 'Forrige århundre', nextCentury: 'Neste århundre', + calendarFallback: { + months: [ + 'januar', + 'februar', + 'mars', + 'april', + 'mai', + 'juni', + 'juli', + 'august', + 'september', + 'oktober', + 'november', + 'desember', + ], + shortMonths: [ + 'jan.', + 'feb.', + 'mars', + 'april', + 'mai', + 'juni', + 'juli', + 'aug.', + 'sep.', + 'okt.', + 'nov.', + 'des.', + ], + shortWeekDays: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], + }, }; export default locale; diff --git a/src/locale/ne_NP.ts b/src/locale/ne_NP.ts index b433e648c..9d42852b6 100644 --- a/src/locale/ne_NP.ts +++ b/src/locale/ne_NP.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'अर्को दशक', previousCentury: 'पछिल्लो शताब्दी', nextCentury: 'अर्को शताब्दी', + calendarFallback: { + months: [ + 'जनवरी', + 'फेब्रुवरी', + 'मार्च', + 'अप्रिल', + 'मे', + 'जुन', + 'जुलाई', + 'अगष्ट', + 'सेप्टेम्बर', + 'अक्टोबर', + 'नोभेम्बर', + 'डिसेम्बर', + ], + shortMonths: [ + 'जन.', + 'फेब्रु.', + 'मार्च', + 'अप्रि.', + 'मई', + 'जुन', + 'जुलाई.', + 'अग.', + 'सेप्ट.', + 'अक्टो.', + 'नोभे.', + 'डिसे.', + ], + shortWeekDays: ['आ.', 'सो.', 'मं.', 'बु.', 'बि.', 'शु.', 'श.'], + }, }; export default locale; diff --git a/src/locale/nl_BE.ts b/src/locale/nl_BE.ts index 24dd18315..ea5061552 100644 --- a/src/locale/nl_BE.ts +++ b/src/locale/nl_BE.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Volgend decennium', previousCentury: 'Vorige eeuw', nextCentury: 'Volgende eeuw', + calendarFallback: { + months: [ + 'januari', + 'februari', + 'maart', + 'april', + 'mei', + 'juni', + 'juli', + 'augustus', + 'september', + 'oktober', + 'november', + 'december', + ], + shortMonths: [ + 'jan.', + 'feb.', + 'mrt.', + 'apr.', + 'mei', + 'jun.', + 'jul.', + 'aug.', + 'sep.', + 'okt.', + 'nov.', + 'dec.', + ], + shortWeekDays: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + }, }; export default locale; diff --git a/src/locale/nl_NL.ts b/src/locale/nl_NL.ts index e155726b4..06ad9cc9c 100644 --- a/src/locale/nl_NL.ts +++ b/src/locale/nl_NL.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Volgend decennium', previousCentury: 'Vorige eeuw', nextCentury: 'Volgende eeuw', + calendarFallback: { + months: [ + 'januari', + 'februari', + 'maart', + 'april', + 'mei', + 'juni', + 'juli', + 'augustus', + 'september', + 'oktober', + 'november', + 'december', + ], + shortMonths: [ + 'jan', + 'feb', + 'mrt', + 'apr', + 'mei', + 'jun', + 'jul', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec', + ], + shortWeekDays: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + }, }; export default locale; diff --git a/src/locale/pl_PL.ts b/src/locale/pl_PL.ts index faa772ed0..3aa0f302b 100644 --- a/src/locale/pl_PL.ts +++ b/src/locale/pl_PL.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Następna dekada', previousCentury: 'Ostatni wiek', nextCentury: 'Następny wiek', + calendarFallback: { + months: [ + 'styczeń', + 'luty', + 'marzec', + 'kwiecień', + 'maj', + 'czerwiec', + 'lipiec', + 'sierpień', + 'wrzesień', + 'październik', + 'listopad', + 'grudzień', + ], + shortMonths: [ + 'sty', + 'lut', + 'mar', + 'kwi', + 'maj', + 'cze', + 'lip', + 'sie', + 'wrz', + 'paź', + 'lis', + 'gru', + ], + shortWeekDays: ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'], + }, }; export default locale; diff --git a/src/locale/pt_BR.ts b/src/locale/pt_BR.ts index 0043b28fb..2c9d54b95 100644 --- a/src/locale/pt_BR.ts +++ b/src/locale/pt_BR.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextCentury: 'Próximo século', shortWeekDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], shortMonths: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], + calendarFallback: { + 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', + ], + shortWeekDays: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], + }, }; export default locale; diff --git a/src/locale/pt_PT.ts b/src/locale/pt_PT.ts index fcf74a3a7..82e949515 100644 --- a/src/locale/pt_PT.ts +++ b/src/locale/pt_PT.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextCentury: 'Século seguinte', shortWeekDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'], shortMonths: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], + calendarFallback: { + 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', + ], + shortWeekDays: ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sa'], + }, }; export default locale; diff --git a/src/locale/ro_RO.ts b/src/locale/ro_RO.ts index 6721d5ab6..db4aaac1c 100644 --- a/src/locale/ro_RO.ts +++ b/src/locale/ro_RO.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Deceniul următor', previousCentury: 'Secolul anterior', nextCentury: 'Secolul următor', + calendarFallback: { + months: [ + 'Ianuarie', + 'Februarie', + 'Martie', + 'Aprilie', + 'Mai', + 'Iunie', + 'Iulie', + 'August', + 'Septembrie', + 'Octombrie', + 'Noiembrie', + 'Decembrie', + ], + shortMonths: [ + 'Ian.', + 'Febr.', + 'Mart.', + 'Apr.', + 'Mai', + 'Iun.', + 'Iul.', + 'Aug.', + 'Sept.', + 'Oct.', + 'Nov.', + 'Dec.', + ], + shortWeekDays: ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'], + }, }; export default locale; diff --git a/src/locale/ru_RU.ts b/src/locale/ru_RU.ts index 4c6520d17..2891931f8 100644 --- a/src/locale/ru_RU.ts +++ b/src/locale/ru_RU.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Следущее десятилетие', previousCentury: 'Предыдущий век', nextCentury: 'Следующий век', + calendarFallback: { + months: [ + 'январь', + 'февраль', + 'март', + 'апрель', + 'май', + 'июнь', + 'июль', + 'август', + 'сентябрь', + 'октябрь', + 'ноябрь', + 'декабрь', + ], + shortMonths: [ + 'янв.', + 'февр.', + 'март', + 'апр.', + 'май', + 'июнь', + 'июль', + 'авг.', + 'сент.', + 'окт.', + 'нояб.', + 'дек.', + ], + shortWeekDays: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], + }, }; export default locale; diff --git a/src/locale/si_LK.ts b/src/locale/si_LK.ts index cda7b111d..84ff0a8c1 100644 --- a/src/locale/si_LK.ts +++ b/src/locale/si_LK.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextDecade: 'ඊළඟ දශකය', previousCentury: 'පසුගිය සියවස', nextCentury: 'ඊළඟ සියවස', + calendarFallback: { + months: [ + 'දුරුතු', + 'නවම්', + 'මැදින්', + 'බක්', + 'වෙසක්', + 'පොසොන්', + 'ඇසළ', + 'නිකිණි', + 'බිනර', + 'වප්', + 'ඉල්', + 'උඳුවප්', + ], + shortMonths: [ + 'දුරු', + 'නව', + 'මැදි', + 'බක්', + 'වෙස', + 'පොසො', + 'ඇස', + 'නිකි', + 'බින', + 'වප්', + 'ඉල්', + 'උඳු', + ], + shortWeekDays: ['ඉ', 'ස', 'අ', 'බ', 'බ්‍ර', 'සි', 'සෙ'], + }, }; export default locale; diff --git a/src/locale/sk_SK.ts b/src/locale/sk_SK.ts index ebbbb42bb..49f187c18 100644 --- a/src/locale/sk_SK.ts +++ b/src/locale/sk_SK.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Nasledujúca dekáda', previousCentury: 'Predchádzajúce storočie', nextCentury: 'Nasledujúce storočie', + calendarFallback: { + months: [ + 'január', + 'február', + 'marec', + 'apríl', + 'máj', + 'jún', + 'júl', + 'august', + 'september', + 'október', + 'november', + 'december', + ], + shortMonths: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'máj', + 'jún', + 'júl', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec', + ], + shortWeekDays: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], + }, }; export default locale; diff --git a/src/locale/sl_SI.ts b/src/locale/sl_SI.ts index 21b921491..f472232f2 100644 --- a/src/locale/sl_SI.ts +++ b/src/locale/sl_SI.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Naslednje desetletje', previousCentury: 'Prejšnje stoletje', nextCentury: 'Naslednje stoletje', + calendarFallback: { + months: [ + 'januar', + 'februar', + 'marec', + 'april', + 'maj', + 'junij', + 'julij', + 'avgust', + 'september', + 'oktober', + 'november', + 'december', + ], + shortMonths: [ + 'jan.', + 'feb.', + 'mar.', + 'apr.', + 'maj.', + 'jun.', + 'jul.', + 'avg.', + 'sep.', + 'okt.', + 'nov.', + 'dec.', + ], + shortWeekDays: ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'], + }, }; export default locale; diff --git a/src/locale/sr_Cyrl_RS.ts b/src/locale/sr_Cyrl_RS.ts index fbe0296e3..ac20d4950 100644 --- a/src/locale/sr_Cyrl_RS.ts +++ b/src/locale/sr_Cyrl_RS.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Следећа деценија', previousCentury: 'Претходни век', nextCentury: 'Следећи век', + calendarFallback: { + months: [ + 'Јануар', + 'Фебруар', + 'Март', + 'Април', + 'Мај', + 'Јун', + 'Јул', + 'Август', + 'Септембар', + 'Октобар', + 'Новембар', + 'Децембар', + ], + shortMonths: [ + 'Јан.', + 'Феб.', + 'Мар.', + 'Апр.', + 'Мај', + 'Јун', + 'Јул', + 'Авг.', + 'Сеп.', + 'Окт.', + 'Нов.', + 'Дец.', + ], + shortWeekDays: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], + }, }; export default locale; diff --git a/src/locale/sr_RS.ts b/src/locale/sr_RS.ts index b53cf523a..4bccb06d7 100644 --- a/src/locale/sr_RS.ts +++ b/src/locale/sr_RS.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Sledeća decenija', previousCentury: 'Prethodni vek', nextCentury: 'Sledeći vek', + calendarFallback: { + months: [ + 'Januar', + 'Februar', + 'Mart', + 'April', + 'Maj', + 'Jun', + 'Jul', + 'Avgust', + 'Septembar', + 'Oktobar', + 'Novembar', + 'Decembar', + ], + shortMonths: [ + 'Jan.', + 'Feb.', + 'Mar.', + 'Apr.', + 'Maj', + 'Jun', + 'Jul', + 'Avg.', + 'Sep.', + 'Okt.', + 'Nov.', + 'Dec.', + ], + shortWeekDays: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + }, }; export default locale; diff --git a/src/locale/sv_SE.ts b/src/locale/sv_SE.ts index fe414d7c9..3b12c33ef 100644 --- a/src/locale/sv_SE.ts +++ b/src/locale/sv_SE.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Nästa årtionde', previousCentury: 'Föreg århundrade', nextCentury: 'Nästa århundrade', + calendarFallback: { + months: [ + 'januari', + 'februari', + 'mars', + 'april', + 'maj', + 'juni', + 'juli', + 'augusti', + 'september', + 'oktober', + 'november', + 'december', + ], + shortMonths: [ + 'jan', + 'feb', + 'mar', + 'apr', + 'maj', + 'jun', + 'jul', + 'aug', + 'sep', + 'okt', + 'nov', + 'dec', + ], + shortWeekDays: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'], + }, }; export default locale; diff --git a/src/locale/ta_IN.ts b/src/locale/ta_IN.ts index aa95579a4..5290a5d84 100644 --- a/src/locale/ta_IN.ts +++ b/src/locale/ta_IN.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'அடுத்த தசாப்தம்', previousCentury: 'முந்தைய நூற்றாண்டு', nextCentury: 'அடுத்த நூற்றாண்டு', + calendarFallback: { + months: [ + 'ஜனவரி', + 'பிப்ரவரி', + 'மார்ச்', + 'ஏப்ரல்', + 'மே', + 'ஜூன்', + 'ஜூலை', + 'ஆகஸ்ட்', + 'செப்டெம்பர்', + 'அக்டோபர்', + 'நவம்பர்', + 'டிசம்பர்', + ], + shortMonths: [ + 'ஜனவரி', + 'பிப்ரவரி', + 'மார்ச்', + 'ஏப்ரல்', + 'மே', + 'ஜூன்', + 'ஜூலை', + 'ஆகஸ்ட்', + 'செப்டெம்பர்', + 'அக்டோபர்', + 'நவம்பர்', + 'டிசம்பர்', + ], + shortWeekDays: ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], + }, }; export default locale; diff --git a/src/locale/te_IN.ts b/src/locale/te_IN.ts index ce3861fd1..778bb2f89 100644 --- a/src/locale/te_IN.ts +++ b/src/locale/te_IN.ts @@ -1,31 +1,62 @@ import { commonLocale } from './common'; import type { Locale } from '../interface'; -const locale: Locale={ - ...commonLocale, - locale: 'te_IN', - today:'నేడు', - now:'ఇప్పుడు', - backToToday:'తిరిగి నేటికి', - ok:'సరే', - clear:'స్పష్టమైన', - week:'వారం', - month:'నెల', - year:'సంవత్సరం', - timeSelect:'సమయం ఎంపిక', - dateSelect:'తేదీ ఎంపిక', - weekSelect:'వారం ఎంపిక', - monthSelect:'నెల ఎంపిక', - yearSelect:'సంవత్సరం ఎంపిక', - decadeSelect:'దశాబ్దం ఎంపిక', +const locale: Locale = { + ...commonLocale, + locale: 'te_IN', + today: 'నేడు', + now: 'ఇప్పుడు', + backToToday: 'తిరిగి నేటికి', + ok: 'సరే', + clear: 'స్పష్టమైన', + week: 'వారం', + month: 'నెల', + year: 'సంవత్సరం', + timeSelect: 'సమయం ఎంపిక', + dateSelect: 'తేదీ ఎంపిక', + weekSelect: 'వారం ఎంపిక', + monthSelect: 'నెల ఎంపిక', + yearSelect: 'సంవత్సరం ఎంపిక', + decadeSelect: 'దశాబ్దం ఎంపిక', - previousMonth:'మునుపటి నెల', - nextMonth:'వచ్చే నెల', - previousYear:'మునుపటి సంవత్సరం', - nextYear:'తదుపరి సంవత్సరం', - previousDecade:'మునుపటి దశాబ్దం', - nextDecade:'తదుపరి దశాబ్దం', - previousCentury:'మునుపటి శతాబ్దం', - nextCentury:'తదుపరి శతాబ్దం', + previousMonth: 'మునుపటి నెల', + nextMonth: 'వచ్చే నెల', + previousYear: 'మునుపటి సంవత్సరం', + nextYear: 'తదుపరి సంవత్సరం', + previousDecade: 'మునుపటి దశాబ్దం', + nextDecade: 'తదుపరి దశాబ్దం', + previousCentury: 'మునుపటి శతాబ్దం', + nextCentury: 'తదుపరి శతాబ్దం', + calendarFallback: { + months: [ + 'జనవరి', + 'ఫిబ్రవరి', + 'మార్చి', + 'ఏప్రిల్', + 'మే', + 'జూన్', + 'జులై', + 'ఆగస్టు', + 'సెప్టెంబర్', + 'అక్టోబర్', + 'నవంబర్', + 'డిసెంబర్', + ], + shortMonths: [ + 'జన.', + 'ఫిబ్ర.', + 'మార్చి', + 'ఏప్రి.', + 'మే', + 'జూన్', + 'జులై', + 'ఆగ.', + 'సెప్.', + 'అక్టో.', + 'నవ.', + 'డిసె.', + ], + shortWeekDays: ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'], + }, }; -export default locale; \ No newline at end of file +export default locale; diff --git a/src/locale/th_TH.ts b/src/locale/th_TH.ts index 98c592980..577129634 100644 --- a/src/locale/th_TH.ts +++ b/src/locale/th_TH.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'ทศวรรษถัดไป', previousCentury: 'ศตวรรษก่อนหน้า', nextCentury: 'ศตวรรษถัดไป', + calendarFallback: { + months: [ + 'มกราคม', + 'กุมภาพันธ์', + 'มีนาคม', + 'เมษายน', + 'พฤษภาคม', + 'มิถุนายน', + 'กรกฎาคม', + 'สิงหาคม', + 'กันยายน', + 'ตุลาคม', + 'พฤศจิกายน', + 'ธันวาคม', + ], + shortMonths: [ + 'ม.ค.', + 'ก.พ.', + 'มี.ค.', + 'เม.ย.', + 'พ.ค.', + 'มิ.ย.', + 'ก.ค.', + 'ส.ค.', + 'ก.ย.', + 'ต.ค.', + 'พ.ย.', + 'ธ.ค.', + ], + shortWeekDays: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], + }, }; export default locale; diff --git a/src/locale/tk_TK.ts b/src/locale/tk_TK.ts index 1855dfaee..9369f9fcc 100644 --- a/src/locale/tk_TK.ts +++ b/src/locale/tk_TK.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Soňky on ýyl', previousCentury: 'Öňki asyr', nextCentury: 'Soňky asyr', + calendarFallback: { + months: [ + 'Ýanwar', + 'Fewral', + 'Mart', + 'Aprel', + 'Maý', + 'Iýun', + 'Iýul', + 'Awgust', + 'Sentýabr', + 'Oktýabr', + 'Noýabr', + 'Dekabr', + ], + shortMonths: [ + 'Ýan', + 'Few', + 'Mar', + 'Apr', + 'Maý', + 'Iýn', + 'Iýl', + 'Awg', + 'Sen', + 'Okt', + 'Noý', + 'Dek', + ], + shortWeekDays: ['Ýk', 'Dş', 'Sş', 'Çr', 'Pn', 'An', 'Şn'], + }, }; export default locale; diff --git a/src/locale/tl_PH.ts b/src/locale/tl_PH.ts index df9293e76..8bd13ea29 100644 --- a/src/locale/tl_PH.ts +++ b/src/locale/tl_PH.ts @@ -30,6 +30,37 @@ const locale: Locale = { shortWeekDays: ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], shortMonths: ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], + calendarFallback: { + months: [ + 'Enero', + 'Pebrero', + 'Marso', + 'Abril', + 'Mayo', + 'Hunyo', + 'Hulyo', + 'Agosto', + 'Setyembre', + 'Oktubre', + 'Nobyembre', + 'Disyembre', + ], + shortMonths: [ + 'Ene', + 'Peb', + 'Mar', + 'Abr', + 'May', + 'Hun', + 'Hul', + 'Ago', + 'Set', + 'Okt', + 'Nob', + 'Dis', + ], + shortWeekDays: ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sab'], + }, }; export default locale; diff --git a/src/locale/tr_TR.ts b/src/locale/tr_TR.ts index 0d2a3d81e..4eaa2bda1 100644 --- a/src/locale/tr_TR.ts +++ b/src/locale/tr_TR.ts @@ -28,6 +28,37 @@ const locale: Locale = { nextCentury: 'Sonraki Yüzyıl', shortWeekDays: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], shortMonths: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], + calendarFallback: { + months: [ + 'Ocak', + 'Şubat', + 'Mart', + 'Nisan', + 'Mayıs', + 'Haziran', + 'Temmuz', + 'Ağustos', + 'Eylül', + 'Ekim', + 'Kasım', + 'Aralık', + ], + shortMonths: [ + 'Oca', + 'Şub', + 'Mar', + 'Nis', + 'May', + 'Haz', + 'Tem', + 'Ağu', + 'Eyl', + 'Eki', + 'Kas', + 'Ara', + ], + shortWeekDays: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'], + }, }; export default locale; diff --git a/src/locale/ug_CN.ts b/src/locale/ug_CN.ts index 868a9f2d0..c1c45f178 100644 --- a/src/locale/ug_CN.ts +++ b/src/locale/ug_CN.ts @@ -28,6 +28,37 @@ const locale: Locale = { previousCentury: 'ئالدىنقى ئەسىر', nextCentury: 'كېيىنكى ئەسىر', monthBeforeYear: false, + calendarFallback: { + months: [ + 'يانۋار', + 'فېۋرال', + 'مارت', + 'ئاپرېل', + 'ماي', + 'ئىيۇن', + 'ئىيۇل', + 'ئاۋغۇست', + 'سېنتەبىر', + 'ئۆكتەبىر', + 'نويابىر', + 'دېكابىر', + ], + shortMonths: [ + 'يانۋار', + 'فېۋرال', + 'مارت', + 'ئاپرېل', + 'ماي', + 'ئىيۇن', + 'ئىيۇل', + 'ئاۋغۇست', + 'سېنتەبىر', + 'ئۆكتەبىر', + 'نويابىر', + 'دېكابىر', + ], + shortWeekDays: ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], + }, }; export default locale; diff --git a/src/locale/uk_UA.ts b/src/locale/uk_UA.ts index 4185b2bde..3c2b4db79 100644 --- a/src/locale/uk_UA.ts +++ b/src/locale/uk_UA.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: 'Наступне десятиріччя', previousCentury: 'Попереднє століття', nextCentury: 'Наступне століття', + calendarFallback: { + months: [ + 'січень', + 'лютий', + 'березень', + 'квітень', + 'травень', + 'червень', + 'липень', + 'серпень', + 'вересень', + 'жовтень', + 'листопад', + 'грудень', + ], + shortMonths: [ + 'січ', + 'лют', + 'бер', + 'квіт', + 'трав', + 'черв', + 'лип', + 'серп', + 'вер', + 'жовт', + 'лист', + 'груд', + ], + shortWeekDays: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], + }, }; export default locale; diff --git a/src/locale/ur_PK.ts b/src/locale/ur_PK.ts index 5ba6fafea..ac74ae4a2 100644 --- a/src/locale/ur_PK.ts +++ b/src/locale/ur_PK.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'اگلی دہائی', previousCentury: 'پچھلی صدی', nextCentury: 'اگلی صدی', + calendarFallback: { + months: [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + shortMonths: [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + shortWeekDays: ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], + }, }; export default locale; diff --git a/src/locale/util.ts b/src/locale/util.ts new file mode 100644 index 000000000..d162690ac --- /dev/null +++ b/src/locale/util.ts @@ -0,0 +1,54 @@ +import type { GenerateConfig } from '../generate'; +import type { Locale } from '../interface'; +import { formatValue } from '../utils/dateUtil'; + +function getCalendarFallback(locale: Locale, generateConfig: GenerateConfig) { + return generateConfig.locale.isLocaleAvailable?.(locale.locale) === false + ? locale.calendarFallback + : undefined; +} + +export function getShortMonths(locale: Locale, generateConfig: GenerateConfig) { + return ( + locale.shortMonths ?? + getCalendarFallback(locale, generateConfig)?.shortMonths ?? + generateConfig.locale.getShortMonths?.(locale.locale) ?? + [] + ); +} + +export function getShortWeekDays( + locale: Locale, + generateConfig: GenerateConfig, +) { + return ( + locale.shortWeekDays ?? + getCalendarFallback(locale, generateConfig)?.shortWeekDays ?? + generateConfig.locale.getShortWeekDays?.(locale.locale) ?? + [] + ); +} + +export function getMonthText( + locale: Locale, + generateConfig: GenerateConfig, + value: DateType, +) { + const month = generateConfig.getMonth(value); + + if (locale.monthFormat) { + const fallback = getCalendarFallback(locale, generateConfig); + const months = + locale.monthFormat === 'MMMM' + ? fallback?.months + : locale.monthFormat === 'MMM' + ? fallback?.shortMonths + : undefined; + + return months + ? months[month] + : formatValue(value, { locale, generateConfig, format: locale.monthFormat }); + } + + return getShortMonths(locale, generateConfig)[month]; +} diff --git a/src/locale/uz_UZ.ts b/src/locale/uz_UZ.ts index 6cc34baf9..6ce7f9b4d 100644 --- a/src/locale/uz_UZ.ts +++ b/src/locale/uz_UZ.ts @@ -26,6 +26,37 @@ const locale: Locale = { nextDecade: "Keyingi o'n yil", previousCentury: "O'tgan asr", nextCentury: 'Keyingi asr', + calendarFallback: { + months: [ + 'Yanvar', + 'Fevral', + 'Mart', + 'Aprel', + 'May', + 'Iyun', + 'Iyul', + 'Avgust', + 'Sentabr', + 'Oktabr', + 'Noyabr', + 'Dekabr', + ], + shortMonths: [ + 'Yan', + 'Fev', + 'Mar', + 'Apr', + 'May', + 'Iyun', + 'Iyul', + 'Avg', + 'Sen', + 'Okt', + 'Noy', + 'Dek', + ], + shortWeekDays: ['Ya', 'Du', 'Se', 'Cho', 'Pa', 'Ju', 'Sha'], + }, }; export default locale; diff --git a/src/locale/vi_VN.ts b/src/locale/vi_VN.ts index 55a5ffc13..e133788ee 100644 --- a/src/locale/vi_VN.ts +++ b/src/locale/vi_VN.ts @@ -27,6 +27,37 @@ const locale: Locale = { nextDecade: 'Thập kỷ sau', previousCentury: 'Thế kỷ trước', nextCentury: 'Thế kỷ sau', + calendarFallback: { + months: [ + 'tháng 1', + 'tháng 2', + 'tháng 3', + 'tháng 4', + 'tháng 5', + 'tháng 6', + 'tháng 7', + 'tháng 8', + 'tháng 9', + 'tháng 10', + 'tháng 11', + 'tháng 12', + ], + shortMonths: [ + 'Th01', + 'Th02', + 'Th03', + 'Th04', + 'Th05', + 'Th06', + 'Th07', + 'Th08', + 'Th09', + 'Th10', + 'Th11', + 'Th12', + ], + shortWeekDays: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + }, }; export default locale; diff --git a/src/locale/zh_CN.ts b/src/locale/zh_CN.ts index d489be71d..8c81765d5 100644 --- a/src/locale/zh_CN.ts +++ b/src/locale/zh_CN.ts @@ -31,6 +31,37 @@ const locale: Locale = { yearFormat: 'YYYY年', cellDateFormat: 'D', monthBeforeYear: false, + calendarFallback: { + months: [ + '一月', + '二月', + '三月', + '四月', + '五月', + '六月', + '七月', + '八月', + '九月', + '十月', + '十一月', + '十二月', + ], + shortMonths: [ + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + '10月', + '11月', + '12月', + ], + shortWeekDays: ['日', '一', '二', '三', '四', '五', '六'], + }, }; export default locale; diff --git a/src/locale/zh_TW.ts b/src/locale/zh_TW.ts index 2aef5c28b..e092e45ec 100644 --- a/src/locale/zh_TW.ts +++ b/src/locale/zh_TW.ts @@ -32,6 +32,37 @@ const locale: Locale = { cellDateFormat: 'D', monthBeforeYear: false, + calendarFallback: { + months: [ + '一月', + '二月', + '三月', + '四月', + '五月', + '六月', + '七月', + '八月', + '九月', + '十月', + '十一月', + '十二月', + ], + shortMonths: [ + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + '10月', + '11月', + '12月', + ], + shortWeekDays: ['日', '一', '二', '三', '四', '五', '六'], + }, }; export default locale; diff --git a/tests/localeFallback.spec.tsx b/tests/localeFallback.spec.tsx new file mode 100644 index 000000000..8708881a5 --- /dev/null +++ b/tests/localeFallback.spec.tsx @@ -0,0 +1,175 @@ +import { cleanup, fireEvent, render } from '@testing-library/react'; +import dayjs from 'dayjs'; +import zhCNDayjsLocale from 'dayjs/locale/zh-cn'; +import 'dayjs/locale/fr'; +import updateLocale from 'dayjs/plugin/updateLocale'; +import React from 'react'; +import Picker, { PickerPanel } from '../src'; +import dateFnsGenerateConfig from '../src/generate/dateFns'; +import dayjsGenerateConfig from '../src/generate/dayjs'; +import type { Locale } from '../src/interface'; +import enUS from '../src/locale/en_US'; +import plPL from '../src/locale/pl_PL'; +import zhCN from '../src/locale/zh_CN'; + +dayjs.extend(updateLocale); + +const shortMonths = Array.from({ length: 12 }, (_, index) => `month-${index + 1}`); +const shortWeekDays = Array.from({ length: 7 }, (_, index) => `day-${index}`); + +function getTexts(selector: string) { + return Array.from(document.querySelectorAll(selector), (element) => element.textContent); +} + +function renderPanel(locale: Locale) { + return render( + , + ); +} + +describe('calendar locale fallback', () => { + // Simulate an application that has not imported the requested Day.js locale. + const registeredLocales = (dayjs as any).Ls; + let originalLocales: typeof registeredLocales; + let originalLocale: string; + + beforeEach(() => { + originalLocale = dayjs.locale(); + originalLocales = { ...registeredLocales }; + dayjs.locale('en'); + delete registeredLocales['zh-cn']; + delete registeredLocales.pl; + }); + + afterEach(() => { + cleanup(); + Object.assign(registeredLocales, originalLocales); + dayjs.locale(originalLocale); + }); + + it('localizes the popup and month selection without loading the Day.js locale', () => { + render( + , + ); + + expect(document.querySelector('.rc-picker-year-btn').textContent).toBe('2026年'); + expect(document.querySelector('.rc-picker-now-btn').textContent).toBe('今天'); + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('8月'); + expect(getTexts('thead th')).toEqual(['日', '一', '二', '三', '四', '五', '六']); + + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')).toEqual([ + '1月', + '2月', + '3月', + '4月', + '5月', + '6月', + '7月', + '8月', + '9月', + '10月', + '11月', + '12月', + ]); + expect(dayjs.locale()).toBe('en'); + }); + + it.each([ + ['MMM', 'sie'], + ['MMMM', 'sierpień'], + ])('preserves %s month labels when the language is missing', (monthFormat, month) => { + renderPanel({ ...plPL, monthFormat }); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe(month); + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')[7]).toBe(month); + }); + + it('preserves explicit month and weekday labels', () => { + renderPanel({ ...zhCN, shortMonths, shortWeekDays }); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('month-8'); + expect(getTexts('thead th')).toEqual(shortWeekDays); + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')).toEqual(shortMonths); + }); + + it('preserves loaded and customized Day.js locale data', () => { + dayjs.locale({ ...zhCNDayjsLocale }, undefined, true); + dayjs.updateLocale('zh-cn', { monthsShort: shortMonths, weekdaysMin: shortWeekDays }); + renderPanel(zhCN); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('month-8'); + expect(getTexts('thead th')).toEqual([...shortWeekDays.slice(1), shortWeekDays[0]]); + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')).toEqual(shortMonths); + expect(dayjs.locale()).toBe('en'); + }); + + it('uses the requested language when another global language is loaded', () => { + dayjs.locale('fr'); + renderPanel(zhCN); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('8月'); + expect(getTexts('thead th')).toEqual(['一', '二', '三', '四', '五', '六', '日']); + expect(dayjs.locale()).toBe('fr'); + }); + + it('preserves Day.js regional fallback to a loaded base language', () => { + expect(dayjsGenerateConfig.locale.isLocaleAvailable('fr-XX')).toBe(true); + expect(dayjs.locale()).toBe('en'); + + renderPanel({ + ...enUS, + locale: 'fr-XX', + calendarFallback: { shortMonths, shortWeekDays }, + }); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('août'); + expect(getTexts('thead th')).toEqual(['lu', 'ma', 'me', 'je', 've', 'sa', 'di']); + }); + + it('preserves custom month formats', () => { + renderPanel({ ...zhCN, monthFormat: 'YYYY 年 M 月' }); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('2026 年 8 月'); + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')[7]).toBe('2026 年 8 月'); + }); + + it('keeps other date adapters responsible for their locale data', () => { + render( + , + ); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('Aug'); + expect(getTexts('thead th')).toEqual(['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']); + fireEvent.click(document.querySelector('.rc-picker-month-btn')); + expect(getTexts('.rc-picker-month-panel .rc-picker-cell-inner')[7]).toBe('Aug'); + }); + + it('keeps the default English labels', () => { + renderPanel(enUS); + + expect(document.querySelector('.rc-picker-month-btn').textContent).toBe('Aug'); + expect(getTexts('thead th')).toEqual(['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']); + }); +}); From 20f22a589541b6bfd52809091b93fc80b5fa92eb Mon Sep 17 00:00:00 2001 From: afc163 Date: Mon, 7 Sep 2026 10:37:06 +0800 Subject: [PATCH 2/2] chore: preserve formatting outside locale fallback changes --- src/interface.tsx | 8 ++++++- src/locale/te_IN.ts | 52 ++++++++++++++++++++++----------------------- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/interface.tsx b/src/interface.tsx index f5bae74aa..1dfb41dfa 100644 --- a/src/interface.tsx +++ b/src/interface.tsx @@ -323,7 +323,13 @@ export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix'; export type PreviewValueType = 'hover'; export type PanelSemanticName = - 'root' | 'header' | 'body' | 'content' | 'item' | 'footer' | 'container'; + | 'root' + | 'header' + | 'body' + | 'content' + | 'item' + | 'footer' + | 'container'; export interface SharedPickerProps extends diff --git a/src/locale/te_IN.ts b/src/locale/te_IN.ts index 778bb2f89..73278185e 100644 --- a/src/locale/te_IN.ts +++ b/src/locale/te_IN.ts @@ -1,32 +1,32 @@ import { commonLocale } from './common'; import type { Locale } from '../interface'; -const locale: Locale = { - ...commonLocale, - locale: 'te_IN', - today: 'నేడు', - now: 'ఇప్పుడు', - backToToday: 'తిరిగి నేటికి', - ok: 'సరే', - clear: 'స్పష్టమైన', - week: 'వారం', - month: 'నెల', - year: 'సంవత్సరం', - timeSelect: 'సమయం ఎంపిక', - dateSelect: 'తేదీ ఎంపిక', - weekSelect: 'వారం ఎంపిక', - monthSelect: 'నెల ఎంపిక', - yearSelect: 'సంవత్సరం ఎంపిక', - decadeSelect: 'దశాబ్దం ఎంపిక', +const locale: Locale={ + ...commonLocale, + locale: 'te_IN', + today:'నేడు', + now:'ఇప్పుడు', + backToToday:'తిరిగి నేటికి', + ok:'సరే', + clear:'స్పష్టమైన', + week:'వారం', + month:'నెల', + year:'సంవత్సరం', + timeSelect:'సమయం ఎంపిక', + dateSelect:'తేదీ ఎంపిక', + weekSelect:'వారం ఎంపిక', + monthSelect:'నెల ఎంపిక', + yearSelect:'సంవత్సరం ఎంపిక', + decadeSelect:'దశాబ్దం ఎంపిక', - previousMonth: 'మునుపటి నెల', - nextMonth: 'వచ్చే నెల', - previousYear: 'మునుపటి సంవత్సరం', - nextYear: 'తదుపరి సంవత్సరం', - previousDecade: 'మునుపటి దశాబ్దం', - nextDecade: 'తదుపరి దశాబ్దం', - previousCentury: 'మునుపటి శతాబ్దం', - nextCentury: 'తదుపరి శతాబ్దం', + previousMonth:'మునుపటి నెల', + nextMonth:'వచ్చే నెల', + previousYear:'మునుపటి సంవత్సరం', + nextYear:'తదుపరి సంవత్సరం', + previousDecade:'మునుపటి దశాబ్దం', + nextDecade:'తదుపరి దశాబ్దం', + previousCentury:'మునుపటి శతాబ్దం', + nextCentury:'తదుపరి శతాబ్దం', calendarFallback: { months: [ 'జనవరి', @@ -59,4 +59,4 @@ const locale: Locale = { shortWeekDays: ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'], }, }; -export default locale; +export default locale; \ No newline at end of file