113 lines
4.7 KiB
TypeScript
113 lines
4.7 KiB
TypeScript
import type { AppLocale } from "../locale";
|
|
import { DEFAULT_LOCALE } from "../locale";
|
|
|
|
// 대시보드/프로젝트 목록/전체 제출 내역 상단 GNB 및 헤더용 i18n 메시지
|
|
// - 로그인/회원가입과 동일하게 en(기본), ko 를 지원한다.
|
|
|
|
export type DashboardMessages = {
|
|
// 메인 대시보드 헤더 제목/설명
|
|
title: string;
|
|
description: string;
|
|
// 상단 GNB 탭 레이블
|
|
navDashboard: string;
|
|
navProjects: string;
|
|
navSubmissions: string;
|
|
navReports?: string;
|
|
// 헤더 오른쪽 액션 버튼/메뉴
|
|
themeToggleLabel: string;
|
|
menuLabel: string;
|
|
logoutLabel: string;
|
|
myPageLabel: string;
|
|
emailNotVerifiedBanner: string;
|
|
summaryTotalProjectsLabel: string;
|
|
summaryTotalSubmissionsLabel: string;
|
|
summaryTodaySubmissionsLabel: string;
|
|
summaryLast7DaysSubmissionsLabel: string;
|
|
chartTitle: string;
|
|
chartSubtitle: string;
|
|
chartEmptyLabel: string;
|
|
sectionProjectsTitle: string;
|
|
sectionProjectsEmpty: string;
|
|
projectTotalSubmissionsPrefix: string;
|
|
projectTotalSubmissionsSuffix: string;
|
|
projectLatestSubmissionPrefix: string;
|
|
projectLatestSubmissionEmpty: string;
|
|
projectViewSubmissionsLink: string;
|
|
projectOpenPublicPageLink: string;
|
|
errorUnauthorized: string;
|
|
errorGeneric: string;
|
|
loadingText: string;
|
|
};
|
|
|
|
const DASHBOARD_MESSAGES: Record<AppLocale, DashboardMessages> = {
|
|
en: {
|
|
title: "Dashboard",
|
|
description: "A quick overview of your projects and form submissions.",
|
|
navDashboard: "Dashboard",
|
|
navProjects: "Projects",
|
|
navSubmissions: "All submissions",
|
|
navReports: "Reports",
|
|
themeToggleLabel: "Toggle theme",
|
|
menuLabel: "Menu",
|
|
logoutLabel: "Log out",
|
|
myPageLabel: "My page",
|
|
emailNotVerifiedBanner: "Your email is not verified yet.",
|
|
summaryTotalProjectsLabel: "Projects",
|
|
summaryTotalSubmissionsLabel: "Total form submissions",
|
|
summaryTodaySubmissionsLabel: "Submissions today",
|
|
summaryLast7DaysSubmissionsLabel: "Submissions in last 7 days",
|
|
chartTitle: "Recent submissions (daily)",
|
|
chartSubtitle: "Only dates with recent activity are shown.",
|
|
chartEmptyLabel: "No daily submission data yet.",
|
|
sectionProjectsTitle: "Submissions by project",
|
|
sectionProjectsEmpty: "No projects created yet or no submissions have been received.",
|
|
projectTotalSubmissionsPrefix: "Total ",
|
|
projectTotalSubmissionsSuffix: " submissions",
|
|
projectLatestSubmissionPrefix: "Last submission:",
|
|
projectLatestSubmissionEmpty: "No submissions yet",
|
|
projectViewSubmissionsLink: "View form submissions",
|
|
projectOpenPublicPageLink: "Open public page",
|
|
errorUnauthorized: "You need to be signed in to view the dashboard. Please log in again.",
|
|
errorGeneric: "An error occurred while loading the dashboard. Please try again later.",
|
|
loadingText: "Loading dashboard data...",
|
|
},
|
|
ko: {
|
|
title: "대시보드",
|
|
description: "프로젝트와 폼 제출 현황을 한눈에 확인할 수 있는 요약 화면입니다.",
|
|
navDashboard: "대시보드",
|
|
navProjects: "프로젝트 목록",
|
|
navSubmissions: "전체 제출 내역",
|
|
navReports: "리포트",
|
|
themeToggleLabel: "테마 전환",
|
|
menuLabel: "메뉴",
|
|
logoutLabel: "로그아웃",
|
|
myPageLabel: "마이페이지",
|
|
emailNotVerifiedBanner: "이메일 인증이 아직 완료되지 않았습니다.",
|
|
summaryTotalProjectsLabel: "프로젝트 수",
|
|
summaryTotalSubmissionsLabel: "전체 폼 제출 수",
|
|
summaryTodaySubmissionsLabel: "오늘 제출 수",
|
|
summaryLast7DaysSubmissionsLabel: "최근 7일 제출 수",
|
|
chartTitle: "최근 제출 추이 (일별)",
|
|
chartSubtitle: "최근 활동이 있는 날짜만 표시됩니다.",
|
|
chartEmptyLabel: "아직 일별 제출 내역이 없습니다.",
|
|
sectionProjectsTitle: "프로젝트별 제출 현황",
|
|
sectionProjectsEmpty: "아직 생성된 프로젝트가 없거나 제출 내역이 없습니다.",
|
|
projectTotalSubmissionsPrefix: "총 제출 ",
|
|
projectTotalSubmissionsSuffix: "건",
|
|
projectLatestSubmissionPrefix: "최근 제출:",
|
|
projectLatestSubmissionEmpty: "제출 내역 없음",
|
|
projectViewSubmissionsLink: "폼 제출 내역 보기",
|
|
projectOpenPublicPageLink: "퍼블릭 페이지 열기",
|
|
errorUnauthorized:
|
|
"대시보드를 보려면 로그인이 필요합니다. 다시 로그인해 주세요.",
|
|
errorGeneric:
|
|
"대시보드 데이터를 불러오는 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
|
|
loadingText: "대시보드 데이터를 불러오는 중입니다...",
|
|
},
|
|
};
|
|
|
|
export function getDashboardMessages(locale: AppLocale | null | undefined): DashboardMessages {
|
|
const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
|
|
return DASHBOARD_MESSAGES[key] ?? DASHBOARD_MESSAGES[DEFAULT_LOCALE];
|
|
}
|