/*
 * 한국어(ko) — 기본/폴백 로케일. **키 형상(shape)의 단일 출처.**
 * 다른 로케일(en/zh/ja)은 이 파일의 타입(Resource)을 구현하므로 키 누락 시 tsc가 잡는다.
 * 새 키는 반드시 여기에 먼저 추가하고 나머지 로케일을 맞춘다(병렬 편집 함정 회피 — 직렬·키 대조).
 */
export const ko = {
  common: {
    appName: 'KINTEX AI 전시관리',
    loading: '확인 중…',
    retry: '다시 시도',
    cancel: '취소',
    close: '닫기',
    user: '사용자',
    none: '-',
    unknown: '알 수 없음',
    error: '오류',
  },
  lang: {
    title: '언어',
    subtitle: '앱 표시 언어를 선택하세요. 선택은 이 기기에 저장됩니다.',
    ko: '한국어',
    en: 'English',
    zh: '中文',
    ja: '日本語',
  },
  roles: {
    ORGANIZER: '주최자',
    EXHIBITOR: '참가업체',
    CONTRACTOR: '장치·시공업체',
    HALL_MANAGER: '홀매니저',
  },
  nav: {
    register: '회원가입',
    forgotPassword: '비밀번호 찾기',
    profile: '내 정보',
    checklist: '현장 체크리스트',
    inspection: '현장 검수',
    ticketsIndex: '내 티켓',
    ticketsSelect: '티켓 예매',
    tabHome: '홈',
    tabField: '현장',
    tabGallery: '갤러리',
    tabMore: '더보기',
  },
  login: {
    brandTitle: '신청서를 내는 순간,\n시공 후 사진을 먼저 봅니다',
    brandCaption: 'AI 생성 예상 이미지 · 실제 시공 결과와 다를 수 있습니다',
    compromised:
      '보안 위험이 감지된 기기입니다(루팅·후킹·디버거). 개인정보·티켓 보호를 위해 정상 기기에서 이용을 권장합니다.',
    title: '로그인',
    email: '이메일',
    emailPlaceholder: 'name@company.co.kr',
    password: '비밀번호',
    passwordPlaceholder: '비밀번호',
    otpLabel: '2차 인증 코드',
    otpPlaceholder: '6자리 코드',
    otpHelper: '인증 앱(TOTP)의 6자리 코드',
    remember: '아이디 기억',
    submit: '로그인',
    submitOtp: '인증 후 로그인',
    forgot: '비밀번호 찾기',
    register: '회원가입',
    errEmpty: '이메일과 비밀번호를 입력해 주세요.',
    errOtpEmpty: '2차 인증 코드를 입력해 주세요.',
    errOtpRequired: '2차 인증 코드가 필요합니다. 인증 앱의 코드를 입력해 주세요.',
    errOtpInvalid: '인증 코드가 올바르지 않거나 만료되었습니다.',
    errLocked: '로그인 시도 초과로 계정이 잠겼습니다. 잠시 후 다시 시도해 주세요.',
    errGeneric: '로그인에 실패했습니다.',
  },
  register: {
    title: '계정 만들기',
    email: '이메일',
    emailPlaceholder: 'name@company.co.kr',
    name: '이름',
    namePlaceholder: '홍길동',
    password: '비밀번호',
    passwordPlaceholder: '8자 이상',
    passwordHelper: '8~100자',
    company: '회사명 (선택)',
    companyPlaceholder: '지오인포',
    invite: '초대 코드 (선택)',
    invitePlaceholder: '행사 초대 코드',
    submit: '가입하기',
    goLogin: '로그인으로 이동',
    errInvalid: '이메일·이름·비밀번호(8자 이상)를 확인해 주세요.',
    errEmailTaken: '이미 가입된 이메일입니다.',
    errGeneric: '회원가입에 실패했습니다.',
    doneJoined: '가입이 완료되었고 초대 행사에 연결되었습니다. 로그인해 주세요.',
    done: '가입이 완료되었습니다. 로그인해 주세요.',
  },
  forgot: {
    title: '비밀번호 재설정',
    email: '이메일',
    emailPlaceholder: 'name@company.co.kr',
    request: '재설정 코드 요청',
    code: '재설정 코드',
    codePlaceholder: '6자리 코드',
    newPassword: '새 비밀번호',
    newPasswordPlaceholder: '8자 이상',
    newPasswordHelper: '8~100자',
    submit: '비밀번호 변경',
    errEmail: '이메일을 입력해 주세요.',
    errFields: '재설정 코드와 새 비밀번호(8자 이상)를 확인해 주세요.',
    errCode: '재설정 코드가 올바르지 않거나 만료되었습니다.',
    errRequest: '요청에 실패했습니다.',
    errReset: '초기화에 실패했습니다.',
  },
  home: {
    hello: '{{name}}님, 안녕하세요',
    noEvent: '참여 중인 행사가 없습니다 — 초대 링크 또는 초대 코드를 확인해 주세요.',
    progress: '진행 상태',
    stepApply: '신청',
    stepApprove: '승인',
    stepBuild: '시공',
    stepInspect: '검수',
    actionChecklist: '현장 체크리스트',
    actionInspection: '현장 검수',
    actionGallery: '시각화 갤러리',
    memberInternal: '킨텍스 내부 계정 (홀매니저)',
    memberGeneral: '일반 계정',
  },
  field: {
    title: '현장 업무',
    guide: '현장 기능은 장치·시공업체(체크리스트)와 홀매니저(검수) 역할에서 제공됩니다.',
    checklistTitle: '현장 체크리스트',
    checklistDesc: '장치 공정 확인 · 사진 첨부 · 검수 요청',
    inspectionTitle: '현장 검수',
    inspectionDesc: '승인 도면 vs 현장 사진 · 적합/부적합 판정',
  },
  gallery: {
    infoBar: 'AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 — 시공 기준은 도면입니다',
    degraded: '서버 이미지 이력에 연결할 수 없어 예시를 표시합니다 (degraded).',
    empty: '아직 생성된 이미지가 없습니다 — 설계 스튜디오에서 예상 사진을 생성하세요.',
    retry: '다시 생성',
    studioNote: '설계 스튜디오는 데스크톱에서 편집',
    notice: 'AI 생성 이미지는 계약·심사 서류에 사용할 수 없습니다 (시공 기준은 도면)',
  },
  more: {
    accountInternal: '킨텍스 내부 계정 (홀매니저)',
    accountGeneral: '일반 계정',
    openProfile: '내 정보 열기',
    apiServer: 'API 서버',
    serverStatus: '서버 상태',
    statusUp: '정상 (UP)',
    statusDown: '연결 불가 (degraded)',
    signOut: '로그아웃',
    version: 'KINTEX AI 전시관리 · v0.1.0',
  },
  profile: {
    sectionInfo: '내 정보',
    sectionEventRoles: '참여 행사 역할',
    sectionSecurity: '계정 · 보안',
    sectionBiometric: '생체인식 잠금',
    sectionNotify: '알림 설정',
    labelName: '이름',
    labelUserId: '사용자 ID',
    labelGlobalRole: '전역 역할',
    labelTenant: '전시관(테넌트)',
    labelType: '구분',
    typeInternal: '킨텍스 내부(홀매니저)',
    typeGeneral: '일반 계정',
    photoChange: '프로필 사진 변경',
    photoTitle: '프로필 사진',
    photoSelect: '사진을 선택하세요',
    photoLibrary: '갤러리',
    photoCamera: '카메라',
    photoApply: '적용',
    photoApplying: '적용 중…',
    photoCaption: '원형으로 표시됩니다.',
    photoPending: '선택한 사진은 이 기기에만 표시됩니다 — 서버 반영은 준비 중입니다.',
    photoPickerUnavailable: '이미지 선택 기능을 사용할 수 없는 기기입니다.',
    loadErr: '내정보를 불러오지 못했습니다.',
    uploadErr: '사진 업로드에 실패했습니다.',
    otpTitle: '2차 인증(OTP)',
    otpOnAuth: '활성화됨 · Authenticator(OTP)',
    otpOnMethod: '활성화됨 · {{method}}',
    otpOff: '미설정 — 로그인 시 인증 앱(TOTP) 2단계 인증을 사용합니다.',
    on: '켜짐',
    off: '꺼짐',
    bioTitle: '지문 · Face 잠금',
    bioDesc:
      '켜면 내정보 진입 시 지문 또는 Face로 재인증합니다. 로그인 2차 인증은 그대로 유지됩니다.',
    bioUnsupported:
      '이 기기는 생체인식을 지원하지 않거나 지문/Face가 등록되어 있지 않습니다. 기기 설정에서 생체 정보를 등록한 뒤 다시 시도해 주세요.',
    bioFailed: '생체 인증에 실패했습니다. 다시 시도해 주세요.',
    biometric: '생체인식',
    lockTitle: '생체인식 잠금',
    lockHint: '지문 또는 Face로 잠금을 해제하세요.',
    notifyDeadline: '마감 D-데이 알림',
    notifyApproval: '승인·검수 알림',
    notifyPayment: '결제·정산 알림',
    notifyNote: '알림 설정은 이 기기에 저장됩니다. 서버 동기화는 준비 중입니다.',
    signOut: '로그아웃',
    signOutConfirm: '로그아웃하시겠습니까?',
    version: 'KINTEX AI 전시관리 · 내정보',
  },
  tickets: {
    offline: '오프라인 — 저장된 티켓 표시 중',
    badgeNotice: '티켓 QR로 현장 체크인하면 모바일 배지로 전환됩니다',
    footNote: '표시된 티켓은 샘플입니다 — 티켓 백엔드(M10) 연동 시 실데이터로 대체됩니다.',
    emptyTitle: '보유한 티켓이 없습니다',
    emptyBody: '입장권을 예매하면 이곳에 티켓이 표시됩니다.',
    emptyBtn: '입장권 예매',
    detailTitle: '예매 상세·취소',
  },
} as const;

export type Resource = typeof ko;
