From 831edcf0026e6247a660f03ddde9b91b1756b7ae Mon Sep 17 00:00:00 2001 From: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Date: Tue, 3 Jan 2023 14:27:21 +0530 Subject: [PATCH] feat(ui): support locale change option from UI (#9553) --- .../ui/src/components/nav-bar/NavBar.tsx | 28 +++++++++++++++++-- .../ui/src/utils/i18next/i18nextUtil.ts | 17 ++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/components/nav-bar/NavBar.tsx b/openmetadata-ui/src/main/resources/ui/src/components/nav-bar/NavBar.tsx index 54bea42674f..fceb8f17676 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/nav-bar/NavBar.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/nav-bar/NavBar.tsx @@ -11,7 +11,9 @@ * limitations under the License. */ -import { Badge, Dropdown, Image, Input, Menu, Space } from 'antd'; +import { Badge, Dropdown, Image, Input, Menu, Select, Space } from 'antd'; +import { CookieStorage } from 'cookie-storage'; +import i18next from 'i18next'; import { debounce, toString } from 'lodash'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -32,6 +34,10 @@ import { getEntityType, prepareFeedLink, } from '../../utils/FeedUtils'; +import { + languageSelectOptions, + SupportedLocales, +} from '../../utils/i18next/i18nextUtil'; import { inPageSearchOptions, isInPageSearchAllowed, @@ -50,6 +56,9 @@ import { WhatsNewModal } from '../Modals/WhatsNewModal'; import NotificationBox from '../NotificationBox/NotificationBox.component'; import { useWebSocketConnector } from '../web-scoket/web-scoket.provider'; import { NavBarProps } from './NavBar.interface'; + +const cookieStorage = new CookieStorage(); + const NavBar = ({ supportDropdown, profileDropdown, @@ -86,6 +95,10 @@ const NavBar = ({ [currentUser] ); + const [language, setLanguage] = useState( + cookieStorage.getItem('i18next') || SupportedLocales.English + ); + const { socket } = useWebSocketConnector(); const navStyle = (value: boolean) => { @@ -262,6 +275,11 @@ const NavBar = ({ } }, [profilePicture]); + const handleLanguageChange = (langCode: string) => { + setLanguage(langCode); + i18next.changeLanguage(langCode); + }; + return ( <>