@@ -498,59 +498,105 @@ export class MatchInput {
498498 // The pattern cache (_weekdayPatterns / _monthPatterns) wraps each entry with
499499 // ^(?:entry)(?=\s|$) for the recognizer scan.
500500
501+ private primaryLocale ( ) : string {
502+ return this . locale . toLowerCase ( ) . split ( / [ - _ ] / ) [ 0 ] ;
503+ }
504+
501505 private weekdayVocab ( ) : string [ ] {
502- return [
503- // English
506+ const english = [
504507 'monday' , 'tuesday' , 'wednesday' , 'thursday' , 'friday' , 'saturday' , 'sunday' ,
505508 'mon' , 'tue' , 'wed' , 'thu' , 'fri' , 'sat' , 'sun' ,
506- // German
507- 'montag' , 'dienstag' , 'mittwoch' , 'donnerstag' , 'freitag' , 'samstag' , 'sonntag' ,
508- 'mit' , 'di' , 'do' , 'fr' , 'sa' , 'so' ,
509- // French
510- 'lun(?:di)?' , 'mar(?:di)?' , 'mer(?:credi)?' , 'jeu(?:di)?' , 'ven(?:dredi)?' , 'sam(?:edi)?' , 'dim(?:anche)?' ,
511- // Spanish
512- 'lunes?' , 'martes?' , 'mié(?:rcoles)?' , 'jueves?' , 'viernes?' , 'sáb(?:ado)?' , 'dom(?:ingo)?' ,
513- // Italian
514- 'lunedì' , 'martedì' , 'mercoledì' , 'giovedì' , 'venerdì' , 'sabato' , 'domenica' ,
515- // Portuguese
516- 'segunda-feira' , 'terça-feira' , 'quarta-feira' , 'quinta-feira' , 'sexta-feira' , 'sábado' , 'domingo' ,
517- // Dutch
518- 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' , 'zondag' ,
519- // Russian
520- 'понедельник' , 'вторник' , 'среда' , 'четверг' , 'пятница' , 'суббота' , 'воскресенье' ,
521- // Chinese (Pinyin)
522- 'xīngqī yī' , 'xīngqī èr' , 'xīngqī sān' , 'xīngqī sì' , 'xīngqī wǔ' , 'xīngqī liù' , 'xīngqī rì' ,
523- // Japanese (Romaji)
524- 'getsuyōbi' , 'kayōbi' , 'suiyōbi' , 'mokuyōbi' , "kin'yōbi" , 'doyōbi' , 'nichiyōbi' ,
525- // Arabic
526- 'الإثنين' , 'الثلاثاء' , 'الأربعاء' , 'الخميس' , 'الجمعة' , 'السبت' , 'الأحد' ,
527509 ] ;
510+ const byLocale : Record < string , string [ ] > = {
511+ 'de' : [
512+ 'montag' , 'dienstag' , 'mittwoch' , 'donnerstag' , 'freitag' , 'samstag' , 'sonntag' ,
513+ 'mon' , 'die' , 'mit' , 'don' , 'fre' , 'sam' , 'son' ,
514+ ] ,
515+ 'fr' : [
516+ 'lundi' , 'mardi' , 'mercredi' , 'jeudi' , 'vendredi' , 'samedi' , 'dimanche' ,
517+ 'lun' , 'mar' , 'mer' , 'jeu' , 'ven' , 'sam' , 'dim' ,
518+ ] ,
519+ 'es' : [
520+ 'lunes' , 'martes' , 'miércoles' , 'jueves' , 'viernes' , 'sábado' , 'domingo' ,
521+ 'lun' , 'mar' , 'mié' , 'jue' , 'vie' , 'sáb' , 'dom' ,
522+ ] ,
523+ 'it' : [
524+ 'lunedì' , 'martedì' , 'mercoledì' , 'giovedì' , 'venerdì' , 'sabato' , 'domenica' ,
525+ 'lun' , 'mar' , 'mer' , 'gio' , 'ven' , 'sab' , 'dom' ,
526+ ] ,
527+ 'pt' : [
528+ 'segunda-feira' , 'terça-feira' , 'quarta-feira' , 'quinta-feira' , 'sexta-feira' , 'sábado' , 'domingo' ,
529+ 'seg' , 'ter' , 'qua' , 'qui' , 'sex' , 'sáb' , 'dom' ,
530+ ] ,
531+ 'nl' : [
532+ 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' , 'zondag' ,
533+ 'maa' , 'din' , 'woe' , 'don' , 'vri' , 'zat' , 'zon' ,
534+ ] ,
535+ 'ru' : [
536+ 'понедельник' , 'вторник' , 'среда' , 'четверг' , 'пятница' , 'суббота' , 'воскресенье' ,
537+ 'пон' , 'вто' , 'сре' , 'чет' , 'пят' , 'суб' , 'вос' ,
538+ ] ,
539+ 'zh' : [
540+ 'xīngqī yī' , 'xīngqī èr' , 'xīngqī sān' , 'xīngqī sì' , 'xīngqī wǔ' , 'xīngqī liù' , 'xīngqī rì' ,
541+ ] ,
542+ 'ja' : [
543+ 'getsuyōbi' , 'kayōbi' , 'suiyōbi' , 'mokuyōbi' , "kin'yōbi" , 'doyōbi' , 'nichiyōbi' ,
544+ ] ,
545+ 'ar' : [
546+ 'الإثنين' , 'الثلاثاء' , 'الأربعاء' , 'الخميس' , 'الجمعة' , 'السبت' , 'الأحد' ,
547+ ] ,
548+ } ;
549+ return [ ...english , ...( byLocale [ this . primaryLocale ( ) ] ?? [ ] ) ] ;
528550 }
529551
530552 private monthVocab ( ) : string [ ] {
531- return [
532- // English
533- 'Jan(?:uary)?' , 'Feb(?:ruary)?' , 'Mar(?:ch)?' , 'Apr(?:il)?' , 'May' , 'June?' , 'July?' , 'Aug(?:ust)?' , 'Sep(?:tember)?' , 'Oct(?:ober)?' , 'Nov(?:ember)?' , 'Dec(?:ember)?' ,
534- // German
535- 'Januar' , 'Februar' , 'März' , 'April' , 'Mai' , 'Juni' , 'Juli' , 'Okt(?:ober)?' , 'Dez(?:ember)?' ,
536- // French
537- 'Janv(?:ier)?' , 'Fév(?:rier)?' , 'Mars' , 'Avr(?:il)?' , 'Juin' , 'Juil(?:let)?' , 'Août' , 'Sept(?:embre)?' , 'Oct(?:obre)?' , 'Nov(?:embre)?' , 'Déc(?:embre)?' ,
538- // Spanish
539- 'Ene(?:ro)?' , 'Feb(?:rero)?' , 'Mar(?:zo)?' , 'Abr(?:il)?' , 'May(?:o)?' , 'Jun(?:io)?' , 'Jul(?:io)?' , 'Ago(?:sto)?' , 'Sep(?:tiembre)?' , 'Oct(?:ubre)?' , 'Nov(?:iembre)?' , 'Dic(?:iembre)?' ,
540- // Italian
541- 'Gen(?:naio)?' , 'Feb(?:braio)?' , 'Mag(?:gio)?' , 'Giu(?:gno)?' , 'Lug(?:lio)?' , 'Set(?:tembre)?' , 'Ott(?:obre)?' , 'Dic(?:embre)?' ,
542- // Portuguese
543- 'Jan(?:eiro)?' , 'Fev(?:ereiro)?' , 'Mar(?:ço)?' , 'Mai(?:o)?' , 'Jun(?:ho)?' , 'Jul(?:ho)?' , 'Set(?:embro)?' , 'Out(?:ubro)?' , 'Nov(?:embro)?' , 'Dez(?:embro)?' ,
544- // Dutch
545- 'Jan(?:uari)?' , 'Feb(?:ruari)?' , 'Mrt' , 'Mei' , 'Jun(?:i)?' , 'Jul(?:i)?' , 'Aug(?:ustus)?' ,
546- // Russian
547- 'Янв(?:арь)?' , 'Фев(?:раль)?' , 'Мар(?:т)?' , 'Апр(?:ель)?' , 'Май' , 'Июн(?:ь)?' , 'Июл(?:ь)?' , 'Авг(?:уст)?' , 'Сен(?:тябрь)?' , 'Окт(?:ябрь)?' , 'Ноя(?:брь)?' , 'Дек(?:абрь)?' ,
548- // Chinese (Pinyin)
549- 'yīyuè' , 'èryuè' , 'sānyuè' , 'sìyuè' , 'wǔyuè' , 'liùyuè' , 'qīyuè' , 'bāyuè' , 'jiǔyuè' , 'shíyuè' , 'shíyīyuè' , "shí'èryuè" ,
550- // Japanese (Romaji)
551- 'ichigatsu' , 'nigatsu' , 'sangatsu' , 'shigatsu' , 'gogatsu' , 'rokugatsu' , 'shichigatsu' , 'hachigatsu' , 'kugatsu' , 'jugatsu' , 'juichigatsu' , 'juunigatsu' ,
552- // Arabic
553- 'يناير' , 'فبراير' , 'مارس' , 'أبريل' , 'مايو' , 'يونيو' , 'يوليو' , 'أغسطس' , 'سبتمبر' , 'أكتوبر' , 'نوفمبر' , 'ديسمبر' ,
553+ const english = [
554+ 'Jan(?:uary)?' , 'Feb(?:ruary)?' , 'Mar(?:ch)?' , 'Apr(?:il)?' , 'May' , 'June?' , 'July?' ,
555+ 'Aug(?:ust)?' , 'Sep(?:tember)?' , 'Oct(?:ober)?' , 'Nov(?:ember)?' , 'Dec(?:ember)?' ,
554556 ] ;
557+ const byLocale : Record < string , string [ ] > = {
558+ 'de' : [
559+ 'Januar' , 'Februar' , 'März' , 'April' , 'Mai' , 'Juni' , 'Juli' ,
560+ 'Okt(?:ober)?' , 'Dez(?:ember)?' ,
561+ ] ,
562+ 'fr' : [
563+ 'Janv(?:ier)?' , 'Fév(?:rier)?' , 'Mars' , 'Avr(?:il)?' , 'Juin' , 'Juil(?:let)?' ,
564+ 'Août' , 'Sept(?:embre)?' , 'Oct(?:obre)?' , 'Nov(?:embre)?' , 'Déc(?:embre)?' ,
565+ ] ,
566+ 'es' : [
567+ 'Ene(?:ro)?' , 'Feb(?:rero)?' , 'Mar(?:zo)?' , 'Abr(?:il)?' , 'May(?:o)?' ,
568+ 'Jun(?:io)?' , 'Jul(?:io)?' , 'Ago(?:sto)?' , 'Sep(?:tiembre)?' ,
569+ 'Oct(?:ubre)?' , 'Nov(?:iembre)?' , 'Dic(?:iembre)?' ,
570+ ] ,
571+ 'it' : [
572+ 'Gen(?:naio)?' , 'Feb(?:braio)?' , 'Mag(?:gio)?' , 'Giu(?:gno)?' , 'Lug(?:lio)?' ,
573+ 'Set(?:tembre)?' , 'Ott(?:obre)?' , 'Dic(?:embre)?' ,
574+ ] ,
575+ 'pt' : [
576+ 'Jan(?:eiro)?' , 'Fev(?:ereiro)?' , 'Mar(?:ço)?' , 'Mai(?:o)?' , 'Jun(?:ho)?' ,
577+ 'Jul(?:ho)?' , 'Set(?:embro)?' , 'Out(?:ubro)?' , 'Nov(?:embro)?' , 'Dez(?:embro)?' ,
578+ ] ,
579+ 'nl' : [
580+ 'Jan(?:uari)?' , 'Feb(?:ruari)?' , 'Mrt' , 'Mei' , 'Jun(?:i)?' , 'Jul(?:i)?' , 'Aug(?:ustus)?' ,
581+ ] ,
582+ 'ru' : [
583+ 'Янв(?:арь)?' , 'Фев(?:раль)?' , 'Мар(?:т)?' , 'Апр(?:ель)?' , 'Май' ,
584+ 'Июн(?:ь)?' , 'Июл(?:ь)?' , 'Авг(?:уст)?' , 'Сен(?:тябрь)?' ,
585+ 'Окт(?:ябрь)?' , 'Ноя(?:брь)?' , 'Дек(?:абрь)?' ,
586+ ] ,
587+ 'zh' : [
588+ 'yīyuè' , 'èryuè' , 'sānyuè' , 'sìyuè' , 'wǔyuè' , 'liùyuè' ,
589+ 'qīyuè' , 'bāyuè' , 'jiǔyuè' , 'shíyuè' , 'shíyīyuè' , "shí'èryuè" ,
590+ ] ,
591+ 'ja' : [
592+ 'ichigatsu' , 'nigatsu' , 'sangatsu' , 'shigatsu' , 'gogatsu' , 'rokugatsu' ,
593+ 'shichigatsu' , 'hachigatsu' , 'kugatsu' , 'jugatsu' , 'juichigatsu' , 'juunigatsu' ,
594+ ] ,
595+ 'ar' : [
596+ 'يناير' , 'فبراير' , 'مارس' , 'أبريل' , 'مايو' , 'يونيو' , 'يوليو' ,
597+ 'أغسطس' , 'سبتمبر' , 'أكتوبر' , 'نوفمبر' , 'ديسمبر' ,
598+ ] ,
599+ } ;
600+ return [ ...english , ...( byLocale [ this . primaryLocale ( ) ] ?? [ ] ) ] ;
555601 }
556602}
0 commit comments