import type { TranslationMap } from "../lib/types.ts";

// Generated by scripts/control-ui-i18n.ts.
export const th: TranslationMap = {
  common: {
    health: "สถานะ",
    ok: "ตกลง",
    yes: "ใช่",
    no: "ไม่",
    active: "ใช้งานอยู่",
    loading: "กำลังโหลด…",
    refreshing: "กำลังรีเฟรช…",
    online: "ออนไลน์",
    offline: "ออฟไลน์",
    connect: "เชื่อมต่อ",
    connected: "เชื่อมต่อแล้ว",
    refresh: "รีเฟรช",
    reload: "โหลดใหม่",
    reset: "รีเซ็ต",
    probe: "ตรวจสอบ",
    call: "โทร",
    confirm: "ยืนยัน",
    cancel: "ยกเลิก",
    next: "ถัดไป",
    back: "ย้อนกลับ",
    create: "สร้าง",
    copy: "คัดลอก",
    copied: "คัดลอกแล้ว!",
    copyCode: "คัดลอกโค้ด",
    delete: "ลบ",
    dismiss: "ปิด",
    unselect: "ยกเลิกการเลือก",
    enabled: "เปิดใช้งาน",
    disabled: "ปิดใช้งาน",
    none: "ไม่มี",
    na: "n/a",
    never: "never",
    configured: "กำหนดค่าแล้ว",
    running: "กำลังทำงาน",
    linked: "เชื่อมโยงแล้ว",
    mode: "โหมด",
    system: "ระบบ",
    light: "ตื้น",
    dark: "มืด",
    baseUrl: "Base URL",
    lastStart: "เริ่มต้นล่าสุด",
    lastProbe: "ตรวจสอบล่าสุด",
    lastInbound: "ขาเข้าล่าสุด",
    lastConnect: "เชื่อมต่อล่าสุด",
    lastMessage: "ข้อความล่าสุด",
    authAge: "อายุการยืนยันตัวตน",
    credential: "ข้อมูลรับรอง",
    audience: "กลุ่มเป้าหมาย",
    publicKey: "Public Key",
    probeOk: "ตรวจสอบสำเร็จ",
    probeFailed: "ตรวจสอบล้มเหลว",
    reloadConfig: "โหลด Config ใหม่",
    loadConfig: "โหลด config",
    loadApprovals: "โหลด approvals",
    settingsSections: "ส่วนการตั้งค่า",
    version: "เวอร์ชัน",
    docs: "เอกสาร",
    theme: "ธีม",
    colorMode: "โหมดสี",
    colorModeOption: "โหมดสี: {mode}",
    resources: "ทรัพยากร",
    search: "ค้นหา",
    save: "บันทึก",
    saving: "กำลังบันทึก…",
    saveAndPublish: "บันทึกและเผยแพร่",
    importing: "กำลังนำเข้า…",
    importFromRelays: "นำเข้าจาก Relays",
    showAdvanced: "แสดงขั้นสูง",
    hideAdvanced: "ซ่อนขั้นสูง",
    unsavedChanges: "คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก",
    secondsAgo: "{count} วินาทีที่แล้ว",
    working: "กำลังดำเนินการ…",
    showQr: "แสดง QR",
    relink: "เชื่อมโยงใหม่",
    waitForScan: "รอการสแกน",
    logout: "ออกจากระบบ",
  },
  channels: {
    health: {
      title: "สถานะช่องทาง",
      subtitle: "ภาพรวมสถานะของช่องทางจากเกตเวย์",
      noSnapshotYet: "ยังไม่มีภาพรวมสถานะ",
    },
    generic: {
      subtitle: "สถานะและการกำหนดค่าของช่องทาง",
    },
    gatewayUrlConfirmation: {
      title: "เปลี่ยน Gateway URL",
      subtitle: "การดำเนินการนี้จะเชื่อมต่อใหม่ไปยังเซิร์ฟเวอร์เกตเวย์อื่น",
      warning: "ยืนยันเฉพาะเมื่อคุณเชื่อถือ URL นี้เท่านั้น URL ที่เป็นอันตรายอาจทำให้ระบบของคุณถูกโจมตีได้",
    },
    nostr: {
      profile: "โปรไฟล์",
      editProfile: "แก้ไขโปรไฟล์",
      profilePicture: "รูปโปรไฟล์",
      noProfile: "ยังไม่ได้ตั้งค่าโปรไฟล์",
      noProfileHint: 'คลิก "Edit Profile" เพื่อเพิ่มชื่อ ประวัติ และรูปโปรไฟล์ของคุณ',
      name: "ชื่อ",
      displayName: "ชื่อที่แสดง",
      about: "เกี่ยวกับ",
      advanced: "ขั้นสูง",
      profilePicturePreview: "ตัวอย่างรูปโปรไฟล์",
      account: "บัญชี",
      username: "ชื่อผู้ใช้",
      usernameHelp: "ชื่อผู้ใช้แบบสั้น (เช่น satoshi)",
      bio: "ประวัติ",
      bioPlaceholder: "บอกผู้คนเกี่ยวกับตัวคุณ...",
      bioHelp: "ประวัติโดยย่อหรือคำอธิบาย",
      displayNameHelp: "ชื่อที่แสดงแบบเต็มของคุณ",
      avatarUrl: "Avatar URL",
      avatarHelp: "URL HTTPS ไปยังรูปโปรไฟล์ของคุณ",
      bannerUrl: "Banner URL",
      bannerHelp: "URL HTTPS ไปยังรูปแบนเนอร์",
      website: "เว็บไซต์",
      websiteHelp: "เว็บไซต์ส่วนตัวของคุณ",
      nip05Identifier: "ตัวระบุ NIP-05",
      nip05Help: "ตัวระบุที่ตรวจสอบได้ (เช่น you@domain.com)",
      lightningAddress: "Lightning Address",
      lightningHelp: "ที่อยู่ Lightning สำหรับทิป (LUD-16)",
    },
  },
  lazyView: {
    loadingTitle: "กำลังโหลดแผง",
    errorTitle: "โหลดแผงไม่สำเร็จ",
    errorSubtitle: "โหลดหน้าใหม่เพื่อโหลดบันเดิล Control UI ล่าสุด หรือลองอีกครั้งหากคำขอเครือข่ายล้มเหลว",
    retry: "ลองอีกครั้ง",
    unknownError: "ข้อผิดพลาดในการโหลดโมดูลที่ไม่ทราบสาเหตุ",
  },
  nodes: {
    binding: {
      loadConfigHint: "โหลด config เพื่อแก้ไขการผูก",
      formModeHint: "สลับแท็บ Config เป็นโหมด Form เพื่อแก้ไขการผูกที่นี่",
      execNodeBinding: "การผูกโหนด exec",
      execNodeBindingSubtitle: "ปักหมุดเอเจนต์ไปยังโหนดที่ระบุเมื่อใช้ exec host=node",
      defaultBinding: "การผูกค่าเริ่มต้น",
      defaultBindingHint: "ใช้เมื่อเอเจนต์ไม่ได้แทนที่การผูกโหนด",
      node: "โหนด",
    },
  },
  instances: {
    title: "อินสแตนซ์ที่เชื่อมต่อ",
    subtitle: "สัญญาณแสดงสถานะจากเกตเวย์และไคลเอนต์",
    showHosts: "แสดงโฮสต์และ IP",
    hideHosts: "ซ่อนโฮสต์และ IP",
    toggleHostVisibility: "สลับการแสดงโฮสต์",
    noInstances: "ยังไม่มีการรายงานอินสแตนซ์",
    lastInput: "อินพุตล่าสุด {time}",
    reason: "เหตุผล {reason}",
  },
  sessionsView: {
    title: "เซสชัน",
    subtitle: "คีย์เซสชันที่ใช้งานอยู่และการแทนที่ต่อเซสชัน",
    store: "ที่เก็บ: {path}",
    active: "ใช้งานอยู่",
    limit: "ขีดจำกัด",
    filters: "ตัวกรอง",
    showFilters: "แสดงตัวกรอง",
    hideFilters: "ซ่อนตัวกรอง",
    sourceFilters: "ตัวกรองแหล่งที่มาของเซสชัน",
    global: "ส่วนกลาง",
    unknown: "ไม่ทราบ",
    showArchived: "แสดงที่เก็บถาวร",
    activeTooltip: "อัปเดตในช่วง {count} นาทีที่ผ่านมา",
    limitTooltip: "จำนวนเซสชันสูงสุดที่จะโหลด",
    globalTooltip: "รวมเซสชันส่วนกลาง",
    unknownTooltip: "รวมเซสชันที่ไม่รู้จัก",
    showArchivedTooltip: "รวมเซสชันที่เก็บถาวร",
    minutesPlaceholder: "นาที",
    searchPlaceholder: "กรองตามคีย์, agent, ป้ายกำกับ, ชนิด…",
    selected: "เลือกแล้ว {count} รายการ",
    deleteSelected: "ลบ",
    selectAllOnPage: "เลือกทั้งหมดในหน้านี้",
    selectSession: "เลือกเซสชัน",
    optionalPlaceholder: "(ไม่บังคับ)",
    key: "คีย์",
    label: "ป้ายกำกับ",
    kind: "ชนิด",
    updated: "อัปเดตแล้ว",
    tokens: "โทเค็น",
    compaction: "การบีบอัด",
    thinking: "Thinking",
    fast: "เร็ว",
    verbose: "ละเอียด",
    reasoning: "การให้เหตุผล",
    noSessions: "ไม่พบเซสชัน",
    noSessionsMatchFilters: "ไม่มีเซสชันที่ตรงกับตัวกรองของคุณ",
    showAll: "แสดงทั้งหมด",
    inherit: "สืบทอด",
    defaultOption: "ค่าเริ่มต้น ({value})",
    offExplicit: "ปิด (ระบุชัดเจน)",
    on: "เปิด",
    off: "ปิด",
    full: "เต็ม",
    stream: "สตรีม",
    customOption: "{value} (กำหนดเอง)",
    manual: "ด้วยตนเอง",
    autoThreshold: "เกณฑ์อัตโนมัติ",
    overflowRetry: "ลองใหม่เมื่อเกินขีดจำกัด",
    timeoutRetry: "ลองใหม่เมื่อหมดเวลา",
    tokenRange: "{before} to {after} โทเค็น",
    tokensBefore: "{count} โทเค็นก่อนหน้า",
    tokenDeltaUnavailable: "ไม่สามารถแสดงส่วนต่างของโทเค็นได้",
    checkpoints: "{count} เช็กพอยต์",
    checkpoint: "{count} เช็กพอยต์",
    showSessionDetails: "แสดงรายละเอียดเซสชันสำหรับ {count}",
    hideSessionDetails: "ซ่อนรายละเอียดเซสชันสำหรับ {count}",
    sessionDetails: "รายละเอียดเซสชัน",
    compactionHistory: "ประวัติการบีบอัด",
    status: "สถานะ",
    statusLive: "สด",
    statusIdle: "ไม่ได้ใช้งาน",
    statusUnknown: "ไม่ทราบ",
    statusRunning: "กำลังทำงาน",
    statusDone: "เสร็จสิ้น",
    statusFailed: "ล้มเหลว",
    statusKilled: "ถูกยุติ",
    statusTimeout: "หมดเวลา",
    model: "Model",
    provider: "Provider",
    runtime: "รันไทม์",
    surface: "พื้นผิว",
    subject: "หัวข้อ",
    room: "ห้อง",
    space: "พื้นที่",
    sessionId: "รหัสเซสชัน",
    activeRun: "การเรียกใช้งานที่ใช้งานอยู่",
    archived: "เก็บถาวรแล้ว",
    loadingCheckpoints: "กำลังโหลดเช็กพอยต์…",
    noCheckpoints: "ไม่มีเช็กพอยต์การบีบอัดที่บันทึกไว้สำหรับเซสชันนี้",
    noSummary: "ไม่มีสรุปที่บันทึกไว้",
    branchFromCheckpoint: "แตกแขนงจากเช็กพอยต์",
    restoreCheckpoint: "กู้คืนเช็กพอยต์",
  },
  agents: {
    noAgents: "No agents",
    copyId: "Copy ID",
    copyIdTitle: "Copy agent ID to clipboard",
    default: "Default",
    setDefault: "Set Default",
    alreadyDefaultTitle: "Already the default agent",
    setDefaultTitle: "Set as the default agent",
    selectTitle: "Select an agent",
    selectSubtitle: "Pick an agent to inspect its workspace and tools.",
    tabs: {
      overview: "ภาพรวม",
      files: "ไฟล์",
      tools: "Tools",
      skills: "ทักษะ",
      channels: "ช่องทาง",
      cronJobs: "งาน Cron",
    },
    context: {
      title: "Agent Context",
      workspace: "Workspace",
      openFilesTab: "Open Files tab",
      primaryModel: "Primary Model",
      runtime: "รันไทม์",
      identityName: "Identity Name",
      identityAvatar: "Identity Avatar",
      skillsFilter: "Skills Filter",
      default: "Default",
      configurationSubtitle: "Workspace, identity, and model configuration.",
      schedulingSubtitle: "Workspace and scheduling targets.",
    },
    channels: {
      title: "ช่องทาง",
      subtitle: "Gateway-wide channel status snapshot.",
      lastRefresh: "Last refresh: {time}",
      loadHint: "Load channels to see live status.",
      empty: "No channels found.",
      connectedCount: "{connected}/{total} connected",
      noAccounts: "no accounts",
      configuredCount: "{count} configured",
      notConfigured: "not configured",
      enabledCount: "{count} enabled",
      setupGuide: "Setup guide",
    },
    cronPanel: {
      schedulerTitle: "Scheduler",
      schedulerSubtitle: "Gateway cron status.",
      jobs: "งาน",
      nextWake: "ปลุกครั้งถัดไป",
      agentJobsTitle: "Agent Cron Jobs",
      agentJobsSubtitle: "Scheduled jobs targeting this agent.",
      noJobs: "No jobs assigned.",
      runNow: "Run Now",
    },
    files: {
      emptyDraft: "Empty draft",
      minRead: "{count} min read",
      markdownPreview: "Markdown Preview",
      extensionPreview: "{ext} Preview",
      preview: "Preview",
      expandPreview: "Expand preview",
      collapsePreview: "Collapse preview",
      editFile: "Edit file",
      closePreview: "Close preview",
      coreFilesTitle: "Core Files",
      coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.",
      workspace: "Workspace",
      loadHint: "Load the agent workspace files to edit core instructions.",
      empty: "No files found.",
      missing: "missing",
      selectFile: "Select a file to edit.",
      previewMarkdownTitle: "Preview rendered markdown",
      willCreateOnSave: "Will Create on Save",
      liveDraftPreview: "Live Draft Preview",
      savedPreview: "Saved Preview",
      updated: "Updated {time}",
      notCreatedYet: "Not Created Yet",
      updatedUnknown: "Updated Unknown",
      missingHint: "This file is missing. Saving will create it in the agent workspace.",
      content: "Content",
      words: "{count} words",
      lines: "lines",
    },
  },
  debug: {
    snapshotsTitle: "Snapshots",
    snapshotsSubtitle: "Status, health, and heartbeat data.",
    status: "สถานะ",
    health: "สถานะ",
    lastHeartbeat: "Last heartbeat",
    security: {
      audit: "Security audit",
      critical: "{count} critical",
      warnings: "{count} warnings",
      noCriticalIssues: "No critical issues",
      info: "{count} info",
      runPrefix: "รัน",
      runSuffix: "for details.",
    },
    manualRpcTitle: "Manual RPC",
    manualRpcSubtitle: "Send a raw gateway method with JSON params.",
    method: "Method",
    selectMethod: "Select a method…",
    paramsJson: "Params (JSON)",
    modelsTitle: "Models",
    modelsSubtitle: "Catalog from models.list.",
    eventLogTitle: "บันทึกเหตุการณ์",
    eventLogSubtitle: "Latest gateway events.",
    noEvents: "No events yet.",
  },
  quickSettings: {
    security: {
      browserEnabled: "Browser enabled",
      toolProfile: "Tool profile",
    },
  },
  execApproval: {
    expiresIn: "expires in {time}",
    expired: "expired",
    execApprovalNeeded: "Exec approval needed",
    pluginApprovalNeeded: "Plugin approval needed",
    pending: "{count} pending",
    allowOnce: "Allow once",
    alwaysAllow: "Always allow",
    deny: "Deny",
    labels: {
      host: "Host",
      agent: "เอเจนต์",
      session: "เซสชัน",
      cwd: "CWD",
      resolved: "Resolved",
      security: "Security",
      ask: "Ask",
      severity: "Severity",
      plugin: "Plugin",
    },
  },
  agentTools: {
    connectedSource: "เชื่อมต่อแล้ว: {id}",
    connected: "เชื่อมต่อแล้ว",
    channelSource: "ช่องทาง: {id}",
    channel: "ช่องทาง",
    builtIn: "มีมาในระบบ",
  },
  nav: {
    chat: "แชต",
    control: "ควบคุม",
    agent: "เอเจนต์",
    settings: "การตั้งค่า",
    expand: "ขยายแถบด้านข้าง",
    collapse: "ย่อแถบด้านข้าง",
    resize: "ปรับขนาดแถบด้านข้าง",
  },
  tabs: {
    agents: "เอเจนต์",
    overview: "ภาพรวม",
    channels: "ช่องทาง",
    instances: "อินสแตนซ์",
    sessions: "เซสชัน",
    usage: "การใช้งาน",
    cron: "งาน Cron",
    skills: "ทักษะ",
    nodes: "โหนด",
    chat: "แชต",
    config: "Config",
    communications: "การสื่อสาร",
    appearance: "ลักษณะที่ปรากฏ",
    automation: "ระบบอัตโนมัติ",
    infrastructure: "โครงสร้างพื้นฐาน",
    aiAgents: "AI และเอเจนต์",
    debug: "ดีบัก",
    logs: "บันทึก",
    dreams: "การฝัน",
  },
  subtitles: {
    agents: "เวิร์กสเปซ เครื่องมือ และข้อมูลประจำตัว",
    overview: "สถานะ จุดเข้าใช้งาน และความพร้อมใช้งาน",
    channels: "ช่องทางและการตั้งค่า",
    instances: "ไคลเอนต์และโหนดที่เชื่อมต่อ",
    sessions: "เซสชันที่ใช้งานอยู่และค่าเริ่มต้น",
    usage: "การใช้งาน API และค่าใช้จ่าย",
    cron: "การปลุกและการทำงานตามรอบ",
    skills: "ทักษะและคีย์ API",
    nodes: "อุปกรณ์ที่จับคู่และคำสั่ง",
    chat: "แชตเกตเวย์สำหรับการดำเนินการอย่างรวดเร็ว",
    config: "แก้ไข openclaw.json",
    communications: "ช่องทาง ข้อความ และการตั้งค่าเสียง",
    appearance: "ธีม UI และการตั้งค่าตัวช่วยเริ่มต้น",
    automation: "คำสั่ง hooks cron และ plugins",
    infrastructure: "การตั้งค่าเกตเวย์ เว็บ เบราว์เซอร์ และสื่อ",
    aiAgents: "เอเจนต์ โมเดล ทักษะ เครื่องมือ หน่วยความจำ เซสชัน",
    debug: "สแนปช็อต เหตุการณ์ และ RPC",
    logs: "บันทึกเกตเวย์แบบสด",
    dreams: "การฝันของหน่วยความจำ การรวมข้อมูล และการสะท้อนคิด",
  },
  overview: {
    access: {
      title: "การเข้าถึงเกตเวย์",
      subtitle: "ตำแหน่งที่แดชบอร์ดเชื่อมต่อและวิธีการยืนยันตัวตน",
      wsUrl: "WebSocket URL",
      token: "Gateway Token",
      password: "รหัสผ่าน (ไม่จัดเก็บ)",
      passwordPlaceholder: "รหัสผ่านของระบบหรือรหัสผ่านที่ใช้ร่วมกัน",
      sessionKey: "Session Key เริ่มต้น",
      language: "ภาษา",
      connectHint: "คลิก Connect เพื่อใช้การเปลี่ยนแปลงการเชื่อมต่อ",
      trustedProxy: "ยืนยันตัวตนผ่านพร็อกซีที่เชื่อถือได้",
      showToken: "แสดงโทเค็น",
      hideToken: "ซ่อนโทเค็น",
      toggleTokenVisibility: "สลับการแสดงโทเค็น",
      showPassword: "แสดงรหัสผ่าน",
      hidePassword: "ซ่อนรหัสผ่าน",
      togglePasswordVisibility: "สลับการแสดงรหัสผ่าน",
    },
    snapshot: {
      title: "ภาพรวมสถานะ",
      subtitle: "ข้อมูลการจับมือกับเกตเวย์ล่าสุด",
      status: "สถานะ",
      uptime: "เวลาทำงาน",
      tickInterval: "ช่วงเวลา Tick",
      lastChannelsRefresh: "รีเฟรช Channels ล่าสุด",
      channelsHint: "ใช้ Channels เพื่อเชื่อมโยง WhatsApp, Telegram, Discord, Signal หรือ iMessage",
    },
    stats: {
      instances: "อินสแตนซ์",
      instancesHint: "สัญญาณแสดงสถานะในช่วง 5 นาทีล่าสุด",
      sessions: "เซสชัน",
      sessionsHint: "คีย์เซสชันล่าสุดที่เกตเวย์ติดตาม",
      cron: "Cron",
      cronNext: "ปลุกครั้งถัดไป {time}",
    },
    notes: {
      title: "บันทึก",
      subtitle: "การเตือนความจำอย่างรวดเร็วสำหรับการตั้งค่าควบคุมระยะไกล",
      tailscaleTitle: "Tailscale serve",
      tailscaleText: "ควรใช้โหมด serve เพื่อให้เกตเวย์อยู่บน loopback พร้อมการยืนยันตัวตนผ่าน tailnet",
      sessionTitle: "สุขอนามัยของเซสชัน",
      sessionText: "ใช้ /new หรือ sessions.patch เพื่อรีเซ็ตบริบท",
      cronTitle: "การเตือนความจำของ Cron",
      cronText: "ใช้เซสชันแบบแยกสำหรับการทำงานตามรอบ",
    },
    auth: {
      required: "เกตเวย์นี้ต้องมีการยืนยันตัวตน เพิ่มโทเค็นหรือรหัสผ่าน แล้วคลิก Connect",
      failed: "การยืนยันตัวตนล้มเหลว คัดลอก URL ที่มีโทเค็นอีกครั้งด้วย {command} หรืออัปเดตโทเค็น แล้วคลิก Connect",
    },
    pairing: {
      hint: "อุปกรณ์นี้ต้องได้รับการอนุมัติการจับคู่จากโฮสต์เกตเวย์",
      scopeUpgradeTitle: "การอัปเกรดขอบเขตรอการอนุมัติ",
      scopeUpgradeSummary: "อุปกรณ์นี้จับคู่แล้ว แต่ขอบเขตที่กว้างขึ้นตามที่ร้องขอกำลังรอการอนุมัติ",
      roleUpgradeTitle: "การอัปเกรดบทบาทรอการอนุมัติ",
      roleUpgradeSummary: "อุปกรณ์นี้จับคู่แล้ว แต่การเปลี่ยนแปลงบทบาทที่ร้องขอกำลังรอการอนุมัติ",
      metadataUpgradeTitle: "การเปลี่ยนแปลงข้อมูลเมตาของอุปกรณ์รอการอนุมัติ",
      metadataUpgradeSummary: "อุปกรณ์นี้จับคู่แล้ว แต่การเปลี่ยนแปลงข้อมูลเมตากำลังรอการอนุมัติ",
      mobileHint:
        "ใช้งานบนมือถืออยู่หรือไม่? คัดลอก URL แบบเต็ม (รวม #token=...) จาก openclaw dashboard --no-open บนเดสก์ท็อปของคุณ",
      docsTitle: "เอกสารการจับคู่อุปกรณ์ (เปิดในแท็บใหม่)",
      docsLink: "เอกสาร: การจับคู่อุปกรณ์",
    },
    insecure: {
      hint: "หน้านี้เป็น HTTP ดังนั้นเบราว์เซอร์จึงบล็อกข้อมูลประจำตัวของอุปกรณ์ ใช้ HTTPS (Tailscale Serve) หรือเปิด {url} บนโฮสต์เกตเวย์",
      stayHttp: "หากจำเป็นต้องใช้ HTTP ต่อไป ให้ตั้งค่า {config} (ใช้โทเค็นเท่านั้น)",
    },
    connection: {
      title: "วิธีเชื่อมต่อ",
      step1: "เริ่มเกตเวย์บนเครื่องโฮสต์ของคุณ:",
      step2: "รับ URL แดชบอร์ดที่มีโทเค็น:",
      step3: "วาง WebSocket URL และโทเค็นด้านบน หรือเปิด URL ที่มีโทเค็นโดยตรง",
      step4: "หรือสร้างโทเค็นที่ใช้ซ้ำได้:",
      docsHint: "สำหรับการเข้าถึงระยะไกล แนะนำให้ใช้ Tailscale Serve ",
      docsLink: "อ่านเอกสาร →",
      authDocsTitle: "เอกสารการยืนยันตัวตนของ Control UI (เปิดในแท็บใหม่)",
      authDocsLink: "เอกสาร: การยืนยันตัวตนของ Control UI",
      tailscaleDocsTitle: "เอกสาร Tailscale Serve (เปิดในแท็บใหม่)",
      tailscaleDocsLink: "เอกสาร: Tailscale Serve",
      insecureHttpDocsTitle: "เอกสาร HTTP ที่ไม่ปลอดภัย (เปิดในแท็บใหม่)",
      insecureHttpDocsLink: "เอกสาร: HTTP ที่ไม่ปลอดภัย",
      copyCommand: "คัดลอกคำสั่ง",
      copyCommandAria: "คัดลอกคำสั่ง: {command}",
    },
    cards: {
      cost: "ค่าใช้จ่าย",
      skills: "ทักษะ",
      recentSessions: "เซสชันล่าสุด",
      modelAuth: "การยืนยันตัวตนของโมเดล",
      modelAuthOk: "{count} ใช้งานได้",
      modelAuthExpired: "{count} หมดอายุแล้ว",
      modelAuthExpiring: "{count} ใกล้หมดอายุ",
      modelAuthProviders: "{count} ผู้ให้บริการ",
      modelAuthUsageLeft: "เหลือ {pct}%",
      modelAuthExpiresIn: "หมดอายุ {when}",
      modelAuthAttentionExpiredTitle: "การยืนยันตัวตนของโมเดลหมดอายุแล้ว",
      modelAuthAttentionExpiringTitle: "การยืนยันตัวตนของโมเดลกำลังจะหมดอายุเร็ว ๆ นี้",
      modelAuthAttentionExpiredDesc: "{providers} — ยืนยันตัวตนใหม่ด้วย openclaw models auth",
      modelAuthAttentionExpiringEntry: "{provider} ({when})",
    },
    attention: {
      title: "ต้องให้ความสนใจ",
    },
    eventLog: {
      title: "บันทึกเหตุการณ์",
    },
    logTail: {
      title: "บันทึกเกตเวย์",
    },
    quickActions: {
      newSession: "เซสชันใหม่",
      automation: "ระบบอัตโนมัติ",
      refreshAll: "รีเฟรชทั้งหมด",
      terminal: "เทอร์มินัล",
    },
    palette: {
      placeholder: "พิมพ์คำสั่ง…",
      noResults: "ไม่พบผลลัพธ์",
      categories: {
        search: "ค้นหา",
        navigation: "การนำทาง",
        skills: "ทักษะ",
      },
      items: {
        overview: "ภาพรวม",
        sessions: "เซสชัน",
        scheduled: "กำหนดเวลาแล้ว",
        skills: "ทักษะ",
        settings: "การตั้งค่า",
        agents: "เอเจนต์",
        shellCommand: "คำสั่งเชลล์",
        debugMode: "โหมดดีบัก",
      },
      descriptions: {
        shellCommand: "เรียกใช้เชลล์",
        debugMode: "สลับดีบัก",
      },
      footer: {
        navigate: "นำทาง",
        select: "เลือก",
        close: "ปิด",
      },
    },
  },
  dreaming: {
    tabs: {
      scene: "ฉาก",
      diary: "ไดอารี",
      advanced: "ขั้นสูง",
    },
    header: {
      refresh: "รีเฟรช",
      refreshing: "กำลังรีเฟรช…",
      on: "เปิดการฝัน",
      off: "ปิดการฝัน",
    },
    restartConfirmation: {
      title: "รีสตาร์ท Gateway เพื่อใช้การเปลี่ยนแปลง",
      subtitle: "การเปลี่ยนโหมด Dreaming จะรีสตาร์ท Gateway",
      warning:
        "การดำเนินการนี้จะรีสตาร์ท Gateway และอาจทำให้แชต ระบบอัตโนมัติ และช่องทางที่เชื่อมต่อหยุดชะงักชั่วคราว",
      confirm: "ยืนยันการรีสตาร์ท",
      restarting: "กำลังรีสตาร์ท…",
      failed: "ไม่สามารถใช้การเปลี่ยนแปลงได้ ตรวจสอบการเชื่อมต่อของคุณแล้วลองอีกครั้ง",
    },
    status: {
      active: "การฝันกำลังทำงาน",
      idle: "การฝันไม่ได้ทำงาน",
      promotedSuffix: "เลื่อนระดับแล้ว",
      nextSweepPrefix: "กวาดครั้งถัดไป",
    },
    scene: {
      backfill: "เติมข้อมูลย้อนหลัง",
      dedupeDiary: "ลบรายการซ้ำในไดอารี",
      reset: "รีเซ็ต",
      clearGrounded: "ล้างที่เล่นซ้ำแล้ว",
      repairCache: "ซ่อมแซม Dream Cache",
      working: "กำลังดำเนินการ…",
    },
    phase: {
      light: "ตื้น",
      deep: "ลึก",
      rem: "REM",
      off: "ปิด",
    },
    advanced: {
      eyebrow: "ตรวจสอบ",
      title: "การตรวจสอบบันทึกประจำวัน",
      description: "ตรวจสอบสิ่งที่มาจากบันทึกประจำวัน สิ่งที่กำลังรอการเลื่อนระดับ และสิ่งที่เพิ่งได้รับการเลื่อนระดับล่าสุด",
      summaryFromDailyLog: "จากบันทึกประจำวัน",
      summaryWaiting: "กำลังรอ",
      summaryPromotedToday: "เลื่อนระดับวันนี้",
      stagedTitle: "จากบันทึกประจำวัน",
      stagedDescription: "ผู้สมัครสำหรับการเล่นซ้ำที่ดึงมาจากรายการบันทึกประจำวันเก่า",
      shortTermTitle: "กำลังรอการเลื่อนระดับ",
      shortTermDescription: "ผู้สมัครระยะสั้นปัจจุบันที่กำลังรอพัฒนาเป็นความทรงจำจริง",
      sortRecent: "ล่าสุด",
      sortSignals: "การสนับสนุนที่แข็งแกร่งที่สุด",
      originDailyLog: "เล่นซ้ำแล้ว",
      originLive: "สด",
      originMixed: "ผสม",
      promotedTitle: "การเลื่อนระดับล่าสุด",
      promotedDescription: "รายการที่ผ่านการเลื่อนระดับแล้ว",
      emptyGrounded: "ขณะนี้ยังไม่มีรายการเล่นซ้ำแบบ grounded ที่จัดเตรียมไว้",
      emptyShortTerm: "ไม่มีรายการระยะสั้นให้ตรวจสอบ",
      emptyPromoted: "ไม่มีการเลื่อนระดับล่าสุดให้ตรวจสอบ",
      updatedPrefix: "อัปเดต",
    },
    stats: {
      shortTerm: "ระยะสั้น",
      grounded: "Grounded",
      signals: "สัญญาณ",
      promoted: "เลื่อนระดับแล้ว",
      phaseHits: "การตรงกับเฟส",
    },
    trace: {
      shortTerm: "ระยะสั้น",
      grounded: "Grounded",
      signals: "สัญญาณ",
      promoted: "เลื่อนระดับแล้ว",
      groundedLed: "นำโดย grounded",
      emptyShortTerm: "ไม่มีรายการระยะสั้นที่ใช้งานอยู่",
      emptyGrounded: "ไม่มีรายการ grounded ที่จัดเตรียมไว้",
      emptySignals: "ไม่มีสัญญาณที่ใช้งานอยู่",
      emptyPromoted: "ยังไม่มีสิ่งใดได้รับการเลื่อนระดับในวันนี้",
    },
    diary: {
      title: "ไดอารีความฝัน",
      noDreamsYet: "ยังไม่มีความฝัน",
      noDreamsHint: "ความฝันจะแสดงที่นี่หลังจากรอบการฝันครั้งแรกทำงานเสร็จ",
      waitingTitle: "ไดอารีกำลังรออยู่",
      waitingHint: "รายการบันทึกเชิงบรรยายจะแสดงหลังจากรอบการฝันถัดไป",
      older: "เก่ากว่า",
      newer: "ใหม่กว่า",
      reload: "โหลดใหม่",
      reloading: "กำลังโหลดใหม่…",
    },
    phrases: {
      consolidatingMemories: "กำลังรวมความทรงจำ…",
      tidyingKnowledgeGraph: "กำลังจัดระเบียบกราฟความรู้…",
      replayingConversations: "กำลังเล่นซ้ำบทสนทนาของวันนี้…",
      weavingShortTerm: "กำลังถักทอความจำระยะสั้นเป็นระยะยาว…",
      defragmentingMindPalace: "กำลังจัดเรียง mind palace ใหม่…",
      filingLooseThoughts: "กำลังจัดเก็บความคิดที่กระจัดกระจาย…",
      connectingDots: "กำลังเชื่อมโยงจุดที่ห่างไกล…",
      compostingContext: "กำลังย่อยสลายหน้าต่างบริบทเก่า…",
      alphabetizingSubconscious: "กำลังเรียงจิตใต้สำนึกตามตัวอักษร…",
      promotingHunches: "กำลังเลื่อนระดับลางสังหรณ์ที่มีแวว…",
      forgettingNoise: "กำลังลืมสิ่งที่ไม่สำคัญ…",
      dreamingEmbeddings: "กำลังฝันใน embeddings…",
      reorganizingAttic: "กำลังจัดระเบียบห้องใต้หลังคาแห่งความทรงจำ…",
      indexingDay: "กำลังจัดทำดัชนีของวันอย่างแผ่วเบา…",
      nurturingInsights: "กำลังบ่มเพาะความเข้าใจที่เพิ่งก่อตัว…",
      simmeringIdeas: "กำลังเคี่ยวความคิดที่ยังไม่เป็นรูปเป็นร่าง…",
      whisperingVectorStore: "กำลังกระซิบกับ vector store…",
    },
  },
  usage: {
    common: {
      emptyValue: "—",
      unknown: "ไม่ทราบ",
    },
    loading: {
      title: "ภาพรวมการใช้งาน",
      badge: "กำลังโหลด",
    },
    metrics: {
      tokens: "โทเค็น",
      cost: "ค่าใช้จ่าย",
      session: "เซสชัน",
      sessions: "เซสชัน",
    },
    presets: {
      today: "วันนี้",
      last7d: "7 วัน",
      last30d: "30 วัน",
      last90d: "90d",
      last1y: "1y",
      all: "ทั้งหมด",
    },
    scope: {
      instance: "อินสแตนซ์ปัจจุบัน",
      instanceHint: "แสดงเฉพาะ ID เซสชันที่ใช้งานอยู่สำหรับแต่ละเซสชันเชิงตรรกะ",
      family: "ลำดับสายประวัติ",
      familyHint: "รวม ID เซสชันที่ทราบซึ่งอิงตามทรานสคริปต์และถูกหมุนเวียน",
      familyIncluded: "ลำดับสายประวัติมีอินสแตนซ์เซสชัน {count} รายการ",
    },
    filters: {
      title: "ตัวกรอง",
      to: "ถึง",
      startDate: "วันที่เริ่มต้น",
      endDate: "วันที่สิ้นสุด",
      timeZone: "เขตเวลา",
      timeZoneLocal: "ท้องถิ่น",
      timeZoneUtc: "UTC",
      pin: "ปักหมุด",
      pinned: "ปักหมุดแล้ว",
      unpin: "เลิกปักหมุดตัวกรอง",
      selectAll: "เลือกทั้งหมด",
      clear: "ล้าง",
      clearAll: "ล้างทั้งหมด",
      remove: "ลบตัวกรอง",
      all: "ทั้งหมด",
      days: "วัน",
      hours: "ชั่วโมง",
      session: "เซสชัน",
      agent: "เอเจนต์",
      channel: "ช่องทาง",
      provider: "Provider",
      model: "Model",
      tool: "Tool",
      daysCount: "{count} วัน",
      hoursCount: "{count} ชั่วโมง",
      sessionsCount: "{count} เซสชัน",
    },
    query: {
      placeholder: "กรองเซสชัน (เช่น key:agent:main:cron* model:gpt-4o has:errors minTokens:2000)",
      apply: "กรอง (ฝั่งไคลเอนต์)",
      matching: "ตรงกัน {shown} จาก {total} เซสชัน",
      inRange: "{total} เซสชันในช่วงนี้",
      tip: "เคล็ดลับ: ใช้ตัวกรองหรือคลิกแท่งกราฟเพื่อปรับช่วงวันให้ละเอียดขึ้น",
    },
    export: {
      label: "ส่งออก",
      sessionsCsv: "เซสชัน CSV",
      dailyCsv: "CSV รายวัน",
      json: "JSON",
    },
    cacheStatus: {
      warning: "แคชการใช้งานกำลังสร้างใหม่ในเบื้องหลัง ยอดรวมที่แสดงอาจไม่เป็นปัจจุบัน",
      title: "{status}: ค้างอยู่ {pending}, ล้าสมัย {stale}, แคชแล้ว {cached}",
      status: {
        refreshing: "กำลังรีเฟรช",
        stale: "ล้าสมัย",
        partial: "บางส่วน",
      },
    },
    empty: {
      title: "เริ่มต้นด้วยช่วงวันที่",
      subtitle:
        "โหลดข้อมูลการใช้งานเพื่อเปรียบเทียบค่าใช้จ่าย ตรวจสอบเซสชัน และเจาะลึกไทม์ไลน์ได้โดยไม่ต้องออกจากแดชบอร์ด",
      hint: "เลือกช่วงวันที่แล้วคลิก Refresh เพื่อโหลดข้อมูลการใช้งาน",
      noData: "ไม่มีข้อมูล",
      featureOverview: "การ์ดภาพรวม",
      featureSessions: "การจัดอันดับเซสชัน",
      featureTimeline: "เจาะลึกไทม์ไลน์",
    },
    daily: {
      title: "การใช้งานรายวัน",
      total: "รวม",
      byType: "ตามประเภท",
      tokensTitle: "การใช้โทเค็นรายวัน",
      costTitle: "ค่าใช้จ่ายรายวัน",
    },
    breakdown: {
      output: "เอาต์พุต",
      input: "อินพุต",
      cacheWrite: "การเขียน Cache",
      cacheRead: "การอ่าน Cache",
      total: "รวม",
      tokensByType: "โทเค็นตามประเภท",
      costByType: "ค่าใช้จ่ายตามประเภท",
    },
    overview: {
      title: "ภาพรวมการใช้งาน",
      messages: "ข้อความ",
      messagesHint: "จำนวนข้อความของผู้ใช้และผู้ช่วยทั้งหมดในช่วงที่เลือก",
      messagesAbbrev: "ข้อความ",
      user: "ผู้ใช้",
      assistant: "ผู้ช่วย",
      toolCalls: "การเรียกใช้ Tool",
      toolCallsHint: "จำนวนการเรียกใช้ tool ทั้งหมดในทุกเซสชัน",
      toolsUsed: "tools ที่ใช้",
      errors: "ข้อผิดพลาด",
      errorsHint: "จำนวนข้อผิดพลาดของข้อความและ tool ทั้งหมดในช่วงที่เลือก",
      toolResults: "ผลลัพธ์ของ tool",
      avgTokens: "โทเค็นเฉลี่ย / ข้อความ",
      avgTokensHint: "จำนวนโทเค็นเฉลี่ยต่อข้อความในช่วงนี้",
      avgCost: "ค่าใช้จ่ายเฉลี่ย / ข้อความ",
      avgCostHint: "ค่าใช้จ่ายเฉลี่ยต่อข้อความเมื่อผู้ให้บริการรายงานค่าใช้จ่าย",
      avgCostHintMissing:
        "ค่าใช้จ่ายเฉลี่ยต่อข้อความเมื่อผู้ให้บริการรายงานค่าใช้จ่าย ข้อมูลค่าใช้จ่ายขาดหายไปสำหรับบางหรือทุกเซสชันในช่วงนี้",
      acrossMessages: "จาก {count} ข้อความ",
      sessions: "เซสชัน",
      sessionsHint: "เซสชันที่ไม่ซ้ำกันในช่วงที่เลือก",
      sessionsInRange: "จาก {count} ในช่วงนี้",
      throughput: "อัตราการประมวลผล",
      throughputHint: "อัตราการประมวลผลแสดงโทเค็นต่อนาทีในช่วงเวลาที่ใช้งาน ยิ่งสูงยิ่งดี",
      tokensPerMinute: "tok/min",
      perMinute: "/ นาที",
      errorRate: "อัตราข้อผิดพลาด",
      errorHint: "อัตราข้อผิดพลาด = ข้อผิดพลาด / ข้อความทั้งหมด ยิ่งต่ำยิ่งดี",
      avgSession: "เซสชันเฉลี่ย",
      cacheHitRate: "อัตราการใช้งานแคชสำเร็จ",
      cacheHint: "อัตราการใช้งานแคชสำเร็จ = การอ่านแคช / (อินพุต + การอ่านแคช) ยิ่งสูงยิ่งดี",
      cached: "แคชแล้ว",
      prompt: "พรอมป์ต์",
      calls: "การเรียก",
      topModels: "โมเดลยอดนิยม",
      topProviders: "ผู้ให้บริการยอดนิยม",
      topTools: "Tool ยอดนิยม",
      topAgents: "เอเจนต์ยอดนิยม",
      topChannels: "ช่องทางยอดนิยม",
      peakErrorDays: "วันที่เกิดข้อผิดพลาดสูงสุด",
      peakErrorHours: "ชั่วโมงที่เกิดข้อผิดพลาดสูงสุด",
      noModelData: "ไม่มีข้อมูลโมเดล",
      noProviderData: "ไม่มีข้อมูลผู้ให้บริการ",
      noToolCalls: "ไม่มีการเรียกใช้ Tool",
      noAgentData: "ไม่มีข้อมูลเอเจนต์",
      noChannelData: "ไม่มีข้อมูลช่องทาง",
      noErrorData: "ไม่มีข้อมูลข้อผิดพลาด",
    },
    sessions: {
      title: "เซสชัน",
      shown: "แสดง {count}",
      total: "ทั้งหมด {count}",
      avg: "เฉลี่ย",
      all: "ทั้งหมด",
      recent: "ดูล่าสุด",
      recentShort: "ล่าสุด",
      sort: "เรียงลำดับ",
      ascending: "น้อยไปมาก",
      descending: "มากไปน้อย",
      clearSelection: "ล้างการเลือก",
      noRecent: "ไม่มีเซสชันล่าสุด",
      noneInRange: "ไม่มีเซสชันในช่วงนี้",
      more: "อีก +{count}",
      selected: "เลือกแล้ว ({count})",
      copy: "คัดลอก",
      copyName: "คัดลอกชื่อเซสชัน",
      limitReached: "กำลังแสดง 1,000 เซสชันแรก จำกัดช่วงวันที่ให้แคบลงเพื่อดูผลลัพธ์ทั้งหมด",
    },
    details: {
      noUsageData: "ไม่มีข้อมูลการใช้งานสำหรับเซสชันนี้",
      duration: "ระยะเวลา",
      modelMix: "สัดส่วนโมเดล",
      filtered: "(กรองแล้ว)",
      close: "ปิดรายละเอียดเซสชัน",
      noTimeline: "ไม่มีข้อมูลไทม์ไลน์",
      noDataInRange: "ไม่มีข้อมูลในช่วงนี้",
      usageOverTime: "การใช้งานตามเวลา",
      reset: "รีเซ็ต",
      perTurn: "ต่อเทิร์น",
      cumulative: "สะสม",
      turnRange: "เทิร์น {start}–{end} จาก {total}",
      assistantOutputTokens: "โทเค็นเอาต์พุตของผู้ช่วย",
      userToolInputTokens: "โทเค็นอินพุตของผู้ใช้ + tool",
      tokensWrittenToCache: "โทเค็นที่เขียนลงแคช",
      tokensReadFromCache: "โทเค็นที่อ่านจากแคช",
      noContextData: "ไม่มีข้อมูลบริบท",
      systemPromptBreakdown: "รายละเอียดพรอมป์ต์ระบบ",
      collapse: "ยุบ",
      collapseAll: "ยุบทั้งหมด",
      expandAll: "ขยายทั้งหมด",
      baseContextPerMessage: "บริบทพื้นฐานต่อข้อความ",
      system: "ระบบ",
      systemShort: "ระบบ",
      skills: "ทักษะ",
      tools: "Tools",
      files: "ไฟล์",
      ofInput: "ของอินพุต",
      of: "ของ",
      timelineFiltered: "กรองไทม์ไลน์แล้ว",
      conversation: "บทสนทนา",
      noMessages: "ไม่มีข้อความ",
      tool: "Tool",
      toolResult: "ผลลัพธ์ของ Tool",
      hasTools: "มี tools",
      searchConversation: "ค้นหาในบทสนทนา",
      you: "คุณ",
      noMessagesMatch: "ไม่มีข้อความที่ตรงกับตัวกรอง",
    },
    mosaic: {
      title: "กิจกรรมตามเวลา",
      subtitleEmpty: "การประมาณค่าต้องใช้เวลาประทับของเซสชัน",
      subtitle: "ประมาณจากช่วงเวลาของเซสชัน (กิจกรรมแรก/ล่าสุด) เขตเวลา: {zone}",
      noTimelineData: "ยังไม่มีข้อมูลไทม์ไลน์",
      dayOfWeek: "วันในสัปดาห์",
      midnight: "เที่ยงคืน",
      fourAm: "4am",
      eightAm: "8am",
      noon: "เที่ยงวัน",
      fourPm: "4pm",
      eightPm: "8pm",
      legend: "ความหนาแน่นของโทเค็น ต่ำ → สูง",
      sun: "อา.",
      mon: "จ.",
      tue: "อ.",
      wed: "พ.",
      thu: "พฤ.",
      fri: "ศ.",
      sat: "ส.",
    },
  },
  login: {
    subtitle: "Gateway Dashboard",
    passwordPlaceholder: "ไม่บังคับ",
    showToken: "แสดงโทเค็น",
    hideToken: "ซ่อนโทเค็น",
    toggleTokenVisibility: "สลับการแสดงโทเค็น",
    showPassword: "แสดงรหัสผ่าน",
    hidePassword: "ซ่อนรหัสผ่าน",
    togglePasswordVisibility: "สลับการแสดงรหัสผ่าน",
    failure: {
      rawError: "ข้อผิดพลาดดิบ",
      docsAuth: "เอกสารการยืนยันตัวตนของ Control UI",
      docsPairing: "เอกสารการจับคู่อุปกรณ์",
      docsInsecure: "เอกสาร HTTP ที่ไม่ปลอดภัย",
      authRequired: {
        title: "ต้องยืนยันตัวตน",
        summary: "เข้าถึง Gateway ได้ แต่ต้องมีโทเค็นหรือรหัสผ่านที่ตรงกันก่อนที่เบราว์เซอร์นี้จะเชื่อมต่อได้",
        stepPaste: "วางโทเค็นจาก openclaw dashboard --no-open หรือป้อนรหัสผ่านที่ตั้งค่าไว้",
        stepGenerate:
          "ถ้ายังไม่ได้ตั้งค่าโทเค็น ให้รัน openclaw doctor --generate-gateway-token บนโฮสต์ Gateway",
        stepConnect: "คลิก Connect อีกครั้งหลังจากอัปเดตข้อมูลรับรอง",
      },
      authFailed: {
        title: "การยืนยันตัวตนไม่ตรงกัน",
        summary: "ข้อมูลรับรองที่ให้มาถูกปฏิเสธ สาเหตุที่พบบ่อยคือโทเค็นเก่าหรือโทเค็นที่คัดลอกจาก Gateway URL อื่น",
        stepDashboard: "รัน openclaw dashboard --no-open แล้วเปิด URL ใหม่หรือวางโทเค็นของ URL นั้น",
        stepReplace: "แทนที่ค่าโทเค็น/รหัสผ่านเก่า อย่าใช้โทเค็นจาก Gateway URL อื่นซ้ำ",
        stepMode:
          "ใช้โหมด auth ที่ตรงกันทีละโหมด: gateway token สำหรับโหมด token, รหัสผ่านสำหรับโหมด password",
      },
      rateLimited: {
        title: "พยายามล้มเหลวมากเกินไป",
        summary: "Gateway กำลังจำกัดความพยายามยืนยันตัวตนของไคลเอนต์นี้ชั่วคราว",
        stepStop: "หยุดลองซ้ำจากแท็บนี้สักครู่",
        stepWait: "รอให้ตัวจำกัด auth เย็นลง แล้วเชื่อมต่อใหม่ด้วยข้อมูลรับรองที่แก้ไขแล้ว",
        stepCheckClients: "ถ้าเป็นโฮสต์ที่ใช้ร่วมกัน ให้ตรวจสอบไคลเอนต์อื่นที่ลองผิดซ้ำๆ",
      },
      pairing: {
        title: "ต้องจับคู่อุปกรณ์",
        scopeTitle: "การอัปเกรด scope รออนุมัติ",
        roleTitle: "การอัปเกรดบทบาทรออนุมัติ",
        metadataTitle: "การรีเฟรชอุปกรณ์รออนุมัติ",
        summary: "เบราว์เซอร์นี้ต้องได้รับการอนุมัติครั้งเดียวจากโฮสต์ Gateway ก่อนใช้ Control UI",
        upgradeSummary: "เบราว์เซอร์นี้เป็นที่รู้จักแล้ว แต่สิทธิ์ที่ขอเปลี่ยนไปและต้องอนุมัติใหม่",
        stepList: "รัน openclaw devices list บนโฮสต์ Gateway",
        stepApproveId: "อนุมัติคำขอนี้: openclaw devices approve {requestId}.",
        stepApprove: "อนุมัติคำขอเบราว์เซอร์/อุปกรณ์ที่รอดำเนินการจากรายการนั้น",
        stepReconnect: "เชื่อมต่อใหม่หลังการอนุมัติเสร็จสิ้น",
      },
      insecure: {
        title: "ต้องใช้บริบทเบราว์เซอร์ที่ปลอดภัย",
        summary: "หน้านี้ทำงานผ่าน HTTP ธรรมดา เบราว์เซอร์จึงสร้างตัวตนอุปกรณ์ที่ Gateway คาดหวังไม่ได้",
        stepHttps: "ใช้ HTTPS/Tailscale Serve หรือเปิด http://127.0.0.1:18789 บนโฮสต์ Gateway",
        stepLocalCompat:
          "สำหรับความเข้ากันได้เฉพาะโทเค็นในเครื่อง ให้ตั้ง gateway.controlUi.allowInsecureAuth: true",
        stepAvoidDisable: "หลีกเลี่ยงการปิด auth อุปกรณ์สำหรับการเข้าถึง HTTP ระยะไกล",
      },
      origin: {
        title: "ไม่อนุญาต origin ของเบราว์เซอร์",
        summary: "Gateway ปฏิเสธ origin ของหน้านี้ก่อนรับการเชื่อมต่อ Control UI",
        stepAllowedOrigins: "เพิ่ม origin ของเบราว์เซอร์นี้ใน gateway.controlUi.allowedOrigins",
        stepFullOrigin: "ใช้ origin แบบเต็ม เช่น http://localhost:5173 ไม่ใช่รูปแบบ wildcard",
        stepRestart: "รีสตาร์ทหรือโหลด Gateway ใหม่หลังเปลี่ยน origin ที่อนุญาต",
      },
      protocol: {
        title: "โปรโตคอลไม่ตรงกัน",
        summary: "Control UI ที่เสิร์ฟอยู่และ Gateway ที่ทำงานอยู่ไม่ตรงกันเรื่องโปรโตคอลการเชื่อมต่อที่รองรับ",
        stepDashboard:
          "เปิด dashboard ที่เสิร์ฟอีกครั้งด้วย openclaw dashboard เพื่อให้ UI และ Gateway มาจากการติดตั้งเดียวกัน",
        stepDevUi: "ถ้าใช้ pnpm ui:dev ให้ build ใหม่หรือรีสตาร์ท UI dev กับ checkout ปัจจุบัน",
        stepRestart: "รีสตาร์ท Gateway หลังอัปเดต OpenClaw เพื่อให้เสิร์ฟโปรโตคอลปัจจุบัน",
      },
      network: {
        title: "เชื่อมต่อไม่ได้",
        summary:
          "เบราว์เซอร์ไม่สามารถเชื่อมต่อ Gateway ให้เสร็จสมบูรณ์ได้ ตรวจสอบเป้าหมายและ transport ก่อนลองข้อมูลรับรองอีกครั้ง",
        stepGateway: "ยืนยันว่า Gateway กำลังทำงานด้วย openclaw status หรือ openclaw gateway run",
        stepUrl: "ตรวจสอบ WebSocket URL และใช้ wss:// เมื่อ Gateway อยู่หลัง HTTPS/Tailscale Serve",
        stepDashboard:
          "เปิด dashboard อีกครั้งด้วย openclaw dashboard --no-open เพื่อคัดลอก URL และรายละเอียด auth ปัจจุบันใหม่",
      },
    },
  },
  chat: {
    disconnected: "ตัดการเชื่อมต่อจากเกตเวย์แล้ว",
    refreshTitle: "รีเฟรชข้อมูลแชต",
    settings: "การตั้งค่าแชท",
    thinkingToggle: "สลับการแสดงผลการคิด/การทำงานของผู้ช่วย",
    toolCallsToggle: "สลับการแสดงการเรียกใช้ tool และผลลัพธ์ของ tool",
    autoScrollMode: "โหมดเลื่อนอัตโนมัติ",
    autoScrollAlways: "เสมอ",
    autoScrollNearBottom: "ใกล้ด้านล่าง",
    autoScrollOff: "ปิด",
    focusToggle: "สลับโหมดโฟกัส (ซ่อนแถบด้านข้าง + ส่วนหัวหน้า)",
    hideCronSessions: "ซ่อนเซสชัน cron",
    showCronSessions: "แสดงเซสชัน cron",
    showCronSessionsHidden: "แสดงเซสชัน cron (ซ่อนอยู่ {count})",
    onboardingDisabled: "ปิดใช้งานระหว่างการตั้งค่า",
    gatewayStatus: "สถานะ Gateway: {status}",
    commandPaletteTitle: "ค้นหาหรือข้ามไปที่… (⌘K)",
    openCommandPalette: "เปิดแถบคำสั่ง",
    docsOpensInNewTab: "{label} (เปิดในแท็บใหม่)",
    updateAvailable: "มีอัปเดตพร้อมใช้งาน:",
    runningVersion: "กำลังใช้ v{version}",
    updating: "กำลังอัปเดต…",
    updateNow: "อัปเดตตอนนี้",
    dismissUpdateBanner: "ปิดแบนเนอร์อัปเดต",
    switchedSession: "สลับไปยัง {session} แล้ว",
    welcome: {
      ready: "Ready to chat",
      hintBeforeShortcut: "Type a message below ·",
      hintAfterShortcut: "for commands",
      suggestions: {
        whatCanYouDo: "What can you do?",
        summarizeRecentSessions: "Summarize my recent sessions",
        configureChannel: "Help me configure a channel",
        checkSystemHealth: "Check system health",
      },
    },
    runControls: {
      newSession: "New session",
      export: "ส่งออก",
      exportChat: "Export chat",
      queue: "Queue",
      queueMessage: "Queue message",
      stop: "Stop",
      stopGenerating: "Stop generating",
      send: "Send",
      sendMessage: "Send message",
    },
    composer: {
      placeholder: "Message {name} (Enter to send)",
      placeholderWithAttachments: "Add a message or paste more images...",
      placeholderDisconnected: "Connect to the gateway to start chatting...",
      attachFile: "Attach file",
      startTalk: "Start Talk",
      stopTalk: "Stop Talk",
    },
    selectors: {
      agentFilter: "กรองเซสชันตามเอเจนต์",
      session: "Chat session",
      model: "Chat model",
      thinkingLevel: "Chat thinking level",
    },
  },
  languages: {
    en: "อังกฤษ",
    zhCN: "简体中文 (จีนตัวย่อ)",
    zhTW: "繁體中文 (จีนตัวเต็ม)",
    ptBR: "Português (โปรตุเกสแบบบราซิล)",
    de: "Deutsch (เยอรมัน)",
    es: "Español (สเปน)",
    jaJP: "日本語 (ญี่ปุ่น)",
    ko: "한국어 (เกาหลี)",
    fr: "Français (ฝรั่งเศส)",
    ar: "العربية (อาหรับ)",
    it: "Italiano (อิตาลี)",
    tr: "Türkçe (ตุรกี)",
    uk: "Українська (ยูเครน)",
    id: "Bahasa Indonesia (อินโดนีเซีย)",
    pl: "Polski (โปแลนด์)",
    th: "ไทย (ไทย)",
    vi: "Tiếng Việt (เวียดนาม)",
    nl: "Nederlands (ดัตช์)",
    fa: "فارسی (เปอร์เซีย)",
  },
  cron: {
    quickCreate: {
      schedules: {
        everyMorning: {
          label: "ทุกเช้า",
          description: "ทุกวันเวลา 8:00 น.",
        },
        everyEvening: {
          label: "ทุกเย็น",
          description: "ทุกวันเวลา 18:00 น.",
        },
        hourly: {
          label: "ทุกชั่วโมง",
          description: "ทุกชั่วโมง",
        },
        weekdays: {
          label: "วันธรรมดา",
          description: "จันทร์–ศุกร์ เวลา 9:00 น.",
        },
        weekly: {
          label: "รายสัปดาห์",
          description: "ทุกวันจันทร์เวลา 9:00 น.",
        },
        once: {
          label: "เรียกใช้ครั้งเดียว",
          description: "ครั้งเดียว ลบหลังจากเรียกใช้",
        },
      },
      delivery: {
        notify: {
          label: "แจ้งเตือนฉัน",
          description: "ส่งผลลัพธ์ไปยังแชท",
        },
        silent: {
          label: "เงียบ",
          description: "เรียกใช้โดยไม่แจ้งเตือน",
        },
        isolated: {
          label: "เซสชันอิสระ",
          description: "เรียกใช้ในเซสชันของตัวเอง",
        },
      },
      steps: {
        what: "ทำอะไร",
        when: "เมื่อไหร่",
        how: "อย่างไร",
      },
      defaultName: "ระบบอัตโนมัติ",
      whatHeading: "ควรให้ทำอะไร?",
      whatHint: "อธิบายงานด้วยภาษาธรรมชาติ agent จะเรียกใช้พรอมป์นี้ทุกครั้ง",
      promptPlaceholder: "เช่น ตรวจสอบกล่องจดหมายของฉันเพื่อหาอีเมลด่วนและสรุปให้...",
      nameOptional: "ชื่อ (ไม่บังคับ)",
      namePlaceholder: "เช่น ตรวจกล่องจดหมายตอนเช้า",
      whenHeading: "ควรเรียกใช้เมื่อไหร่?",
      whenHint: "เลือกกำหนดเวลา คุณสามารถปรับแต่งอย่างละเอียดได้ภายหลัง",
      howHeading: "ควรทำงานอย่างไร?",
      howHint: "เลือกวิธีส่งผลลัพธ์",
      title: "การทำงานอัตโนมัติใหม่",
    },
    summary: {
      enabled: "เปิดใช้งาน",
      yes: "ใช่",
      no: "ไม่",
      jobs: "งาน",
      nextWake: "ปลุกครั้งถัดไป",
      refreshing: "กำลังรีเฟรช...",
      refresh: "รีเฟรช",
    },
    jobs: {
      title: "งาน",
      subtitle: "งานตามกำหนดเวลาทั้งหมดที่จัดเก็บไว้ในเกตเวย์",
      shownOf: "แสดง {shown} จาก {total}",
      searchJobs: "ค้นหางาน",
      searchPlaceholder: "ชื่อ คำอธิบาย หรือเอเจนต์",
      enabled: "เปิดใช้งาน",
      schedule: "กำหนดเวลา",
      lastRun: "ทำงานล่าสุด",
      all: "ทั้งหมด",
      sort: "เรียงลำดับ",
      nextRun: "ทำงานครั้งถัดไป",
      recentlyUpdated: "อัปเดตล่าสุด",
      name: "ชื่อ",
      direction: "ทิศทาง",
      ascending: "น้อยไปมาก",
      descending: "มากไปน้อย",
      reset: "รีเซ็ต",
      emptyTitle: "No scheduled jobs yet.",
      emptyHint: "Create one from a plain-language prompt; advanced fields can wait.",
      emptyFilteredHint: "Clear or change filters to see scheduled jobs.",
      noMatching: "ไม่พบงานที่ตรงกัน",
      loading: "กำลังโหลด...",
      loadMore: "โหลดงานเพิ่มเติม",
    },
    runs: {
      title: "ประวัติการทำงาน",
      subtitleAll: "การทำงานล่าสุดในทุกงาน",
      subtitleJob: "การทำงานล่าสุดสำหรับ {title}",
      scope: "ขอบเขต",
      allJobs: "ทุกงาน",
      selectedJob: "งานที่เลือก",
      searchRuns: "ค้นหาการทำงาน",
      searchPlaceholder: "สรุป ข้อผิดพลาด หรืองาน",
      newestFirst: "ใหม่สุดก่อน",
      oldestFirst: "เก่าสุดก่อน",
      status: "สถานะ",
      delivery: "การส่ง",
      clear: "ล้าง",
      allStatuses: "ทุกสถานะ",
      allDelivery: "การส่งทั้งหมด",
      selectJobHint: "เลือกงานเพื่อตรวจสอบประวัติการทำงาน",
      noMatching: "ไม่พบการทำงานที่ตรงกัน",
      loadMore: "โหลดการทำงานเพิ่มเติม",
      runStatusOk: "ตกลง",
      runStatusError: "ข้อผิดพลาด",
      runStatusSkipped: "ข้ามแล้ว",
      runStatusUnknown: "ไม่ทราบ",
      deliveryDelivered: "ส่งแล้ว",
      deliveryNotDelivered: "ยังไม่ส่ง",
      deliveryUnknown: "ไม่ทราบ",
      deliveryNotRequested: "ไม่ได้ร้องขอ",
    },
    form: {
      editJob: "แก้ไขงาน",
      newJob: "งานใหม่",
      advancedJob: "Advanced job",
      updateSubtitle: "อัปเดตงานตามกำหนดเวลาที่เลือก",
      createSubtitle: "สร้างการปลุกหรืองานรันของเอเจนต์ตามกำหนดเวลา",
      required: "จำเป็น",
      requiredSr: "จำเป็น",
      basics: "พื้นฐาน",
      basicsSub: "ตั้งชื่อ เลือกผู้ช่วย และกำหนดสถานะการเปิดใช้งาน",
      fieldName: "ชื่อ",
      description: "คำอธิบาย",
      agentId: "Agent ID",
      namePlaceholder: "สรุปตอนเช้า",
      descriptionPlaceholder: "บริบทเพิ่มเติมสำหรับงานนี้ (ไม่บังคับ)",
      agentPlaceholder: "main หรือ ops",
      agentHelp: "เริ่มพิมพ์เพื่อเลือกเอเจนต์ที่รู้จัก หรือป้อนเอเจนต์แบบกำหนดเอง",
      schedule: "กำหนดเวลา",
      scheduleSub: "ควบคุมเวลาที่งานนี้จะทำงาน",
      every: "ทุก",
      at: "เวลา",
      cronOption: "Cron",
      runAt: "ทำงานเมื่อ",
      unit: "หน่วย",
      minutes: "นาที",
      hours: "ชั่วโมง",
      days: "วัน",
      expression: "นิพจน์",
      expressionPlaceholder: "0 7 * * *",
      everyAmountPlaceholder: "30",
      timezoneOptional: "Timezone (ไม่บังคับ)",
      timezonePlaceholder: "America/Los_Angeles",
      timezoneHelp: "เลือก timezone ที่ใช้ทั่วไป หรือป้อน timezone IANA ที่ถูกต้องใดก็ได้",
      jitterHelp: "ต้องการ jitter หรือไม่? ใช้ ขั้นสูง → Stagger window / Stagger unit",
      execution: "การทำงาน",
      executionSub: "เลือกเวลาที่จะปลุก และกำหนดว่างานนี้ควรทำอะไร",
      session: "เซสชัน",
      main: "หลัก",
      isolated: "แยก",
      sessionHelp: "Main จะโพสต์เหตุการณ์ของระบบ ส่วน Isolated จะรันเทิร์นของเอเจนต์แบบเฉพาะ",
      wakeMode: "โหมดปลุก",
      now: "ตอนนี้",
      nextHeartbeat: "heartbeat ถัดไป",
      wakeModeHelp: "Now จะทริกเกอร์ทันที ส่วน Next heartbeat จะรอรอบถัดไป",
      payloadKind: "ต้องการให้รันอะไร?",
      systemEvent: "โพสต์ข้อความไปยังไทม์ไลน์หลัก",
      agentTurn: "รันงานของผู้ช่วย (แยก)",
      systemEventHelp: "ส่งข้อความของคุณไปยังไทม์ไลน์หลักของเกตเวย์ (เหมาะสำหรับการเตือน/ทริกเกอร์)",
      agentTurnHelp: "เริ่มการทำงานของผู้ช่วยในเซสชันของตัวเองโดยใช้พรอมป์ต์ของคุณ",
      timeoutSeconds: "หมดเวลา (วินาที)",
      timeoutPlaceholder: "ไม่บังคับ เช่น 90",
      timeoutHelp: "ไม่บังคับ เว้นว่างไว้เพื่อใช้พฤติกรรมการหมดเวลาเริ่มต้นของเกตเวย์สำหรับการรันนี้",
      mainTimelineMessage: "ข้อความในไทม์ไลน์หลัก",
      assistantTaskPrompt: "พรอมป์ต์งานของผู้ช่วย",
      deliverySection: "การส่ง",
      deliverySub: "เลือกตำแหน่งที่จะส่งสรุปผลการทำงาน",
      resultDelivery: "การส่งผลลัพธ์",
      announceDefault: "ประกาศสรุป (ค่าเริ่มต้น)",
      webhookPost: "Webhook POST",
      noneInternal: "ไม่มี (ภายใน)",
      deliveryHelp: "Announce จะโพสต์สรุปไปยังแชต ส่วน None จะเก็บการทำงานไว้ภายใน",
      webhookUrl: "Webhook URL",
      channel: "ช่องทาง",
      webhookPlaceholder: "https://example.com/cron",
      channelHelp: "เลือกช่องทางที่เชื่อมต่อซึ่งจะได้รับสรุป",
      webhookHelp: "ส่งสรุปผลการทำงานไปยังปลายทาง webhook",
      to: "ถึง",
      toPlaceholder: "+1555... หรือ chat id",
      toHelp: "ตัวเลือกแทนที่ผู้รับ (chat id, โทรศัพท์ หรือ user id)",
      advanced: "ขั้นสูง",
      advancedHelp: "ตัวเลือกแทนที่สำหรับการรับประกันการส่ง, schedule jitter และการควบคุมโมเดล",
      deleteAfterRun: "ลบหลังทำงาน",
      deleteAfterRunHelp: "เหมาะที่สุดสำหรับการเตือนแบบครั้งเดียวที่ควรล้างออกอัตโนมัติ",
      clearAgentOverride: "ล้างการแทนที่เอเจนต์",
      clearAgentHelp: "บังคับให้งานนี้ใช้ผู้ช่วยเริ่มต้นของเกตเวย์",
      exactTiming: "เวลาที่แม่นยำ (ไม่มี stagger)",
      exactTimingHelp: "ทำงานตามขอบเขต cron ที่แน่นอนโดยไม่มีการกระจายเวลา",
      staggerWindow: "หน้าต่าง stagger",
      staggerUnit: "หน่วย stagger",
      staggerPlaceholder: "30",
      seconds: "วินาที",
      model: "Model",
      modelPlaceholder: "openai/gpt-5.2",
      modelHelp: "เริ่มพิมพ์เพื่อเลือกโมเดลที่รู้จัก หรือป้อนโมเดลแบบกำหนดเอง",
      thinking: "Thinking",
      thinkingPlaceholder: "low",
      thinkingHelp: "ใช้ระดับที่แนะนำ หรือป้อนค่าที่เฉพาะเจาะจงกับผู้ให้บริการ",
      bestEffortDelivery: "การส่งแบบพยายามอย่างดีที่สุด",
      bestEffortHelp: "อย่าทำให้งานล้มเหลวหากการส่งล้มเหลว",
      cantAddYet: "ยังไม่สามารถเพิ่มงานได้",
      fillRequired: "กรอกข้อมูลในช่องที่จำเป็นด้านล่างเพื่อเปิดใช้งานการส่ง",
      fixFields: "แก้ไข {count} ช่องเพื่อดำเนินการต่อ",
      fixFieldsPlural: "แก้ไข {count} ช่องเพื่อดำเนินการต่อ",
      saving: "กำลังบันทึก...",
      saveChanges: "บันทึกการเปลี่ยนแปลง",
      addJob: "เพิ่มงาน",
      cancel: "ยกเลิก",
    },
    jobList: {
      allJobs: "ทุกงาน",
      selectJob: "(เลือกงาน)",
      enabled: "เปิดใช้งาน",
      disabled: "ปิดใช้งาน",
      edit: "แก้ไข",
      clone: "โคลน",
      disable: "ปิดใช้งาน",
      enable: "เปิดใช้งาน",
      run: "รัน",
      history: "ประวัติ",
      remove: "ลบ",
    },
    jobDetail: {
      system: "ระบบ",
      prompt: "พรอมป์ต์",
      delivery: "การส่ง",
      agent: "เอเจนต์",
    },
    jobState: {
      status: "สถานะ",
      next: "ถัดไป",
      last: "ล่าสุด",
    },
    runEntry: {
      noSummary: "ไม่มีสรุป",
      runAt: "ทำงานเมื่อ",
      openRunChat: "เปิดแชตการรัน",
      next: "ถัดไป {rel}",
      due: "ครบกำหนด {rel}",
    },
    errors: {
      nameRequired: "ต้องระบุชื่อ",
      scheduleAtInvalid: "ป้อนวันที่/เวลาที่ถูกต้อง",
      everyAmountInvalid: "ช่วงเวลาต้องมากกว่า 0",
      cronExprRequired: "ต้องระบุ Cron expression",
      staggerAmountInvalid: "Stagger ต้องมากกว่า 0",
      systemTextRequired: "ต้องระบุข้อความระบบ",
      agentMessageRequired: "ต้องระบุข้อความของเอเจนต์",
      timeoutInvalid: "หากกำหนดค่าไว้ timeout ต้องมากกว่า 0 วินาที",
      webhookUrlRequired: "ต้องระบุ Webhook URL",
      webhookUrlInvalid: "Webhook URL ต้องขึ้นต้นด้วย http:// หรือ https://",
      invalidRunTime: "เวลารันไม่ถูกต้อง",
      invalidIntervalAmount: "จำนวนช่วงเวลาไม่ถูกต้อง",
      cronExprRequiredShort: "ต้องระบุ Cron expression",
      invalidStaggerAmount: "จำนวน stagger ไม่ถูกต้อง",
      systemEventTextRequired: "ต้องระบุข้อความเหตุการณ์ของระบบ",
      agentMessageRequiredShort: "ต้องระบุข้อความของเอเจนต์",
      nameRequiredShort: "ต้องระบุชื่อ",
    },
  },
};
