File tree Expand file tree Collapse file tree 3 files changed +25
-8
lines changed
modules/settings/components/Language Expand file tree Collapse file tree 3 files changed +25
-8
lines changed Original file line number Diff line number Diff line change 1- import i18next from 'i18next' ;
21import { useState } from 'react' ;
2+ import { useTranslation } from 'react-i18next' ;
3+ import { useSearchParams } from 'react-router-dom' ;
34import { supportedLanguages } from 'src/constants/constants' ;
45
56const useSwitchLanguage = ( defaultLanguage = 'en' ) => {
6- const [ selectedLanguage , setSelectedLanguage ] = useState ( ( ) => {
7- return localStorage . getItem ( 'i18nextLng' ) || defaultLanguage ;
8- } ) ;
7+ const { i18n } = useTranslation ( ) ;
8+ const [ selectedLanguage , setSelectedLanguage ] = useState ( i18n . language || defaultLanguage ) ;
9+ const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
10+ const queryLang = searchParams . get ( 'lang' ) ;
911
1012 const switchLanguage = language => {
1113 if ( supportedLanguages . map ( lang => lang . value ) . includes ( language ) ) {
1214 setSelectedLanguage ( language ) ;
13- i18next . changeLanguage ( language ) ;
15+ i18n . changeLanguage ( language ) ;
16+ localStorage . setItem ( 'lang' , language ) ;
17+ if ( queryLang ) {
18+ searchParams . set ( 'lang' , language ) ;
19+ setSearchParams ( searchParams ) ;
20+ }
1421 window . location . reload ( ) ;
1522 } else {
1623 console . warn ( `Language '${ language } ' is not supported.` ) ;
Original file line number Diff line number Diff line change @@ -22,12 +22,21 @@ const resources = {
2222 } ,
2323} ;
2424
25+ const savedLang = localStorage . getItem ( 'lang' ) ;
26+ const queryLang = new URLSearchParams ( window . location . search ) . get ( 'lang' ) ;
27+ const browserLang = navigator . language . split ( '-' ) [ 0 ] ;
28+ if ( queryLang ) {
29+ localStorage . setItem ( 'lang' , queryLang ) ;
30+ }
31+
32+ const language = queryLang || savedLang || browserLang || 'en' ;
33+
2534i18next
2635 . use ( detector )
2736 . use ( initReactI18next )
2837 . init ( {
2938 resources,
30- lng : localStorage . getItem ( 'i18nextLng' ) || navigator . language || 'en' ,
39+ lng : language ,
3140 fallbackLng : 'en' ,
3241 interpolation : {
3342 escapeValue : false ,
Original file line number Diff line number Diff line change 1- import i18next from 'i18next' ;
21import { useState } from 'react' ;
2+ import { useTranslation } from 'react-i18next' ;
33import { supportedLanguages } from 'src/constants/constants' ;
44import useSwitchLanguage from 'src/core/hooks/useSwitchLanguage' ;
55
66export const useLanguage = ( ) => {
7+ const { i18n } = useTranslation ( ) ;
78 const { switchLanguage, selectedLanguage : initialLanguage } = useSwitchLanguage ( ) ;
89 const getLanguageOption = lang => {
910 const languageMap = supportedLanguages . reduce ( ( map , { value, label } ) => {
@@ -22,7 +23,7 @@ export const useLanguage = () => {
2223 // Reset the selected language to the last saved state
2324 const onCancel = ( ) => {
2425 setUnsavedValue ( unsavedValue ) ;
25- i18next . changeLanguage ( unsavedValue . value ) ;
26+ i18n . changeLanguage ( unsavedValue . value ) ;
2627 } ;
2728
2829 return { onSave, onCancel, unsavedValue, setUnsavedValue } ;
You can’t perform that action at this time.
0 commit comments