const zhHant = {
  sidebar: {
    home: '首頁',
    extensions: '擴展',
    installedPlugins: '已安裝外掛',
    pluginMarket: '外掛市場',
    mcpServers: 'MCP 伺服器',
    quickStart: '快速開始',
  },
  common: {
    login: '登入',
    logout: '登出',
    accountOptions: '系統設定',
    account: '帳戶',
    integration: '連接',
    email: '電子郵件',
    password: '密碼',
    welcome: '歡迎回到 LangBot 👋',
    continueToLogin: '登入以繼續',
    loginSuccess: '登入成功',
    loginFailed: '登入失敗，請檢查電子郵件和密碼是否正確',
    loginLoadError: '無法連線到伺服器',
    loginLoadErrorDesc: '無法連線到 LangBot 後端服務，請確認服務已啟動後重試。',
    retry: '重試',
    enterEmail: '輸入電子郵件地址',
    enterPassword: '輸入密碼',
    invalidEmail: '請輸入有效的電子郵件地址',
    emptyPassword: '請輸入密碼',
    language: '語言',
    helpDocs: '輔助說明',
    featureRequest: '需求建議',
    starOnGitHub: '在 GitHub 上 Star',
    create: '建立',
    edit: '編輯',
    delete: '刪除',
    add: '新增',
    select: '請選擇',
    cancel: '取消',
    submit: '提交',
    error: '錯誤',
    success: '成功',
    save: '儲存',
    saving: '儲存中...',
    confirm: '確認',
    confirmDelete: '確認刪除',
    deleteConfirmation: '您確定要刪除這個嗎？',
    selectOption: '選擇一個選項',
    selectPreset: '選擇預設',
    required: '必填',
    enable: '是否啟用',
    name: '名稱',
    description: '描述',
    icon: '圖標',
    close: '關閉',
    deleteSuccess: '刪除成功',
    deleteError: '刪除失敗：',
    addRound: '新增回合',
    copy: '複製',
    copySuccess: '複製成功',
    copyFailed: '複製失敗',
    test: '測試',
    forgotPassword: '忘記密碼？',
    agreementNotice: '繼續即表示您同意我們的',
    privacyPolicy: '隱私政策',
    and: '和',
    dataCollectionPolicy: '數據收集政策',
    dataCollectionPolicyUrl: 'https://link.langbot.app/zh/docs/data-policy',
    loading: '載入中...',
    fieldRequired: '此欄位為必填',
    or: '或',
    loginWithSpace: '透過 Space 登入',
    spaceLoginRecommended: '推薦：使用官方提供的穩定模型 API 和雲服務',
    loginLocal: '使用本地帳號登入',
    loginWithPassword: '透過密碼登入',
    spaceLoginTitle: '透過 Space 登入',
    spaceLoginDescription: '掃描二維碼或訪問下方連結進行授權',
    spaceLoginUserCode: '您的驗證碼',
    spaceLoginExpires: '驗證碼將在 {{seconds}} 秒後過期',
    spaceLoginWaiting: '等待授權中...',
    spaceLoginSuccess: '授權成功',
    spaceLoginFailed: 'Space 登入失敗',
    spaceLoginExpired: '驗證碼已過期，請重試',
    spaceLoginCancel: '取消',
    spaceLoginVisitLink: '訪問連結',
    spaceLoginProcessing: '正在透過 Space 登入',
    spaceLoginProcessingDescription: '請稍候，正在完成登入...',
    spaceLoginSuccessDescription: '正在跳轉到 LangBot...',
    spaceLoginError: '登入失敗',
    spaceLoginNoCode: '缺少授權碼',
    backToLogin: '返回登入',
    backToHome: '返回首頁',
    spaceAccountCannotChangePassword: 'Space 帳戶無法在此修改密碼',
    theme: '主題',
    changePassword: '修改密碼',
    currentPassword: '當前密碼',
    newPassword: '新密碼',
    confirmNewPassword: '確認新密碼',
    enterCurrentPassword: '輸入當前密碼',
    enterNewPassword: '輸入新密碼',
    enterConfirmPassword: '確認新密碼',
    currentPasswordRequired: '當前密碼不能為空',
    newPasswordRequired: '新密碼不能為空',
    confirmPasswordRequired: '確認密碼不能為空',
    passwordsDoNotMatch: '兩次輸入的密碼不一致',
    changePasswordSuccess: '密碼修改成功',
    changePasswordFailed: '密碼修改失敗，請檢查當前密碼是否正確',
    apiIntegration: 'API 整合',
    apiKeys: 'API 金鑰',
    manageApiIntegration: '管理 API 整合',
    manageApiKeys: '管理 API 金鑰',
    createApiKey: '建立 API 金鑰',
    apiKeyName: 'API 金鑰名稱',
    apiKeyDescription: 'API 金鑰描述',
    apiKeyValue: 'API 金鑰值',
    apiKeyCreated: 'API 金鑰建立成功',
    apiKeyDeleted: 'API 金鑰刪除成功',
    apiKeyDeleteConfirm: '確定要刪除此 API 金鑰嗎？',
    apiKeyNameRequired: 'API 金鑰名稱不能為空',
    copyApiKey: '複製 API 金鑰',
    apiKeyCopied: 'API 金鑰已複製到剪貼簿',
    noApiKeys: '暫無 API 金鑰',
    apiKeyHint: 'API 金鑰允許外部系統訪問 LangBot 的 Service API',
    webhooks: 'Webhooks',
    createWebhook: '建立 Webhook',
    webhookName: 'Webhook 名稱',
    webhookUrl: 'Webhook URL',
    webhookDescription: 'Webhook 描述',
    webhookEnabled: '是否啟用',
    webhookCreated: 'Webhook 建立成功',
    webhookDeleted: 'Webhook 刪除成功',
    webhookDeleteConfirm: '確定要刪除此 Webhook 嗎？',
    webhookNameRequired: 'Webhook 名稱不能為空',
    webhookUrlRequired: 'Webhook URL 不能為空',
    noWebhooks: '暫無 Webhook',
    webhookHint: 'Webhook 允許 LangBot 將個人訊息和群組訊息事件推送到外部系統',
    actions: '操作',
    apiKeyCreatedMessage: '請複製此 API 金鑰，若按鈕無效，請手動複製。',
    none: '無',
    more: '更多 ({{count}})',
    less: '收起',
    noItems: '暫無內容',
  },
  notFound: {
    title: '頁面不存在',
    description:
      '您要查詢的頁面似乎不存在。請檢查您輸入的 URL 是否正確，或返回首頁。',
    back: '上一級',
    home: '返回主頁',
    help: '查看說明文件',
  },
  models: {
    title: '模型設定',
    description: '設定和管理可在流程線中使用的模型',
    createModel: '建立模型',
    editModel: '編輯模型',
    getModelListError: '取得模型清單失敗：',
    modelName: '模型名稱',
    modelProvider: '模型供應商',
    modelBaseURL: '基礎 URL',
    modelAbilities: '模型能力',
    saveSuccess: '儲存成功',
    saveError: '儲存失敗：',
    createSuccess: '建立成功',
    createError: '建立失敗：',
    deleteSuccess: '刪除成功',
    deleteError: '刪除失敗：',
    deleteConfirmation: '您確定要刪除這個模型嗎？',
    modelNameRequired: '模型名稱不能為空',
    modelProviderRequired: '模型供應商不能為空',
    requestURLRequired: '請求URL不能為空',
    apiKeyRequired: 'API Key不能為空',
    keyNameRequired: '鍵名不能為空',
    mustBeValidNumber: '必須是有效的數字',
    mustBeTrueOrFalse: '必須是 true 或 false',
    requestURL: '請求URL',
    scanURL: '掃描模型 URL',
    scanURLPlaceholder: '留空則使用請求 URL + /models',
    scanURLDescription:
      '當模型掃描與模型調用不使用相同地址時，請填寫實際的模型列表端點。',
    apiKey: 'API Key',
    abilities: '能力',
    selectModelAbilities: '選擇模型能力',
    visionAbility: '視覺能力',
    functionCallAbility: '函數呼叫',
    extraParameters: '額外參數',
    addParameter: '新增參數',
    keyName: '鍵名',
    type: '類型',
    value: '值',
    string: '字串',
    number: '數字',
    boolean: '布林值',
    selectModelProvider: '選擇模型供應商',
    modelProviderDescription: '請填寫供應商向您提供的模型名稱',
    modelManufacturer: '模型廠商',
    aggregationPlatform: '中轉平台',
    selfDeployed: '自部署',
    builtin: '內建',
    selectModel: '請選擇模型',
    testSuccess: '測試成功',
    testError: '測試失敗，請檢查模型設定',
    llmModels: '對話模型',
    localProvider: '本地',
    localProviderDescription: '在本地設定和管理的模型',
    spaceProviderDescription: '從您的 Space 帳戶同步的模型',
    spaceDisabledForLocalAccount: '使用 Space 登入以使用雲端模型',
    syncModels: '同步',
    syncSuccess: '同步完成：建立 {{created}} 個，更新 {{updated}} 個',
    syncError: '同步失敗：',
    spaceModelReadOnly: 'Space 模型為唯讀',
    noSpaceModels: '暫無 Space 模型。點擊同步按鈕從 Space 取得模型。',
    noLocalModels: '暫無本地模型。點擊建立按鈕新增模型。',
    providerCount: '共 {{count}} 個供應商',
    addModel: '新增模型',
    manualAdd: '手動添加',
    scanAdd: '掃描添加',
    scanModels: '掃描模型',
    scanModelsHint: '從目前供應商介面讀取可用模型，然後勾選要添加的模型。',
    scannedModels: '掃描結果',
    scanDebug: '調試資訊',
    searchScannedModels: '搜尋掃描結果',
    noScannedModels: '尚無掃描結果，點擊上方按鈕開始掃描。',
    noScannedModelsMatch: '沒有符合的模型',
    addSelectedModels: '添加所選模型',
    addSelectedModelsSuccess: '已添加 {{count}} 個模型',
    selectAll: '全選模型',
    alreadyAdded: '已添加',
    addLLMModel: '新增對話模型',
    addEmbeddingModel: '新增嵌入模型',
    provider: '供應商',
    existingProvider: '現有供應商',
    newProvider: '新供應商',
    selectProvider: '選擇供應商',
    requester: '供應商類型',
    selectRequester: '選擇供應商類型',
    langbotModelsDescription: '由 LangBot Space 提供的雲端模型',
    credits: '積分',
    loginWithSpace: '使用 Space 登入',
    loginToUseModels: '使用 Space 登入以使用雲端模型',
    noModels: '暫無模型',
    langbotModels: 'LangBot 模型',
    spaceTrialTooltip:
      '免費試用積分已就緒！使用 Space 登入即可零設定使用雲端模型。',
    unlockModels: '登入以使用',
    editProvider: '編輯供應商',
    addProvider: '新增供應商',
    addProviderHint: '新增供應商以使用其他來源的模型',
    addProviderHintSimple: '新增供應商以使用模型',
    noProviders: '暫無供應商',
    providerName: '供應商名稱',
    providerNameRequired: '供應商名稱不能為空',
    requesterRequired: '供應商類型不能為空',
    providerSaved: '供應商已儲存',
    providerCreated: '供應商已建立',
    providerSaveError: '儲存供應商失敗：',
    providerDeleted: '供應商已刪除',
    providerDeleteError: '刪除供應商失敗：',
    deleteProviderConfirmation: '您確定要刪除這個供應商嗎？',
    loadError: '載入資料失敗',
    chat: '對話',
    embedding: '嵌入',
    rerank: '重排序',
    rerankUrlTooltip:
      '完整 URL 覆蓋重排序端點（例如：https://dashscope.aliyuncs.com/compatible-api/v1/reranks）',
    rerankPathTooltip:
      '附加到基礎 URL 的路徑（預設：rerank，某些服務使用 reranks）',
    modelsCount: '{{count}} 個模型',
    expandModels: '展開',
    collapseModels: '收起',
    fallback: {
      primary: '主模型',
      fallbackList: '備用模型',
      addFallback: '新增備用模型',
    },
  },
  bots: {
    title: '機器人',
    description: '建立和管理機器人，這是 LangBot 與各個平台連接的入口',
    createBot: '建立機器人',
    selectFromSidebar: '從側邊欄選擇一個機器人',
    editBot: '編輯機器人',
    getBotListError: '取得機器人清單失敗：',
    botName: '機器人名稱',
    botDescription: '機器人描述',
    botNameRequired: '機器人名稱不能為空',
    botDescriptionRequired: '機器人描述不能為空',
    adapterRequired: '適配器不能為空',
    defaultDescription: '一個機器人',
    getBotConfigError: '取得機器人設定失敗：',
    saveSuccess: '儲存成功',
    saveError: '儲存失敗：',
    createSuccess: '建立成功 請啟用或修改綁定流程線',
    createError: '建立失敗：',
    deleteSuccess: '刪除成功',
    deleteError: '刪除失敗：',
    deleteConfirmation: '您確定要刪除這個機器人嗎？',
    platformAdapter: '平台/適配器選擇',
    selectAdapter: '選擇適配器',
    adapterConfig: '適配器設定',
    viewAdapterDocs: '查看文檔',
    bindPipeline: '綁定流程線',
    selectPipeline: '選擇流程線',
    selectBot: '請選擇機器人',
    botLogTitle: '機器人日誌',
    enableAutoRefresh: '開啟自動重新整理',
    session: '對話',
    yesterday: '昨天',
    earlier: '更久之前',
    dateFormat: '{{month}}月{{day}}日',
    setBotEnableError: '設定機器人啟用狀態失敗',
    log: '日誌',
    configuration: '設定',
    logs: '日誌',
    basicInfo: '基礎資訊',
    basicInfoDescription: '設定機器人名稱和描述',
    routingConnection: '路由與連接',
    routingConnectionDescription: '綁定處理此機器人訊息的流程線',
    routingRules: '條件路由規則',
    routingRulesDescription:
      '按順序匹配，命中第一條規則後路由到對應流程線；都不匹配時使用上方預設流程線',
    addRoutingRule: '新增規則',
    ruleTypeLauncherType: '會話類型',
    ruleTypeLauncherId: '會話 ID',
    ruleTypeMessageContent: '訊息內容',
    operatorEq: '等於',
    operatorNeq: '不等於',
    operatorContains: '包含',
    operatorNotContains: '不包含',
    operatorStartsWith: '前綴匹配',
    operatorRegex: '正規表達式',
    operatorHas: '包含',
    operatorNotHas: '不包含',
    ruleTypeMessageHasElement: '訊息元素類型',
    ruleValueElementPlaceholder: '選擇元素類型',
    elementImage: '圖片',
    elementVoice: '語音',
    elementFile: '檔案',
    elementForward: '轉發',
    elementFace: '表情',
    elementAt: '@某人',
    elementAtAll: '@全體',
    elementQuote: '引用',
    ruleValuePlaceholder: '匹配值',
    ruleValueLauncherIdPlaceholder: '群組或使用者 ID',
    ruleValueMessagePlaceholder: '訊息內容',
    ruleValuePrefixPlaceholder: '如: !draw',
    ruleValueRegexpPlaceholder: '如: ^/help',
    pipelineDiscard: '丟棄訊息',
    sessionTypePerson: '私聊',
    sessionTypeGroup: '群聊',
    adapterConfigDescription: '設定所選平台適配器',
    dangerZone: '危險區域',
    dangerZoneDescription: '不可逆的操作',
    deleteBotAction: '刪除此機器人',
    deleteBotHint: '刪除後，所有關聯設定將被永久移除，且無法復原。',
    webhookUrl: 'Webhook 回調位址',
    webhookUrlCopied: 'Webhook 位址已複製',
    webhookUrlHint:
      '點擊輸入框自動全選，然後按 Ctrl+C (Mac: Cmd+C) 複製，或點擊右側按鈕',
    webhookUrlHintEither: '以上兩個地址任選其一填入平台配置即可',
    webhookSaasHint:
      'Webhook 需要公網可存取的網域。LangBot Cloud 為你的機器人提供即開即用的公網位址。',
    webhookSaasLink: '了解 LangBot Cloud',
    adapterCategory: {
      popular: '熱門',
      china: '中國',
      global: '全球',
      protocol: '協定',
    },
    logLevel: '日誌級別',
    allLevels: '全部級別',
    selectLevel: '選擇級別',
    levelsSelected: '個級別已選',
    viewDetailedLogs: '查看詳細日誌',
    viewDetails: '詳情',
    collapse: '收起',
    imagesAttached: '張圖片已附加',
    noLogs: '暫無日誌',
    sessionMonitor: {
      title: '會話監控',
      sessions: '會話列表',
      noSessions: '暫無會話',
      selectSession: '選擇一個會話查看訊息',
      noMessages: '該會話暫無訊息',
      messages: '條訊息',
      messageCount: '{{count}} 條訊息',
      loading: '載入中...',
      loadingSessions: '載入會話中...',
      loadingMessages: '載入訊息中...',
      user: '用戶',
      variables: '變數',
      platform: '平台',
      lastActive: '最近活躍',
      refresh: '重新整理',
      active: '活躍',
      inactive: '不活躍',
      discarded: '已丟棄',
      userMessage: '使用者',
      botMessage: '助手',
    },
  },
  plugins: {
    title: '外掛擴展',
    description: '安裝和設定用於擴展功能的外掛，請在流程線配置中選用',
    createPlugin: '建立外掛',
    editPlugin: '編輯外掛',
    installed: '已安裝',
    marketplace: 'Marketplace',
    arrange: '編排',
    install: '安裝',
    installPlugin: '安裝外掛',
    installFromGithub: '來自 GitHub',
    onlySupportGithub: '目前僅支援從 GitHub 安裝',
    enterGithubLink: '請輸入外掛的Github連結',
    installing: '正在安裝外掛...',
    installSuccess: '外掛安裝成功',
    installFailed: '外掛安裝失敗：',
    searchPlugin: '搜尋外掛',
    sortBy: '排序方式',
    mostStars: '最多星標',
    recentlyAdded: '最近新增',
    recentlyUpdated: '最近更新',
    noMatchingPlugins: '沒有找到符合的外掛',
    loading: '載入中...',
    getPluginListError: '取得外掛清單失敗:',
    pluginConfig: '外掛設定',
    noPluginInstalled: '暫未安裝任何外掛',
    pluginSort: '外掛排序',
    pluginSortDescription:
      '外掛順序會影響同一事件內的處理順序，請拖曳外掛卡片排序',
    pluginSortSuccess: '外掛排序成功',
    pluginSortError: '外掛排序失敗：',
    pluginNoConfig: '外掛沒有設定項目。',
    systemDisabled: '外掛系統未啟用',
    systemDisabledDesc: '尚未啟用外掛系統，請根據文檔修改配置',
    connectionError: '外掛系統連接異常',
    connectionErrorDesc: '請檢查外掛系統配置或聯絡管理員',
    errorDetails: '錯誤詳情',
    loadingStatus: '正在檢查外掛系統狀態...',
    failedToGetStatus: '取得外掛系統狀態失敗',
    pluginSystemNotReady: '外掛系統未就緒，無法執行此操作',
    debugInfo: '偵錯資訊',
    debugInfoTitle: '外掛偵錯資訊',
    debugUrl: '偵錯位址',
    debugKey: '偵錯金鑰',
    noDebugKey: '(未設定)',
    debugKeyDisabled: '未設定偵錯金鑰，外掛偵錯無需認證',
    failedToGetDebugInfo: '取得偵錯資訊失敗',
    copiedToClipboard: '已複製到剪貼簿',
    deleting: '刪除中...',
    deletePlugin: '刪除外掛',
    cancel: '取消',
    saveConfig: '儲存設定',
    saving: '儲存中...',
    confirmDeletePlugin: '您確定要刪除外掛（{{author}}/{{name}}）嗎？',
    deleteDataCheckbox: '同時刪除外掛設定和持久化儲存',
    confirmDelete: '確認刪除',
    deleteError: '刪除失敗：',
    close: '關閉',
    deleteConfirm: '刪除確認',
    deleteSuccess: '刪除成功',
    modifyFailed: '修改失敗：',
    componentName: {
      Tool: '工具',
      EventListener: '事件監聽器',
      Command: '命令',
      KnowledgeEngine: '知識引擎',
      Parser: '解析器',
    },
    uploadLocal: '本地上傳',
    debugging: '調試中',
    uploadLocalPlugin: '上傳本地插件',
    dragToUpload: '拖拽文件到此處上傳',
    unsupportedFileType: '不支持的文件類型，僅支持 .lbpkg 和 .zip 文件',
    uploadingPlugin: '正在上傳插件...',
    uploadSuccess: '上傳成功',
    uploadFailed: '上傳失敗',
    selectFileToUpload: '選擇要上傳的插件文件',
    askConfirm: '確定要安裝插件 "{{name}}" ({{version}}) 嗎？',
    fromGithub: '來自 GitHub',
    fromLocal: '本地安裝',
    fromMarketplace: '來自市場',
    componentsList: '組件: ',
    noComponents: '無組件',
    delete: '刪除插件',
    update: '更新插件',
    new: '新',
    updateConfirm: '更新確認',
    confirmUpdatePlugin: '您確定要更新插件（{{author}}/{{name}}）嗎？',
    confirmUpdate: '確認更新',
    updating: '更新中...',
    updateSuccess: '插件更新成功',
    updateError: '更新失敗：',
    saveConfigSuccessNormal: '儲存配置成功',
    saveConfigError: '儲存配置失敗：',
    config: '配置',
    readme: '文件',
    viewSource: '查看來源',
    loadingReadme: '正在載入文件...',
    noReadme: '該插件沒有提供 README 文件',
    fileUpload: {
      tooLarge: '檔案大小超過 10MB 限制',
      success: '檔案上傳成功',
      failed: '檔案上傳失敗',
      uploading: '上傳中...',
      chooseFile: '選擇檔案',
      addFile: '新增檔案',
    },
    enterRepoUrl: '請輸入 GitHub 倉庫地址',
    repoUrlPlaceholder: '例如: https://github.com/owner/repo',
    fetchingReleases: '正在獲取 Release 列表...',
    selectRelease: '選擇 Release',
    noReleasesFound: '未找到 Release',
    fetchReleasesError: '獲取 Release 列表失敗：',
    selectAsset: '選擇要安裝的文件',
    noAssetsFound: '該 Release 沒有可用的 .lbpkg 文件',
    fetchAssetsError: '獲取文件列表失敗：',
    backToReleases: '返回 Release 列表',
    backToRepoUrl: '返回倉庫地址',
    backToAssets: '返回文件選擇',
    releaseTag: 'Tag: {{tag}}',
    releaseName: '名稱: {{name}}',
    publishedAt: '發佈於: {{date}}',
    prerelease: '預發佈',
    assetSize: '大小: {{size}}',
    confirmInstall: '確認安裝',
    installFromGithubDesc: '從 GitHub Release 安裝插件',
    goToMarketplace: '前往外掛市場',
    installProgress: {
      title: '正在安裝 {{name}}',
      titleGeneric: '外掛安裝',
      overallProgress: '整體進度',
      downloading: '下載外掛',
      installingDeps: '安裝依賴',
      initializing: '初始化設定',
      launching: '啟動外掛',
      completed: '已完成',
      failed: '安裝失敗',
      downloadSize: '檔案大小: {{size}}',
      depsInfo: '共 {{count}} 個依賴需要安裝',
      depsProgress: '已安裝 {{installed}}/{{total}} · 剩餘 {{remaining}} 個',
      installComplete: '外掛安裝成功',
      dismiss: '關閉',
      background: '背景執行',
      taskQueue: '安裝任務',
      clearCompleted: '清除已完成',
      noTasks: '暫無安裝任務',
    },
  },
  market: {
    searchPlaceholder: '搜尋插件...',
    searchResults: '搜尋到 {{count}} 個插件',
    totalPlugins: '共 {{count}} 個插件',
    noPlugins: '暫無插件',
    noResults: '未找到相關插件',
    loadingMore: '載入更多...',
    loading: '載入中...',
    allLoaded: '已顯示全部插件',
    install: '安裝',
    installConfirm: '確定要安裝插件 "{{name}}" ({{version}}) 嗎？',
    downloadComplete: '插件 "{{name}}" 下載完成',
    installFailed: '安裝失敗，請稍後重試',
    loadFailed: '取得插件列表失敗，請稍後重試',
    noDescription: '暫無描述',
    notFound: '插件資訊未找到',
    sortBy: '排序方式',
    sort: {
      recentlyAdded: '最近新增',
      recentlyUpdated: '最近更新',
      mostDownloads: '最多下載',
      leastDownloads: '最少下載',
    },
    downloads: '次下載',
    download: '下載',
    repository: '代碼倉庫',
    downloadFailed: '下載失敗',
    noReadme: '該插件沒有提供 README 文件',
    description: '描述',
    tagLabel: '標籤',
    submissionTitle: '您有插件提交正在審核中： {{name}}',
    submissionPending: '您的插件提交正在審核中： {{name}}',
    submissionApproved: '您的插件提交已通過審核： {{name}}',
    submissionRejected: '您的插件提交已被拒絕： {{name}}',
    clickToRevoke: '撤回',
    revokeSuccess: '撤回成功',
    revokeFailed: '撤回失敗',
    submissionDetails: '插件提交詳情',
    markAsRead: '已讀',
    markAsReadSuccess: '已標記為已讀',
    markAsReadFailed: '標記為已讀失敗',
    filterByComponent: '組件',
    allComponents: '全部組件',
    requestPlugin: '請求插件',
    tags: {
      filterByTags: '按標籤篩選',
      selected: '已選',
      selectTags: '選擇標籤',
      clearAll: '清空',
      noTags: '暫無標籤',
    },
    viewDetails: '查看詳情',
    deprecated: '已棄用',
    deprecatedTooltip: '請安裝對應「知識引擎」插件',
  },
  mcp: {
    title: 'MCP',
    createServer: '新增MCP伺服器',
    editServer: '編輯MCP伺服器',
    deleteServer: '刪除MCP伺服器',
    confirmDeleteServer: '您確定要刪除此MCP伺服器嗎？',
    confirmDeleteTitle: '刪除MCP伺服器',
    getServerListError: '取得MCP伺服器清單失敗：',
    serverName: '伺服器名稱',
    serverMode: '連接模式',
    stdio: 'Stdio模式',
    sse: 'SSE模式',
    selectMode: '選擇連接模式',
    http: 'HTTP模式',
    noServerInstalled: '暫未設定任何MCP伺服器',
    serverNameRequired: '伺服器名稱不能為空',
    commandRequired: '命令不能為空',
    urlRequired: 'URL不能為空',
    timeoutMustBePositive: '逾時時間必須是正數',
    command: '命令',
    args: '參數',
    env: '環境變數',
    url: 'URL位址',
    headers: '請求標頭',
    timeout: '逾時時間',
    addArgument: '新增參數',
    addEnvVar: '新增環境變數',
    addHeader: '新增請求標頭',
    keyName: '鍵名',
    value: '值',
    testing: '測試中...',
    connecting: '連接中...',
    testSuccess: '測試成功',
    testFailed: '刷新失敗：',
    testError: '刷新出錯',
    refreshSuccess: '刷新成功',
    refreshFailed: '刷新失敗：',
    connectionSuccess: '連接成功',
    connectionFailed: '連接失敗，請檢查URL',
    connectionFailedStatus: '連接失敗',
    toolsFound: '個工具',
    unknownError: '未知錯誤',
    noToolsFound: '未找到任何工具',
    parseResultFailed: '解析測試結果失敗',
    noResultReturned: '測試未返回結果',
    getTaskFailed: '獲取任務狀態失敗',
    noTaskId: '未獲取到任務ID',
    deleteSuccess: '刪除成功',
    deleteFailed: '刪除失敗：',
    deleteError: '刪除失敗：',
    saveSuccess: '儲存成功',
    saveError: '儲存失敗：',
    createSuccess: '建立成功',
    createFailed: '建立失敗：',
    createError: '建立失敗：',
    loadFailed: '載入失敗',
    modifyFailed: '修改失敗：',
    toolCount: '工具：{{count}}',
    statusConnected: '已開啟',
    statusDisconnected: '未開啟',
    statusError: '連接錯誤',
    statusDisabled: '已停用',
    loading: '載入中...',
    starCount: '星標：{{count}}',
    install: '安裝',
    installFromGithub: '從Github安裝MCP伺服器',
    add: '新增',
    name: '名稱',
    nameRequired: '名稱不能為空',
    sseTimeout: 'SSE逾時時間',
    sseTimeoutDescription: '用於建立SSE連接的逾時時間',
    extraParametersDescription: '額外參數，用於設定MCP伺服器的特定行為',
    timeoutMustBeNumber: '逾時時間必須是數字',
    timeoutNonNegative: '逾時時間不能為負數',
    sseTimeoutMustBeNumber: 'SSE逾時時間必須是數字',
    sseTimeoutNonNegative: 'SSE逾時時間不能為負數',
    updateSuccess: '更新成功',
    updateFailed: '更新失敗：',
    selectFromSidebar: '從側邊欄選擇一個 MCP 伺服器',
    dangerZone: '危險區域',
    dangerZoneDescription: '此 MCP 伺服器的不可逆操作。',
    deleteMCPAction: '刪除此 MCP 伺服器',
    deleteMCPHint: '刪除後，此 MCP 伺服器設定將無法恢復。',
  },
  pipelines: {
    title: '流程線',
    description: '流程線定義了對訊息事件的處理流程，用於綁定到機器人',
    createPipeline: '建立流程線',
    selectFromSidebar: '從側邊欄選擇一個流程線',
    editPipeline: '編輯流程線',
    chat: '對話',
    configuration: '設定',
    debugChat: '對話除錯',
    getPipelineListError: '取得流程線清單失敗：',
    daysAgo: '天前',
    today: '今天',
    updateTime: '更新於',
    defaultBadge: '預設',
    sortBy: '排序方式',
    newestCreated: '最新建立',
    earliestCreated: '最早建立',
    recentlyEdited: '最近編輯',
    earliestEdited: '最早編輯',
    basicInfo: '基本資訊',
    basicInfoDescription: '設定流程線名稱、圖示和描述',
    aiCapabilities: 'AI 能力',
    triggerConditions: '觸發條件',
    safetyControls: '安全控制',
    outputProcessing: '輸出處理',
    nameRequired: '名稱不能為空',
    descriptionRequired: '描述不能為空',
    createSuccess: '建立成功 請編輯流程線詳細參數',
    createError: '建立失敗：',
    saveSuccess: '儲存成功',
    saveError: '儲存失敗：',
    copySuffix: ' Copy',
    deleteConfirmation:
      '您確定要刪除這個流程線嗎？已綁定此流程線的機器人將無法使用。',
    defaultPipelineCannotDelete: '預設流程線不可刪除',
    deleteSuccess: '刪除成功',
    deleteError: '刪除失敗：',
    copyConfirmTitle: '確認複製',
    copyConfirmation:
      '確定要複製這個流程線嗎？複製將創建一個包含完整配置的新流程線。',
    unsavedChanges: '有未儲存的變更',
    dangerZone: '危險區域',
    dangerZoneDescription: '不可逆的操作',
    deletePipelineAction: '刪除此流程線',
    deletePipelineHint: '刪除後，綁定此流程線的機器人將無法正常運作。',
    copyPipelineAction: '複製此流程線',
    copyPipelineHint: '建立一條新的流程線，並複製所有設定。',
    extensions: {
      title: '擴展集成',
      loadError: '載入插件清單失敗',
      saveSuccess: '儲存成功',
      saveError: '儲存失敗',
      noPluginsAvailable: '暫無可用插件',
      disabled: '已停用',
      noPluginsSelected: '未選擇任何插件',
      addPlugin: '新增插件',
      selectPlugins: '選擇插件',
      pluginsTitle: '插件',
      mcpServersTitle: 'MCP 伺服器',
      noMCPServersSelected: '未選擇任何 MCP 伺服器',
      addMCPServer: '新增 MCP 伺服器',
      selectMCPServers: '選擇 MCP 伺服器',
      toolCount: '{{count}} 個工具',
      noPluginsInstalled: '無已安裝的插件',
      noMCPServersConfigured: '無已配置的 MCP 伺服器',
      selectAll: '全選',
      enableAllPlugins: '啟用所有插件',
      enableAllMCPServers: '啟用所有 MCP 伺服器',
      allPluginsEnabled: '已啟用所有插件',
      allMCPServersEnabled: '已啟用所有 MCP 伺服器',
    },
    debugDialog: {
      title: '流程線對話',
      selectPipeline: '選擇流程線',
      sessionType: '對話類型',
      privateChat: '私聊',
      groupChat: '群聊',
      send: '傳送',
      reset: '重設對話',
      inputPlaceholder: '傳送 {{type}} 訊息...',
      noMessages: '暫無訊息',
      userMessage: '使用者',
      botMessage: '機器人',
      sendFailed: '傳送失敗',
      resetSuccess: '對話已重設',
      resetFailed: '重設失敗',
      loadMessagesFailed: '載入訊息失敗',
      loadPipelinesFailed: '載入流程線失敗',
      atTips: '提及機器人',
      streaming: '串流傳輸',
      streamOutput: '串流',
      connected: 'WebSocket已連接',
      disconnected: 'WebSocket未連接',
      connectionError: 'WebSocket連接錯誤',
      connectionFailed: 'WebSocket連接失敗',
      notConnected: 'WebSocket未連接，請稍後重試',
      imageUploadFailed: '圖片上傳失敗',
      reply: '回覆',
      replyTo: '回覆給',
      showMarkdown: '渲染',
      showRaw: '原文',
      allMembers: '全體成員',
      file: '檔案',
      voice: '語音',
      uploadImage: '上傳圖片',
      uploading: '上傳中...',
    },
    monitoring: {
      title: '監控日誌',
      description: '檢視此流程線的執行記錄和錯誤資訊（最近24小時）',
      detailedLogs: '詳細日誌',
    },
  },
  knowledge: {
    title: '知識庫',
    createKnowledgeBase: '建立知識庫',
    selectFromSidebar: '從側邊欄選擇一個知識庫',
    editKnowledgeBase: '編輯知識庫',
    selectKnowledgeBase: '選擇知識庫',
    selectKnowledgeBases: '選擇知識庫',
    addKnowledgeBase: '新增知識庫',
    noKnowledgeBaseSelected: '未選擇知識庫',
    empty: '無',
    editDocument: '文檔',
    description: '設定可用於提升模型回覆品質的知識庫',
    metadata: '中繼資料',
    documents: '文檔',
    kbNameRequired: '知識庫名稱不能為空',
    kbDescriptionRequired: '知識庫描述不能為空',
    embeddingModelUUIDRequired: '嵌入模型不能為空',
    daysAgo: '天前',
    today: '今天',
    kbName: '知識庫名稱',
    kbDescription: '知識庫描述',
    topK: '召回數量 ',
    topKRequired: '召回數量不能為空',
    topKMax: '召回數量最大值為30',
    topKdescription: '取得相關性高的上位 K 件文獻的數量，範圍為1～30',
    defaultDescription: '一個知識庫',
    embeddingModelUUID: '嵌入模型',
    selectEmbeddingModel: '選擇嵌入模型',
    embeddingModelDescription: '用於向量化文字，可在模型設定頁面設定',
    updateTime: '更新於',
    cannotChangeEmbeddingModel: '知識庫建立後不可修改嵌入模型',
    updateKnowledgeBaseSuccess: '知識庫更新成功',
    updateKnowledgeBaseFailed: '知識庫更新失敗：',
    documentsTab: {
      name: '名稱',
      status: '狀態',
      noResults: '暫無文件',
      dragAndDrop: '拖曳文檔到此處或點擊上傳',
      uploading: '上傳中...',
      supportedFormats: '支援 PDF、Word、TXT、Markdown 等文檔格式',
      uploadSuccess: '文檔上傳成功！',
      uploadError: '文檔上傳失敗：',
      uploadingFile: '上傳文檔中...',
      fileSizeExceeded: '檔案大小超過 10MB 限制，請分割成較小的檔案後上傳',
      actions: '操作',
      delete: '刪除文檔',
      fileDeleteSuccess: '文檔刪除成功',
      fileDeleteFailed: '文檔刪除失敗：',
      processing: '處理中',
      completed: '完成',
      failed: '失敗',
      selectParser: '選擇解析器',
      builtInParser: '由知識引擎提供',
      noParserAvailable:
        '沒有解析器支援此檔案類型，請安裝支援該格式的解析器插件。',
      installParserHint: '前往插件市場安裝解析器 →',
      confirmUpload: '上傳',
      cancelUpload: '取消',
    },
    deleteKnowledgeBaseConfirmation:
      '您確定要刪除這個知識庫嗎？此知識庫下的所有文檔將被刪除。',
    retrieve: '檢索測試',
    retrieveTest: '檢索測試',
    query: '查詢',
    queryPlaceholder: '輸入查詢內容...',
    distance: '距離',
    content: '內容',
    fileName: '文檔名稱',
    noResults: '暫無結果',
    retrieveError: '檢索失敗：',
    basicInfo: '基本資訊',
    basicInfoDescription: '設定知識庫名稱、圖示和描述',
    engineSettings: '引擎設定',
    engineSettingsDescription: '所選知識引擎的設定',
    engineSettingsReadonly: '編輯模式下不可修改',
    retrievalSettings: '檢索設定',
    retrievalSettingsDescription: '設定從此知識庫檢索文件的方式',
    dangerZone: '危險區域',
    dangerZoneDescription: '不可逆的操作',
    deleteKbAction: '刪除此知識庫',
    deleteKbHint: '刪除後，此知識庫中的所有文件和資料將被永久移除。',
    noEnginesAvailable: '沒有可用的知識庫引擎',
    installEngineHint: '請先安裝「知識引擎」插件',
    unknownEngine: '未知引擎',
    knowledgeEngine: '知識引擎',
    knowledgeEngineRequired: '知識引擎為必填項',
    selectKnowledgeEngine: '選擇知識引擎',
    builtInEngine: '內建引擎',
    cannotChangeKnowledgeEngine: '建立後無法更改知識引擎',
    createKnowledgeBaseFailed: '知識庫建立失敗：',
    loadKnowledgeBaseFailed: '知識庫載入失敗：',
    deleteKnowledgeBaseFailed: '知識庫刪除失敗：',
    getKnowledgeBaseListError: '取得知識庫列表失敗：',
    embeddingModel: 'Embedding模型',
    embeddingModelRequired: '此引擎需要Embedding模型',
    addExternal: '添加外部知識庫',
    createExternalSuccess: '外部知識庫創建成功',
    updateExternalSuccess: '外部知識庫更新成功',
    deleteExternalSuccess: '外部知識庫刪除成功',
    retriever: '檢索器',
    selectRetriever: '選擇一個檢索器...',
    retrieverConfiguration: '檢索器配置',
    retrieverInstallInfo: '您可以從',
    retrieverMarketLink: '此處安裝知識檢索器插件',
    migration: {
      title: '知識庫遷移',
      description:
        '新版本已將知識庫重構為插件化架構，並統一內建知識庫和外部知識庫為「知識引擎」插件，需要對舊知識庫資料進行遷移。您的舊資料已自動備份在資料庫中。',
      detected:
        '共檢測到 {{total}} 個知識庫需要遷移（{{internal}} 個內建知識庫，{{external}} 個外部知識庫）。',
      startWithInstall: '自動安裝插件並遷移',
      startDataOnly: '僅遷移資料',
      dataOnlyHint:
        '「僅遷移資料」適合內網環境使用，請在遷移完成後自行安裝對應插件',
      dismiss: '丟棄原數據',
      running: '正在遷移知識庫，請稍候...',
      success: '知識庫遷移完成',
      error: '知識庫遷移失敗：',
      dismissError: '操作失敗',
      retry: '重試',
    },
  },
  register: {
    title: '初始化 LangBot 👋',
    description: '這是您首次啟動 LangBot',
    adminAccountNote: '您在此處初始化使用的帳號將作為管理員帳號',
    register: '註冊',
    initWithSpace: '透過 Space 初始化',
    spaceRecommended: '推薦：使用官方提供的穩定模型 API 和雲服務',
    spaceInfoTip1: 'Space 提供統一的帳戶鑑權服務，不會上傳您的任何敏感資訊。',
    spaceInfoTip2:
      '使用 Space 帳戶登入可使用 LangBot Models 等雲服務，您將會獲得一定的免費模型調用額度幫助您快速起步。',
    spaceInfoTip3:
      '登入方式不會影響其他功能，您在任何情況下都可以配置使用其他來源的模型。',
    registerLocal: '註冊本地帳號',
    registerWithPassword: '透過電子郵件密碼組合註冊',
    initSuccess: '初始化成功 請登入',
    initFailed: '初始化失敗：',
  },
  resetPassword: {
    title: '重設密碼 🔐',
    description: '輸入恢復金鑰和新的密碼來重設您的帳戶密碼',
    recoveryKey: '恢復金鑰',
    recoveryKeyDescription:
      '儲存在設定檔案`data/config.yaml`的`system.recovery_key`中',
    newPassword: '新密碼',
    enterRecoveryKey: '輸入恢復金鑰',
    enterNewPassword: '輸入新密碼',
    recoveryKeyRequired: '恢復金鑰不能為空',
    newPasswordRequired: '新密碼不能為空',
    resetPassword: '重設密碼',
    resetting: '重設中...',
    resetSuccess: '密碼重設成功，請登入',
    resetFailed: '密碼重設失敗，請檢查電子郵件和恢復金鑰是否正確',
    backToLogin: '返回登入',
  },
  embedding: {
    description: '管理嵌入模型，用於向量化文字',
    createModel: '建立嵌入模型',
    editModel: '編輯嵌入模型',
    getModelListError: '取得嵌入模型清單失敗：',
    embeddingModels: '嵌入模型',
    extraParametersDescription:
      '將在請求時附加到請求體中，如 encoding_format, dimensions 等',
  },
  llm: {
    llmModels: '對話模型',
    description: '管理 LLM 模型，用於對話訊息產生',
    extraParametersDescription:
      '將在請求時附加到請求體中，如 max_tokens, temperature, top_p 等',
  },
  version: {
    newVersionAvailable: '有新版本可用',
    viewUpdateGuide: '查看更新方式',
    noReleaseNotes: '暫無更新日誌',
  },
  account: {
    settings: '帳戶設定',
    setPassword: '設定密碼',
    passwordSetSuccess: '密碼設定成功',
    passwordStatus: '本地密碼',
    passwordSet: '已設定',
    passwordNotSet: '未設定',
    passwordSetDescription: '您已設定本地密碼，可使用電子郵件密碼登入',
    spaceStatus: 'Space 帳戶',
    spaceBound: '已綁定',
    spaceNotBound: '未綁定',
    spaceBoundDescription: '已綁定 Space 帳戶，可使用官方模型 API 和雲服務',
    bindSpace: '綁定 Space 帳戶',
    bindSpaceDescription: '綁定後可使用官方模型 API 和雲服務',
    bindSpaceButton: '綁定',
    bindSpaceConfirmTitle: '確認綁定',
    bindSpaceConfirmDescription: '您即將把本地實例綁定到 Space 帳戶',
    bindSpaceWarning:
      '綁定後，您的登入電子郵件將從 {{localEmail}} 更改為 Space 帳戶的電子郵件。',
    bindSpaceSuccess: 'Space 帳戶綁定成功',
    bindSpaceFailed: '綁定 Space 帳戶失敗',
    bindSpaceInvalidState: '無效的綁定請求，請從帳戶設定重新發起',
    setPasswordHint: '設定密碼後可使用電子郵件密碼登入',
    spaceEmailMismatch: 'Space登入帳號電子郵件與本實例帳號電子郵件不匹配',
  },
  monitoring: {
    title: '儀表盤',
    description: '監控機器人活動、LLM調用和系統效能',
    overview: '概覽',
    totalMessages: '總訊息數',
    llmCallsCount: 'LLM調用',
    modelCallsCount: '模型調用',
    successRate: '成功率',
    activeSessions: '活躍會話',
    last24Hours: '最近24小時',
    filters: {
      title: '篩選',
      bot: '機器人',
      pipeline: '流水線',
      allBots: '全部機器人',
      selectBot: '選擇機器人',
      allPipelines: '全部流水線',
      selectPipeline: '選擇流水線',
      loading: '載入中...',
      timeRange: '時間範圍',
      customRange: '自訂範圍',
      from: '從',
      to: '到',
      apply: '套用',
      reset: '重置篩選',
      lastHour: '最近1小時',
      last6Hours: '最近6小時',
      last24Hours: '最近24小時',
      last7Days: '最近7天',
      last30Days: '最近30天',
    },
    tabs: {
      messages: '訊息記錄',
      llmCalls: 'LLM調用',
      embeddingCalls: 'Embedding調用',
      modelCalls: '模型調用',
      sessions: '會話分析',
      feedback: '使用者反饋',
      errors: '錯誤日誌',
    },
    messageList: {
      timestamp: '時間戳記',
      bot: '機器人',
      pipeline: '流水線',
      message: '訊息',
      sessionId: '會話ID',
      status: '狀態',
      actions: '操作',
      viewDetails: '查看詳情',
      copyId: '複製ID',
      noMessages: '未找到訊息',
      noMessagesDescription: '嘗試調整篩選條件或稍後查看',
      loading: '載入訊息中...',
      loadMore: '載入更多',
      autoRefresh: '自動重新整理',
      platform: '平台',
      user: '使用者',
      level: '級別',
      runner: '執行器',
      viewConversation: '顯示對話詳情',
    },
    llmCalls: {
      title: 'LLM呼叫',
      model: '模型',
      tokens: '代幣數',
      duration: '持續時間',
      cost: '成本',
      noData: '未找到LLM調用記錄',
      inputTokens: '輸入代幣',
      outputTokens: '輸出代幣',
      totalTokens: '總代幣數',
      avgDuration: '平均持續時間',
      calls: '呼叫次數',
    },
    embeddingCalls: {
      title: 'Embedding調用',
      model: '模型',
      tokens: '代幣數',
      duration: '持續時間',
      noData: '未找到Embedding調用記錄',
      promptTokens: '輸入代幣',
      totalTokens: '總代幣數',
      inputCount: '輸入數量',
      knowledgeBase: '知識庫',
      queryText: '查詢文字',
    },
    modelCalls: {
      title: '模型調用',
      llmModel: '對話模型',
      embeddingModel: '嵌入模型',
      embeddingCall: '嵌入調用',
      retrieveCall: '檢索調用',
      noData: '未找到模型調用記錄',
    },
    sessions: {
      sessionId: '會話ID',
      messageCount: '訊息數',
      duration: '持續時間',
      lastActivity: '最後活動',
      noSessions: '未找到會話',
      startTime: '開始時間',
      messageStats: '訊息統計',
      totalMessages: '總訊息數',
      successMessages: '成功',
      errorMessages: '失敗',
      llmStats: 'LLM統計',
      noData: '未找到會話',
    },
    errors: {
      errorType: '錯誤類型',
      errorMessage: '錯誤訊息',
      occurredAt: '發生時間',
      noErrors: '未找到錯誤',
      stackTrace: '堆疊追蹤',
      title: '錯誤',
    },
    feedback: {
      title: '使用者反饋',
      totalFeedback: '總反饋數',
      totalLikes: '按讚數',
      totalDislikes: '按倒讚數',
      satisfactionRate: '滿意度',
      like: '按讚',
      dislike: '按倒讚',
      noFeedback: '暫無反饋',
      noFeedbackDescription: '使用者反饋將在此顯示',
      feedbackList: '反饋列表',
      feedbackContent: '反饋內容',
      contextInfo: '上下文資訊',
      userId: '使用者ID',
      messageId: '訊息ID',
      streamId: '關聯提問ID',
      inaccurateReasons: '不準確原因',
      platform: '平台',
      exportFeedback: '匯出反饋',
    },
    messageDetails: {
      noData: '此查詢沒有LLM調用或錯誤記錄',
    },
    queries: {
      title: '查詢',
    },
    queryVariables: {
      title: '查詢變數',
    },
    trafficChart: {
      title: '流量概覽',
      messages: '訊息',
      llmCalls: 'LLM呼叫',
      noData: '暫無流量資料',
    },
    viewMonitoring: '查看日誌監控',
    refreshData: '重新整理資料',
    exportData: '匯出資料',
    export: {
      title: '匯出資料',
      exporting: '匯出中...',
      messages: '訊息記錄',
      llmCalls: 'LLM 呼叫',
      embeddingCalls: 'Embedding 呼叫',
      errors: '錯誤日誌',
      sessions: '會話記錄',
      feedback: '使用者回饋',
    },
  },
  limitation: {
    maxBotsReached:
      '已達到機器人數量上限（{{max}}個）。請先刪除已有機器人後再建立新的。',
    maxPipelinesReached:
      '已達到流水線數量上限（{{max}}個）。請先刪除已有流水線後再建立新的。',
    maxExtensionsReached:
      '已達到擴充功能數量上限（{{max}}個）。請先刪除已有的 MCP 伺服器或外掛後再新增。',
  },
  wizard: {
    sidebarDescription: '透過引導步驟建立機器人',
    loading: '正在載入嚮導...',
    loadError: '載入嚮導資料失敗',
    skip: '跳過',
    skipConfirmMessage:
      '您之後可以在帳戶選單重新進入快速開始嚮導，或手動建立機器人。',
    skipConfirmOk: '確定',
    prev: '上一步',
    next: '下一步',
    finish: '建立並部署',
    confirmCreateBot: '確定，建立機器人',
    createSuccess: '流水線已建立並關聯到機器人！',
    botCreateSuccess: '機器人建立成功！',
    botSaveSuccess: '機器人配置已儲存並啟用！',
    createError: '建立資源失敗',
    spaceAuthError: '無法發起 Space 授權',
    skipSaveError: '儲存跳過狀態失敗，請重試。',
    completeSaveError: '儲存完成狀態失敗，請重試。',
    step: {
      platform: '平台接入',
      botConfig: '機器人配置',
      aiEngine: 'AI 引擎',
      done: '完成',
    },
    platform: {
      title: '選擇平台',
      description: '選擇機器人要接入的訊息平台。',
    },
    botConfig: {
      title: '配置機器人',
      description: '配置好機器人並確認其正常運作後再繼續。',
      saveBot: '儲存並啟用',
      resaveBot: '重新儲存配置',
      botSaved: '機器人配置已儲存並啟用，請查看日誌確認連接正常。',
      logsTitle: '機器人日誌',
      logsDescription: '監控機器人活動，確認平台連接是否正常運作。',
    },
    aiEngine: {
      title: '選擇 AI 引擎',
      description: '選擇驅動機器人智慧的 AI 引擎。',
    },
    spaceBanner: {
      message: '接入 LangBot Space，取得免費試用模型額度，零配置極速開箱！',
      action: '前往授權登入',
    },
    config: {
      botInfo: '機器人資訊',
      botNamePlaceholder: '請輸入機器人名稱',
      botDescPlaceholder: '請輸入機器人描述（可選）',
      platformConfig: '{{platform}} 配置',
      aiConfig: '{{engine}} 配置',
    },
    done: {
      title: '一切就緒！',
      description:
        '機器人已建立並連接到 AI 流水線。你現在可以在工作台中管理它。',
      backToWorkbench: '返回工作台',
    },
  },
  workflows: {
    title: 'Workflows',
    description: 'Create and manage visual workflows for complex message processing logic',
    createWorkflow: 'Create Workflow',
    selectFromSidebar: 'Select a workflow from the sidebar',
    editWorkflow: 'Edit Workflow',
    newWorkflow: 'New Workflow',
    getWorkflowListError: 'Failed to get workflow list: ',
    workflowName: 'Workflow Name',
    workflowDescription: 'Workflow Description',
    workflowNameRequired: 'Workflow name is required',
    defaultDescription: 'A workflow',
    getWorkflowError: 'Failed to get workflow: ',
    loadError: 'Failed to load workflow',
    saveSuccess: 'Saved successfully',
    saveError: 'Failed to save: ',
    createSuccess: 'Workflow created successfully',
    createError: 'Failed to create: ',
    deleteSuccess: 'Deleted successfully',
    deleteError: 'Failed to delete: ',
    deleteConfirmation: 'Are you sure you want to delete this workflow?',
    copySuccess: 'Copied successfully',
    copyError: 'Failed to copy: ',
    export: 'Export',
    import: 'Import',
    exportSuccess: 'Workflow exported',
    importSuccess: 'Workflow imported',
    importError: 'Import failed: Invalid file format',
    publish: 'Publish',
    publishSuccess: 'Published successfully',
    publishError: 'Failed to publish',
    configuration: 'Configuration',
    executions: 'Executions',
    editor: 'Editor',
    debugChat: '對話除錯',
    basicInfo: 'Basic Info',
    basicInfoDesc: 'Set workflow name, icon and description',
    basicInfoDescription: 'Set workflow name and description',
    dangerZone: 'Danger Zone',
    dangerZoneDesc: 'Irreversible operations',
    dangerZoneDescription: 'Irreversible operations',
    deleteWorkflowAction: 'Delete this workflow',
    deleteWorkflowHint: 'Once deleted, all associated configurations will be permanently removed and cannot be recovered.',
    deleteWorkflow: 'Delete Workflow',
    deleteConfirm: 'Confirm Delete',
    deleteConfirmDesc: 'Are you sure you want to delete workflow "{{name}}"? This action cannot be undone.',
    // Form component
    name: 'Name',
    namePlaceholder: 'Enter workflow name',
    descriptionPlaceholder: 'Enter workflow description (optional)',
    enabled: 'Enabled',
    enabledDesc: 'When enabled, the workflow can be triggered for execution',
    loading: 'Loading...',
    info: 'Workflow Info',
    uuid: 'UUID',
    version: 'Version',
    createdAt: 'Created At',
    updatedAt: 'Updated At',
    // Executions tab
    totalExecutions: '{{count}} execution(s) total',
    statistics: 'Statistics',
    successfulCount: '{{count}} successful',
    successRate: 'Success Rate',
    averageDuration: 'Avg. Duration',
    perExecution: 'per execution',
    failedExecutions: 'Failed',
    lastExecution: 'Last run',
    filterByStatus: 'Filter by status',
    allStatuses: 'All statuses',
    manualTrigger: 'Manual Trigger',
    executionId: 'Execution ID',
    status: 'Status',
    triggerType: 'Trigger Type',
    startedAt: 'Started At',
    duration: 'Duration',
    noExecutions: 'No executions yet',
    executionDetails: 'Execution Details',
    error: 'Error',
    nodeExecutions: 'Node Executions',
    result: 'Result',
    'status.pending': 'Pending',
    'status.running': 'Running',
    'status.completed': 'Completed',
    'status.failed': 'Failed',
    'status.cancelled': 'Cancelled',
    // Editor component translations
    nodePalette: 'Node Palette',
    properties: 'Properties',
    zoomIn: 'Zoom In',
    zoomOut: 'Zoom Out',
    fitView: 'Fit View',
    unsavedChanges: 'Unsaved changes',
    paste: 'Paste',
    deleted: 'Deleted',
    nothingToCopy: 'No nodes selected to copy',
    nothingToPaste: 'Clipboard is empty',
    copied: 'Copied {{count}} node(s)',
    pasted: 'Pasted {{count}} node(s)',
    nodesSelected: '{{count}} node(s) selected',
    edgesSelected: '{{count}} edge(s) selected',
    // Node palette
    searchNodes: 'Search nodes...',
    loadingNodeTypes: 'Loading node types...',
    noNodesFound: 'No matching nodes found',
    clearSearch: 'Clear search',
    dragToAdd: 'Drag nodes to add to canvas',
    // Property panel
    selectNodeOrEdge: 'Select a node or edge',
    selectNodeOrEdgeHint: 'Click on a node or edge in the canvas to view and edit its properties',
    edgeProperties: 'Edge Properties',
    nodeProperties: 'Node Properties',
    condition: 'Condition',
    hasCondition: 'Set',
    conditionPlaceholder: 'Enter condition expression, e.g. output.success == true',
    conditionHelp: 'When condition is empty, this edge will always be executed. Use {{variable}} to reference context variables.',
    deleteEdge: 'Delete Edge',
    deleteEdgeConfirm: 'Confirm Delete Edge',
    deleteEdgeConfirmDesc: 'This edge will be permanently removed.',
    nodeLabel: 'Node Label',
    nodeLabelPlaceholder: 'Enter node display name',
    nodeId: 'Node ID',
    inputOutputVariables: 'Input/Output Variables',
    inputs: 'Inputs',
    outputs: 'Outputs',
    availableVariables: 'Available Variables',
    globalVariables: 'Global Variables',
    messageContent: 'Message Content',
    messageSender: 'Sender',
    platform: 'Platform',
    sessionId: 'Session ID',
    timestamp: 'Timestamp',
    nodeConfig: 'Node Configuration',
    noConfigOptions: 'No configuration options for this node type',
    deleteNode: 'Delete Node',
    deleteNodeConfirm: 'Confirm Delete Node',
    deleteNodeConfirmDesc: 'This node and all its connections will be permanently removed.',
    // Node inputs/outputs i18n (for port labels)
    nodeInputs: {
      // Common inputs
      input: 'Input',
      message: 'Message',
      text: 'Text',
      query: 'Query',
      data: 'Data',
      condition: 'Condition',
      value: 'Value',
      // Trigger inputs
      content: 'Content',
      context: 'Context',
      body: 'Request Body',
      variables: 'Variables',
      items: 'Items',
      arguments: 'Arguments',
      // AI/Process inputs
      question: 'Question',
      parameters: 'Parameters',
      key: 'Key',
      // Control inputs
      case_1: 'Case 1',
      case_2: 'Case 2',
      branch_1: 'Branch 1',
      branch_2: 'Branch 2',
      // Action inputs
      notification_id: 'Notification ID',
      // Integration inputs
      key_template: 'Key Template',
      hash_field: 'Hash Field',
      server_name: 'Server Name',
      tool_name: 'Tool Name',
      arguments_template: 'Arguments Template',
      scope: 'Scope',
    },
    // Data type labels
    'type.string': 'String',
    'type.object': 'Object',
    'type.array': 'Array',
    'type.boolean': 'Boolean',
    'type.number': 'Number',
    'type.any': 'Any',
    'type.datetime': 'DateTime',
    nodes: {
      trigger: 'Triggers',
      triggerDescription: 'Starting nodes for workflows',
      messageTrigger: 'Message Trigger',
      messageTriggerDescription: 'Triggered when a message is received',
      scheduleTrigger: 'Schedule Trigger',
      scheduleTriggerDescription: 'Triggered on a schedule',
      cronTrigger: 'Cron Trigger',
      cronTriggerDescription: 'Trigger workflow on a scheduled time',
      webhookTrigger: 'Webhook Trigger',
      webhookTriggerDescription: 'Triggered via HTTP request',
      eventTrigger: 'Event Trigger',
      eventTriggerDescription: 'Triggered on system events',
      process: 'AI/Process',
      processDescription: 'Data processing nodes',
      aiProcess: 'AI Processing',
      aiProcessDescription: 'Process messages using AI models',
      llmCall: 'LLM Call',
      llmCallDescription: 'Invoke large language model for conversation or generation',
      codeProcess: 'Code Processing',
      codeProcessDescription: 'Execute custom code',
      codeExecutor: 'Code Executor',
      codeExecutorDescription: 'Execute Python/JavaScript code',
      templateProcess: 'Template Processing',
      templateProcessDescription: 'Format output using templates',
      httpRequest: 'HTTP Request',
      httpRequestDescription: 'Send HTTP requests',
      dataTransform: 'Data Transform',
      dataTransformDescription: 'Transform data format',
      questionClassifier: 'Question Classifier',
      questionClassifierDescription: 'Classify user questions into predefined categories using LLM',
      parameterExtractor: 'Parameter Extractor',
      parameterExtractorDescription: 'Extract structured parameters from text using LLM',
      knowledgeRetrieval: 'Knowledge Retrieval',
      knowledgeRetrievalDescription: 'Retrieve relevant content from knowledge base',
      textTemplate: 'Text Template',
      textTemplateDescription: 'Generate text using templates with variable interpolation',
      jsonTransform: 'JSON Transform',
      jsonTransformDescription: 'Transform JSON data using expressions',
      dataAggregator: 'Data Aggregator',
      dataAggregatorDescription: 'Aggregate data from multiple sources',
      textSplitter: 'Text Splitter',
      textSplitterDescription: 'Split text into smaller chunks',
      variableAssignment: 'Variable Assignment',
      variableAssignmentDescription: 'Assign values to workflow variables',
      control: 'Control Flow',
      controlDescription: 'Flow control nodes',
      condition: 'Condition Branch',
      conditionDescription: 'Branch based on conditions',
      switch: 'Switch',
      switchDescription: 'Multi-way branching',
      loop: 'Loop',
      loopDescription: 'Repeat execution',
      iterator: 'Iterator',
      iteratorDescription: 'Iterate over array elements',
      parallel: 'Parallel',
      parallelDescription: 'Execute multiple branches in parallel',
      wait: 'Wait',
      waitDescription: 'Wait for specified time',
      delay: 'Delay',
      delayDescription: 'Wait for a specified time',
      merge: 'Merge',
      mergeDescription: 'Merge multiple branches',
      variableAggregator: 'Variable Aggregator',
      variableAggregatorDescription: 'Aggregate variable outputs from multiple branches',
      action: 'Actions',
      actionDescription: 'Action execution nodes',
      sendMessage: 'Send Message',
      sendMessageDescription: 'Send message to platform',
      replyMessage: 'Reply Message',
      replyMessageDescription: 'Reply to the message that triggered the workflow',
      storeData: 'Store Data',
      storeDataDescription: 'Store data to database',
      callPipeline: 'Call Pipeline',
      callPipelineDescription: 'Call an existing Pipeline',
      setVariable: 'Set Variable',
      setVariableDescription: 'Set context variable',
      openingStatement: 'Opening Statement',
      openingStatementDescription: 'Provide conversation opener and suggested questions',
      end: 'End',
      endDescription: 'Mark the end of workflow execution',
      log: 'Log',
      logDescription: 'Record log information',
      integration: 'Integration',
      integrationDescription: 'Third-party platform integration nodes',
      difyWorkflow: 'Dify Workflow',
      difyWorkflowDescription: 'Call Dify platform workflow',
      difyKnowledgeQuery: 'Dify Knowledge Query',
      difyKnowledgeQueryDescription: 'Query Dify knowledge base',
      n8nWorkflow: 'N8n Workflow',
      n8nWorkflowDescription: 'Call n8n workflow',
      langflowFlow: 'Langflow Flow',
      langflowFlowDescription: 'Call Langflow flow',
      cozeBot: 'Coze Bot',
      cozeBotDescription: 'Call Coze Bot',
      // Data & Tools integration nodes
      databaseQuery: 'Database Query',
      databaseQueryDescription: 'Execute database queries',
      redisOperation: 'Redis Operation',
      redisOperationDescription: 'Perform Redis cache operations',
      mcpTool: 'MCP Tool',
      mcpToolDescription: 'Invoke an MCP tool',
      memoryStore: 'Memory Store',
      memoryStoreDescription: 'Store and retrieve data from workflow memory',
    },
    executionHistory: {
      title: 'Execution History',
      noExecutions: 'No executions yet',
      status: 'Status',
      startTime: 'Start Time',
      duration: 'Duration',
      running: 'Running',
      completed: 'Completed',
      failed: 'Failed',
      cancelled: 'Cancelled',
      viewDetails: 'View Details',
      cancel: 'Cancel Execution',
      retry: 'Retry',
      nodeResults: 'Node Execution Results',
    },
    versions: {
      title: 'Version History',
      current: 'Current Version',
      rollback: 'Rollback to this version',
      rollbackConfirm: 'Are you sure you want to rollback to this version? Current changes will be lost.',
      rollbackSuccess: 'Rollback successful',
      rollbackError: 'Failed to rollback: ',
    },
    // Debug and monitoring
    debug: 'Debug',
    debugMode: 'Debug Mode',
    debugPanel: 'Debug Panel',
    startDebug: 'Start Debug',
    pauseDebug: 'Pause',
    resumeDebug: 'Resume',
    stepDebug: 'Step',
    stopDebug: 'Stop',
    debugContext: 'Debug Context',
    simulatedMessage: 'Simulated Message',
    simulatedMessagePlaceholder: 'Enter the message content to simulate',
    senderId: 'Sender ID',
    senderIdPlaceholder: 'Sender unique identifier',
    senderName: 'Sender Name',
    senderNamePlaceholder: 'Sender display name',
    conversationId: 'Conversation ID',
    conversationIdPlaceholder: 'Conversation unique identifier',
    isGroup: 'Group Chat',
    customVariables: 'Custom Variables',
    addVariable: 'Add Variable',
    variableName: 'Variable Name',
    variableValue: 'Variable Value',
    watchedVariables: 'Watched Variables',
    addWatchVariable: 'Add Watch',
    nodeStates: 'Node States',
    breakpoints: 'Breakpoints',
    toggleBreakpoint: 'Toggle Breakpoint',
    breakpointSet: 'Breakpoint set',
    breakpointRemoved: 'Breakpoint removed',
    debugLogs: 'Debug Logs',
    noLogs: 'No logs yet',
    clearLogs: 'Clear Logs',
    autoScroll: 'Auto Scroll',
    debugState: {
      idle: 'Idle',
      running: 'Running',
      paused: 'Paused',
      completed: 'Completed',
      error: 'Error',
    },
    nodeStatus: {
      pending: 'Pending',
      running: 'Running',
      completed: 'Completed',
      failed: 'Failed',
      skipped: 'Skipped',
    },
    debugDialog: {
      title: '工作流對話',
      selectWorkflow: '選擇工作流',
      sessionType: '會話類型',
      privateChat: '私聊',
      groupChat: '群聊',
      send: '發送',
      reset: '重置對話',
      inputPlaceholder: '發送 {{type}} 訊息...',
      noMessages: '暫無訊息',
      userMessage: '使用者',
      botMessage: '機器人',
      sendFailed: '發送失敗',
      resetSuccess: '對話已重置',
      resetFailed: '重置失敗',
      loadMessagesFailed: '載入訊息失敗',
      loadWorkflowsFailed: '載入工作流失敗',
      atTips: '提及機器人',
      streaming: '串流傳輸',
      streamOutput: '串流',
      connected: 'WebSocket已連線',
      disconnected: 'WebSocket未連線',
      connectionError: 'WebSocket連線錯誤',
      connectionFailed: 'WebSocket連線失敗',
      notConnected: 'WebSocket未連線，請稍後重試',
      imageUploadFailed: '圖片上傳失敗',
      reply: '回覆',
      replyTo: '回覆給',
      showMarkdown: '渲染',
      showRaw: '原文',
      allMembers: '全體成員',
      file: '檔案',
      voice: '語音',
      uploadImage: '上傳圖片',
      uploading: '上傳中...',
    },
    // Execution history and monitoring
    filterByDate: 'Filter by Date',
    allTime: 'All Time',
    today: 'Today',
    lastWeek: 'Last Week',
    lastMonth: 'Last Month',
    showingExecutions: 'Showing {{shown}} / {{total}} executions',
    rerun: 'Rerun',
    rerunExecution: 'Rerun Execution',
    logs: 'Logs',
    details: 'Details',
    completedAt: 'Completed At',
    noNodeExecutions: 'No node executions yet',
    // Node config field labels (used by DynamicFormComponent)
    nodeConfigFields: {
      // trigger.py - MessageTriggerNode
      conditions: 'Trigger Conditions',
      keyword_filter: 'Keyword Filter',
      regex_filter: 'Regex Filter',
      min_length: 'Min Length',
      max_length: 'Max Length',
      require_mention: 'Require Mention',
      respond_rules: 'Group Respond Rules',
      access_control: 'Access Control',
      // trigger.py - CronTriggerNode
      cron: 'Cron Expression',
      timezone: 'Timezone',
      // trigger.py - WebhookTriggerNode
      path: 'Webhook Path',
      allowed_methods: 'Allowed HTTP Methods',
      content_type: 'Content-Type',
      auth_type: 'Authentication Type',
      auth_key: 'Auth Key',
      validation: 'Request Validation',
      timeout: 'Timeout',
      // trigger.py - EventTriggerNode
      event_types: 'Event Types',
      filter: 'Event Filter',
      debounce_ms: 'Debounce Time',
      // process.py - LLMCallNode
      model: 'Model',
      prompt_template: 'Prompt Template',
      system_prompt: 'System Prompt',
      temperature: 'Temperature',
      top_p: 'Top P',
      frequency_penalty: 'Frequency Penalty',
      presence_penalty: 'Presence Penalty',
      max_tokens: 'Max Tokens',
      stop_sequences: 'Stop Sequences',
      seed: 'Random Seed',
      stream: 'Stream Output',
      use_conversation_history: 'Use Conversation History',
      // process.py - CodeExecutorNode
      language: 'Programming Language',
      code: 'Code',
      // process.py - HTTPRequestNode
      url: 'Request URL',
      method: 'Request Method',
      auth_config: 'Auth Configuration',
      // process.py - DataTransformNode
      transform_type: 'Transform Type',
      template: 'Template',
      expression: 'Expression',
      output_type: 'Output Type',
      // process.py - QuestionClassifierNode
      categories: 'Categories',
      instruction: 'Instruction',
      // process.py - ParameterExtractorNode
      parameters: 'Parameter Definitions',
      // process.py - KnowledgeRetrievalNode
      knowledge_bases: 'Knowledge Bases',
      top_k: 'Top K Results',
      score_threshold: 'Score Threshold',
      search_method: 'Search Method',
      enable_citations: 'Enable Citations',
      // control.py - ConditionNode
      condition_type: 'Condition Type',
      condition_expression: 'Condition Expression',
      left_value: 'Left Value',
      operator: 'Comparison Operator',
      right_value: 'Right Value',
      // control.py - SwitchNode
      cases: 'Branch Cases',
      // control.py - LoopNode
      max_iterations: 'Max Iterations',
      break_condition: 'Break Condition',
      // control.py - IteratorNode
      parallel: 'Parallel Processing',
      max_concurrency: 'Max Concurrency',
      // control.py - ParallelNode
      branches: 'Branch Configuration',
      wait_all: 'Wait All',
      fail_fast: 'Fail Fast',
      // control.py - WaitNode
      duration: 'Duration',
      duration_type: 'Time Unit',
      // control.py - MergeNode
      merge_strategy: 'Merge Strategy',
      // control.py - VariableAggregatorNode
      variable_mappings: 'Variable Mappings',
      aggregation_mode: 'Aggregation Mode',
      // action.py - SendMessageNode
      target_type: 'Target Type',
      target_id: 'Target ID',
      platform: 'Platform',
      message_type: 'Message Type',
      // action.py - ReplyMessageNode
      reply_mode: 'Reply Mode',
      message_template: 'Message Template',
      long_text_processing: 'Long Text Processing',
      force_delay: 'Force Delay',
      // action.py - CallPipelineNode
      pipeline_uuid: 'Pipeline',
      inherit_context: 'Inherit Context',
      // action.py - StoreDataNode
      storage_type: 'Storage Type',
      ttl: 'TTL',
      key_prefix: 'Key Prefix',
      // action.py - SetVariableNode
      variable_name: 'Variable Name',
      variable_scope: 'Variable Scope',
      set_variable_operation: 'Operation Type',
      // action.py - OpeningStatementNode
      statement: 'Opening Statement',
      suggested_questions: 'Suggested Questions',
      show_suggestions: 'Show Suggestions',
      // action.py - EndNode
      output_format: 'Output Format',
      success_message: 'Success Message',
      // integration.py - DatabaseQueryNode
      connection_type: 'Database Type',
      connection_string: 'Connection String',
      query: 'SQL Query',
      query_type: 'Query Type',
      // integration.py - RedisOperationNode
      connection_url: 'Connection URL',
      operation: 'Operation Type',
      key_template: 'Key Template',
      hash_field: 'Hash Field',
      // integration.py - MCPToolNode
      server_name: 'Server Name',
      tool_name: 'Tool Name',
      arguments_template: 'Arguments Template',
      // integration.py - MemoryStoreNode
      scope: 'Scope',
      // integration.py - DifyWorkflowNode
      'base-url': 'Base URL',
      'api-key': 'API Key',
      'app-type': 'App Type',
      // integration.py - DifyKnowledgeQueryNode
      dataset_id: 'Dataset ID',
      // integration.py - N8nWorkflowNode
      'webhook-url': 'Webhook URL',
      // integration.py - LangflowFlowNode
      'flow-id': 'Flow ID',
      // integration.py - CozeBotNode
      'bot-id': 'Bot ID',
      'api-base': 'API Base URL',
    },
    // Node outputs i18n
    nodeOutputs: {
      // trigger.py - MessageTriggerNode
      message: 'Message Content',
      sender_id: 'Sender ID',
      sender_name: 'Sender Name',
      platform: 'Platform',
      conversation_id: 'Conversation ID',
      is_group: 'Is Group Chat',
      context: 'Full Message Context',
      // trigger.py - CronTriggerNode
      timestamp: 'Trigger Time',
      schedule: 'Trigger Schedule',
      cron_timestamp: 'Cron Timestamp',
      cron_schedule: 'Cron Schedule',
      cron_context: 'Cron Context',
      // trigger.py - WebhookTriggerNode
      body: 'Request Body',
      headers: 'Request Headers',
      query: 'Query Parameters',
      method: 'Request Method',
      webhook_body: 'Webhook Body',
      webhook_headers: 'Webhook Headers',
      webhook_query: 'Webhook Query',
      webhook_method: 'Webhook Method',
      // trigger.py - EventTriggerNode
      event_type: 'Event Type',
      event_data: 'Event Data',
      event_timestamp: 'Event Timestamp',
      // process.py - LLMCallNode
      response: 'Model Response',
      usage: 'Token Usage Statistics',
      prompt: 'Prompt/Question',
      context_info: 'Context Information',
      // process.py - CodeExecutorNode
      output: 'Output Data',
      console: 'Console Output',
      code_input: 'Code Input',
      code_output: 'Code Output',
      // process.py - HTTPRequestNode
      status_code: 'Status Code',
      http_body: 'HTTP Body',
      http_headers: 'HTTP Headers',
      http_response: 'HTTP Response',
      response_headers: 'Response Headers',
      // process.py - DataTransformNode
      result: 'Transform Result',
      transform_input: 'Transform Input',
      transform_result: 'Transform Result',
      // process.py - QuestionClassifierNode
      category: 'Category Result',
      confidence: 'Confidence',
      all_scores: 'All Category Scores',
      question: 'User Question',
      // process.py - ParameterExtractorNode
      parameters: 'Extracted Parameters',
      extraction_success: 'Extraction Success',
      extract_text: 'Input Text',
      // process.py - KnowledgeRetrievalNode
      documents: 'Retrieved Documents',
      citations: 'Citation Information',
      knowledge_context: 'Merged Context',
      knowledge_query: 'Retrieval Query',
      // control.py - ConditionNode
      true: 'True Branch Output',
      false: 'False Branch Output',
      condition_input: 'Condition Input',
      // control.py - SwitchNode
      matched_case: 'Matched Branch Output',
      default: 'Default Branch Output',
      switch_input: 'Switch Input',
      // control.py - LoopNode
      item: 'Current Item',
      index: 'Current Index',
      results: 'All Iteration Results',
      completed: 'Is Completed',
      loop_items: 'Items to Iterate',
      // control.py - IteratorNode
      is_first: 'Is First',
      is_last: 'Is Last',
      iterator_array: 'Input Array',
      iterator_item: 'Current Element',
      iterator_index: 'Current Index',
      // control.py - ParallelNode
      errors: 'Error List',
      parallel_input: 'Parallel Input',
      parallel_results: 'All Branch Results',
      // control.py - WaitNode
      wait_input: 'Passthrough Input',
      wait_output: 'Passthrough Output',
      // control.py - MergeNode
      merged: 'Merged Result',
      merge_array: 'Array Result',
      merge_input_1: 'Input 1',
      merge_input_2: 'Input 2',
      merge_input_3: 'Input 3',
      merge_input_4: 'Input 4',
      // control.py - VariableAggregatorNode
      aggregated: 'Aggregated Variables',
      aggregator_variables: 'Variable Input',
      // action.py - SendMessageNode
      status: 'Send Status',
      message_id: 'Message ID',
      target: 'Target ID',
      // action.py - ReplyMessageNode
      reply_message: 'Reply Content',
      // action.py - CallPipelineNode
      pipeline_response: 'Pipeline Response',
      pipeline_result: 'Full Result',
      pipeline_query: 'Query Content',
      context_data: 'Context Data',
      // action.py - StoreDataNode
      store_status: 'Store Status',
      store_key: 'Store Key',
      store_value: 'Store Value',
      // action.py - SetVariableNode
      variable_value: 'Variable Value',
      variable_result: 'Set Variable Result',
      // action.py - OpeningStatementNode
      statement: 'Opening Statement',
      suggested_questions: 'Suggested Questions',
      // action.py - EndNode
      workflow_output: 'Workflow Output',
      final_result: 'Final Result',
      // integration.py - DatabaseQueryNode
      query_results: 'Query Results',
      row_count: 'Affected/Returned Rows',
      query_success: 'Query Success',
      query_params: 'Query Parameters',
      // integration.py - RedisOperationNode
      redis_result: 'Operation Result',
      redis_success: 'Operation Success',
      redis_key: 'Redis Key',
      redis_value: 'Redis Value',
      error: 'Error Message',
      plugin_input: 'Plugin Input',
      // integration.py - MCPToolNode
      tool_result: 'Tool Execution Result',
      tool_success: 'Tool Call Success',
      mcp_arguments: 'Tool Arguments',
      // integration.py - MemoryStoreNode
      memory_result: 'Retrieved/Stored Value',
      memory_success: 'Operation Success',
      memory_value: 'Value to Store',
      // integration.py - DifyWorkflowNode
      answer: 'Dify Answer',
      dify_success: 'Call Success',
      dify_query: 'User Input/Query',
      dify_conversation_id: 'Conversation ID',
      // integration.py - DifyKnowledgeQueryNode
      search_results: 'Search Results',
      knowledge_base_query: 'Query Content',
      // integration.py - N8nWorkflowNode
      n8n_result: 'Workflow Execution Result',
      n8n_success: 'Call Success',
      n8n_payload: 'Workflow Input Data',
      // integration.py - LangflowFlowNode
      flow_result: 'Flow Execution Result',
      flow_success: 'Call Success',
      langflow_input: 'Input Content',
      // integration.py - CozeBotNode
      bot_answer: 'Bot Reply',
      bot_success: 'Call Success',
      coze_query: 'User Input/Query',
      coze_conversation_id: 'Conversation ID',
      bot_conversation_id: 'Conversation ID',
    },
  },

};

export default zhHant;
