@@ -23,16 +23,15 @@ import {
2323 setSeconds ,
2424 setYear ,
2525 startOfWeek ,
26+ type Locale ,
2627} from 'date-fns' ;
27- import * as Locale from 'date-fns/locale' ;
28+ import * as locales from 'date-fns/locale' ;
2829import type { GenerateConfig } from '.' ;
2930
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+ ) ;
3635} ;
3736
3837const localeParse = ( format : string ) => {
@@ -76,21 +75,21 @@ const generateConfig: GenerateConfig<Date> = {
7675
7776 locale : {
7877 getWeekFirstDay : ( locale ) => {
79- const clone = Locale [ dealLocal ( locale ) ] ;
78+ const clone = getLocale ( locale ) ;
8079 return clone . options . weekStartsOn ;
8180 } ,
8281 getWeekFirstDate : ( locale , date ) => {
83- return startOfWeek ( date , { locale : Locale [ dealLocal ( locale ) ] } ) ;
82+ return startOfWeek ( date , { locale : getLocale ( locale ) } ) ;
8483 } ,
8584 getWeek : ( locale , date ) => {
86- return getWeek ( date , { locale : Locale [ dealLocal ( locale ) ] } ) ;
85+ return getWeek ( date , { locale : getLocale ( locale ) } ) ;
8786 } ,
8887 getShortWeekDays : ( locale ) => {
89- const clone = Locale [ dealLocal ( locale ) ] ;
88+ const clone = getLocale ( locale ) ;
9089 return Array . from ( { length : 7 } ) . map ( ( _ , i ) => clone . localize . day ( i , { width : 'short' } ) ) ;
9190 } ,
9291 getShortMonths : ( locale ) => {
93- const clone = Locale [ dealLocal ( locale ) ] ;
92+ const clone = getLocale ( locale ) ;
9493 return Array . from ( { length : 12 } ) . map ( ( _ , i ) =>
9594 clone . localize . month ( i , { width : 'abbreviated' } ) ,
9695 ) ;
@@ -100,15 +99,15 @@ const generateConfig: GenerateConfig<Date> = {
10099 return null ;
101100 }
102101 return formatDate ( date , localeParse ( format ) , {
103- locale : Locale [ dealLocal ( locale ) ] ,
102+ locale : getLocale ( locale ) ,
104103 } ) ;
105104 } ,
106105 parse : ( locale , text , formats ) => {
107106 for ( let i = 0 ; i < formats . length ; i += 1 ) {
108107 const format = localeParse ( formats [ i ] ) ;
109108 const formatText = text ;
110109 const date = parseDate ( formatText , format , new Date ( ) , {
111- locale : Locale [ dealLocal ( locale ) ] ,
110+ locale : getLocale ( locale ) ,
112111 } ) ;
113112 if ( isValid ( date ) ) {
114113 return date ;
0 commit comments