- {t('개인정보처리방침')}
+ {t('privacyPolicy')}
|
- {t('학부 연락처')}
+ {t('contactUs')}
|
- {t('찾아오시는 길')}
+ {t('directions')}
{t('address')}
diff --git a/components/layout/footer/constants.ts b/components/layout/footer/constants.ts
index 05eff295..2d2128dc 100644
--- a/components/layout/footer/constants.ts
+++ b/components/layout/footer/constants.ts
@@ -10,7 +10,7 @@ import {
reservationIntroduction,
SegmentNode,
seminar,
- tentenProject,
+ tentenProposal,
topConferenceList,
undergraduateGuide,
} from '@/constants/segmentNode';
@@ -19,11 +19,13 @@ import { getPath } from '@/utils/page';
export interface FooterLink {
href: string;
title: string;
+ engTitle: string;
}
const segmentNodeToLink = (node: SegmentNode): FooterLink => ({
href: getPath(node),
title: node.name,
+ engTitle: node.engName,
});
export const aboutLinks = [overview, faculty, undergraduateGuide, graduateGuide].map(
@@ -34,32 +36,30 @@ export const resourcesLinks = [notice, seminar, reservationIntroduction].map(seg
export const researchLinks = [
segmentNodeToLink(facultyRecruitment),
- {
- href: getPath(researchLabs),
- title: '연구실 목록',
- },
+ segmentNodeToLink(researchLabs),
segmentNodeToLink(topConferenceList),
- {
- href: getPath(tentenProject),
- title: '10-10 Project',
- },
+ segmentNodeToLink(tentenProposal),
];
export const moreLinks: FooterLink[] = [
{
title: '연합전공 인공지능(학사)',
+ engTitle: 'imai',
href: 'https://imai.snu.ac.kr',
},
{
title: '지능형컴퓨팅사업단',
+ engTitle: 'bkcse',
href: 'http://bkcse.snu.ac.kr',
},
{
title: '컴퓨터 연구소',
+ engTitle: 'ict',
href: 'http://ict.snu.ac.kr',
},
{
title: '해동학술정보실',
+ engTitle: 'haedong',
href: 'http://haedong.snu.ac.kr/',
},
];
diff --git a/components/layout/header/HeaderRight.tsx b/components/layout/header/HeaderRight.tsx
index 5e34d7c9..c970bd9b 100644
--- a/components/layout/header/HeaderRight.tsx
+++ b/components/layout/header/HeaderRight.tsx
@@ -46,7 +46,7 @@ const ProdLogin = () => {
const logout = useSessionStore((s) => s.logout);
const t = useTranslations('Header');
- const authText = t(state === 'logout' ? '로그인' : '로그아웃');
+ const authText = t(state === 'logout' ? 'login' : 'logout');
const onClickAuth = state === 'logout' ? login : logout;
return (
diff --git a/components/layout/navbar/MobileNav.tsx b/components/layout/navbar/MobileNav.tsx
index 0353a055..b6754601 100644
--- a/components/layout/navbar/MobileNav.tsx
+++ b/components/layout/navbar/MobileNav.tsx
@@ -26,12 +26,12 @@ export default function MobileNav() {
}
function MobileNavList() {
- const navbarState = useNavbarStore((s) => s.navbarState);
+ const navbarState = useNavbarStore((s) => s.navbarState);
const setNavbarState = useNavbarStore((s) => s.setNavbarState);
const [search, setSearch] = useState(false);
const cur = useCurrentSegmentNode();
- const t = useTranslations('Nav');
+ const t = useTranslations('Page');
const shouldHighlight = (child: SegmentNode) => {
return navbarState.type === 'hovered'
@@ -50,7 +50,7 @@ function MobileNavList() {
} cursor-pointer whitespace-nowrap leading-5`}
onClick={() => setNavbarState({ type: 'hovered', segmentNode: child })}
>
- {t(child.name)}
+ {t(`${child.engName}.title`)}
))}
diff --git a/components/layout/navbar/NavLabel.tsx b/components/layout/navbar/NavLabel.tsx
index 677fa313..5f1cf80e 100644
--- a/components/layout/navbar/NavLabel.tsx
+++ b/components/layout/navbar/NavLabel.tsx
@@ -1,11 +1,7 @@
-import { useTranslations } from 'next-intl';
-
// 예약 부분의 '301-417 (20석)'에서 괄호 부분이 작도록 처리합니다.
export default function NavLabel({ text }: { text: string }) {
- const t = useTranslations('Nav');
-
const idx = text.indexOf('(');
- if (idx === -1) return t(text);
+ if (idx === -1) return text;
return (
<>
diff --git a/components/layout/navbar/NavbarRoot.tsx b/components/layout/navbar/NavbarRoot.tsx
index cf0cf18d..792cbb19 100644
--- a/components/layout/navbar/NavbarRoot.tsx
+++ b/components/layout/navbar/NavbarRoot.tsx
@@ -14,7 +14,7 @@ export const NAVBAR_EXPANDED_WIDTH_REM = 11;
export default function NavbarRoot() {
const navbarState = useNavbarStore((s) => s.navbarState);
- const setNavbarState = useNavbarStore((s) => s.setNavbarState);
+ const setNavbarState = useNavbarStore((s) => s.setNavbarState);
return (
// 상하로 화면이 좁은 경우를 대비해 overflow-scroll
@@ -55,11 +55,11 @@ function DotList() {
}
function NavList() {
- const navbarState = useNavbarStore((s) => s.navbarState);
+ const navbarState = useNavbarStore((s) => s.navbarState);
const setNavbarState = useNavbarStore((s) => s.setNavbarState);
const cur = useCurrentSegmentNode();
- const t = useTranslations('Nav');
+ const t = useTranslations('Page');
const shouldHighlight = (child: SegmentNode) => {
return navbarState.type === 'hovered'
@@ -74,7 +74,7 @@ function NavList() {
setNavbarState({ type: 'hovered', segmentNode: child })}
/>
diff --git a/components/layout/navbar/NavtreeRow.tsx b/components/layout/navbar/NavtreeRow.tsx
index 32099bcf..9daf3995 100644
--- a/components/layout/navbar/NavtreeRow.tsx
+++ b/components/layout/navbar/NavtreeRow.tsx
@@ -1,5 +1,7 @@
'use client';
+import { useTranslations } from 'next-intl';
+
import { StraightNode } from '@/components/common/Nodes';
import NavLabel from '@/components/layout/navbar/NavLabel';
import { SegmentNode } from '@/constants/segmentNode';
@@ -20,6 +22,7 @@ export default function NavTreeLabel({
anchorClassName,
}: NavTreeRowProps) {
const href = getPath(segmentNode);
+ const t = useTranslations('Page');
if (highlight) {
return (
@@ -28,7 +31,7 @@ export default function NavTreeLabel({
href={href}
className={`mr-4 h-[1.0625rem] shrink-0 font-medium text-main-orange ${anchorClassName}`}
>
-
+
@@ -39,7 +42,7 @@ export default function NavTreeLabel({
href={href}
className={`mb-6 block h-[1.0625rem] font-medium leading-5 text-white hover:text-main-orange ${anchorClassName} ${containerClassName}`}
>
-