diff --git a/frontend/public/flags/UK.png b/frontend/public/flags/en.png similarity index 100% rename from frontend/public/flags/UK.png rename to frontend/public/flags/en.png diff --git a/frontend/public/flags/ES.png b/frontend/public/flags/es.png similarity index 100% rename from frontend/public/flags/ES.png rename to frontend/public/flags/es.png diff --git a/frontend/public/flags/FR.png b/frontend/public/flags/fr.png similarity index 100% rename from frontend/public/flags/FR.png rename to frontend/public/flags/fr.png diff --git a/frontend/public/flags/IT.png b/frontend/public/flags/it.png similarity index 100% rename from frontend/public/flags/IT.png rename to frontend/public/flags/it.png diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 7b75bbcbc7..a956d29825 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -11,6 +11,7 @@ import FrontDesk from "./FrontDesk"; import { BrowserRouter, useLocation, useRoutes } from "react-router-dom"; import LocaleContext from "./IntlProvider"; import FooterVisibilityContext from "./FooterVisibilityContext"; +import Cookies from "js-cookie"; function App() { const messageMap = { @@ -19,7 +20,8 @@ function App() { fr: messagesFr, it: messagesIt, }; - const [locale, setLocale] = useState("en"); + const initialLocale = Cookies.get("wildbookLangCode") || "en"; + const [locale, setLocale] = useState(initialLocale); const [visible, setVisible] = useState(true); const containerStyle = { maxWidth: "1440px", @@ -29,6 +31,7 @@ function App() { const handleLocaleChange = (newLocale) => { setLocale(newLocale); + Cookies.set("wildbookLangCode", newLocale); }; return ( diff --git a/frontend/src/components/navBar/MultiLanguageDropdown.jsx b/frontend/src/components/navBar/MultiLanguageDropdown.jsx index 94dc3b9394..4de193ad92 100644 --- a/frontend/src/components/navBar/MultiLanguageDropdown.jsx +++ b/frontend/src/components/navBar/MultiLanguageDropdown.jsx @@ -1,59 +1,54 @@ -import React, { useContext, useState }from 'react'; -import Dropdown from 'react-bootstrap/Dropdown'; -import DownIcon from '../svg/DownIcon'; -import LocaleContext from '../../IntlProvider'; -import { locales, localeMap, languageMap } from '../../constants/locales'; +import React, { useContext, useState } from "react"; +import Dropdown from "react-bootstrap/Dropdown"; +import DownIcon from "../svg/DownIcon"; +import LocaleContext from "../../IntlProvider"; +import { locales, localeMap, languageMap } from "../../constants/locales"; +import Cookies from "js-cookie"; export default function MultiLanguageDropdown() { + const { onLocaleChange } = useContext(LocaleContext); + const initialLocale = Cookies.get("wildbookLangCode") || "en"; + const [flag, setFlag] = useState(initialLocale); + return ( +
+ + + flag + + + + - const { onLocaleChange } = useContext(LocaleContext); - const [ flag, setFlag ] = useState('UK'); - return ( -
- - - - flag - - - - - { - locales.map((locale, index) => ( - { - onLocaleChange(locale); - setFlag(localeMap[locale]); - }}> - {locale} - {languageMap[locale]} - - )) - } - - -
- ) + + {locales.map((locale, index) => ( + { + onLocaleChange(locale); + setFlag(localeMap[locale]); + }} + > + {locale} + {languageMap[locale]} + + ))} + +
+
+ ); } - diff --git a/frontend/src/constants/locales.js b/frontend/src/constants/locales.js index 7555b615da..bb4023f19e 100644 --- a/frontend/src/constants/locales.js +++ b/frontend/src/constants/locales.js @@ -1,17 +1,16 @@ - -const locales = ['en', 'es', 'fr', 'it']; +const locales = ["en", "es", "fr", "it"]; const localeMap = { - en: 'UK', - es: 'ES', - fr: 'FR', - it: 'IT', + en: "en", + es: "es", + fr: "fr", + it: "it", }; const languageMap = { - en: 'English', - es: 'Español', - fr: 'Francés', - it: 'Italiano', + en: "English", + es: "Español", + fr: "Francés", + it: "Italiano", }; export { locales, localeMap, languageMap };