import type { Translations } from "./types";

export const ko: Translations = {
  common: {
    save: "저장",
    saving: "저장 중...",
    cancel: "취소",
    close: "닫기",
    confirm: "확인",
    delete: "삭제",
    refresh: "새로고침",
    retry: "다시 시도",
    search: "검색...",
    loading: "로딩 중...",
    create: "생성",
    creating: "생성 중...",
    set: "설정",
    replace: "교체",
    clear: "지우기",
    live: "라이브",
    off: "꺼짐",
    enabled: "활성화됨",
    disabled: "비활성화됨",
    active: "활성",
    inactive: "비활성",
    unknown: "알 수 없음",
    untitled: "제목 없음",
    none: "없음",
    form: "양식",
    noResults: "결과 없음",
    of: "/",
    page: "페이지",
    msgs: "메시지",
    tools: "도구",
    match: "일치",
    other: "기타",
    configured: "구성됨",
    removed: "제거됨",
    failedToToggle: "전환에 실패했습니다",
    failedToRemove: "제거에 실패했습니다",
    failedToReveal: "표시에 실패했습니다",
    collapse: "접기",
    expand: "펼치기",
    general: "일반",
    messaging: "메시징",
    pluginLoadFailed:
      "이 플러그인의 스크립트를 로드할 수 없습니다. Network 탭(dashboard-plugins/…)과 서버의 플러그인 경로를 확인하세요.",
    pluginNotRegistered:
      "플러그인 스크립트가 register()를 호출하지 않았거나 스크립트에 오류가 발생했습니다. 자세한 내용은 브라우저 콘솔을 열어 확인하세요.",
  },

  app: {
    brand: "Hermes Agent",
    brandShort: "HA",
    closeNavigation: "내비게이션 닫기",
    closeModelTools: "모델 및 도구 닫기",
    footer: {
      org: "Nous Research",
    },
    activeSessionsLabel: "활성 세션:",
    gatewayStatusLabel: "게이트웨이 상태:",
    gatewayStrip: {
      failed: "시작 실패",
      off: "꺼짐",
      running: "실행 중",
      starting: "시작 중",
      stopped: "중지됨",
    },
    nav: {
      analytics: "분석",
      chat: "채팅",
      config: "설정",
      cron: "Cron",
      documentation: "문서",
      keys: "키",
      logs: "로그",
      models: "모델",
      profiles: "프로필: 멀티 에이전트",
      plugins: "플러그인",
      sessions: "세션",
      skills: "스킬",
    },
    modelToolsSheetSubtitle: "및 도구",
    modelToolsSheetTitle: "모델",
    navigation: "내비게이션",
    openDocumentation: "새 탭에서 문서 열기",
    openNavigation: "내비게이션 열기",
    pluginNavSection: "플러그인",
    sessionsActiveCount: "{count}개 활성",
    statusOverview: "상태 개요",
    system: "시스템",
    webUi: "Web UI",
  },

  status: {
    actionFailed: "작업 실패",
    actionFinished: "완료됨",
    actions: "작업",
    agent: "에이전트",
    activeSessions: "활성 세션",
    connected: "연결됨",
    connectedPlatforms: "연결된 플랫폼",
    disconnected: "연결 끊김",
    error: "오류",
    failed: "실패",
    gateway: "게이트웨이",
    gatewayFailedToStart: "게이트웨이 시작 실패",
    lastUpdate: "마지막 업데이트",
    noneRunning: "없음",
    notRunning: "실행 중이 아님",
    pid: "PID",
    platformDisconnected: "연결 끊김",
    platformError: "오류",
    recentSessions: "최근 세션",
    restartGateway: "게이트웨이 재시작",
    restartingGateway: "게이트웨이 재시작 중…",
    running: "실행 중",
    runningRemote: "실행 중 (원격)",
    startFailed: "시작 실패",
    starting: "시작 중",
    startedInBackground: "백그라운드에서 시작됨 — 진행 상황은 로그를 확인하세요",
    stopped: "중지됨",
    updateHermes: "Hermes 업데이트",
    updatingHermes: "Hermes 업데이트 중…",
    waitingForOutput: "출력 대기 중…",
  },

  sessions: {
    title: "세션",
    history: "기록",
    overview: "개요",
    searchPlaceholder: "메시지 내용 검색...",
    noSessions: "아직 세션이 없습니다",
    noMatch: "검색과 일치하는 세션이 없습니다",
    startConversation: "대화를 시작하면 여기에 표시됩니다",
    noMessages: "메시지가 없습니다",
    untitledSession: "제목 없는 세션",
    deleteSession: "세션 삭제",
    confirmDeleteTitle: "세션을 삭제하시겠습니까?",
    confirmDeleteMessage:
      "이 작업은 대화와 모든 메시지를 영구적으로 제거합니다. 되돌릴 수 없습니다.",
    sessionDeleted: "세션이 삭제되었습니다",
    failedToDelete: "세션 삭제에 실패했습니다",
    deleteEmpty: "빈 세션 삭제",
    deleteEmptyConfirmTitle: "빈 세션을 삭제하시겠습니까?",
    deleteEmptyConfirmMessage:
      "메시지가 없는 {count}개의 세션을 영구적으로 삭제합니다. 활성 및 보관된 세션은 건너뜁니다. 이 작업은 되돌릴 수 없습니다.",
    emptySessionsDeleted: "빈 세션 {count}개 삭제됨",
    failedToDeleteEmpty: "빈 세션 삭제에 실패했습니다",
    selectSession: "세션 선택",
    selectAllOnPage: "이 페이지 전체 선택",
    clearSelection: "선택 해제",
    selectedCount: "{count}개 선택됨",
    deleteSelected: "{count}개 삭제",
    deleteSelectedConfirmTitle: "{count}개 세션을 삭제하시겠습니까?",
    deleteSelectedConfirmMessage:
      "선택한 {count}개 세션과 모든 메시지가 영구적으로 제거됩니다. 이 작업은 취소할 수 없습니다.",
    selectedSessionsDeleted: "{count}개 세션이 삭제되었습니다",
    failedToDeleteSelected: "선택한 세션 삭제에 실패했습니다",
    resumeInChat: "채팅에서 다시 시작",
    previousPage: "이전 페이지",
    nextPage: "다음 페이지",
    roles: {
      user: "사용자",
      assistant: "어시스턴트",
      system: "시스템",
      tool: "도구",
    },
  },

  analytics: {
    period: "기간:",
    totalTokens: "총 토큰",
    totalSessions: "총 세션",
    apiCalls: "API 호출",
    dailyTokenUsage: "일일 토큰 사용량",
    dailyBreakdown: "일별 내역",
    perModelBreakdown: "모델별 내역",
    topSkills: "주요 스킬",
    skill: "스킬",
    loads: "에이전트 로드됨",
    edits: "에이전트 관리",
    lastUsed: "마지막 사용",
    input: "입력",
    output: "출력",
    total: "합계",
    noUsageData: "이 기간에 대한 사용 데이터가 없습니다",
    startSession: "세션을 시작하면 여기에 분석이 표시됩니다",
    date: "날짜",
    model: "모델",
    tokens: "토큰",
    perDayAvg: "/일 평균",
    acrossModels: "{count}개 모델 전반",
    inOut: "입력 {input} / 출력 {output}",
  },

  models: {
    modelsUsed: "사용된 모델",
    estimatedCost: "예상 비용",
    tokens: "토큰",
    sessions: "세션",
    avgPerSession: "세션당 평균",
    apiCalls: "API 호출",
    toolCalls: "도구 호출",
    noModelsData: "이 기간에 대한 모델 사용 데이터가 없습니다",
    startSession: "세션을 시작하면 여기에 모델 데이터가 표시됩니다",
  },

  logs: {
    title: "로그",
    autoRefresh: "자동 새로고침",
    file: "파일",
    level: "레벨",
    component: "구성 요소",
    lines: "줄 수",
    noLogLines: "로그 줄을 찾을 수 없습니다",
  },

  cron: {
    confirmDeleteMessage:
      "이 작업은 일정에서 작업을 제거합니다. 되돌릴 수 없습니다.",
    confirmDeleteTitle: "예약된 작업을 삭제하시겠습니까?",
    newJob: "새 Cron 작업",
    nameOptional: "이름 (선택 사항)",
    namePlaceholder: "예: 일일 요약",
    prompt: "프롬프트",
    promptPlaceholder: "에이전트가 매 실행 시 무엇을 해야 합니까?",
    schedule: "스케줄 (cron 표현식)",
    schedulePlaceholder: "0 9 * * *",
    scheduleMode: "일정",
    scheduleModes: {
      interval: "반복 간격",
      daily: "매일",
      weekly: "매주",
      monthly: "매월",
      once: "한 번",
      custom: "사용자 지정 (cron 표현식)",
      intervalEvery: "실행 간격",
      intervalUnit: "단위",
      unitMinutes: "분",
      unitHours: "시간",
      unitDays: "일",
      timeOfDay: "시각",
      weekdays: "요일",
      weekdaysShort: ["일", "월", "화", "수", "목", "금", "토"],
      dayOfMonth: "날짜",
      onceAt: "실행 시각",
      customLabel: "cron 표현식",
      customPlaceholder: "0 9 * * *",
      customHint: "5개 필드의 cron 표현식 (분, 시, 일, 월, 요일).",
      preview: "전송 형식",
      previewEmpty: "(미완성)",
    },
    scheduleDescribe: {
      none: "—",
      everyMinutes: "{n}분마다",
      everyHours: "{n}시간마다",
      everyDays: "{n}일마다",
      dailyAt: "매일 {time}",
      weeklyAt: "매주 {days} {time}",
      monthlyAt: "매월 {day} {time}",
      onceAt: "{time}에 한 번",
    },
    deliverTo: "전달 대상",
    scheduledJobs: "예약된 작업",
    noJobs: "구성된 cron 작업이 없습니다. 위에서 하나 만드세요.",
    last: "마지막",
    next: "다음",
    pause: "일시 정지",
    resume: "재개",
    triggerNow: "지금 실행",
    delivery: {
      local: "로컬",
      telegram: "Telegram",
      discord: "Discord",
      slack: "Slack",
      email: "Email",
    },
  },

  profiles: {
    newProfile: "새 프로필",
    name: "이름",
    namePlaceholder: "예: coder, writer 등.",
    nameRequired: "이름은 필수입니다",
    nameRule:
      "소문자, 숫자, _ 및 - 만 사용 가능합니다. 문자나 숫자로 시작해야 하며 최대 64자입니다.",
    invalidName: "잘못된 프로필 이름입니다",
    cloneFromDefault: "기본 프로필에서 설정 복제",
    allProfiles: "프로필",
    noProfiles: "프로필을 찾을 수 없습니다.",
    defaultBadge: "기본",
    hasEnv: "env",
    model: "모델",
    skills: "스킬",
    rename: "이름 변경",
    editSoul: "SOUL.md 편집",
    soulSection: "SOUL.md (개성 / 시스템 프롬프트)",
    soulPlaceholder: "# 이 에이전트가 어떻게 동작해야 하는지…",
    saveSoul: "SOUL 저장",
    soulSaved: "SOUL.md가 저장되었습니다",
    openInTerminal: "CLI 명령 복사",
    commandCopied: "클립보드에 복사되었습니다",
    copyFailed: "복사할 수 없습니다",
    confirmDeleteTitle: "프로필을 삭제하시겠습니까?",
    confirmDeleteMessage:
      "이 작업은 '{name}' 프로필 — 설정, 키, 메모리, 세션, 스킬, cron 작업 — 을 영구적으로 삭제합니다. 되돌릴 수 없습니다.",
    created: "생성됨",
    deleted: "삭제됨",
    renamed: "이름 변경됨",
  },

  pluginsPage: {
    contextEngineLabel: "컨텍스트 엔진",
    dashboardSlots: "대시보드 슬롯",
    disableRuntime: "비활성화",
    enableAfterInstall: "설치 후 활성화",
    enableRuntime: "활성화",
    forceReinstall: "강제 재설치 (기존 폴더를 먼저 삭제)",
    headline:
      "Hermes 플러그인을 검색, 설치, 활성화 및 업데이트합니다 (`hermes plugins` 동등).",
    identifierLabel: "Git URL 또는 owner/repo",
    inactive: "비활성",
    installBtn: "설치",
    installHeading: "GitHub / Git URL에서 설치",
    installHint: "owner/repo 약어 또는 전체 https:// 또는 git@ 클론 URL을 사용하세요.",
    memoryProviderLabel: "메모리 제공자",
    missingEnvWarn: "플러그인을 실행하기 전에 Keys에서 다음 항목을 설정하세요:",
    noDashboardTab: "대시보드 탭 없음",
    openTab: "열기",
    orphanHeading: "대시보드 전용 확장 (일치하는 agent plugin.yaml 없음)",
    pluginListHeading: "설치된 플러그인",
    providerDefaults: "내장 / 기본",
    providersHeading: "런타임 제공자 플러그인",
    providersHint:
      "memory.provider (비어 있으면 = 내장)와 context.engine을 config.yaml에 기록합니다. 다음 세션부터 적용됩니다.",
    refreshDashboard: "대시보드 확장 재스캔",
    removeConfirm: "~/.hermes/plugins/에서 이 플러그인을 제거하시겠습니까?",
    removeHint: "~/.hermes/plugins 아래에 사용자가 설치한 플러그인만 제거할 수 있습니다.",
    rescanHeading: "SPA 플러그인 레지스트리",
    rescanHint: "디스크에 파일을 추가한 후 재스캔하여 대시보드 사이드바가 새 매니페스트를 인식하도록 합니다.",
    runtimeHeading: "게이트웨이 런타임 (YAML 플러그인)",
    saveProviders: "제공자 설정 저장",
    savedProviders: "제공자 설정이 저장되었습니다.",
    sourceBadge: "소스",
    authRequired: "인증 필요",
    authRequiredHint: "이 명령을 실행하여 인증하세요:",
    updateGit: "Git pull",
    versionBadge: "버전",
    showInSidebar: "사이드바에 표시",
    hideFromSidebar: "사이드바에서 숨기기",
  },

  skills: {
    title: "스킬",
    searchPlaceholder: "스킬 및 도구 세트 검색...",
    enabledOf: "{enabled}/{total} 활성화됨",
    all: "전체",
    categories: "카테고리",
    filters: "필터",
    noSkills: "스킬을 찾을 수 없습니다. 스킬은 ~/.hermes/skills/ 에서 로드됩니다",
    noSkillsMatch: "검색이나 필터와 일치하는 스킬이 없습니다.",
    skillCount: "{count}개 스킬",
    resultCount: "{count}개 결과",
    noDescription: "사용 가능한 설명이 없습니다.",
    toolsets: "도구 세트",
    toolsetLabel: "{name} 도구 세트",
    noToolsetsMatch: "검색과 일치하는 도구 세트가 없습니다.",
    setupNeeded: "설정 필요",
    disabledForCli: "CLI에서 비활성화됨",
    more: "+{count}개 더",
  },

  config: {
    configPath: "~/.hermes/config.yaml",
    filters: "필터",
    sections: "섹션",
    exportConfig: "설정을 JSON으로 내보내기",
    importConfig: "JSON에서 설정 가져오기",
    resetDefaults: "기본값으로 재설정",
    resetScopeTooltip: "{scope}을(를) 기본값으로 재설정",
    confirmResetScope: "모든 {scope} 설정을 기본값으로 재설정하시겠습니까? 이 작업은 양식만 업데이트하며, 저장을 누르기 전까지는 변경 사항이 config.yaml에 기록되지 않습니다.",
    resetScopeToast: "{scope}이(가) 기본값으로 재설정되었습니다 — 검토 후 저장하여 적용하세요",
    rawYaml: "원본 YAML 설정",
    searchResults: "검색 결과",
    fields: "개 필드",
    noFieldsMatch: '\"{query}\"와(과) 일치하는 필드가 없습니다',
    configSaved: "설정이 저장되었습니다",
    yamlConfigSaved: "YAML 설정이 저장되었습니다",
    failedToSave: "저장에 실패했습니다",
    failedToSaveYaml: "YAML 저장에 실패했습니다",
    failedToLoadRaw: "원본 설정 로드에 실패했습니다",
    configImported: "설정을 가져왔습니다 — 검토 후 저장하세요",
    invalidJson: "잘못된 JSON 파일입니다",
    categories: {
      general: "일반",
      agent: "에이전트",
      terminal: "터미널",
      display: "디스플레이",
      delegation: "위임",
      memory: "메모리",
      compression: "압축",
      security: "보안",
      browser: "브라우저",
      voice: "음성",
      tts: "텍스트 음성 변환",
      stt: "음성 텍스트 변환",
      logging: "로깅",
      discord: "Discord",
      auxiliary: "보조",
    },
  },

  env: {
    changesNote: "변경 사항은 즉시 디스크에 저장됩니다. 활성 세션은 자동으로 새 키를 가져옵니다.",
    confirmClearMessage:
      "이 변수에 대해 저장된 값이 .env 파일에서 제거됩니다. UI에서는 이 작업을 되돌릴 수 없습니다.",
    confirmClearTitle: "이 키를 지우시겠습니까?",
    description: "다음 위치에 저장된 API 키와 비밀을 관리합니다",
    hideAdvanced: "고급 숨기기",
    showAdvanced: "고급 표시",
    showLess: "간략히",
    showMore: "더 보기",
    llmProviders: "LLM 제공자",
    providersConfigured: "{configured}/{total} 제공자가 구성됨",
    getKey: "키 받기",
    notConfigured: "{count}개 구성되지 않음",
    notSet: "설정되지 않음",
    keysCount: "{count}개 키",
    enterValue: "값 입력...",
    replaceCurrentValue: "현재 값 교체 ({preview})",
    showValue: "실제 값 표시",
    hideValue: "값 숨기기",
  },

  oauth: {
    title: "제공자 로그인 (OAuth)",
    providerLogins: "제공자 로그인 (OAuth)",
    description: "{connected}/{total} OAuth 제공자가 연결되었습니다. 로그인 흐름은 현재 CLI를 통해 실행됩니다. 명령 복사를 클릭하고 터미널에 붙여넣어 설정하세요.",
    connected: "연결됨",
    expired: "만료됨",
    notConnected: "연결되지 않음. 터미널에서 {command}을(를) 실행하세요.",
    runInTerminal: "터미널에서.",
    noProviders: "OAuth를 지원하는 제공자가 감지되지 않았습니다.",
    login: "로그인",
    disconnect: "연결 해제",
    managedExternally: "외부에서 관리됨",
    copied: "복사됨 ✓",
    cli: "복사",
    copyCliCommand: "CLI 명령 복사 (외부 / 대체용)",
    connect: "연결",
    sessionExpires: "세션이 {time} 후 만료됩니다",
    initiatingLogin: "로그인 흐름 시작 중…",
    exchangingCode: "코드를 토큰으로 교환 중…",
    connectedClosing: "연결되었습니다! 닫는 중…",
    loginFailed: "로그인 실패.",
    sessionExpired: "세션이 만료되었습니다. 다시 시도를 클릭하여 새 로그인을 시작하세요.",
    reOpenAuth: "인증 페이지 다시 열기",
    reOpenVerification: "확인 페이지 다시 열기",
    submitCode: "코드 제출",
    pasteCode: "인증 코드 붙여넣기 (#state 접미사 포함도 가능)",
    waitingAuth: "브라우저에서 인증을 기다리는 중…",
    enterCodePrompt: "새 탭이 열렸습니다. 메시지가 표시되면 이 코드를 입력하세요:",
    pkceStep1: "claude.ai로 새 탭이 열렸습니다. 로그인하고 Authorize를 클릭하세요.",
    pkceStep2: "인증 후 표시된 인증 코드를 복사하세요.",
    pkceStep3: "아래에 붙여넣고 제출하세요.",
    flowLabels: {
      pkce: "브라우저 로그인 (PKCE)",
      device_code: "디바이스 코드",
      external: "외부 CLI",
    },
    expiresIn: "{time} 후 만료",
  },

  language: {
    switchTo: "언어 변경",
  },

  theme: {
    title: "테마",
    switchTheme: "테마 전환",
  },

  achievements: {
    hero: {
      kicker: "Agentic Gamerscore",
      title: "Hermes Achievements",
      subtitle:
        "실제 세션 기록에서 획득하는 Hermes 컬렉터블 배지입니다. 알려져 있지만 아직 달성되지 않은 업적은 Discovered로 표시되며, Secret 업적은 일치하는 동작이 처음 나타날 때까지 숨겨집니다.",
      scan_subtitle:
        "Hermes 세션 기록을 스캔하고 있습니다. 기록이 많으면 첫 스캔에 5~10초가 걸릴 수 있습니다.",
    },
    actions: {
      rescan: "다시 스캔",
    },
    stats: {
      unlocked: "해제됨",
      unlocked_hint: "획득한 배지",
      discovered: "발견됨",
      discovered_hint: "알려져 있으나 아직 획득하지 못함",
      secrets: "시크릿",
      secrets_hint: "첫 신호가 있을 때까지 숨겨짐",
      highest_tier: "최고 등급",
      highest_tier_hint: "Copper → Silver → Gold → Diamond → Olympian",
      latest: "최근",
      latest_hint_empty: "Hermes를 더 사용해 보세요",
      none_yet: "아직 없음",
    },
    state: {
      unlocked: "해제됨",
      discovered: "발견됨",
      secret: "시크릿",
    },
    tier: {
      target: "목표 {tier}",
      hidden: "숨김",
      complete: "완료",
      objective: "목표",
    },
    progress: {
      hidden: "숨김",
    },
    scan: {
      building_headline: "업적 프로필을 구성하고 있습니다…",
      building_detail:
        "세션, 도구 호출, 모델 메타데이터, 해제 상태를 읽고 있습니다.",
      starting_headline: "업적 스캔을 시작합니다…",
      progress_detail:
        "{total}개 중 {scanned}개의 세션을 스캔했습니다 · {pct}%. 더 많은 기록이 들어오면 배지가 해제됩니다.",
      idle_detail:
        "세션, 도구 호출, 모델 메타데이터, 해제 상태를 읽고 있습니다. 배지가 해제되면 여기에 표시됩니다.",
    },
    guide: {
      tiers_header: "등급",
      secret_header: "시크릿 업적",
      secret_body:
        "시크릿은 정확한 트리거 조건을 숨깁니다. Hermes가 관련 신호를 감지하면 카드가 Discovered로 바뀌고 요건이 표시됩니다.",
      scan_status_header: "스캔 상태",
      scan_status_body:
        "Hermes는 로컬 기록을 한 번 스캔한 뒤 카드를 자동으로 표시합니다. 몇 초 걸리더라도 멈춘 것이 아닙니다.",
      what_scanned_header: "스캔 대상",
      what_scanned_body:
        "세션, 도구 호출, 모델 메타데이터, 오류, 업적 및 로컬 해제 상태입니다.",
    },
    card: {
      share_title: "이 업적 공유",
      share_label: "{name} 공유",
      share_text: "공유",
      how_to_reveal: "공개하는 방법",
      what_counts: "인정되는 조건",
      evidence_label: "근거",
      evidence_session_fallback: "세션",
      no_evidence: "아직 근거가 없습니다",
    },
    latest: {
      header: "최근 해제",
    },
    empty: {
      no_secrets_header: "이번 스캔에 남은 숨겨진 시크릿이 없습니다.",
      no_secrets_body:
        "힌트: 시크릿은 보통 비정상적인 실패나 파워 유저 패턴에서 시작됩니다 — 포트 충돌, 권한 차단, 누락된 환경 변수, YAML 실수, Docker 충돌, 롤백/체크포인트 사용, 캐시 적중, 또는 많은 오류 메시지 뒤의 작은 수정 등입니다.",
    },
    filters: {
      all_categories: "전체",
      visibility_all: "전체",
      visibility_unlocked: "해제됨",
      visibility_discovered: "발견됨",
      visibility_secret: "시크릿",
    },
    share: {
      dialog_label: "업적 공유",
      header: "공유: {name}",
      close: "닫기",
      rendering: "렌더링 중…",
      card_alt: "{name} 공유 카드",
      error_generic: "문제가 발생했습니다.",
      x_title: "미리 작성된 게시물로 X를 엽니다",
      x_button: "X에 공유",
      copy_title: "게시물에 붙여넣을 수 있도록 이미지를 복사합니다",
      copy_button: "이미지 복사",
      copied: "복사됨 ✓",
      download_button: "PNG 다운로드",
      hint:
        "X에 공유를 누르면 새 탭에서 미리 작성된 게시물이 열립니다. 1200×630 배지를 첨부하려면 먼저 이미지 복사를 누르세요 — X 작성기에서 바로 붙여넣을 수 있습니다. PNG 다운로드는 파일을 저장하여 어디서나 사용할 수 있게 합니다.",
      clipboard_unsupported:
        "이 브라우저에서는 클립보드 이미지 복사를 지원하지 않습니다 — 대신 다운로드를 이용하세요.",
      tweet_text: "Just unlocked {tier_part}\"{name}\" in Hermes Agent ☤",
    },
  },
  kanban: {
    loading: "Kanban 보드를 불러오는 중입니다…",
    loadFailed: "Kanban 보드를 불러오지 못했습니다: ",
    loadFailedHint:
      "백엔드는 처음 읽을 때 kanban.db를 자동으로 생성합니다. 문제가 계속되면 대시보드 로그를 확인하십시오.",
    board: "보드",
    newBoard: "+ 새 보드",
    newBoardTitle: "새 보드",
    newBoardDescription:
      "보드를 사용하면 관련 없는 작업 흐름을 분리할 수 있습니다 — 프로젝트, 저장소, 도메인마다 하나씩. 한 보드의 워커는 다른 보드의 작업을 절대 보지 않습니다.",
    slug: "슬러그",
    slugHint: "— 소문자, 하이픈, 예: atm10-server",
    displayName: "표시 이름",
    displayNameHint: "(선택)",
    description: "설명",
    descriptionHint: "(선택)",
    icon: "아이콘",
    iconHint: "(한 글자 또는 이모지)",
    switchAfterCreate: "생성 후 이 보드로 전환",
    cancel: "취소",
    creating: "생성 중…",
    createBoard: "보드 생성",
    search: "검색",
    filterCards: "카드 필터링…",
    tenant: "테넌트",
    allTenants: "모든 테넌트",
    assignee: "담당자",
    allProfiles: "모든 프로필",
    showArchived: "보관된 항목 표시",
    lanesByProfile: "프로필별 레인",
    nudgeDispatcher: "디스패처 깨우기",
    refresh: "새로 고침",
    selected: "선택됨",
    complete: "완료",
    archive: "보관",
    apply: "적용",
    clear: "지우기",
    createTask: "이 열에 작업 만들기",
    noTasks: "— 작업 없음 —",
    unassigned: "미지정",
    untitled: "(제목 없음)",
    loadingDetail: "불러오는 중…",
    addComment: "댓글 추가… (Enter로 전송)",
    comment: "댓글",
    status: "상태",
    workspace: "작업 공간",
    skills: "스킬",
    createdBy: "작성자",
    result: "결과",
    comments: "댓글",
    events: "이벤트",
    runHistory: "실행 기록",
    workerLog: "워커 로그",
    loadingLog: "로그를 불러오는 중…",
    noWorkerLog:
      "— 아직 워커 로그가 없습니다 (작업이 시작되지 않았거나 로그가 순환되었습니다) —",
    noDescription: "— 설명 없음 —",
    noComments: "— 댓글 없음 —",
    edit: "편집",
    save: "저장",
    dependencies: "종속성",
    parents: "상위 작업:",
    children: "하위 작업:",
    none: "없음",
    addParent: "— 상위 작업 추가 —",
    addChild: "— 하위 작업 추가 —",
    removeDependency: "종속성 제거",
    block: "차단",
    unblock: "차단 해제",
    notifyHomeChannels: "홈 채널에 알림",
    diagnostics: "진단",
    hide: "숨기기",
    show: "표시",
    attention: "주의",
    tasksNeedAttention: "개의 작업이 주의를 필요로 합니다",
    taskNeedsAttention: "작업 1개가 주의를 필요로 합니다",
    diagnostic: "진단",
    open: "열기",
    close: "닫기 (Esc)",
    reassignTo: "다음으로 재지정:",
    copied: "복사됨",
    copyCommand: "명령을 클립보드로 복사",
    reclaim: "회수",
    reassign: "재지정",
    renderingError: "Kanban 탭에서 렌더링 오류가 발생했습니다",
    reloadView: "뷰 다시 불러오기",
    wsAuthFailed:
      "WebSocket 인증 실패 — 페이지를 다시 불러와 세션 토큰을 갱신하십시오.",
    markDone: "{n}개의 작업을 완료로 표시하시겠습니까?",
    markArchived: "{n}개의 작업을 보관하시겠습니까?",
    warning: "경고",
    phantomIds: "팬텀 ID:",
    active: "활성",
    ended: "종료됨",
    noProfile: "(프로필 없음)",
    showAllAttempts: "모든 시도 표시",
    sendingUpdates: "업데이트 전송 대상: ",
    sendNotifications: "완료 / 차단됨 / 포기 알림 전송 대상",
    archiveBoardConfirm:
      "보드 '{name}'을(를) 보관하시겠습니까? 보드는 boards/_archived/로 이동되어 나중에 복구할 수 있습니다. 이 보드의 작업은 더 이상 UI 어디에도 나타나지 않습니다.",
    archiveBoardTitle: "이 보드 보관",
    boardSwitcherHint: "보드를 사용하면 관련 없는 작업 흐름을 분리할 수 있습니다",
    taskCreatedWarning: "작업이 생성되었지만: ",
    moveFailed: "이동 실패: ",
    bulkFailed: "일괄 처리: ",
    completionBlockedHallucination: "⚠ 완료가 차단됨 — 팬텀 카드 ID",
    suspectedHallucinatedReferences: "⚠ 본문이 팬텀 카드 ID를 참조함",
    pickProfileFirst: "먼저 프로필을 선택하십시오.",
    unblockedMessage: "{id}의 차단을 해제했습니다. 작업이 다음 틱을 위해 준비되었습니다.",
    unblockFailed: "차단 해제 실패: ",
    reclaimedMessage: "{id}을(를) 회수했습니다. 작업이 ready 상태로 돌아갔습니다.",
    reclaimFailed: "회수 실패: ",
    reassignedMessage: "{id}을(를) {profile}(으)로 재지정했습니다.",
    reassignFailed: "재지정 실패: ",
    selectForBulk: "일괄 작업을 위해 선택",
    clickToEdit: "클릭하여 편집",
    clickToEditAssignee: "클릭하여 담당자 편집",
    emptyAssignee: "(비우면 = 지정 해제)",
    columnLabels: {
      triage: "분류",
      todo: "할 일",
      scheduled: "예약됨",
      ready: "준비됨",
      running: "진행 중",
      blocked: "차단됨",
      done: "완료",
      archived: "보관됨",
    },
    columnHelp: {
      triage: "원시 아이디어 — 스페시파이어가 사양을 구체화합니다",
      todo: "종속성 대기 중 또는 미지정",
      scheduled: "알려진 시간 지연 또는 예약된 후속 조치를 기다리는 중",
      ready: "종속성이 충족됨; 디스패치하려면 프로필을 지정하세요",
      running: "워커가 점유 중 — 실행 중",
      blocked: "워커가 사람의 입력을 요청함",
      done: "완료됨",
      archived: "보관됨",
    },
    confirmDone:
      "이 작업을 완료로 표시하시겠습니까? 워커의 점유가 해제되고 종속된 하위 작업이 ready 상태가 됩니다.",
    confirmArchive:
      "이 작업을 보관하시겠습니까? 기본 보드 보기에서 사라집니다.",
    confirmBlocked:
      "이 작업을 차단됨으로 표시하시겠습니까? 워커의 점유가 해제됩니다.",
    completionSummary:
      "{label}의 완료 요약입니다. 이는 작업 결과로 저장됩니다.",
    completionSummaryRequired:
      "작업을 완료로 표시하기 전에 완료 요약이 필요합니다.",
    triagePlaceholder: "대략적인 아이디어 — AI가 사양을 작성합니다…",
    taskTitlePlaceholder: "새 작업 제목…",
    specifier: "스페시파이어",
    assigneePlaceholder: "담당자",
    priority: "우선순위",
    skillsPlaceholder:
      "스킬 (선택, 쉼표로 구분): translation, github-code-review",
    noParent: "— 상위 작업 없음 —",
    workspacePathDir: "작업 공간 경로 (필수, 예: ~/projects/my-app)",
    workspacePathOptional:
      "작업 공간 경로 (선택, 비어 있으면 담당자에서 파생됨)",
    logTruncated: "(마지막 100 KB 표시 중 — 전체 로그 위치: ",
    logAt: ")",
  },
};
