@@ -19,8 +19,42 @@ export default function Subscribe(props) {
1919 const [ email , setEmail ] = useState ( "" )
2020 const [ customMessage , setCustomMessage ] = useState ( "" )
2121 const [ emailValid , setEmailValid ] = useState ( false )
22+ const [ currentLang , setCurrentLang ] = useState ( props . lang || i18next . language || "en" )
2223
23- i18next . changeLanguage ( props . lang )
24+ useEffect ( ( ) => {
25+ const initLanguage = async ( ) => {
26+ if ( props . lang ) {
27+ // Wait for i18next to be initialized if needed
28+ if ( ! i18next . isInitialized ) {
29+ await new Promise ( ( resolve ) => {
30+ if ( i18next . isInitialized ) {
31+ resolve ( undefined )
32+ } else {
33+ const handler = ( ) => {
34+ i18next . off ( "initialized" , handler )
35+ resolve ( undefined )
36+ }
37+ i18next . on ( "initialized" , handler )
38+ }
39+ } )
40+ }
41+ // Change language and wait for it to complete
42+ await changeLanguage ( props . lang )
43+ setCurrentLang ( props . lang )
44+ }
45+ }
46+ initLanguage ( )
47+
48+ // Listen for language changes to trigger re-render
49+ const handleLanguageChanged = ( lng : string ) => {
50+ setCurrentLang ( lng )
51+ }
52+ i18next . on ( "languageChanged" , handleLanguageChanged )
53+
54+ return ( ) => {
55+ i18next . off ( "languageChanged" , handleLanguageChanged )
56+ }
57+ } , [ props . lang ] )
2458
2559 useEffect ( ( ) => {
2660 setCustomMessage ( "" )
@@ -43,17 +77,15 @@ export default function Subscribe(props) {
4377 }
4478
4579 return (
46- < div className = { clsx ( styles . container , "dark:bg-dark-highlight" ) } >
80+ < div className = { clsx ( styles . container , "dark:bg-dark-highlight" ) } data-lang = { currentLang } >
4781 < div className = { styles . subscribeBox } >
4882 < span className = "text-white dark:text-black bg-black dark:bg-white rounded-[50%]" >
4983 < SubscribeSvg > </ SubscribeSvg >
5084 </ span >
5185
5286 < div className = { styles . copyBox } >
53- < div className = { styles . subscribeTitle } > { t ( "landing.NewsletterCTA.title" ) } </ div >
54- < div className = { styles . subscribeText } >
55- { t ( "landing.NewsletterCTA.text" ) }
56- </ div >
87+ < div className = { styles . subscribeTitle } > { t ( "landing.NewsletterCTA.title" ) } </ div >
88+ < div className = { styles . subscribeText } > { t ( "landing.NewsletterCTA.text" ) } </ div >
5789 </ div >
5890 < MailchimpSubscribe
5991 url = { url }
@@ -65,7 +97,7 @@ export default function Subscribe(props) {
6597 onChange = { handleChangeEmail }
6698 onClick = { ( ) => handleSubmit ( subscribe ) }
6799 onEnter = { ( ) => handleSubmit ( subscribe ) }
68- placeholder = { t ( "landing.NewsletterCTA.placeholder" ) }
100+ placeholder = { t ( "landing.NewsletterCTA.placeholder" ) }
69101 end = { status === "success" }
70102 />
71103 { customMessage && < div className = { styles . errorMessage } > { customMessage } </ div > }
0 commit comments