added navlinks translation

This commit is contained in:
Kim, Jimin 2022-03-26 18:41:42 +09:00
parent 5c63935c23
commit 33e6e26c6f
4 changed files with 30 additions and 13 deletions

View file

@ -1,10 +1,12 @@
import { useContext } from "react"
import styled from "styled-components" import styled from "styled-components"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import { StyledLink } from "./Navbar"
import NavbarData from "../../data/NavbarData" import NavbarData from "../../data/NavbarData"
import theming from "../../styles/theming" import theming from "../../styles/theming"
import { globalContext } from "../../globalContext"
import { StyledLink } from "./Navbar"
const StyledNavLinks = styled.div` const StyledNavLinks = styled.div`
display: flex; display: flex;
@ -16,11 +18,15 @@ const StyledNavLinks = styled.div`
` `
const NavLinks = () => { const NavLinks = () => {
const { globalState } = useContext(globalContext)
return ( return (
<StyledNavLinks> <StyledNavLinks>
{NavbarData.map((item, index) => ( {NavbarData.map((item, index) => (
<Link key={index} to={item.path}> <Link key={index} to={item.path}>
<StyledLink>{item.title}</StyledLink> <StyledLink>
{globalState.locale == "en" ? item.title_en : item.title_kr}
</StyledLink>
</Link> </Link>
))} ))}
</StyledNavLinks> </StyledNavLinks>

View file

@ -8,7 +8,7 @@ import { faEllipsisV, faTimes } from "@fortawesome/free-solid-svg-icons"
import SubMenu from "./SubMenu" import SubMenu from "./SubMenu"
import NavbarData, { Item } from "../../data/NavbarData" import NavbarData from "../../data/NavbarData"
import theming from "../../styles/theming" import theming from "../../styles/theming"
const CommonSidebarToggleButtonStyle = css` const CommonSidebarToggleButtonStyle = css`
@ -111,7 +111,7 @@ const Sidebar = () => {
{/* sidebar items */} {/* sidebar items */}
{NavbarData.map((item: Item, index) => { {NavbarData.map((item, index) => {
return <SubMenu item={item} key={index} /> return <SubMenu item={item} key={index} />
})} })}
</SidebarWrap> </SidebarWrap>

View file

@ -2,12 +2,14 @@
* @file Submenu item for sidebar * @file Submenu item for sidebar
*/ */
import { useCallback, useState } from "react" import { useCallback, useContext, useState } from "react"
import { Link } from "react-router-dom" import { Link } from "react-router-dom"
import styled from "styled-components" import styled from "styled-components"
import { Item } from "../../data/NavbarData"
import theming from "../../styles/theming" import theming from "../../styles/theming"
import { globalContext } from "../../globalContext"
import type { Item } from "../../data/NavbarData"
const SidebarLink = styled(Link)` const SidebarLink = styled(Link)`
${theming.styles.navbarButtonStyle}; ${theming.styles.navbarButtonStyle};
@ -35,6 +37,7 @@ interface Props {
} }
const SubMenu = (props: Props) => { const SubMenu = (props: Props) => {
const { globalState } = useContext(globalContext)
const [isSubNavOpen, setSubNavOpen] = useState(false) const [isSubNavOpen, setSubNavOpen] = useState(false)
const handleSidebarLinkClick = useCallback(() => { const handleSidebarLinkClick = useCallback(() => {
setSubNavOpen((prev) => !prev) setSubNavOpen((prev) => !prev)
@ -45,7 +48,11 @@ const SubMenu = (props: Props) => {
<SidebarLink to={props.item.path} onClick={handleSidebarLinkClick}> <SidebarLink to={props.item.path} onClick={handleSidebarLinkClick}>
<div> <div>
{props.item.icon} {props.item.icon}
<SidebarLabel>{props.item.title}</SidebarLabel> <SidebarLabel>
{globalState.locale == "en"
? props.item.title_en
: props.item.title_kr}
</SidebarLabel>
</div> </div>
</SidebarLink> </SidebarLink>
</> </>

View file

@ -9,22 +9,26 @@ import {
export type Item = { export type Item = {
path: string path: string
icon: JSX.Element icon: JSX.Element
title: string title_en: string
title_kr: string
} }
const NavbarData: Array<Item> = [ const NavbarData: Item[] = [
{ {
title: "Home", title_en: "Home",
title_kr: "홈",
path: "/", path: "/",
icon: <FontAwesomeIcon icon={faHome} />, icon: <FontAwesomeIcon icon={faHome} />,
}, },
{ {
title: "About", title_en: "About",
title_kr: "About",
path: "/about", path: "/about",
icon: <FontAwesomeIcon icon={faIdCard} />, icon: <FontAwesomeIcon icon={faIdCard} />,
}, },
{ {
title: "Portfolio", title_en: "Portfolio",
title_kr: "포트폴리오",
path: "/portfolio", path: "/portfolio",
icon: <FontAwesomeIcon icon={faAddressBook} />, icon: <FontAwesomeIcon icon={faAddressBook} />,
}, },