@@ -23,16 +23,15 @@ import {
23
23
setSeconds ,
24
24
setYear ,
25
25
startOfWeek ,
26
+ type Locale ,
26
27
} from 'date-fns' ;
27
- import * as Locale from 'date-fns/locale' ;
28
+ import * as locales from 'date-fns/locale' ;
28
29
import type { GenerateConfig } from '.' ;
29
30
30
- const localeMap : Record < string , string > = {
31
- ko_KR : 'ko'
32
- } ;
33
-
34
- const dealLocal = ( str : string ) => {
35
- return localeMap [ str ] || str . replace ( / _ / g, '' ) ;
31
+ const getLocale = ( locale : string ) : Locale => {
32
+ return (
33
+ locales [ locale ] || locales [ locale . replace ( / _ / g, '' ) ] || locales [ locale . replace ( / _ .* $ / g, '' ) ]
34
+ ) ;
36
35
} ;
37
36
38
37
const localeParse = ( format : string ) => {
@@ -76,21 +75,21 @@ const generateConfig: GenerateConfig<Date> = {
76
75
77
76
locale : {
78
77
getWeekFirstDay : ( locale ) => {
79
- const clone = Locale [ dealLocal ( locale ) ] ;
78
+ const clone = getLocale ( locale ) ;
80
79
return clone . options . weekStartsOn ;
81
80
} ,
82
81
getWeekFirstDate : ( locale , date ) => {
83
- return startOfWeek ( date , { locale : Locale [ dealLocal ( locale ) ] } ) ;
82
+ return startOfWeek ( date , { locale : getLocale ( locale ) } ) ;
84
83
} ,
85
84
getWeek : ( locale , date ) => {
86
- return getWeek ( date , { locale : Locale [ dealLocal ( locale ) ] } ) ;
85
+ return getWeek ( date , { locale : getLocale ( locale ) } ) ;
87
86
} ,
88
87
getShortWeekDays : ( locale ) => {
89
- const clone = Locale [ dealLocal ( locale ) ] ;
88
+ const clone = getLocale ( locale ) ;
90
89
return Array . from ( { length : 7 } ) . map ( ( _ , i ) => clone . localize . day ( i , { width : 'short' } ) ) ;
91
90
} ,
92
91
getShortMonths : ( locale ) => {
93
- const clone = Locale [ dealLocal ( locale ) ] ;
92
+ const clone = getLocale ( locale ) ;
94
93
return Array . from ( { length : 12 } ) . map ( ( _ , i ) =>
95
94
clone . localize . month ( i , { width : 'abbreviated' } ) ,
96
95
) ;
@@ -100,15 +99,15 @@ const generateConfig: GenerateConfig<Date> = {
100
99
return null ;
101
100
}
102
101
return formatDate ( date , localeParse ( format ) , {
103
- locale : Locale [ dealLocal ( locale ) ] ,
102
+ locale : getLocale ( locale ) ,
104
103
} ) ;
105
104
} ,
106
105
parse : ( locale , text , formats ) => {
107
106
for ( let i = 0 ; i < formats . length ; i += 1 ) {
108
107
const format = localeParse ( formats [ i ] ) ;
109
108
const formatText = text ;
110
109
const date = parseDate ( formatText , format , new Date ( ) , {
111
- locale : Locale [ dealLocal ( locale ) ] ,
110
+ locale : getLocale ( locale ) ,
112
111
} ) ;
113
112
if ( isValid ( date ) ) {
114
113
return date ;
0 commit comments