import type { AppLocale } from "../locale";
import { DEFAULT_LOCALE } from "../locale";

export type ProjectsMessages = {
  headerTitle: string;
  headerDescription: string;
  errorFetchUnauthorized: string;
  errorFetchGeneric: string;
  errorDeleteSingle: string;
  errorDeleteBulkAllFailed: string;
  errorDeleteBulkSomeFailed: string;
  confirmDeleteSingle: string;
  confirmDeleteBulk: string;
  emptyListMessage: string;
  toolbarSelectedPrefix: string;
  toolbarSelectedSuffix: string;
  toolbarDeleteSelected: string;
  toolbarCreateNew: string;
  tableHeaderTitle: string;
  tableHeaderSlug: string;
  tableHeaderStatus: string;
  tableHeaderCreatedAt: string;
  tableHeaderUpdatedAt: string;
  tableHeaderActions: string;
  tableHeaderSelectAllAria: string;
  tableRowSelectAriaSuffix: string;
  actionEdit: string;
  actionPreview: string;
  actionViewSubmissions: string;
  actionDelete: string;
  pagerTotalPrefix: string;
  pagerTotalCountSuffix: string;
  pagerPrevLabel: string;
  pagerNextLabel: string;
};

const PROJECTS_MESSAGES: Record<AppLocale, ProjectsMessages> = {
  en: {
    headerTitle: "Projects",
    headerDescription: "See all saved projects at a glance.",
    errorFetchUnauthorized:
      "You need to be signed in to view your projects. Please log in again.",
    errorFetchGeneric:
      "An error occurred while loading your projects. Please try again later.",
    errorDeleteSingle:
      "An error occurred while deleting the project. Please try again later.",
    errorDeleteBulkAllFailed:
      "An error occurred while deleting the selected projects. Please try again later.",
    errorDeleteBulkSomeFailed:
      "Failed to delete some projects. Please refresh and review the list.",
    confirmDeleteSingle:
      "Delete this project? This cannot be undone and any local/auto-saved data will also be removed.",
    confirmDeleteBulk:
      "Delete all selected projects? This cannot be undone and any local/auto-saved data will also be removed.",
    emptyListMessage: "No projects saved yet. Save a project from the editor to see it here.",
    toolbarSelectedPrefix: "Selected projects: ",
    toolbarSelectedSuffix: "",
    toolbarDeleteSelected: "Delete selected",
    toolbarCreateNew: "Create new project",
    tableHeaderTitle: "Title",
    tableHeaderSlug: "Address (slug)",
    tableHeaderStatus: "Status",
    tableHeaderCreatedAt: "Created at",
    tableHeaderUpdatedAt: "Updated at",
    tableHeaderActions: "Actions",
    tableHeaderSelectAllAria: "Select all projects on current page",
    tableRowSelectAriaSuffix: " (select)",
    actionEdit: "Edit",
    actionPreview: "Preview",
    actionViewSubmissions: "Form submissions",
    actionDelete: "Delete",
    pagerTotalPrefix: "Total ",
    pagerTotalCountSuffix: " items, ",
    pagerPrevLabel: "Previous",
    pagerNextLabel: "Next",
  },
  ko: {
    headerTitle: "프로젝트 목록",
    headerDescription: "저장된 프로젝트들을 한 눈에 볼 수 있는 목록",
    errorFetchUnauthorized:
      "프로젝트 목록을 불러오는 중 인증 오류가 발생했습니다. 다시 로그인해 주세요.",
    errorFetchGeneric:
      "프로젝트 목록을 불러오는 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
    errorDeleteSingle:
      "프로젝트 삭제 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
    errorDeleteBulkAllFailed:
      "선택한 프로젝트를 삭제하는 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.",
    errorDeleteBulkSomeFailed:
      "일부 프로젝트 삭제에 실패했습니다. 페이지를 새로고침한 뒤 목록을 확인해 주세요.",
    confirmDeleteSingle:
      "이 프로젝트를 삭제할까요? 삭제 후에는 되돌릴 수 없습니다. (로컬 저장 및 자동저장 데이터도 함께 삭제됩니다.)",
    confirmDeleteBulk:
      "선택한 프로젝트를 모두 삭제할까요? 삭제 후에는 되돌릴 수 없습니다. (로컬 저장 및 자동저장 데이터도 함께 삭제됩니다.)",
    emptyListMessage:
      "아직 저장된 프로젝트가 없습니다. 에디터에서 프로젝트를 저장해 보세요.",
    toolbarSelectedPrefix: "선택된 프로젝트: ",
    toolbarSelectedSuffix: "개",
    toolbarDeleteSelected: "선택 삭제",
    toolbarCreateNew: "새 프로젝트 만들기",
    tableHeaderTitle: "제목",
    tableHeaderSlug: "주소(slug)",
    tableHeaderStatus: "상태",
    tableHeaderCreatedAt: "생성일",
    tableHeaderUpdatedAt: "수정일",
    tableHeaderActions: "액션",
    tableHeaderSelectAllAria: "전체 선택",
    tableRowSelectAriaSuffix: " 선택",
    actionEdit: "편집",
    actionPreview: "미리보기",
    actionViewSubmissions: "폼 제출 내역",
    actionDelete: "삭제",
    pagerTotalPrefix: "전체 ",
    pagerTotalCountSuffix: "개 중 ",
    pagerPrevLabel: "이전",
    pagerNextLabel: "다음",
  },
};

export function getProjectsMessages(locale: AppLocale | null | undefined): ProjectsMessages {
  const key = (locale ?? DEFAULT_LOCALE) as AppLocale;
  return PROJECTS_MESSAGES[key] ?? PROJECTS_MESSAGES[DEFAULT_LOCALE];
}
