diff --git a/src/components/App/App.js b/src/components/App/App.js index 589ff0a0..ff67870d 100644 --- a/src/components/App/App.js +++ b/src/components/App/App.js @@ -1,4 +1,5 @@ import React, { useEffect, useContext, Suspense } from 'react'; +import { useTranslation } from 'react-i18next'; import AppContext from '../../context/AppContext'; import LeftSidebar from '../LeftSidebar/LeftSidebar'; @@ -7,14 +8,16 @@ import RightSidebar from '../RightSidebar/RightSidebar'; import templates from '../../templates'; const App = () => { + const { i18n } = useTranslation(); const context = useContext(AppContext); const { state, dispatch } = context; - const { theme } = state; + const { theme, settings } = state; useEffect(() => { + i18n.changeLanguage(settings.language); const storedState = JSON.parse(localStorage.getItem('state')); dispatch({ type: 'import_data', payload: storedState }); - }, [dispatch]); + }, [dispatch, i18n, settings.language]); return ( diff --git a/src/components/LeftSidebar/LeftSidebar.js b/src/components/LeftSidebar/LeftSidebar.js index d06c3bae..d2b29bfe 100644 --- a/src/components/LeftSidebar/LeftSidebar.js +++ b/src/components/LeftSidebar/LeftSidebar.js @@ -19,18 +19,18 @@ const LeftSidebar = () => { const { data } = state; const tabs = [ - 'Profile', - 'Objective', - 'Work Experience', - 'Education', - 'Awards', - 'Certifications', - 'Skills', - 'Languages', - 'References', - 'Extras', + { key: 'profile', name: data.profile.heading }, + { key: 'objective', name: data.objective.heading }, + { key: 'work', name: data.work.heading }, + { key: 'education', name: data.education.heading }, + { key: 'awards', name: data.awards.heading }, + { key: 'certifications', name: data.certifications.heading }, + { key: 'skills', name: data.skills.heading }, + { key: 'languages', name: data.languages.heading }, + { key: 'references', name: data.references.heading }, + { key: 'extras', name: data.extras.heading }, ]; - const [currentTab, setCurrentTab] = useState('Profile'); + const [currentTab, setCurrentTab] = useState(tabs[0].key); const onChange = (key, value) => { dispatch({ type: 'on_input', @@ -45,25 +45,25 @@ const LeftSidebar = () => { const renderTabs = () => { switch (currentTab) { - case 'Profile': + case tabs[0].key: return ; - case 'Objective': + case tabs[1].key: return ; - case 'Work Experience': + case tabs[2].key: return ; - case 'Education': + case tabs[3].key: return ; - case 'Awards': + case tabs[4].key: return ; - case 'Certifications': + case tabs[5].key: return ; - case 'Skills': + case tabs[6].key: return ; - case 'Languages': + case tabs[7].key: return ; - case 'References': + case tabs[8].key: return ; - case 'Extras': + case tabs[9].key: return ; default: return null; diff --git a/src/components/RightSidebar/RightSidebar.js b/src/components/RightSidebar/RightSidebar.js index 04c88d10..8c2eebb5 100644 --- a/src/components/RightSidebar/RightSidebar.js +++ b/src/components/RightSidebar/RightSidebar.js @@ -18,14 +18,32 @@ const RightSidebar = () => { const { data, theme, settings } = state; const tabs = [ - t('templates.title'), - t('colors.title'), - t('fonts.title'), - t('actions.title'), - t('settings.title'), - t('about.title'), + { + key: 'templates', + name: t('templates.title'), + }, + { + key: 'colors', + name: t('colors.title'), + }, + { + key: 'fonts', + name: t('fonts.title'), + }, + { + key: 'actions', + name: t('actions.title'), + }, + { + key: 'settings', + name: t('settings.title'), + }, + { + key: 'about', + name: t('about.title'), + }, ]; - const [currentTab, setCurrentTab] = useState(t('settings.title')); + const [currentTab, setCurrentTab] = useState(tabs[0].key); const onChange = (key, value) => { dispatch({ @@ -41,17 +59,17 @@ const RightSidebar = () => { const renderTabs = () => { switch (currentTab) { - case t('templates.title'): + case tabs[0].key: return ; - case t('colors.title'): + case tabs[1].key: return ; - case t('fonts.title'): + case tabs[2].key: return ; - case t('actions.title'): + case tabs[3].key: return ; - case t('settings.title'): + case tabs[4].key: return ; - case t('about.title'): + case tabs[5].key: return ; default: return null; diff --git a/src/components/RightSidebar/tabs/Settings.js b/src/components/RightSidebar/tabs/Settings.js index a4b0264a..0f3ec8f9 100644 --- a/src/components/RightSidebar/tabs/Settings.js +++ b/src/components/RightSidebar/tabs/Settings.js @@ -5,19 +5,14 @@ import { languages } from '../../../i18n'; import Dropdown from '../../../shared/Dropdown'; const SettingsTab = ({ settings, onChange }) => { - const { t, i18n } = useTranslation('rightSidebar'); - - const onChangeLanguage = code => { - i18n.changeLanguage(code); - onChange('settings.language', code); - }; + const { t } = useTranslation('rightSidebar'); return (
onChange('settings.language', x)} options={languages} optionItem={x => (