// Full translations live in packages/saeeol-i18n/src/*.ts but tsgo can't resolve workspace packages,
// so we embed command-related keys here and keep saeeol-i18n as the source of truth for other packages.

const en: Record<string, string> = {
  "cmd.session.switch": "Switch session",
  "cmd.session.new": "New session",
  "cmd.model.switch": "Switch model",
  "cmd.model.cycle": "Model cycle",
  "cmd.model.cycleReverse": "Model cycle reverse",
  "cmd.favorite.cycle": "Favorite cycle",
  "cmd.favorite.cycleReverse": "Favorite cycle reverse",
  "cmd.agent.switch": "Switch agent",
  "cmd.mcp.toggle": "Toggle MCPs",
  "cmd.agent.cycle": "Agent cycle",
  "cmd.variant.cycle": "Variant cycle",
  "cmd.model.variant": "Switch model variant",
  "cmd.agent.cycleReverse": "Agent cycle reverse",
  "cmd.provider.connect": "Connect provider",
  "cmd.provider.setup": "Setup wizard",
  "cmd.provider.setupDesc": "Run the initial setup wizard again",
  "cmd.provider.skipSetup": "Skip setup",
  "cmd.provider.skipSetupDesc": "Continue without connecting a provider",
  "cmd.org.switch": "Switch org",
  "cmd.status.view": "View status",
  "cmd.theme.switch": "Switch theme",
  "cmd.theme.light": "Switch to light mode",
  "cmd.theme.dark": "Switch to dark mode",
  "cmd.theme.lock": "Lock theme mode",
  "cmd.theme.unlock": "Unlock theme mode",
  "cmd.help": "Help",
  "cmd.docs": "Open docs",
  "cmd.exit": "Exit the app",
  "cmd.debug": "Toggle debug panel",
  "cmd.console": "Toggle console",
  "cmd.heap": "Write heap snapshot",
  "cmd.suspend": "Suspend terminal",
  "cmd.session.share": "Share session",
  "cmd.session.share.copy": "Copy share link",
  "cmd.session.rename": "Rename session",
  "cmd.session.timeline": "Jump to message",
  "cmd.session.fork": "Fork session",
  "cmd.session.compact": "Compact session",
  "cmd.session.compact.warn": "Connect a provider to compact this session",
  "cmd.session.unshare": "Unshare session",
  "cmd.session.undo": "Undo previous message",
  "cmd.session.redo": "Redo",
  "cmd.session.sidebar.hide": "Hide sidebar",
  "cmd.session.sidebar.show": "Show sidebar",
  "cmd.session.conceal.enable": "Enable code concealment",
  "cmd.session.conceal.disable": "Disable code concealment",
  "cmd.session.timestamps.show": "Show timestamps",
  "cmd.session.timestamps.hide": "Hide timestamps",
  "cmd.session.thinking.show": "Show thinking",
  "cmd.session.thinking.hide": "Hide thinking",
  "cmd.session.tools.show": "Show tool details",
  "cmd.session.tools.hide": "Hide tool details",
  "cmd.session.scrollbar": "Toggle session scrollbar",
  "cmd.session.pointing": "Pin folder",
  "cmd.session.pointing.description": "Choose which folder to work in",
  "cmd.session.unpointing": "Unpin folder",
  "cmd.session.unpointing.description": "Remove pinned folder, go back to default",
}

const ko: Record<string, string> = {
  "cmd.session.switch": "세션 전환",
  "cmd.session.new": "새 세션",
  "cmd.model.switch": "모델 변경",
  "cmd.model.cycle": "모델 순환",
  "cmd.model.cycleReverse": "모델 역순 순환",
  "cmd.favorite.cycle": "즐겨찾기 순환",
  "cmd.favorite.cycleReverse": "즐겨찾기 역순 순환",
  "cmd.agent.switch": "에이전트 변경",
  "cmd.mcp.toggle": "MCP 토글",
  "cmd.agent.cycle": "에이전트 순환",
  "cmd.variant.cycle": "변형 순환",
  "cmd.model.variant": "모델 변형 변경",
  "cmd.agent.cycleReverse": "에이전트 역순 순환",
  "cmd.provider.connect": "공급자 연결",
  "cmd.provider.setup": "설정 마법사",
  "cmd.provider.setupDesc": "초기 설정 마법사 다시 실행",
  "cmd.provider.skipSetup": "설정 건너뛰기",
  "cmd.provider.skipSetupDesc": "공급자 연결 없이 계속하기",
  "cmd.org.switch": "조직 전환",
  "cmd.status.view": "상태 보기",
  "cmd.theme.switch": "테마 변경",
  "cmd.theme.light": "라이트 모드로 전환",
  "cmd.theme.dark": "다크 모드로 전환",
  "cmd.theme.lock": "테마 모드 잠금",
  "cmd.theme.unlock": "테마 모드 잠금 해제",
  "cmd.help": "도움말",
  "cmd.docs": "문서 열기",
  "cmd.exit": "종료",
  "cmd.debug": "디버그 패널 토글",
  "cmd.console": "콘솔 토글",
  "cmd.heap": "힙 스냅샷 작성",
  "cmd.suspend": "터미널 일시정지",
  "cmd.session.share": "세션 공유",
  "cmd.session.share.copy": "공유 링크 복사",
  "cmd.session.rename": "세션 이름 변경",
  "cmd.session.timeline": "메시지로 이동",
  "cmd.session.fork": "세션 포크",
  "cmd.session.compact": "세션 압축",
  "cmd.session.compact.warn": "공급자를 연결하면 세션을 압축할 수 있습니다",
  "cmd.session.unshare": "공유 해제",
  "cmd.session.undo": "이전 메시지 실행 취소",
  "cmd.session.redo": "다시 실행",
  "cmd.session.sidebar.hide": "사이드바 숨기기",
  "cmd.session.sidebar.show": "사이드바 보이기",
  "cmd.session.conceal.enable": "코드 숨김 활성화",
  "cmd.session.conceal.disable": "코드 숨김 비활성화",
  "cmd.session.timestamps.show": "타임스탬프 보이기",
  "cmd.session.timestamps.hide": "타임스탬프 숨기기",
  "cmd.session.thinking.show": "사고 과정 보이기",
  "cmd.session.thinking.hide": "사고 과정 숨기기",
  "cmd.session.tools.show": "도구 상세 보이기",
  "cmd.session.tools.hide": "도구 상세 숨기기",
  "cmd.session.scrollbar": "세션 스크롤바 토글",
  "cmd.session.pointing": "폴더 고정",
  "cmd.session.pointing.description": "작업할 폴더를 선택하세요",
  "cmd.session.unpointing": "고정 해제",
  "cmd.session.unpointing.description": "고정된 폴더를 풀고 기본으로 돌아가요",
}

const ja: Record<string, string> = {
  "cmd.session.switch": "セッション切替",
  "cmd.session.new": "新規セッション",
  "cmd.model.switch": "モデル切替",
  "cmd.provider.connect": "プロバイダ接続",
  "cmd.provider.setup": "セットアップウィザード",
  "cmd.status.view": "ステータス表示",
  "cmd.session.pointing": "フォルダを固定",
  "cmd.session.unpointing": "固定解除",
}

const zh: Record<string, string> = {
  "cmd.session.switch": "切换会话",
  "cmd.session.new": "新建会话",
  "cmd.model.switch": "切换模型",
  "cmd.provider.connect": "连接提供商",
  "cmd.provider.setup": "设置向导",
  "cmd.status.view": "查看状态",
  "cmd.session.pointing": "固定文件夹",
  "cmd.session.unpointing": "取消固定",
}

const locales: Record<string, Record<string, string>> = { en, ko, ja, zh }

let current = "en"

export function setLocale(lang: string | undefined) {
  if (!lang) return
  const code = lang.split("-")[0]?.toLowerCase()
  if (locales[code]) current = code
  else if (locales[lang]) current = lang
}

export function t(key: string, fallback?: string): string {
  return locales[current]?.[key] ?? locales.en?.[key] ?? fallback ?? key
}

export function locale() {
  return current
}
