11import { setDefaultOptions } from "date-fns" ;
22import flatpickr from "flatpickr" ;
3- import React , { useEffect , useState } from "react" ;
3+ import React , { ComponentProps , useEffect , useState } from "react" ;
44import { IntlProvider as ReactIntlProvider } from "react-intl" ;
55import useSettings from "../hooks/useSettings" ;
66
@@ -11,7 +11,6 @@ import { english as flatpickrEN } from "flatpickr/dist/l10n/default";
1111import { French as flatpickrFR } from "flatpickr/dist/l10n/fr.js" ;
1212import { Russian as flatpickrRU } from "flatpickr/dist/l10n/ru.js" ;
1313
14- // eslint-disable-next-line react-refresh/only-export-components
1514export const LANGUAGES = [ "en" , "de" , "ru" , "fr" ] as const ;
1615
1716type Language = ( typeof LANGUAGES ) [ number ] ;
@@ -30,11 +29,12 @@ const IntlProvider = ({ children }: PropTypes) => {
3029 locale = LANGUAGES . find ( ( lang ) => settings . language === lang ) ?? "en" ;
3130 }
3231
33- const [ messages , setMessages ] = useState ( messagesEN ) ;
32+ const [ messages , setMessages ] = useState < Partial < Record < Language , ComponentProps < typeof ReactIntlProvider > [ "messages" ] > > > ( { en : messagesEN } ) ;
3433
3534 useEffect ( ( ) => {
3635 ( async ( ) => {
37- setMessages ( ( await import ( `../lang/${ locale } .json` ) ) . default ) ;
36+ const messages = ( await import ( `../lang/${ locale } .json` ) ) . default ;
37+ setMessages ( ( prev ) => ( { ...prev , [ locale ] : messages } ) ) ;
3838
3939 setDefaultOptions ( {
4040 locale : ( await import ( "date-fns/locale" ) ) [ locale === "en" ? "enUS" : locale ] ,
@@ -62,7 +62,7 @@ const IntlProvider = ({ children }: PropTypes) => {
6262 } , [ locale ] ) ;
6363
6464 return (
65- < ReactIntlProvider locale = { locale } messages = { messages } >
65+ < ReactIntlProvider locale = { locale } messages = { messages [ locale ] ?? messagesEN } >
6666 { children }
6767 </ ReactIntlProvider >
6868 ) ;
0 commit comments