Files
LangBot/web/src/i18n/locales/zh-Hant.ts
sheetung 4e5a6ee79a feat(models): add provider model scanning (#2106)
* feat(models): add provider model scanning

* fix: double close button

* feat: update plugin module

* fix(monitoring): WeChat Work feedback recording bugs (#2108)

* fix(monitoring): fix WeChat Work feedback recording bugs

- Fix feedback events silently dropped when stream session expires:
  dispatch feedback handlers regardless of session availability
- Fix IntegrityError on repeated feedback (like→dislike) for same
  message: implement UPSERT logic in record_feedback()
- Fix cancel feedback (type=3) not removing records: add delete logic
- Fix inaccurate_reasons validation error: convert int reason codes
  to strings before creating FeedbackEvent (Pydantic expects List[str])
- Fix feedback timestamps 8 hours off in frontend: use parseUTCTimestamp
  instead of new Date() for UTC timestamp parsing
- Fix StreamSessionManager.cleanup missing _feedback_index cleanup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(monitoring): apply ruff format to wecom feedback files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: 6mvp6 <13727783693@163.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add feat for receive files in wecombot

* fix: ruff error

* fix: always show sidebar plus buttons on touch/mobile devices (#2115)

Agent-Logs-Url: https://github.com/langbot-app/LangBot/sessions/e27a4886-fbad-4a7a-8558-67a387852753

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* fix: SPA fallback for all frontend routes, not just /home/*

After migrating from Next.js to Vite SPA, routes like /auth/space/callback
returned 404 because the static file server only had SPA fallback for /home/*.
Now all non-API routes fall back to index.html for React Router to handle.

* style: ruff format main.py

* feat: add marketplace link when no parser available for file upload

Links to /home/market?category=Parser, same pattern as knowledge engine selector.

* fix: lint error

* fix(user): allow password login and password change for Space accounts with local password set

Previously, Space accounts were unconditionally blocked from password login
and password change based on account_type. Now the check verifies whether
the user actually has a local password set, allowing Space users who have
set a local password to authenticate and change it normally.

* feat: add edition field to telemetry payload

Sends constants.edition (community/saas) with each telemetry event
so Space can distinguish between community and SaaS instances.

* style: ruff format telemetry.py

* fix(dingtalk): use voice recognition text instead of raw audio binary

When DingTalk sends a voice message to the bot, the callback JSON contains
a 'recognition' field with the speech-to-text result (powered by Qwen).

Previously, LangBot only extracted the 'downloadCode' to download the raw
audio binary and passed it as 'file_base64' to LLM APIs, which caused
400 errors since most models don't support this content type.

This patch:
- Extracts the 'recognition' field from DingTalk audio message content
- Uses it as plain text input to the LLM instead of raw audio
- Falls back to audio binary only when no recognition text is available
- Fixes duplicate text issue for audio messages with recognition

Fixes voice messages returning 'Request failed' on all LLM models.

* feat: integrate Alembic for database migrations

Replace manual if-sqlite/if-postgres branching with Alembic:
- Add alembic dependency
- Create programmatic alembic env (no CLI/alembic.ini needed)
- Support async engines via run_sync passthrough
- render_as_batch=True for SQLite ALTER TABLE compatibility
- Auto-stamp baseline on first run (existing DB at version 25)
- Run alembic upgrade head after legacy migrations
- Include sample migration showing schema + data migration patterns
- Add alembic dir to package-data for distribution

* ci: add migration test workflow for SQLite and PostgreSQL

Tests alembic upgrade on both databases:
- Stamp baseline on existing schema
- Upgrade to head
- Idempotent re-upgrade
- Fresh DB upgrade from scratch

* feat: add autogenerate support and CLI entrypoint for alembic

- autogenerate: compare ORM models vs DB schema to generate migrations
- CLI: python -m langbot.pkg.persistence.alembic_runner <command>
  - autogenerate, upgrade, stamp, current
- Reads data/config.yaml for DB connection

* fix: add filereader for dingtalk,lark (#2122)

* fix: add filereader for dingtalk

* feat: add lark

* feat: update uv.lock

* chore: update version to 4.9.6 in pyproject.toml, __init__.py, and uv.lock

* fix: update langbot-plugin version to 0.3.8

* fix: update langbot-plugin version to 0.3.8

* docs: update database migration instructions in AGENTS.md

* fix(dashscopeapi): fix null value check in reasoning content processing logic (#2128)

* fix(n8n-runner): fix output_key not applied when n8n returns plain JSON (#2119)

* fix: bump dependencies to resolve Dependabot security alerts (#2130)

* fix: bump dependencies to resolve Dependabot security alerts

Python:
- aiohttp: >=3.11.18 → >=3.13.4 (duplicate Host headers, header injection, redirect leak, multipart DoS)
- cryptography: >=44.0.3 → >=46.0.7 (buffer overflow with non-contiguous buffers)
- pillow: >=11.2.1 → >=12.2.0 (FITS GZIP decompression bomb, HIGH)
- langchain-text-splitters: >=0.0.1 → >=1.1.2 (SSRF redirect bypass)
- langchain-core: add >=1.2.28 (incomplete f-string validation)
- langsmith: add >=0.7.31 (streaming token redaction bypass)
- python-multipart: add >=0.0.26 (multipart DoS)
- Mako: add >=1.3.11 (path traversal)
- pytest: >=8.4.1 → >=9.0.3 (tmpdir handling)
- uv: >=0.7.11 → >=0.11.6 (arbitrary file deletion)

JavaScript (web/):
- vite: ^8.0.3 → ^8.0.5 (fs.deny bypass, WebSocket file read, path traversal, HIGH)
- axios: ^1.13.5 → ^1.15.0 (cloud metadata exfiltration)
- lodash: ^4.17.23 → ^4.18.0 (code injection via _.template, prototype pollution, HIGH)

* fix: update pnpm-lock.yaml for bumped dependencies

* feat(ci): add i18n key consistency check for frontend locales (#2133)

* feat(ci): add i18n key consistency check workflow

Agent-Logs-Url: https://github.com/langbot-app/LangBot/sessions/c7bf50da-189b-49a5-9671-dbe8e70ff9d0

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* feat(ci): replace eval with line-by-line parser, add permissions block

Agent-Logs-Url: https://github.com/langbot-app/LangBot/sessions/c7bf50da-189b-49a5-9671-dbe8e70ff9d0

Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>

* feat(models): add provider model scanning

* feat(models): add 'select all' functionality and enrich model abilities

* fix:ruff

* fix:ruff

---------

Co-authored-by: WangCham <651122857@qq.com>
Co-authored-by: 6mvp6 <119733319+6mvp6@users.noreply.github.com>
Co-authored-by: 6mvp6 <13727783693@163.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Guanchao Wang <wangcham233@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com>
Co-authored-by: RockChinQ <rockchinq@gmail.com>
Co-authored-by: haiyangbg <zhouhaiyangaa@gmail.com>
Co-authored-by: Rock Chin <1010553892@qq.com>
Co-authored-by: Amadeus <115918672+AmadeusKurisu1@users.noreply.github.com>
Co-authored-by: hzhhong <hung.z.h916@gmail.com>
Co-authored-by: fdc310 <2213070223@qq.com>
2026-04-19 17:47:07 +08:00

1229 lines
47 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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',
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: '掃描結果',
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: '嵌入',
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 件文獻的數量範圍為130',
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: '返回工作台',
},
},
};
export default zhHant;