Files
AI-CS/frontend/lib/i18n/dict.ts
T
2026-05-20 22:07:03 +08:00

1679 lines
83 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.
export type Lang = "zh-CN" | "en";
export type I18nKey =
| "nav.features"
| "nav.screenshots"
| "nav.quickStart"
| "nav.agentLogin"
| "nav.menu"
| "common.github"
| "common.to"
| "common.save"
| "common.saving"
| "common.restoreEnv"
| "common.loading"
| "common.search"
| "common.prevPage"
| "common.nextPage"
| "common.copy"
| "home.hero.tagline"
| "home.hero.title"
| "home.hero.subtitle"
| "home.hero.cta.tryNow"
| "home.hero.cta.agentLogin"
| "home.hero.hint"
| "home.stats.trustedBy"
| "home.stats.clients"
| "home.stats.conversations"
| "home.stats.latency"
| "home.stats.satisfaction"
| "home.stats.val.clients"
| "home.stats.val.conversations"
| "home.stats.val.latency"
| "home.stats.val.satisfaction"
| "home.features.title"
| "home.features.lead"
| "home.cap.multimodel.title"
| "home.cap.multimodel.desc"
| "home.cap.kb.title"
| "home.cap.kb.desc"
| "home.cap.prompt.title"
| "home.cap.prompt.desc"
| "home.cap.human.title"
| "home.cap.human.desc"
| "home.cap.reports.title"
| "home.cap.reports.desc"
| "home.cap.logs.title"
| "home.cap.logs.desc"
| "home.screenshots.title"
| "home.screenshots.lead"
| "home.screenshots.prevAria"
| "home.screenshots.nextAria"
| "home.ss.dashboard.title"
| "home.ss.dashboard.placeholder"
| "home.ss.dashboard.alt"
| "home.ss.visitor.title"
| "home.ss.visitor.placeholder"
| "home.ss.visitor.alt"
| "home.ss.aiconfig.title"
| "home.ss.aiconfig.placeholder"
| "home.ss.aiconfig.alt"
| "home.ss.users.title"
| "home.ss.users.placeholder"
| "home.ss.users.alt"
| "home.ss.faq.title"
| "home.ss.faq.placeholder"
| "home.ss.faq.alt"
| "home.ss.knowledge.title"
| "home.ss.knowledge.placeholder"
| "home.ss.knowledge.alt"
| "home.ss.kbtest.title"
| "home.ss.kbtest.placeholder"
| "home.ss.kbtest.alt"
| "home.ss.prompts.title"
| "home.ss.prompts.placeholder"
| "home.ss.prompts.alt"
| "home.ss.logs.title"
| "home.ss.logs.placeholder"
| "home.ss.logs.alt"
| "home.ss.analytics.title"
| "home.ss.analytics.placeholder"
| "home.ss.analytics.alt"
| "home.quickStart.title"
| "home.quickStart.lead"
| "home.step1.title"
| "home.step1.body"
| "home.step2.title"
| "home.step2.body"
| "home.step3.title"
| "home.step3.body"
| "home.cta.title"
| "home.cta.subtitle"
| "home.cta.starRepo"
| "home.cta.feedback"
| "home.cta.mailSubject"
| "home.cta.mailBody"
| "footer.blurb"
| "footer.column.product"
| "footer.column.friendLinks"
| "footer.column.contact"
| "footer.noFriendLinks"
| "footer.onlineChat"
| "footer.openSourceLicense"
| "footer.poweredBy"
| "footer.allRightsReserved"
| "footer.emailLabel"
| "footer.qqGroup"
| "footer.qqGroupAria"
| "agent.page.dashboard"
| "agent.page.internalChat"
| "agent.page.knowledge"
| "agent.page.faqs"
| "agent.page.analytics"
| "agent.page.logs"
| "agent.page.users"
| "agent.page.prompts"
| "agent.page.settings"
| "agent.profile"
| "agent.logout"
| "agent.chat.conversation"
| "agent.chat.lastSeen"
| "agent.chat.lastSeenUnknown"
| "agent.chat.showAI"
| "agent.chat.hideAI"
| "agent.chat.closeConversation"
| "agent.chat.refresh"
| "agent.chat.soundOn"
| "agent.chat.soundOff"
| "agent.chat.toast.conversationClosed"
| "agent.chat.toast.closeFailed"
| "agent.chat.emptyPick"
| "agent.layout.openNavMenu"
| "agent.layout.openVisitorPanel"
| "agent.internalChat.webSearchThisTurn"
| "agent.internalChat.aiThinking"
| "agent.internalChat.emptyHint"
| "agent.internalChat.createFailed"
| "agent.login.title"
| "agent.login.subtitle"
| "agent.login.username"
| "agent.login.password"
| "agent.login.submit"
| "agent.login.submitting"
| "agent.login.error.empty"
| "agent.login.error.failed"
| "agent.login.error.network"
| "agent.login.demoHint"
| "agent.logs.title"
| "agent.logs.subtitle"
| "agent.logs.policy.title"
| "agent.logs.policy.desc"
| "agent.logs.policy.current"
| "agent.logs.policy.env"
| "agent.logs.policy.overridden"
| "agent.logs.level.all"
| "agent.logs.category.all"
| "agent.logs.source.all"
| "agent.logs.event.placeholder"
| "agent.logs.conversationId.placeholder"
| "agent.logs.keyword.placeholder"
| "agent.logs.table.time"
| "agent.logs.table.level"
| "agent.logs.table.category"
| "agent.logs.table.event"
| "agent.logs.table.conversation"
| "agent.logs.table.source"
| "agent.logs.table.message"
| "agent.logs.paginationSummary"
| "agent.logs.empty"
| "agent.logs.detail.title"
| "agent.logs.detail.time"
| "agent.logs.detail.sourceEvent"
| "agent.logs.detail.category"
| "agent.logs.detail.traceId"
| "agent.logs.detail.conversationId"
| "agent.logs.detail.userVisitor"
| "agent.logs.detail.message"
| "agent.logs.detail.metaJson"
| "agent.logs.detail.noMeta"
| "agent.logs.toast.loadPolicyFailed"
| "agent.logs.toast.loadLogsFailed"
| "agent.logs.toast.savePolicyFailed"
| "agent.logs.toast.restorePolicyFailed"
| "agent.logs.toast.policySaved"
| "agent.logs.toast.policyRestored"
| "agent.logs.toast.messageCopied"
| "agent.logs.toast.copyFailed"
| "agent.conversationsPage.title"
| "agent.conversationsPage.loading"
| "agent.conversationsPage.empty"
| "agent.conversationsPage.convLabel"
| "agent.conversationsPage.visitorLabel"
| "agent.conversationsPage.createdAt"
| "agent.conversationsPage.updatedAt"
| "agent.conversations.filter.all"
| "agent.conversations.filter.mine"
| "agent.conversations.filter.others"
| "agent.conversations.status.open"
| "agent.conversations.status.closed"
| "agent.internalChat.title"
| "agent.internalChat.new"
| "agent.conversation.noMessage"
| "agent.conversation.online"
| "agent.conversation.visitor"
| "agent.input.upload"
| "agent.input.placeholder"
| "agent.input.placeholder.withAttachment"
| "agent.input.sending"
| "agent.input.uploading"
| "agent.input.send"
| "agent.input.fileTooLarge"
| "agent.input.fileTypeNotSupported"
| "agent.input.uploadFailed"
| "agent.aiSource.kb"
| "agent.aiSource.llm"
| "agent.aiSource.web"
| "agent.common.back"
| "agent.common.cancel"
| "agent.common.create"
| "agent.common.update"
| "agent.common.delete"
| "agent.common.edit"
| "agent.common.keywordSearch"
| "agent.common.noMatch"
| "agent.common.none"
| "agent.common.confirm"
| "agent.faqs.title"
| "agent.faqs.subtitle"
| "agent.faqs.search.placeholder"
| "agent.faqs.createButton"
| "agent.faqs.empty"
| "agent.faqs.empty.filtered"
| "agent.faqs.dialog.createTitle"
| "agent.faqs.dialog.editTitle"
| "agent.faqs.dialog.deleteTitle"
| "agent.faqs.form.question"
| "agent.faqs.form.answer"
| "agent.faqs.form.keywords"
| "agent.faqs.form.keywordsHint"
| "agent.faqs.toast.loadFailed"
| "agent.faqs.toast.createFailed"
| "agent.faqs.toast.updateFailed"
| "agent.faqs.toast.deleteFailed"
| "agent.faqs.toast.createSuccess"
| "agent.faqs.toast.updateSuccess"
| "agent.faqs.toast.deleteSuccess"
| "agent.faqs.toast.emptyRequired"
| "agent.faqs.card.keywords"
| "agent.faqs.card.createdAt"
| "agent.faqs.card.edit"
| "agent.faqs.dialog.createTitle2"
| "agent.faqs.dialog.createDesc"
| "agent.faqs.dialog.editDesc"
| "agent.faqs.dialog.deleteConfirm"
| "agent.faqs.form.placeholder.question"
| "agent.faqs.form.placeholder.answer"
| "agent.faqs.form.placeholder.keywords"
| "agent.faqs.form.keywordsOptional"
| "agent.faqs.form.keywordsTip"
| "agent.faqs.submit.creating"
| "agent.faqs.submit.deleting"
| "agent.perm.analytics"
| "agent.perm.chat"
| "agent.perm.faqs"
| "agent.perm.kb_test"
| "agent.perm.knowledge"
| "agent.perm.logs"
| "agent.perm.prompts"
| "agent.perm.settings"
| "agent.perm.users"
| "agent.settings.aiCard.titleAdd"
| "agent.settings.aiCard.titleEdit"
| "agent.settings.aiForm.active"
| "agent.settings.aiForm.apiKey"
| "agent.settings.aiForm.apiUrl"
| "agent.settings.aiForm.apiUrlPh"
| "agent.settings.aiForm.descPh"
| "agent.settings.aiForm.description"
| "agent.settings.aiForm.model"
| "agent.settings.aiForm.modelType"
| "agent.settings.aiForm.modelPh"
| "agent.settings.aiForm.provider"
| "agent.settings.aiForm.providerPh"
| "agent.settings.aiForm.public"
| "agent.settings.aiForm.submitCreate"
| "agent.settings.aiForm.submitUpdate"
| "agent.settings.aiForm.submitting"
| "agent.settings.backDashboard"
| "agent.settings.badge.active"
| "agent.settings.badge.public"
| "agent.settings.confirmDeleteConfig"
| "agent.settings.embedding.apiKey"
| "agent.settings.embedding.apiKeyKeepEmpty"
| "agent.settings.embedding.apiKeyInput"
| "agent.settings.embedding.apiUrl"
| "agent.settings.embedding.apiUrlPh"
| "agent.settings.embedding.bgeLocal"
| "agent.settings.embedding.customerKb"
| "agent.settings.embedding.lead"
| "agent.settings.embedding.model"
| "agent.settings.embedding.modelPh"
| "agent.settings.embedding.openaiCompatible"
| "agent.settings.embedding.save"
| "agent.settings.embedding.title"
| "agent.settings.embedding.type"
| "agent.settings.error.delete"
| "agent.settings.error.loadConfigs"
| "agent.settings.error.loadEmbedding"
| "agent.settings.error.operation"
| "agent.settings.global.noReceiveAi"
| "agent.settings.global.noReceiveAiHint"
| "agent.settings.list.apiUrlLabel"
| "agent.settings.list.descLabel"
| "agent.settings.list.empty"
| "agent.settings.list.modelTypeLabel"
| "agent.settings.list.title"
| "agent.settings.modelType.audio"
| "agent.settings.modelType.image"
| "agent.settings.modelType.text"
| "agent.settings.modelType.video"
| "agent.settings.section.global"
| "agent.settings.subtitle"
| "agent.settings.title"
| "agent.settings.toast.embeddingSaved"
| "agent.settings.toast.profileUpdateFailed"
| "agent.settings.webSearch.lead"
| "agent.settings.webSearch.mode"
| "agent.settings.webSearch.modeCustom"
| "agent.settings.webSearch.modeHint"
| "agent.settings.webSearch.modeVendor"
| "agent.settings.webSearch.save"
| "agent.settings.webSearch.title"
| "agent.settings.webSearch.visitorToggle"
| "agent.users.card.edit"
| "agent.users.card.password"
| "agent.users.createButton"
| "agent.users.dialog.createTitle"
| "agent.users.dialog.deleteConfirm"
| "agent.users.dialog.deleteNote"
| "agent.users.dialog.deleteTitle"
| "agent.users.dialog.editTitle"
| "agent.users.dialog.passwordTitle"
| "agent.users.empty"
| "agent.users.empty.filtered"
| "agent.users.field.createdAt"
| "agent.users.field.email"
| "agent.users.field.username"
| "agent.users.form.email"
| "agent.users.form.newPassword"
| "agent.users.form.oldPassword"
| "agent.users.form.password"
| "agent.users.form.permissions"
| "agent.users.form.permissionsHint"
| "agent.users.form.role"
| "agent.users.form.username"
| "agent.users.placeholder.email"
| "agent.users.placeholder.emailOptional"
| "agent.users.placeholder.nickname"
| "agent.users.placeholder.nicknameOptional"
| "agent.users.placeholder.oldPassword"
| "agent.users.placeholder.password"
| "agent.users.placeholder.username"
| "agent.users.receiveAiLabel"
| "agent.users.role.admin"
| "agent.users.role.agent"
| "agent.users.search.placeholder"
| "agent.users.submit.creating"
| "agent.users.submit.deleting"
| "agent.users.submit.updating"
| "agent.users.title"
| "agent.users.toast.adminDeleteDisabled"
| "agent.users.toast.adminPasswordDisabled"
| "agent.users.toast.createFailed"
| "agent.users.toast.createSuccess"
| "agent.users.toast.deleteFailed"
| "agent.users.toast.deleteSuccess"
| "agent.users.toast.deleteTransferred"
| "agent.users.toast.loadFailed"
| "agent.users.toast.newPasswordRequired"
| "agent.users.toast.oldPasswordRequired"
| "agent.users.toast.passwordFailed"
| "agent.users.toast.passwordSuccess"
| "agent.users.toast.updateFailed"
| "agent.users.toast.updateSuccess"
| "agent.users.toast.usernamePasswordRequired"
| "agent.users.tooltip.adminDeleteDbOnly"
| "agent.users.tooltip.adminPasswordDbOnly"
| "agent.users.tooltip.cannotDeleteSelf"
| "agent.users.usernameImmutableHint"
| "agent.users.form.nickname"
| "agent.knowledge.title"
| "agent.knowledge.rag"
| "agent.knowledge.kb.create"
| "agent.knowledge.kb.empty"
| "agent.knowledge.kb.selectOne"
| "agent.knowledge.kb.docCount"
| "agent.knowledge.import.url"
| "agent.knowledge.import.file"
| "agent.knowledge.import.tabFile"
| "agent.knowledge.import.tabUrl"
| "agent.knowledge.import.pickFiles"
| "agent.knowledge.import.filesSelected"
| "agent.knowledge.import.action"
| "agent.knowledge.import.urlListLabel"
| "agent.knowledge.doc.create"
| "agent.knowledge.doc.searchPh"
| "agent.knowledge.doc.empty"
| "agent.knowledge.doc.empty.filtered"
| "agent.knowledge.doc.type"
| "agent.knowledge.doc.createdAt"
| "agent.knowledge.doc.publish"
| "agent.knowledge.doc.unpublish"
| "agent.knowledge.filter.all"
| "agent.knowledge.pagination"
| "agent.knowledge.status.draft"
| "agent.knowledge.status.published"
| "agent.knowledge.embedding.pending"
| "agent.knowledge.embedding.processing"
| "agent.knowledge.embedding.completed"
| "agent.knowledge.embedding.failed"
| "agent.knowledge.dialog.kbCreateTitle"
| "agent.knowledge.dialog.kbCreateDesc"
| "agent.knowledge.dialog.kbEditTitle"
| "agent.knowledge.dialog.kbEditDesc"
| "agent.knowledge.dialog.kbDeleteTitle"
| "agent.knowledge.dialog.kbDeleteConfirm"
| "agent.knowledge.dialog.kbDeleteHint"
| "agent.knowledge.dialog.docCreateTitle"
| "agent.knowledge.dialog.docCreateDesc"
| "agent.knowledge.dialog.docEditTitle"
| "agent.knowledge.dialog.docEditDesc"
| "agent.knowledge.dialog.docDeleteTitle"
| "agent.knowledge.dialog.docDeleteConfirm"
| "agent.knowledge.dialog.importTitle"
| "agent.knowledge.dialog.importDesc"
| "agent.knowledge.field.name"
| "agent.knowledge.field.descOptional"
| "agent.knowledge.field.title"
| "agent.knowledge.field.summaryOptional"
| "agent.knowledge.field.content"
| "agent.knowledge.ph.kbName"
| "agent.knowledge.ph.kbDesc"
| "agent.knowledge.ph.docTitle"
| "agent.knowledge.ph.docSummary"
| "agent.knowledge.ph.docContent"
| "agent.knowledge.submitting.creating"
| "agent.knowledge.submitting.updating"
| "agent.knowledge.submitting.deleting"
| "agent.knowledge.submitting.importing"
| "agent.knowledge.toast.loadKbFailed"
| "agent.knowledge.toast.loadDocFailed"
| "agent.knowledge.toast.kbNameRequired"
| "agent.knowledge.toast.selectKbFirst"
| "agent.knowledge.toast.docTitleContentRequired"
| "agent.knowledge.toast.createSuccess"
| "agent.knowledge.toast.updateSuccess"
| "agent.knowledge.toast.deleteSuccess"
| "agent.knowledge.toast.updateFailed"
| "agent.knowledge.toast.createKbFailed"
| "agent.knowledge.toast.updateKbFailed"
| "agent.knowledge.toast.deleteKbFailed"
| "agent.knowledge.toast.createDocFailed"
| "agent.knowledge.toast.updateDocFailed"
| "agent.knowledge.toast.deleteDocFailed"
| "agent.knowledge.toast.publishSuccess"
| "agent.knowledge.toast.publishFailed"
| "agent.knowledge.toast.unpublishSuccess"
| "agent.knowledge.toast.unpublishFailed"
| "agent.knowledge.toast.selectFiles"
| "agent.knowledge.toast.urlRequired"
| "agent.knowledge.toast.importDocFailed"
| "agent.knowledge.toast.importUrlFailed"
| "agent.knowledge.toast.importRefreshFailed"
| "agent.knowledge.toast.importFailed.files"
| "agent.knowledge.toast.importFailed.urls"
| "agent.knowledge.toast.importDone.files"
| "agent.knowledge.toast.importDone.urls"
| "agent.knowledge.toast.importDone.partial"
| "agent.prompts.title"
| "agent.prompts.subtitle"
| "agent.prompts.loadFailed"
| "agent.prompts.saveSuccess"
| "agent.prompts.saveFailed"
| "agent.prompts.usageLabel"
| "agent.prompts.ph.shortReply"
| "agent.prompts.ph.withPlaceholders"
| "agent.prompts.saving"
| "agent.prompts.save"
| "agent.prompts.hint.rag_prompt"
| "agent.prompts.hint.rag_prompt_with_web_optional"
| "agent.prompts.hint.no_kb_prompt"
| "agent.prompts.hint.web_search_result_prompt"
| "agent.prompts.hint.no_source_reply"
| "agent.prompts.hint.ai_fail_reply"
| "agent.prompts.hint.default"
| "agent.prompts.usage.rag_prompt"
| "agent.prompts.usage.rag_prompt_with_web_optional"
| "agent.prompts.usage.no_kb_prompt"
| "agent.prompts.usage.web_search_result_prompt"
| "agent.prompts.usage.no_source_reply"
| "agent.prompts.usage.ai_fail_reply"
| "agent.analytics.title"
| "agent.analytics.subtitle"
| "agent.analytics.from"
| "agent.analytics.to"
| "agent.analytics.query"
| "agent.analytics.loading"
| "agent.analytics.empty"
| "agent.analytics.emptyOrFailed"
| "agent.analytics.stat.widgetOpens"
| "agent.analytics.stat.widgetOpensSub"
| "agent.analytics.stat.sessions"
| "agent.analytics.stat.messages"
| "agent.analytics.stat.aiReplies"
| "agent.analytics.stat.aiFailed"
| "agent.analytics.stat.aiFailureRate"
| "agent.analytics.stat.aiFailureRateSub"
| "agent.analytics.stat.kbHits"
| "agent.analytics.stat.kbHitRate"
| "agent.analytics.stat.kbHitRateSub"
| "agent.analytics.stat.maxAiRounds"
| "agent.analytics.stat.maxAiRoundsSub"
| "agent.analytics.stat.sessionsWithAi"
| "agent.analytics.stat.sessionsWithAiSub"
| "agent.analytics.stat.aiToHuman"
| "agent.analytics.stat.aiToHumanSub"
| "agent.analytics.stat.humanToAi"
| "agent.analytics.stat.humanToAiSub"
| "agent.analytics.chart.widgetOpens"
| "agent.analytics.chart.sessions"
| "agent.analytics.chart.messages"
| "agent.analytics.chart.aiReplies"
| "common.irreversibleHint"
| "chat.title"
| "chat.mode.human"
| "chat.mode.ai";
export const DEFAULT_LANG: Lang = "zh-CN";
export const LANG_STORAGE_KEY = "aics_lang";
export const DICT: Record<Lang, Record<I18nKey, string>> = {
"zh-CN": {
"nav.features": "核心能力",
"nav.screenshots": "界面展示",
"nav.quickStart": "快速接入",
"nav.agentLogin": "客服登录",
"nav.menu": "菜单",
"common.github": "GitHub",
"common.to": "到",
"common.save": "保存到服务器",
"common.saving": "保存中...",
"common.restoreEnv": "恢复环境变量",
"common.loading": "加载中...",
"common.search": "查询",
"common.prevPage": "上一页",
"common.nextPage": "下一页",
"common.copy": "复制",
"home.hero.tagline": "AI 智能客服",
"home.hero.title": "让客户服务更简单、更高效",
"home.hero.subtitle":
"7×24 小时智能应答,AI 与人工无缝切换,释放团队时间专注更有价值的事",
"home.hero.cta.tryNow": "立即体验",
"home.hero.cta.agentLogin": "客服登录",
"home.hero.hint": "无需等待,可立即使用",
"home.stats.trustedBy": "深受企业信赖",
"home.stats.clients": "服务企业",
"home.stats.conversations": "处理对话",
"home.stats.latency": "响应时间",
"home.stats.satisfaction": "满意度",
"home.stats.val.clients": "1000+",
"home.stats.val.conversations": "100万+",
"home.stats.val.latency": "<100ms",
"home.stats.val.satisfaction": "98%",
"home.features.title": "核心能力",
"home.features.lead": "从模型、知识库、提示词到人工协作、报表与日志,一套系统串起来。",
"home.cap.multimodel.title": "多模型 AI 客服",
"home.cap.multimodel.desc":
"支持配置多家大模型与绘画等能力,访客与后台可统一管理模型与使用方式,便于替换供应商、控制成本。",
"home.cap.kb.title": "知识库与 RAG",
"home.cap.kb.desc":
"文档入库、向量检索,让回答贴近你的业务资料;回复可标记是否使用知识库、模型或联网,便于核对与优化。",
"home.cap.prompt.title": "提示词工程",
"home.cap.prompt.desc":
"配置系统中使用的提示词模板,用于不同领域 RAG、联网等不同的业务场景。",
"home.cap.human.title": "人工客服与实时协作",
"home.cap.human.desc":
"在线状态、会话实时推送(WebSocket),支持人工接管与日常协作;访客小窗可嵌入任意站点。",
"home.cap.reports.title": "可视化报表",
"home.cap.reports.desc":
"按日或自定义区间查看访客小窗打开、会话与消息、AI 回复与失败率、知识库命中率等指标,快速掌握运营态势。",
"home.cap.logs.title": "日志中心",
"home.cap.logs.desc":
"结构化日志按分类与事件落库,支持 trace_id 与关键字筛选,关键链路与异常可追溯,便于排障与审计。",
"home.screenshots.title": "界面展示",
"home.screenshots.lead": "精心设计的界面,让管理更轻松",
"home.screenshots.prevAria": "查看上一张",
"home.screenshots.nextAria": "查看下一张",
"home.ss.dashboard.title": "工作台",
"home.ss.dashboard.placeholder": "工作台界面",
"home.ss.dashboard.alt": "AI-CS 工作台界面",
"home.ss.visitor.title": "访客端",
"home.ss.visitor.placeholder": "访客端界面",
"home.ss.visitor.alt": "AI-CS 访客端界面",
"home.ss.aiconfig.title": "AI 配置",
"home.ss.aiconfig.placeholder": "AI 配置界面",
"home.ss.aiconfig.alt": "AI-CS AI 配置界面",
"home.ss.users.title": "用户管理",
"home.ss.users.placeholder": "用户管理界面",
"home.ss.users.alt": "AI-CS 用户管理界面",
"home.ss.faq.title": "FAQ 管理",
"home.ss.faq.placeholder": "FAQ 管理界面",
"home.ss.faq.alt": "AI-CS FAQ 管理界面",
"home.ss.knowledge.title": "知识库管理",
"home.ss.knowledge.placeholder": "知识库管理界面",
"home.ss.knowledge.alt": "AI-CS 知识库管理界面",
"home.ss.kbtest.title": "知识库测试",
"home.ss.kbtest.placeholder": "知识库测试界面",
"home.ss.kbtest.alt": "AI-CS 知识库测试界面",
"home.ss.prompts.title": "提示词工程",
"home.ss.prompts.placeholder": "提示词工程界面",
"home.ss.prompts.alt": "AI-CS 提示词工程界面",
"home.ss.logs.title": "日志中心",
"home.ss.logs.placeholder": "日志中心界面",
"home.ss.logs.alt": "AI-CS 日志中心界面",
"home.ss.analytics.title": "可视化报表",
"home.ss.analytics.placeholder": "可视化报表界面",
"home.ss.analytics.alt": "AI-CS 可视化报表界面",
"home.quickStart.title": "快速接入",
"home.quickStart.lead": "三步跑通,从仓库到访客小窗。",
"home.step1.title": "克隆与配置",
"home.step1.body": "复制 .env 模板,填好数据库与管理员等必填项。",
"home.step2.title": "一键启动",
"home.step2.body": "使用 Docker Compose 拉起前后端与依赖服务(详见 README)。",
"home.step3.title": "嵌入访客端",
"home.step3.body": "在站点中挂载聊天小窗,后台完成模型与知识库配置后即可对外服务。",
"home.cta.title": "准备好把 AI-CS 接到你的产品里了吗?",
"home.cta.subtitle": "从开源仓库开始,或用在线 Demo 先看交互与能力边界。",
"home.cta.starRepo": "Star / Fork 仓库",
"home.cta.feedback": "建议反馈",
"home.cta.mailSubject": "AI-CS 建议反馈",
"home.cta.mailBody":
"你好,我想反馈:\n\n1)问题/建议:\n2)影响范围/环境:\n3)期望结果:\n\n---\n联系方式(可选):",
"footer.blurb":
"AI-CS 是一款 AI 驱动的智能客服系统,融合 AI 技术与人工客服,为企业提供高效、智能的客户服务解决方案。",
"footer.column.product": "产品",
"footer.column.friendLinks": "友情链接",
"footer.column.contact": "联系我们",
"footer.noFriendLinks": "暂无友情链接",
"footer.onlineChat": "在线客服",
"footer.openSourceLicense": "开源协议",
"footer.poweredBy": "Powered by Next.js & Go |",
"footer.allRightsReserved": "保留所有权利。",
"footer.emailLabel": "邮箱",
"footer.qqGroup": "QQ 交流群",
"footer.qqGroupAria": "加入 QQ 交流群",
"agent.page.dashboard": "对话",
"agent.page.internalChat": "知识库测试",
"agent.page.knowledge": "知识库",
"agent.page.faqs": "事件管理",
"agent.page.analytics": "数据报表",
"agent.page.logs": "日志中心",
"agent.page.users": "用户管理",
"agent.page.prompts": "提示词",
"agent.page.settings": "AI 配置",
"agent.profile": "个人资料",
"agent.logout": "退出登录",
"agent.chat.conversation": "对话",
"agent.chat.lastSeen": "最后活跃",
"agent.chat.lastSeenUnknown": "最后活跃 未知",
"agent.chat.showAI": "显示 AI 消息",
"agent.chat.hideAI": "隐藏 AI 消息",
"agent.chat.closeConversation": "关闭会话",
"agent.chat.refresh": "刷新",
"agent.chat.soundOn": "关闭声音提示",
"agent.chat.soundOff": "开启声音提示",
"agent.chat.toast.conversationClosed": "已关闭会话",
"agent.chat.toast.closeFailed": "关闭会话失败",
"agent.chat.emptyPick": "选择一个对话开始聊天",
"agent.layout.openNavMenu": "打开导航与对话列表",
"agent.layout.openVisitorPanel": "打开访客详情",
"agent.internalChat.webSearchThisTurn": "本回合联网搜索",
"agent.internalChat.aiThinking": "AI 正在思考...",
"agent.internalChat.emptyHint": "选择或新建内部对话,测试知识库效果",
"agent.internalChat.createFailed": "创建内部对话失败",
"agent.login.title": "客服登录",
"agent.login.subtitle": "管理员和客服请在此登录",
"agent.login.username": "用户名",
"agent.login.password": "密码",
"agent.login.submit": "登录",
"agent.login.submitting": "登录中...",
"agent.login.error.empty": "用户名和密码不能为空",
"agent.login.error.failed": "登录失败",
"agent.login.error.network": "登录失败,请检查网络连接",
"agent.login.demoHint": "默认管理员账号:admin / admin123",
"agent.logs.title": "日志中心",
"agent.logs.subtitle": "按分类查看 AI / RAG / 系统 / 前端日志,用于排障定位。",
"agent.logs.policy.title": "落库级别(性能)",
"agent.logs.policy.desc":
"仅将不低于所选级别的记录写入数据库。设为 warn 可大幅减少成功类 info 写入。也可在根目录 SYSTEM_LOG_MIN_LEVEL 配置默认值;此处保存后会写入数据库并覆盖环境变量,直至点击「恢复环境变量」。",
"agent.logs.policy.current": "当前生效:",
"agent.logs.policy.env": "环境变量默认:",
"agent.logs.policy.overridden": "(已由控制台覆盖)",
"agent.logs.level.all": "全部级别",
"agent.logs.category.all": "全部分类",
"agent.logs.source.all": "全部来源",
"agent.logs.event.placeholder": "事件名(event)",
"agent.logs.conversationId.placeholder": "会话ID",
"agent.logs.keyword.placeholder": "关键词(message/meta",
"agent.logs.table.time": "时间",
"agent.logs.table.level": "级别",
"agent.logs.table.category": "分类",
"agent.logs.table.event": "事件",
"agent.logs.table.conversation": "会话",
"agent.logs.table.source": "来源",
"agent.logs.table.message": "消息",
"agent.logs.paginationSummary": "共 {{total}} 条,当前第 {{page}}/{{pages}} 页",
"agent.logs.empty": "暂无日志",
"agent.logs.detail.title": "日志详情",
"agent.logs.detail.time": "时间",
"agent.logs.detail.sourceEvent": "source / event",
"agent.logs.detail.category": "category",
"agent.logs.detail.traceId": "trace_id",
"agent.logs.detail.conversationId": "conversation_id",
"agent.logs.detail.userVisitor": "user_id / visitor_id",
"agent.logs.detail.message": "message",
"agent.logs.detail.metaJson": "meta_json",
"agent.logs.detail.noMeta": "(无 meta_json",
"agent.logs.toast.loadPolicyFailed": "加载落库策略失败",
"agent.logs.toast.loadLogsFailed": "加载日志失败",
"agent.logs.toast.savePolicyFailed": "保存失败",
"agent.logs.toast.restorePolicyFailed": "恢复失败",
"agent.logs.toast.policySaved": "已保存",
"agent.logs.toast.policyRestored": "已恢复为环境变量默认",
"agent.logs.toast.messageCopied": "已复制 message",
"agent.logs.toast.copyFailed": "复制失败",
"agent.conversationsPage.title": "对话列表",
"agent.conversationsPage.loading": "加载中...",
"agent.conversationsPage.empty": "暂无对话",
"agent.conversationsPage.convLabel": "对话 #{{id}}",
"agent.conversationsPage.visitorLabel": "访客ID: {{id}}",
"agent.conversationsPage.createdAt": "创建时间: {{time}}",
"agent.conversationsPage.updatedAt": "最后更新: {{time}}",
"agent.conversations.filter.all": "全部对话",
"agent.conversations.filter.mine": "我的对话",
"agent.conversations.filter.others": "他人对话",
"agent.conversations.status.open": "进行中",
"agent.conversations.status.closed": "历史",
"agent.internalChat.title": "知识库测试",
"agent.internalChat.new": "新建",
"agent.conversation.noMessage": "暂无消息",
"agent.conversation.online": "在线",
"agent.conversation.visitor": "访客",
"agent.input.upload": "上传文件",
"agent.input.placeholder": "输入消息...",
"agent.input.placeholder.withAttachment": "添加消息(可选)...",
"agent.input.sending": "发送中...",
"agent.input.uploading": "上传中...",
"agent.input.send": "发送",
"agent.input.fileTooLarge": "文件大小超过限制(最大10MB",
"agent.input.fileTypeNotSupported": "不支持的文件类型",
"agent.input.uploadFailed": "文件上传失败",
"agent.aiSource.kb": "已使用知识库",
"agent.aiSource.llm": "已使用大模型",
"agent.aiSource.web": "已使用联网搜索",
"agent.common.back": "返回",
"agent.common.cancel": "取消",
"agent.common.create": "创建",
"agent.common.update": "更新",
"agent.common.delete": "删除",
"agent.common.edit": "编辑",
"agent.common.keywordSearch": "关键词搜索",
"agent.common.noMatch": "没有找到匹配的内容",
"agent.common.none": "暂无",
"agent.common.confirm": "确定",
"agent.faqs.title": "事件管理(FAQ",
"agent.faqs.subtitle": "维护常见问题/事件模板,支持关键词搜索。",
"agent.faqs.search.placeholder": "关键词搜索(用 % 分隔,例如:openai%api%调用)...",
"agent.faqs.createButton": "创建事件",
"agent.faqs.empty": "暂无事件",
"agent.faqs.empty.filtered": "没有找到匹配的事件",
"agent.faqs.dialog.createTitle": "创建事件",
"agent.faqs.dialog.editTitle": "编辑事件",
"agent.faqs.dialog.deleteTitle": "删除事件",
"agent.faqs.form.question": "问题",
"agent.faqs.form.answer": "答案",
"agent.faqs.form.keywords": "关键词",
"agent.faqs.form.keywordsHint": "多个关键词建议用 % 分隔,便于检索命中",
"agent.faqs.toast.loadFailed": "加载 FAQ 列表失败",
"agent.faqs.toast.createFailed": "创建 FAQ 失败",
"agent.faqs.toast.updateFailed": "更新 FAQ 失败",
"agent.faqs.toast.deleteFailed": "删除 FAQ 失败",
"agent.faqs.toast.createSuccess": "创建成功",
"agent.faqs.toast.updateSuccess": "更新成功",
"agent.faqs.toast.deleteSuccess": "删除成功",
"agent.faqs.toast.emptyRequired": "问题和答案不能为空",
"agent.faqs.card.keywords": "关键词",
"agent.faqs.card.createdAt": "创建时间",
"agent.faqs.card.edit": "编辑",
"agent.faqs.dialog.createTitle2": "创建新事件",
"agent.faqs.dialog.createDesc": "填写问题和答案,可以添加关键词以便搜索",
"agent.faqs.dialog.editDesc": "修改问题和答案,可以更新关键词以便搜索",
"agent.faqs.dialog.deleteConfirm": "确定要删除事件 \"{{name}}\" 吗?",
"agent.faqs.form.placeholder.question": "请输入问题",
"agent.faqs.form.placeholder.answer": "请输入答案",
"agent.faqs.form.placeholder.keywords":
"例如:API、错误、配置(用逗号或空格分隔)",
"agent.faqs.form.keywordsOptional": "关键词(可选)",
"agent.faqs.form.keywordsTip":
"提示:即使不填写关键词,系统也会自动搜索问题和答案中的内容。关键词字段用于添加额外的搜索索引,帮助用户更快找到相关内容。",
"agent.faqs.submit.creating": "创建中...",
"agent.faqs.submit.deleting": "删除中...",
"agent.perm.analytics": "数据报表",
"agent.perm.chat": "对话",
"agent.perm.faqs": "事件管理",
"agent.perm.kb_test": "知识库测试",
"agent.perm.knowledge": "知识库",
"agent.perm.logs": "日志中心",
"agent.perm.prompts": "提示词",
"agent.perm.settings": "AI 配置",
"agent.perm.users": "用户管理",
"agent.settings.aiCard.titleAdd": "添加 AI 配置",
"agent.settings.aiCard.titleEdit": "编辑 AI 配置",
"agent.settings.aiForm.active": "启用配置",
"agent.settings.aiForm.apiKey": "API Key",
"agent.settings.aiForm.apiUrl": "API 地址",
"agent.settings.aiForm.apiUrlPh": "https://api.openai.com/v1/chat/completions",
"agent.settings.aiForm.descPh": "例如:OpenAI GPT-3.5 Turbo 模型",
"agent.settings.aiForm.description": "配置描述",
"agent.settings.aiForm.model": "模型名称",
"agent.settings.aiForm.modelType": "模型类型",
"agent.settings.aiForm.modelPh": "例如:gpt-3.5-turbo、gpt-4",
"agent.settings.aiForm.provider": "服务商名称",
"agent.settings.aiForm.providerPh": "例如:OpenAI、Claude、自定义",
"agent.settings.aiForm.public": "开放给访客使用",
"agent.settings.aiForm.submitCreate": "创建配置",
"agent.settings.aiForm.submitUpdate": "更新配置",
"agent.settings.aiForm.submitting": "提交中...",
"agent.settings.backDashboard": "返回工作台",
"agent.settings.badge.active": "启用",
"agent.settings.badge.public": "开放",
"agent.settings.confirmDeleteConfig": "确定要删除这个配置吗?",
"agent.settings.embedding.apiKey": "API Key",
"agent.settings.embedding.apiKeyKeepEmpty": "留空则不更新",
"agent.settings.embedding.apiKeyInput": "输入 API Key",
"agent.settings.embedding.apiUrl": "API 地址",
"agent.settings.embedding.apiUrlPh": "https://api.openai.com/v1 或兼容地址",
"agent.settings.embedding.bgeLocal": "BGE 本地",
"agent.settings.embedding.customerKb": "开放知识库给客服使用(允许创建知识库、上传文档、对话中引用)",
"agent.settings.embedding.lead":
"用于知识库文档向量化与 RAG 检索。仅管理员可修改;保存后立即生效,无需重启。",
"agent.settings.embedding.model": "模型",
"agent.settings.embedding.modelPh": "text-embedding-3-small",
"agent.settings.embedding.openaiCompatible": "OpenAI / 兼容 API",
"agent.settings.embedding.save": "保存配置",
"agent.settings.embedding.title": "知识库向量模型",
"agent.settings.embedding.type": "类型",
"agent.settings.error.delete": "删除失败",
"agent.settings.error.loadConfigs": "加载配置失败",
"agent.settings.error.loadEmbedding": "加载失败",
"agent.settings.error.operation": "操作失败",
"agent.settings.global.noReceiveAi": "客服不接收 AI 对话",
"agent.settings.global.noReceiveAiHint":
"开启后,AI 对话将不会显示在对话列表中,也不会收到 AI 消息通知。但您仍可在会话页面手动开启「显示 AI 消息」查看 AI 对话历史。",
"agent.settings.list.apiUrlLabel": "API 地址:",
"agent.settings.list.descLabel": "描述:",
"agent.settings.list.empty": "暂无配置,请添加",
"agent.settings.list.modelTypeLabel": "模型类型:",
"agent.settings.list.title": "已配置的 AI 服务",
"agent.settings.modelType.audio": "语音",
"agent.settings.modelType.image": "图片",
"agent.settings.modelType.text": "文本",
"agent.settings.modelType.video": "视频",
"agent.settings.section.global": "全局设置",
"agent.settings.subtitle": "管理 AI 服务商配置",
"agent.settings.title": "AI 配置管理",
"agent.settings.toast.embeddingSaved": "保存成功,配置已立即生效。",
"agent.settings.toast.profileUpdateFailed": "更新设置失败,请重试",
"agent.settings.webSearch.lead":
"控制对话中的联网搜索方式与访客端是否显示联网选项。与「知识库向量模型」无关,仅影响 AI 对话时的联网行为。",
"agent.settings.webSearch.mode": "联网方式",
"agent.settings.webSearch.modeCustom": "自建 (Serper)",
"agent.settings.webSearch.modeHint":
"自建:由后端通过 Serper(MCP 或 HTTP)执行;厂商内置:使用当前对话所用 AI 厂商自带的联网搜索,不占用 Serper。",
"agent.settings.webSearch.modeVendor": "厂商内置",
"agent.settings.webSearch.save": "保存联网设置",
"agent.settings.webSearch.title": "联网搜索设置",
"agent.settings.webSearch.visitorToggle": "访客小窗显示「本回合联网搜索」选项",
"agent.users.card.edit": "编辑",
"agent.users.card.password": "密码",
"agent.users.createButton": "创建用户",
"agent.users.dialog.createTitle": "创建新用户",
"agent.users.dialog.deleteConfirm": "确定要删除用户 {{username}} 吗?",
"agent.users.dialog.deleteNote":
"此操作不可恢复。若该用户有 AI 配置,系统会自动转移给当前管理员,避免配置丢失。",
"agent.users.dialog.deleteTitle": "删除用户",
"agent.users.dialog.editTitle": "编辑用户",
"agent.users.dialog.passwordTitle": "修改密码",
"agent.users.empty": "暂无用户",
"agent.users.empty.filtered": "没有找到匹配的用户",
"agent.users.field.createdAt": "创建时间",
"agent.users.field.email": "邮箱",
"agent.users.field.username": "用户名",
"agent.users.form.email": "邮箱",
"agent.users.form.newPassword": "新密码",
"agent.users.form.oldPassword": "旧密码",
"agent.users.form.password": "密码",
"agent.users.form.permissions": "功能权限",
"agent.users.form.permissionsHint":
"默认仅开启「对话」。关闭后对应菜单不可见且后端接口会返回 403。",
"agent.users.form.role": "角色",
"agent.users.form.username": "用户名",
"agent.users.form.nickname": "昵称",
"agent.users.placeholder.email": "请输入邮箱",
"agent.users.placeholder.emailOptional": "请输入邮箱(可选)",
"agent.users.placeholder.nickname": "请输入昵称",
"agent.users.placeholder.nicknameOptional": "请输入昵称(可选)",
"agent.users.placeholder.oldPassword": "请输入旧密码",
"agent.users.placeholder.password": "请输入密码",
"agent.users.placeholder.username": "请输入用户名",
"agent.users.receiveAiLabel": "接收 AI 对话",
"agent.users.role.admin": "管理员",
"agent.users.role.agent": "客服",
"agent.users.search.placeholder": "搜索用户(用户名、昵称、邮箱)...",
"agent.users.submit.creating": "创建中...",
"agent.users.submit.deleting": "删除中...",
"agent.users.submit.updating": "更新中...",
"agent.users.title": "用户管理",
"agent.users.toast.adminDeleteDisabled": "管理员账号仅支持数据库删除,前端已禁用",
"agent.users.toast.adminPasswordDisabled": "管理员密码仅支持数据库修改,前端已禁用",
"agent.users.toast.createFailed": "创建用户失败",
"agent.users.toast.createSuccess": "创建成功",
"agent.users.toast.deleteFailed": "删除用户失败",
"agent.users.toast.deleteSuccess": "删除成功",
"agent.users.toast.deleteTransferred": "删除成功,已自动转移 {{count}} 条 AI 配置到当前管理员",
"agent.users.toast.loadFailed": "加载用户列表失败",
"agent.users.toast.newPasswordRequired": "新密码不能为空",
"agent.users.toast.oldPasswordRequired": "修改自己的密码需要提供旧密码",
"agent.users.toast.passwordFailed": "更新密码失败",
"agent.users.toast.passwordSuccess": "密码更新成功",
"agent.users.toast.updateFailed": "更新用户失败",
"agent.users.toast.updateSuccess": "更新成功",
"agent.users.toast.usernamePasswordRequired": "用户名和密码不能为空",
"agent.users.tooltip.adminDeleteDbOnly": "管理员账号仅支持数据库删除",
"agent.users.tooltip.adminPasswordDbOnly": "管理员密码仅支持数据库修改",
"agent.users.tooltip.cannotDeleteSelf": "不能删除当前登录用户",
"agent.users.usernameImmutableHint": "用户名不能修改",
"agent.knowledge.title": "知识库管理",
"agent.knowledge.rag": "参与 RAG",
"agent.knowledge.kb.create": "新建知识库",
"agent.knowledge.kb.empty": "暂无知识库",
"agent.knowledge.kb.selectOne": "请选择一个知识库",
"agent.knowledge.kb.docCount": "{{count}} 篇文档",
"agent.knowledge.import.url": "导入 URL",
"agent.knowledge.import.file": "导入文件",
"agent.knowledge.import.tabFile": "文件上传",
"agent.knowledge.import.tabUrl": "URL 导入",
"agent.knowledge.import.pickFiles": "选择文件",
"agent.knowledge.import.filesSelected": "已选择 {{count}} 个文件",
"agent.knowledge.import.action": "导入",
"agent.knowledge.import.urlListLabel": "URL 列表(每行一个)",
"agent.knowledge.doc.create": "新建文档",
"agent.knowledge.doc.searchPh": "搜索文档...",
"agent.knowledge.doc.empty": "暂无文档",
"agent.knowledge.doc.empty.filtered": "没有找到匹配的文档",
"agent.knowledge.doc.type": "类型",
"agent.knowledge.doc.createdAt": "创建时间",
"agent.knowledge.doc.publish": "发布",
"agent.knowledge.doc.unpublish": "取消发布",
"agent.knowledge.filter.all": "全部状态",
"agent.knowledge.pagination": "第 {{page}} / {{totalPage}} 页,共 {{total}} 条",
"agent.knowledge.status.draft": "草稿",
"agent.knowledge.status.published": "已发布",
"agent.knowledge.embedding.pending": "待处理",
"agent.knowledge.embedding.processing": "处理中",
"agent.knowledge.embedding.completed": "已完成",
"agent.knowledge.embedding.failed": "失败",
"agent.knowledge.dialog.kbCreateTitle": "创建知识库",
"agent.knowledge.dialog.kbCreateDesc": "填写知识库名称和描述",
"agent.knowledge.dialog.kbEditTitle": "编辑知识库",
"agent.knowledge.dialog.kbEditDesc": "修改知识库名称和描述",
"agent.knowledge.dialog.kbDeleteTitle": "删除知识库",
"agent.knowledge.dialog.kbDeleteConfirm": "确定要删除知识库 \"{{name}}\" 吗?",
"agent.knowledge.dialog.kbDeleteHint":
"此操作将同时删除该知识库下的所有文档,此操作不可恢复,请谨慎操作。",
"agent.knowledge.dialog.docCreateTitle": "创建文档",
"agent.knowledge.dialog.docCreateDesc": "填写文档标题和内容",
"agent.knowledge.dialog.docEditTitle": "编辑文档",
"agent.knowledge.dialog.docEditDesc": "修改文档标题和内容",
"agent.knowledge.dialog.docDeleteTitle": "删除文档",
"agent.knowledge.dialog.docDeleteConfirm": "确定要删除文档 \"{{title}}\" 吗?",
"agent.knowledge.dialog.importTitle": "导入文档",
"agent.knowledge.dialog.importDesc":
"选择文件上传或输入 URL 批量导入。当前支持的文件格式:Markdown.md、.markdown);PDF、Word 解析功能开发中。",
"agent.knowledge.field.name": "名称",
"agent.knowledge.field.descOptional": "描述(可选)",
"agent.knowledge.field.title": "标题",
"agent.knowledge.field.summaryOptional": "摘要(可选)",
"agent.knowledge.field.content": "内容",
"agent.knowledge.ph.kbName": "请输入知识库名称",
"agent.knowledge.ph.kbDesc": "请输入知识库描述",
"agent.knowledge.ph.docTitle": "请输入文档标题",
"agent.knowledge.ph.docSummary": "请输入文档摘要",
"agent.knowledge.ph.docContent": "请输入文档内容",
"agent.knowledge.submitting.creating": "创建中...",
"agent.knowledge.submitting.updating": "更新中...",
"agent.knowledge.submitting.deleting": "删除中...",
"agent.knowledge.submitting.importing": "导入中...",
"agent.knowledge.toast.loadKbFailed": "加载知识库列表失败",
"agent.knowledge.toast.loadDocFailed": "加载文档列表失败",
"agent.knowledge.toast.kbNameRequired": "知识库名称不能为空",
"agent.knowledge.toast.selectKbFirst": "请先选择知识库",
"agent.knowledge.toast.docTitleContentRequired": "标题和内容不能为空",
"agent.knowledge.toast.createSuccess": "创建成功",
"agent.knowledge.toast.updateSuccess": "更新成功",
"agent.knowledge.toast.deleteSuccess": "删除成功",
"agent.knowledge.toast.updateFailed": "更新失败",
"agent.knowledge.toast.createKbFailed": "创建知识库失败",
"agent.knowledge.toast.updateKbFailed": "更新知识库失败",
"agent.knowledge.toast.deleteKbFailed": "删除知识库失败",
"agent.knowledge.toast.createDocFailed": "创建文档失败",
"agent.knowledge.toast.updateDocFailed": "更新文档失败",
"agent.knowledge.toast.deleteDocFailed": "删除文档失败",
"agent.knowledge.toast.publishSuccess": "发布成功",
"agent.knowledge.toast.publishFailed": "发布文档失败",
"agent.knowledge.toast.unpublishSuccess": "取消发布成功",
"agent.knowledge.toast.unpublishFailed": "取消发布文档失败",
"agent.knowledge.toast.selectFiles": "请选择要导入的文件",
"agent.knowledge.toast.urlRequired": "请输入至少一个 URL",
"agent.knowledge.toast.importDocFailed": "导入文档失败",
"agent.knowledge.toast.importUrlFailed": "导入 URL 失败",
"agent.knowledge.toast.importRefreshFailed": "导入成功,但刷新列表失败,请手动刷新页面",
"agent.knowledge.toast.importFailed.files": "导入失败:{{count}} 个文件未成功",
"agent.knowledge.toast.importFailed.urls": "导入失败:{{count}} 个 URL 未成功",
"agent.knowledge.toast.importDone.files": "导入完成:成功 {{success}} 个文件",
"agent.knowledge.toast.importDone.urls": "导入完成:成功 {{success}} 个 URL",
"agent.knowledge.toast.importDone.partial": "导入完成:成功 {{success}},失败 {{failed}} {{err}}",
"agent.prompts.title": "提示词",
"agent.prompts.subtitle":
"配置系统中使用的提示词模板,用于 RAG、联网等场景。仅管理员可修改。占位符说明见下方各卡片。",
"agent.prompts.loadFailed": "加载提示词失败",
"agent.prompts.saveSuccess": "保存成功,将立即生效。",
"agent.prompts.saveFailed": "保存失败",
"agent.prompts.usageLabel": "使用场景:",
"agent.prompts.ph.shortReply": "请输入一句完整回复语",
"agent.prompts.ph.withPlaceholders": "请输入提示词内容,保留占位符",
"agent.prompts.saving": "保存中...",
"agent.prompts.save": "保存",
"agent.prompts.hint.rag_prompt":
"占位符:{{rag_context}} 为知识库检索内容,{{user_message}} 为用户问题。",
"agent.prompts.hint.rag_prompt_with_web_optional":
"占位符:{{rag_context}} 为知识库检索内容,{{user_message}} 为用户问题。",
"agent.prompts.hint.no_kb_prompt": "占位符:{{user_message}} 为用户问题。",
"agent.prompts.hint.web_search_result_prompt":
"占位符:{{web_context}} 为联网搜索结果,{{user_message}} 为用户问题。(当前流程未使用此模板)",
"agent.prompts.hint.no_source_reply": "无占位符,内容将作为完整回复语直接展示给用户。",
"agent.prompts.hint.ai_fail_reply": "无占位符,内容将作为完整回复语直接展示给用户。",
"agent.prompts.hint.default": "请勿删除占位符,保存后由系统替换为实际内容。",
"agent.prompts.usage.rag_prompt":
"有知识库检索结果,且本回合未勾选「联网搜索」时,用此模板拼成 prompt 发给模型。",
"agent.prompts.usage.rag_prompt_with_web_optional":
"有知识库检索结果且本回合勾选「联网搜索」时,用此模板并传入联网工具,由模型决定是否调用联网。",
"agent.prompts.usage.no_kb_prompt":
"没有知识库检索结果且本回合未走联网时,用此模板让模型仅凭自身知识回答。",
"agent.prompts.usage.web_search_result_prompt":
"预留:若将来有「先联网搜再拼成一段 prompt」的流程,会使用此模板。当前未使用。",
"agent.prompts.usage.no_source_reply":
"既未命中知识库、也未使用大模型或联网时(如用户关闭了所有数据源),直接向用户展示这句话。",
"agent.prompts.usage.ai_fail_reply": "调用 AI 接口失败(超时、报错等)时,向用户展示这句话。",
"agent.analytics.title": "数据报表",
"agent.analytics.subtitle":
"访客小窗与 AI 客服统计(按上海时区自然日,不含「知识库测试」内部会话)",
"agent.analytics.from": "从",
"agent.analytics.to": "到",
"agent.analytics.query": "查询",
"agent.analytics.loading": "加载中…",
"agent.analytics.empty": "暂无数据",
"agent.analytics.emptyOrFailed": "暂无数据或加载失败",
"agent.analytics.stat.widgetOpens": "小窗打开次数",
"agent.analytics.stat.widgetOpensSub": "需前端埋点,历史数据可能为 0",
"agent.analytics.stat.sessions": "新建会话数",
"agent.analytics.stat.messages": "消息数",
"agent.analytics.stat.aiReplies": "AI 回复次数",
"agent.analytics.stat.aiFailed": "AI 失败次数",
"agent.analytics.stat.aiFailureRate": "AI 失败率",
"agent.analytics.stat.aiFailureRateSub": "占 AI 回复条数",
"agent.analytics.stat.kbHits": "知识库命中次数",
"agent.analytics.stat.kbHitRate": "知识库命中率",
"agent.analytics.stat.kbHitRateSub": "占成功 AI 回复",
"agent.analytics.stat.maxAiRounds": "最大 AI 对话轮数",
"agent.analytics.stat.maxAiRoundsSub": "单会话内用户+AI 一轮",
"agent.analytics.stat.sessionsWithAi": "AI 参与会话",
"agent.analytics.stat.sessionsWithAiSub": "占新建会话 {{pct}}",
"agent.analytics.stat.aiToHuman": "AI→人工(会话数)",
"agent.analytics.stat.aiToHumanSub": "占有过 AI 发言的会话 {{pct}}",
"agent.analytics.stat.humanToAi": "人工→AI(会话数)",
"agent.analytics.stat.humanToAiSub": "占有过人工发言的会话 {{pct}}",
"agent.analytics.chart.widgetOpens": "每日小窗打开",
"agent.analytics.chart.sessions": "每日新建会话",
"agent.analytics.chart.messages": "每日消息数",
"agent.analytics.chart.aiReplies": "每日 AI 回复",
"common.irreversibleHint": "此操作不可恢复,请谨慎操作。",
"chat.title": "客服聊天",
"chat.mode.human": "人工客服",
"chat.mode.ai": "AI 客服",
},
en: {
"nav.features": "Features",
"nav.screenshots": "Screenshots",
"nav.quickStart": "Quick Start",
"nav.agentLogin": "Agent Login",
"nav.menu": "Menu",
"common.github": "GitHub",
"common.to": "to",
"common.save": "Save",
"common.saving": "Saving...",
"common.restoreEnv": "Use env default",
"common.loading": "Loading...",
"common.search": "Search",
"common.prevPage": "Prev",
"common.nextPage": "Next",
"common.copy": "Copy",
"home.hero.tagline": "AI Customer Support",
"home.hero.title": "Make customer support simpler and faster",
"home.hero.subtitle":
"24/7 AI responses with seamless handoff to human agents—free your team to focus on what matters.",
"home.hero.cta.tryNow": "Try now",
"home.hero.cta.agentLogin": "Agent Login",
"home.hero.hint": "No waiting—ready to use",
"home.stats.trustedBy": "Trusted by teams",
"home.stats.clients": "Teams served",
"home.stats.conversations": "Conversations handled",
"home.stats.latency": "Response time",
"home.stats.satisfaction": "Satisfaction",
"home.stats.val.clients": "1000+",
"home.stats.val.conversations": "1M+",
"home.stats.val.latency": "<100ms",
"home.stats.val.satisfaction": "98%",
"home.features.title": "Capabilities",
"home.features.lead":
"From models and knowledge bases to prompts, human collaboration, analytics, and logs—one cohesive system.",
"home.cap.multimodel.title": "Multi-model AI support",
"home.cap.multimodel.desc":
"Configure multiple LLM and multimodal providers; visitors and admins share one place to manage models and usage—easy to swap vendors and control cost.",
"home.cap.kb.title": "Knowledge base & RAG",
"home.cap.kb.desc":
"Ingest documents and retrieve with vectors so answers stay on-brand; replies can show whether KB, model, or web search was used for review and tuning.",
"home.cap.prompt.title": "Prompt engineering",
"home.cap.prompt.desc":
"Edit the prompt templates that power RAG, optional web search, and other flows across your scenarios.",
"home.cap.human.title": "Human agents & real-time collaboration",
"home.cap.human.desc":
"Online presence, live sessions over WebSocket, seamless handoff and teamwork; embed the visitor widget on any site.",
"home.cap.reports.title": "Analytics",
"home.cap.reports.desc":
"Daily or custom ranges for widget opens, sessions, messages, AI success/failure, KB hit rate, and more—see how operations are trending.",
"home.cap.logs.title": "Structured logs",
"home.cap.logs.desc":
"Persisted by category and event with trace_id and keyword search—trace critical paths and incidents for troubleshooting and audit.",
"home.screenshots.title": "Product screenshots",
"home.screenshots.lead": "A polished UI that makes day-to-day admin work easier.",
"home.screenshots.prevAria": "Previous screenshot",
"home.screenshots.nextAria": "Next screenshot",
"home.ss.dashboard.title": "Agent workspace",
"home.ss.dashboard.placeholder": "Workspace preview",
"home.ss.dashboard.alt": "AI-CS agent workspace",
"home.ss.visitor.title": "Visitor widget",
"home.ss.visitor.placeholder": "Visitor UI preview",
"home.ss.visitor.alt": "AI-CS visitor experience",
"home.ss.aiconfig.title": "AI configuration",
"home.ss.aiconfig.placeholder": "AI settings preview",
"home.ss.aiconfig.alt": "AI-CS AI configuration",
"home.ss.users.title": "User management",
"home.ss.users.placeholder": "User admin preview",
"home.ss.users.alt": "AI-CS user management",
"home.ss.faq.title": "FAQ management",
"home.ss.faq.placeholder": "FAQ admin preview",
"home.ss.faq.alt": "AI-CS FAQ management",
"home.ss.knowledge.title": "Knowledge base",
"home.ss.knowledge.placeholder": "Knowledge base preview",
"home.ss.knowledge.alt": "AI-CS knowledge base",
"home.ss.kbtest.title": "KB test chat",
"home.ss.kbtest.placeholder": "KB test preview",
"home.ss.kbtest.alt": "AI-CS knowledge base test",
"home.ss.prompts.title": "Prompts",
"home.ss.prompts.placeholder": "Prompts preview",
"home.ss.prompts.alt": "AI-CS prompt management",
"home.ss.logs.title": "Logs",
"home.ss.logs.placeholder": "Logs preview",
"home.ss.logs.alt": "AI-CS log center",
"home.ss.analytics.title": "Analytics",
"home.ss.analytics.placeholder": "Analytics preview",
"home.ss.analytics.alt": "AI-CS analytics",
"home.quickStart.title": "Quick start",
"home.quickStart.lead": "Three steps from the repo to the visitor widget.",
"home.step1.title": "Clone & configure",
"home.step1.body": "Copy the .env template and fill required database and admin settings.",
"home.step2.title": "Launch",
"home.step2.body": "Bring up backend, frontend, and dependencies with Docker Compose (see README).",
"home.step3.title": "Embed for visitors",
"home.step3.body": "Mount the chat widget on your site; configure models and KB in the console, then go live.",
"home.cta.title": "Ready to wire AI-CS into your product?",
"home.cta.subtitle": "Start from the open-source repo, or explore the online demo first.",
"home.cta.starRepo": "Star / Fork on GitHub",
"home.cta.feedback": "Send feedback",
"home.cta.mailSubject": "AI-CS feedback",
"home.cta.mailBody":
"Hi,\n\n1) Issue or suggestion:\n2) Scope / environment:\n3) Expected outcome:\n\n---\nContact (optional):",
"footer.blurb":
"AI-CS is an AI-powered customer support stack that blends automation and human agents for efficient, modern service.",
"footer.column.product": "Product",
"footer.column.friendLinks": "Friends",
"footer.column.contact": "Contact",
"footer.noFriendLinks": "No links yet",
"footer.onlineChat": "Live chat",
"footer.openSourceLicense": "Open-source license",
"footer.poweredBy": "Powered by Next.js & Go |",
"footer.allRightsReserved": "All rights reserved.",
"footer.emailLabel": "Email",
"footer.qqGroup": "QQ group",
"footer.qqGroupAria": "Join QQ group",
"agent.page.dashboard": "Chats",
"agent.page.internalChat": "KB Test",
"agent.page.knowledge": "Knowledge Base",
"agent.page.faqs": "FAQs",
"agent.page.analytics": "Analytics",
"agent.page.logs": "Logs",
"agent.page.users": "Users",
"agent.page.prompts": "Prompts",
"agent.page.settings": "AI Settings",
"agent.profile": "Profile",
"agent.logout": "Log out",
"agent.chat.conversation": "Chat",
"agent.chat.lastSeen": "Last seen",
"agent.chat.lastSeenUnknown": "Last seen unknown",
"agent.chat.showAI": "Show AI messages",
"agent.chat.hideAI": "Hide AI messages",
"agent.chat.closeConversation": "Close",
"agent.chat.refresh": "Refresh",
"agent.chat.soundOn": "Turn sound off",
"agent.chat.soundOff": "Turn sound on",
"agent.chat.toast.conversationClosed": "Conversation closed",
"agent.chat.toast.closeFailed": "Failed to close conversation",
"agent.chat.emptyPick": "Select a conversation to start",
"agent.layout.openNavMenu": "Open navigation and conversation list",
"agent.layout.openVisitorPanel": "Open visitor details",
"agent.internalChat.webSearchThisTurn": "Web search this turn",
"agent.internalChat.aiThinking": "AI is thinking...",
"agent.internalChat.emptyHint": "Select or create an internal chat to test the knowledge base",
"agent.internalChat.createFailed": "Failed to create internal chat",
"agent.login.title": "Agent Login",
"agent.login.subtitle": "Admins and agents sign in here",
"agent.login.username": "Username",
"agent.login.password": "Password",
"agent.login.submit": "Sign in",
"agent.login.submitting": "Signing in...",
"agent.login.error.empty": "Username and password are required",
"agent.login.error.failed": "Sign-in failed",
"agent.login.error.network": "Sign-in failed. Check your connection.",
"agent.login.demoHint": "Default admin: admin / admin123",
"agent.logs.title": "Logs",
"agent.logs.subtitle": "Filter AI / RAG / system / frontend logs for troubleshooting.",
"agent.logs.policy.title": "Persist level (performance)",
"agent.logs.policy.desc":
"Only logs at or above this level are persisted. Set to warn to reduce successful info writes. You can set SYSTEM_LOG_MIN_LEVEL in .env as default; saving here persists to DB and overrides env until restored.",
"agent.logs.policy.current": "Effective:",
"agent.logs.policy.env": "Env default:",
"agent.logs.policy.overridden": "(overridden in console)",
"agent.logs.level.all": "All levels",
"agent.logs.category.all": "All categories",
"agent.logs.source.all": "All sources",
"agent.logs.event.placeholder": "Event",
"agent.logs.conversationId.placeholder": "Conversation ID",
"agent.logs.keyword.placeholder": "Keyword (message/meta)",
"agent.logs.table.time": "Time",
"agent.logs.table.level": "Level",
"agent.logs.table.category": "Category",
"agent.logs.table.event": "Event",
"agent.logs.table.conversation": "Conversation",
"agent.logs.table.source": "Source",
"agent.logs.table.message": "Message",
"agent.logs.paginationSummary": "{{total}} rows · page {{page}} / {{pages}}",
"agent.logs.empty": "No logs",
"agent.logs.detail.title": "Log detail",
"agent.logs.detail.time": "Time",
"agent.logs.detail.sourceEvent": "source / event",
"agent.logs.detail.category": "category",
"agent.logs.detail.traceId": "trace_id",
"agent.logs.detail.conversationId": "conversation_id",
"agent.logs.detail.userVisitor": "user_id / visitor_id",
"agent.logs.detail.message": "message",
"agent.logs.detail.metaJson": "meta_json",
"agent.logs.detail.noMeta": "(no meta_json)",
"agent.logs.toast.loadPolicyFailed": "Failed to load persist policy",
"agent.logs.toast.loadLogsFailed": "Failed to load logs",
"agent.logs.toast.savePolicyFailed": "Save failed",
"agent.logs.toast.restorePolicyFailed": "Restore failed",
"agent.logs.toast.policySaved": "Saved",
"agent.logs.toast.policyRestored": "Restored to env default",
"agent.logs.toast.messageCopied": "Message copied",
"agent.logs.toast.copyFailed": "Copy failed",
"agent.conversationsPage.title": "Conversations",
"agent.conversationsPage.loading": "Loading...",
"agent.conversationsPage.empty": "No conversations",
"agent.conversationsPage.convLabel": "Chat #{{id}}",
"agent.conversationsPage.visitorLabel": "Visitor ID: {{id}}",
"agent.conversationsPage.createdAt": "Created: {{time}}",
"agent.conversationsPage.updatedAt": "Updated: {{time}}",
"agent.conversations.filter.all": "All chats",
"agent.conversations.filter.mine": "My chats",
"agent.conversations.filter.others": "Others",
"agent.conversations.status.open": "Open",
"agent.conversations.status.closed": "History",
"agent.internalChat.title": "KB Test",
"agent.internalChat.new": "New",
"agent.conversation.noMessage": "No messages yet",
"agent.conversation.online": "Online",
"agent.conversation.visitor": "Visitor",
"agent.input.upload": "Upload",
"agent.input.placeholder": "Type a message...",
"agent.input.placeholder.withAttachment": "Add a message (optional)...",
"agent.input.sending": "Sending...",
"agent.input.uploading": "Uploading...",
"agent.input.send": "Send",
"agent.input.fileTooLarge": "File is too large (max 10MB)",
"agent.input.fileTypeNotSupported": "Unsupported file type",
"agent.input.uploadFailed": "Upload failed",
"agent.aiSource.kb": "Knowledge base used",
"agent.aiSource.llm": "LLM used",
"agent.aiSource.web": "Web search used",
"agent.common.back": "Back",
"agent.common.cancel": "Cancel",
"agent.common.create": "Create",
"agent.common.update": "Update",
"agent.common.delete": "Delete",
"agent.common.edit": "Edit",
"agent.common.keywordSearch": "Keyword search",
"agent.common.noMatch": "No results found",
"agent.common.none": "None",
"agent.common.confirm": "Confirm",
"agent.faqs.title": "FAQs",
"agent.faqs.subtitle": "Manage FAQ/event templates with keyword search.",
"agent.faqs.search.placeholder": "Keyword search (use % as separator)...",
"agent.faqs.createButton": "Create",
"agent.faqs.empty": "No FAQs",
"agent.faqs.empty.filtered": "No matching FAQs",
"agent.faqs.dialog.createTitle": "Create FAQ",
"agent.faqs.dialog.editTitle": "Edit FAQ",
"agent.faqs.dialog.deleteTitle": "Delete FAQ",
"agent.faqs.form.question": "Question",
"agent.faqs.form.answer": "Answer",
"agent.faqs.form.keywords": "Keywords",
"agent.faqs.form.keywordsHint": "Separate keywords with % for better matching",
"agent.faqs.toast.loadFailed": "Failed to load FAQs",
"agent.faqs.toast.createFailed": "Failed to create FAQ",
"agent.faqs.toast.updateFailed": "Failed to update FAQ",
"agent.faqs.toast.deleteFailed": "Failed to delete FAQ",
"agent.faqs.toast.createSuccess": "Created",
"agent.faqs.toast.updateSuccess": "Updated",
"agent.faqs.toast.deleteSuccess": "Deleted",
"agent.faqs.toast.emptyRequired": "Question and answer are required",
"agent.faqs.card.keywords": "Keywords",
"agent.faqs.card.createdAt": "Created",
"agent.faqs.card.edit": "Edit",
"agent.faqs.dialog.createTitle2": "Create FAQ",
"agent.faqs.dialog.createDesc": "Provide question and answer. Add keywords for search.",
"agent.faqs.dialog.editDesc": "Update question/answer and keywords for search.",
"agent.faqs.dialog.deleteConfirm": "Delete \"{{name}}\"?",
"agent.faqs.form.placeholder.question": "Enter question",
"agent.faqs.form.placeholder.answer": "Enter answer",
"agent.faqs.form.placeholder.keywords":
"e.g. API, error, config (comma or space separated)",
"agent.faqs.form.keywordsOptional": "Keywords (optional)",
"agent.faqs.form.keywordsTip":
"Tip: Even without keywords, the system searches question and answer content. Keywords add extra search index for faster matching.",
"agent.faqs.submit.creating": "Creating...",
"agent.faqs.submit.deleting": "Deleting...",
"agent.perm.analytics": "Analytics",
"agent.perm.chat": "Chat",
"agent.perm.faqs": "FAQs",
"agent.perm.kb_test": "KB test",
"agent.perm.knowledge": "Knowledge base",
"agent.perm.logs": "Logs",
"agent.perm.prompts": "Prompts",
"agent.perm.settings": "AI settings",
"agent.perm.users": "Users",
"agent.settings.aiCard.titleAdd": "Add AI config",
"agent.settings.aiCard.titleEdit": "Edit AI config",
"agent.settings.aiForm.active": "Enabled",
"agent.settings.aiForm.apiKey": "API key",
"agent.settings.aiForm.apiUrl": "API URL",
"agent.settings.aiForm.apiUrlPh": "https://api.openai.com/v1/chat/completions",
"agent.settings.aiForm.descPh": "e.g. OpenAI GPT-3.5 Turbo",
"agent.settings.aiForm.description": "Description",
"agent.settings.aiForm.model": "Model name",
"agent.settings.aiForm.modelType": "Model type",
"agent.settings.aiForm.modelPh": "e.g. gpt-3.5-turbo, gpt-4",
"agent.settings.aiForm.provider": "Provider",
"agent.settings.aiForm.providerPh": "e.g. OpenAI, Claude, Custom",
"agent.settings.aiForm.public": "Available to visitors",
"agent.settings.aiForm.submitCreate": "Create",
"agent.settings.aiForm.submitUpdate": "Update",
"agent.settings.aiForm.submitting": "Submitting...",
"agent.settings.backDashboard": "Back to workspace",
"agent.settings.badge.active": "On",
"agent.settings.badge.public": "Public",
"agent.settings.confirmDeleteConfig": "Delete this configuration?",
"agent.settings.embedding.apiKey": "API key",
"agent.settings.embedding.apiKeyKeepEmpty": "Leave blank to keep unchanged",
"agent.settings.embedding.apiKeyInput": "Enter API key",
"agent.settings.embedding.apiUrl": "API URL",
"agent.settings.embedding.apiUrlPh": "https://api.openai.com/v1 or compatible URL",
"agent.settings.embedding.bgeLocal": "BGE local",
"agent.settings.embedding.customerKb":
"Let agents use the knowledge base (create KBs, upload docs, cite in chat)",
"agent.settings.embedding.lead":
"Embeddings for KB documents and RAG. Admins only; changes apply immediately without restart.",
"agent.settings.embedding.model": "Model",
"agent.settings.embedding.modelPh": "text-embedding-3-small",
"agent.settings.embedding.openaiCompatible": "OpenAI / compatible API",
"agent.settings.embedding.save": "Save",
"agent.settings.embedding.title": "Embedding model (knowledge base)",
"agent.settings.embedding.type": "Type",
"agent.settings.error.delete": "Delete failed",
"agent.settings.error.loadConfigs": "Failed to load configs",
"agent.settings.error.loadEmbedding": "Load failed",
"agent.settings.error.operation": "Operation failed",
"agent.settings.global.noReceiveAi": "Do not receive AI conversations",
"agent.settings.global.noReceiveAiHint":
"When enabled, AI conversations won't appear in your list or notify you. You can still open a chat and turn on “Show AI messages” to view history.",
"agent.settings.list.apiUrlLabel": "API URL:",
"agent.settings.list.descLabel": "Description:",
"agent.settings.list.empty": "No configs yet — add one",
"agent.settings.list.modelTypeLabel": "Model type:",
"agent.settings.list.title": "Configured providers",
"agent.settings.modelType.audio": "Audio",
"agent.settings.modelType.image": "Image",
"agent.settings.modelType.text": "Text",
"agent.settings.modelType.video": "Video",
"agent.settings.section.global": "Global",
"agent.settings.subtitle": "Manage AI provider settings",
"agent.settings.title": "AI configuration",
"agent.settings.toast.embeddingSaved": "Saved. Changes are live.",
"agent.settings.toast.profileUpdateFailed": "Failed to update settings. Try again.",
"agent.settings.webSearch.lead":
"Web search mode and whether visitors see the toggle. Unrelated to embedding settings above.",
"agent.settings.webSearch.mode": "Web search mode",
"agent.settings.webSearch.modeCustom": "Self-hosted (Serper)",
"agent.settings.webSearch.modeHint":
"Custom: backend uses Serper (MCP or HTTP). Vendor: use the model providers built-in web search (no Serper).",
"agent.settings.webSearch.modeVendor": "Vendor built-in",
"agent.settings.webSearch.save": "Save web search settings",
"agent.settings.webSearch.title": "Web search",
"agent.settings.webSearch.visitorToggle":
"Show “web search this turn” in the visitor widget",
"agent.users.card.edit": "Edit",
"agent.users.card.password": "Password",
"agent.users.createButton": "Create user",
"agent.users.dialog.createTitle": "Create user",
"agent.users.dialog.deleteConfirm": "Delete user {{username}}?",
"agent.users.dialog.deleteNote":
"This cannot be undone. If this user has AI configs, they are transferred to the current admin.",
"agent.users.dialog.deleteTitle": "Delete user",
"agent.users.dialog.editTitle": "Edit user",
"agent.users.dialog.passwordTitle": "Change password",
"agent.users.empty": "No users",
"agent.users.empty.filtered": "No matching users",
"agent.users.field.createdAt": "Created",
"agent.users.field.email": "Email",
"agent.users.field.username": "Username",
"agent.users.form.email": "Email",
"agent.users.form.newPassword": "New password",
"agent.users.form.oldPassword": "Old password",
"agent.users.form.password": "Password",
"agent.users.form.permissions": "Permissions",
"agent.users.form.permissionsHint":
"Only “Chat” is on by default. Turning off hides the menu and returns 403 from APIs.",
"agent.users.form.role": "Role",
"agent.users.form.username": "Username",
"agent.users.form.nickname": "Nickname",
"agent.users.placeholder.email": "Email",
"agent.users.placeholder.emailOptional": "Email (optional)",
"agent.users.placeholder.nickname": "Nickname",
"agent.users.placeholder.nicknameOptional": "Nickname (optional)",
"agent.users.placeholder.oldPassword": "Current password",
"agent.users.placeholder.password": "Password",
"agent.users.placeholder.username": "Username",
"agent.users.receiveAiLabel": "Receive AI conversations",
"agent.users.role.admin": "Admin",
"agent.users.role.agent": "Agent",
"agent.users.search.placeholder": "Search by username, nickname, email…",
"agent.users.submit.creating": "Creating...",
"agent.users.submit.deleting": "Deleting...",
"agent.users.submit.updating": "Updating...",
"agent.users.title": "Users",
"agent.users.toast.adminDeleteDisabled":
"Admin accounts can only be removed via database; disabled in UI",
"agent.users.toast.adminPasswordDisabled":
"Admin passwords can only be changed via database; disabled in UI",
"agent.users.toast.createFailed": "Failed to create user",
"agent.users.toast.createSuccess": "Created",
"agent.users.toast.deleteFailed": "Failed to delete user",
"agent.users.toast.deleteSuccess": "Deleted",
"agent.users.toast.deleteTransferred":
"Deleted. {{count}} AI config(s) moved to the current admin",
"agent.users.toast.loadFailed": "Failed to load users",
"agent.users.toast.newPasswordRequired": "New password is required",
"agent.users.toast.oldPasswordRequired": "Current password is required to change your own password",
"agent.users.toast.passwordFailed": "Failed to update password",
"agent.users.toast.passwordSuccess": "Password updated",
"agent.users.toast.updateFailed": "Failed to update user",
"agent.users.toast.updateSuccess": "Updated",
"agent.users.toast.usernamePasswordRequired": "Username and password are required",
"agent.users.tooltip.adminDeleteDbOnly": "Admin deletion is database-only",
"agent.users.tooltip.adminPasswordDbOnly": "Admin password is database-only",
"agent.users.tooltip.cannotDeleteSelf": "You cannot delete the signed-in user",
"agent.users.usernameImmutableHint": "Username cannot be changed",
"agent.knowledge.title": "Knowledge base",
"agent.knowledge.rag": "RAG",
"agent.knowledge.kb.create": "New knowledge base",
"agent.knowledge.kb.empty": "No knowledge bases",
"agent.knowledge.kb.selectOne": "Select a knowledge base",
"agent.knowledge.kb.docCount": "{{count}} docs",
"agent.knowledge.import.url": "Import URL",
"agent.knowledge.import.file": "Import files",
"agent.knowledge.import.tabFile": "Files",
"agent.knowledge.import.tabUrl": "URLs",
"agent.knowledge.import.pickFiles": "Choose files",
"agent.knowledge.import.filesSelected": "{{count}} file(s) selected",
"agent.knowledge.import.action": "Import",
"agent.knowledge.import.urlListLabel": "URL list (one per line)",
"agent.knowledge.doc.create": "New doc",
"agent.knowledge.doc.searchPh": "Search docs...",
"agent.knowledge.doc.empty": "No docs",
"agent.knowledge.doc.empty.filtered": "No matching docs",
"agent.knowledge.doc.type": "Type",
"agent.knowledge.doc.createdAt": "Created",
"agent.knowledge.doc.publish": "Publish",
"agent.knowledge.doc.unpublish": "Unpublish",
"agent.knowledge.filter.all": "All statuses",
"agent.knowledge.pagination": "Page {{page}} / {{totalPage}}, total {{total}}",
"agent.knowledge.status.draft": "Draft",
"agent.knowledge.status.published": "Published",
"agent.knowledge.embedding.pending": "Pending",
"agent.knowledge.embedding.processing": "Processing",
"agent.knowledge.embedding.completed": "Completed",
"agent.knowledge.embedding.failed": "Failed",
"agent.knowledge.dialog.kbCreateTitle": "Create knowledge base",
"agent.knowledge.dialog.kbCreateDesc": "Enter name and description",
"agent.knowledge.dialog.kbEditTitle": "Edit knowledge base",
"agent.knowledge.dialog.kbEditDesc": "Update name and description",
"agent.knowledge.dialog.kbDeleteTitle": "Delete knowledge base",
"agent.knowledge.dialog.kbDeleteConfirm": "Delete knowledge base \"{{name}}\"?",
"agent.knowledge.dialog.kbDeleteHint":
"This will also delete all docs in the knowledge base. This action cannot be undone.",
"agent.knowledge.dialog.docCreateTitle": "Create doc",
"agent.knowledge.dialog.docCreateDesc": "Enter title and content",
"agent.knowledge.dialog.docEditTitle": "Edit doc",
"agent.knowledge.dialog.docEditDesc": "Update title and content",
"agent.knowledge.dialog.docDeleteTitle": "Delete doc",
"agent.knowledge.dialog.docDeleteConfirm": "Delete doc \"{{title}}\"?",
"agent.knowledge.dialog.importTitle": "Import docs",
"agent.knowledge.dialog.importDesc":
"Upload files or import by URL. Supported: Markdown (.md, .markdown). PDF/Word parsing is in progress.",
"agent.knowledge.field.name": "Name",
"agent.knowledge.field.descOptional": "Description (optional)",
"agent.knowledge.field.title": "Title",
"agent.knowledge.field.summaryOptional": "Summary (optional)",
"agent.knowledge.field.content": "Content",
"agent.knowledge.ph.kbName": "Knowledge base name",
"agent.knowledge.ph.kbDesc": "Knowledge base description",
"agent.knowledge.ph.docTitle": "Doc title",
"agent.knowledge.ph.docSummary": "Doc summary",
"agent.knowledge.ph.docContent": "Doc content",
"agent.knowledge.submitting.creating": "Creating...",
"agent.knowledge.submitting.updating": "Updating...",
"agent.knowledge.submitting.deleting": "Deleting...",
"agent.knowledge.submitting.importing": "Importing...",
"agent.knowledge.toast.loadKbFailed": "Failed to load knowledge bases",
"agent.knowledge.toast.loadDocFailed": "Failed to load docs",
"agent.knowledge.toast.kbNameRequired": "Knowledge base name is required",
"agent.knowledge.toast.selectKbFirst": "Please select a knowledge base first",
"agent.knowledge.toast.docTitleContentRequired": "Title and content are required",
"agent.knowledge.toast.createSuccess": "Created",
"agent.knowledge.toast.updateSuccess": "Updated",
"agent.knowledge.toast.deleteSuccess": "Deleted",
"agent.knowledge.toast.updateFailed": "Update failed",
"agent.knowledge.toast.createKbFailed": "Failed to create knowledge base",
"agent.knowledge.toast.updateKbFailed": "Failed to update knowledge base",
"agent.knowledge.toast.deleteKbFailed": "Failed to delete knowledge base",
"agent.knowledge.toast.createDocFailed": "Failed to create doc",
"agent.knowledge.toast.updateDocFailed": "Failed to update doc",
"agent.knowledge.toast.deleteDocFailed": "Failed to delete doc",
"agent.knowledge.toast.publishSuccess": "Published",
"agent.knowledge.toast.publishFailed": "Failed to publish doc",
"agent.knowledge.toast.unpublishSuccess": "Unpublished",
"agent.knowledge.toast.unpublishFailed": "Failed to unpublish doc",
"agent.knowledge.toast.selectFiles": "Please choose files to import",
"agent.knowledge.toast.urlRequired": "Please enter at least one URL",
"agent.knowledge.toast.importDocFailed": "Failed to import docs",
"agent.knowledge.toast.importUrlFailed": "Failed to import URLs",
"agent.knowledge.toast.importRefreshFailed":
"Imported, but failed to refresh list. Please refresh the page.",
"agent.knowledge.toast.importFailed.files": "Import failed: {{count}} file(s)",
"agent.knowledge.toast.importFailed.urls": "Import failed: {{count}} URL(s)",
"agent.knowledge.toast.importDone.files": "Imported: {{success}} file(s)",
"agent.knowledge.toast.importDone.urls": "Imported: {{success}} URL(s)",
"agent.knowledge.toast.importDone.partial":
"Imported: {{success}} success, {{failed}} failed {{err}}",
"agent.prompts.title": "Prompts",
"agent.prompts.subtitle":
"Edit system prompt templates for RAG and web search. Admin only. Placeholder hints are shown per card.",
"agent.prompts.loadFailed": "Failed to load prompts",
"agent.prompts.saveSuccess": "Saved. Changes apply immediately.",
"agent.prompts.saveFailed": "Save failed",
"agent.prompts.usageLabel": "When used:",
"agent.prompts.ph.shortReply": "Enter a full short reply sentence",
"agent.prompts.ph.withPlaceholders": "Enter prompt text; keep placeholders",
"agent.prompts.saving": "Saving...",
"agent.prompts.save": "Save",
"agent.prompts.hint.rag_prompt":
"Placeholders: {{rag_context}} = retrieved KB text, {{user_message}} = user question.",
"agent.prompts.hint.rag_prompt_with_web_optional":
"Placeholders: {{rag_context}} = retrieved KB text, {{user_message}} = user question.",
"agent.prompts.hint.no_kb_prompt": "Placeholder: {{user_message}} = user question.",
"agent.prompts.hint.web_search_result_prompt":
"Placeholders: {{web_context}} = web results, {{user_message}} = user question. (Not used in current flow)",
"agent.prompts.hint.no_source_reply": "No placeholders; shown to the user as a full reply.",
"agent.prompts.hint.ai_fail_reply": "No placeholders; shown to the user as a full reply.",
"agent.prompts.hint.default": "Do not remove placeholders; they are filled in by the system.",
"agent.prompts.usage.rag_prompt":
"When KB retrieval succeeded and web search is off for this turn, this template is sent to the model.",
"agent.prompts.usage.rag_prompt_with_web_optional":
"When KB retrieval succeeded and web search is on, this template enables the model to optionally use web tools.",
"agent.prompts.usage.no_kb_prompt":
"When there is no KB hit and no web flow, the model answers from its own knowledge only.",
"agent.prompts.usage.web_search_result_prompt":
"Reserved for a future “web first, then prompt” flow. Not used today.",
"agent.prompts.usage.no_source_reply":
"When no KB/model/web sources apply, show this sentence to the user.",
"agent.prompts.usage.ai_fail_reply": "When the AI API errors or times out, show this sentence to the user.",
"agent.analytics.title": "Analytics",
"agent.analytics.subtitle":
"Visitor widget & AI support stats (calendar day in Shanghai; excludes internal “KB test” chats)",
"agent.analytics.from": "From",
"agent.analytics.to": "To",
"agent.analytics.query": "Query",
"agent.analytics.loading": "Loading…",
"agent.analytics.empty": "No data",
"agent.analytics.emptyOrFailed": "No data or failed to load",
"agent.analytics.stat.widgetOpens": "Widget opens",
"agent.analytics.stat.widgetOpensSub": "Requires frontend tracking; history may be 0",
"agent.analytics.stat.sessions": "New sessions",
"agent.analytics.stat.messages": "Messages",
"agent.analytics.stat.aiReplies": "AI replies",
"agent.analytics.stat.aiFailed": "AI failures",
"agent.analytics.stat.aiFailureRate": "AI failure rate",
"agent.analytics.stat.aiFailureRateSub": "Of AI reply rows",
"agent.analytics.stat.kbHits": "KB hits",
"agent.analytics.stat.kbHitRate": "KB hit rate",
"agent.analytics.stat.kbHitRateSub": "Of successful AI replies",
"agent.analytics.stat.maxAiRounds": "Max AI rounds / session",
"agent.analytics.stat.maxAiRoundsSub": "One round = user + AI once",
"agent.analytics.stat.sessionsWithAi": "Sessions with AI",
"agent.analytics.stat.sessionsWithAiSub": "{{pct}} of new sessions",
"agent.analytics.stat.aiToHuman": "AI → human (sessions)",
"agent.analytics.stat.aiToHumanSub": "{{pct}} of sessions that had AI messages",
"agent.analytics.stat.humanToAi": "Human → AI (sessions)",
"agent.analytics.stat.humanToAiSub": "{{pct}} of sessions that had human messages",
"agent.analytics.chart.widgetOpens": "Widget opens by day",
"agent.analytics.chart.sessions": "New sessions by day",
"agent.analytics.chart.messages": "Messages by day",
"agent.analytics.chart.aiReplies": "AI replies by day",
"common.irreversibleHint": "This action cannot be undone.",
"chat.title": "Chat",
"chat.mode.human": "Human",
"chat.mode.ai": "AI",
},
};