diff --git a/.vscode/i18n-ally-custom-framework.yml b/.vscode/i18n-ally-custom-framework.yml new file mode 100644 index 000000000..b1e27b495 --- /dev/null +++ b/.vscode/i18n-ally-custom-framework.yml @@ -0,0 +1,41 @@ +# .vscode/i18n-ally-custom-framework.yml + +# An array of strings which contain Language Ids defined by VS Code +# You can check available language ids here: https://code.visualstudio.com/docs/languages/identifiers +languageIds: + - javascript + - typescript + - javascriptreact + - typescriptreact + +# An array of RegExes to find the key usage. **The key should be captured in the first match group**. +# You should unescape RegEx strings in order to fit in the YAML file +# To help with this, you can use https://www.freeformatter.com/json-escape.html +usageMatchRegex: + # The following example shows how to detect `t("your.i18n.keys")` + # the `{key}` will be placed by a proper keypath matching regex, + # you can ignore it and use your own matching rules as well + - "[^\\w\\d]t\\(['\"`]({key})['\"`]" + - "[^\\w\\d]commonT\\(['\"`]({key})['\"`]" + # 支持 appT("your.i18n.keys") + - "[^\\w\\d]appT\\(['\"`]({key})['\"`]" + # 支持 datasetT("your.i18n.keys") + - "[^\\w\\d]datasetT\\(['\"`]({key})['\"`]" + +# A RegEx to set a custom scope range. This scope will be used as a prefix when detecting keys +# and works like how the i18next framework identifies the namespace scope from the +# useTranslation() hook. +# You should unescape RegEx strings in order to fit in the YAML file +# To help with this, you can use https://www.freeformatter.com/json-escape.html +scopeRangeRegex: "useTranslation\\(\\s*\\[?\\s*['\"`](.*?)['\"`]" + +# An array of strings containing refactor templates. +# The "$1" will be replaced by the keypath specified. +# Optional: uncomment the following two lines to use + +# refactorTemplates: +# - i18n.get("$1") + + +# If set to true, only enables this custom framework (will disable all built-in frameworks) +monopoly: true \ No newline at end of file diff --git a/packages/web/package.json b/packages/web/package.json index 719536f40..03b56bbcb 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -28,6 +28,7 @@ "papaparse": "^5.4.1", "pdfjs-dist": "4.0.269", "react": "18.2.0", + "use-context-selector": "^1.4.4", "react-day-picker": "^8.7.1", "react-dom": "18.2.0", "react-i18next": "13.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29364d5cc..a5fc2daf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -301,6 +301,9 @@ importers: react-i18next: specifier: 13.5.0 version: 13.5.0(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0) + use-context-selector: + specifier: ^1.4.4 + version: 1.4.4(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0) devDependencies: '@types/lodash': specifier: ^4.14.191 diff --git a/projects/app/i18n/en/app.json b/projects/app/i18n/en/app.json new file mode 100644 index 000000000..7afdd6665 --- /dev/null +++ b/projects/app/i18n/en/app.json @@ -0,0 +1,45 @@ +{ + "AI Advanced Settings": "AI Advanced Settings", + "AI Settings": "AI Settings", + "Advance App TestTip": "Current app may be in advanced orchestration mode\nTo switch to【Simple Mode】please click the save button on the left", + "App Detail": "App Details", + "Apps Share": "Apps Share", + "Basic Settings": "Basic Settings", + "Chat Debug": "Chat Debug", + "Chat Logs Tips": "Logs will record online, shared and API (chatId required) conversation records for this app", + "Chat logs": "Chat Logs", + "Confirm Del App Tip": "Confirm to delete this app and all its chat records?", + "Connection is invalid": "Connection is invalid", + "Connection type is different": "Connection type is different", + "Copy Module Config": "Copy Config", + "Dataset Quote Template": "Knowledge Base QA Mode", + "Export Config Successful": "Config copied, please check for important data", + "Export Configs": "Export Configs", + "Feedback Count": "User Feedback", + "Import Configs": "Import Configs", + "Import Configs Failed": "Failed to import configs, please ensure configs are valid!", + "Input Field Settings": "Input Field Settings", + "Logs Empty": "No logs yet~", + "Logs Message Total": "Total Messages", + "Logs Source": "Source", + "Logs Time": "Time", + "Logs Title": "Title", + "Mark Count": "Marked Answer Count", + "My Apps": "My Apps", + "Output Field Settings": "Output Field Settings", + "Paste Config": "Paste Config", + "To Chat": "Go to Chat", + "To Settings": "View Details", + "Variable Key Repeat Tip": "Variable key is duplicate", + "module": { + "Combine Modules": "Combine Modules", + "Custom Title Tip": "This title will be displayed during the conversation", + "My Modules": "My Modules", + "No Modules": "No modules yet~", + "System Module": "System Module", + "type": "\"{{type}}\" type\n{{description}}" + }, + "modules": { + "Title is required": "Module name cannot be empty" + } +} diff --git a/projects/app/i18n/en/common.json b/projects/app/i18n/en/common.json index b89d184ec..8c520095b 100644 --- a/projects/app/i18n/en/common.json +++ b/projects/app/i18n/en/common.json @@ -1,1765 +1,1706 @@ { - "App": "App", - "Export": "Export", - "Folder": "Folder", - "Move": "Move", - "Name": "Name", - "Rename": "Rename", - "Running": "Running", - "UnKnow": "Unknown", - "Warning": "Warning", - "app": { - "AI Advanced Settings": "AI Advanced Settings", - "AI Settings": "AI Settings", - "Advance App TestTip": "Current app may be in advanced orchestration mode\nTo switch to【Simple Mode】please click the save button on the left", - "App Detail": "App Details", - "Apps Share": "Apps Share", - "Basic Settings": "Basic Settings", - "Chat Debug": "Chat Debug", - "Chat Logs Tips": "Logs will record online, shared and API (chatId required) conversation records for this app", - "Chat logs": "Chat Logs", - "Confirm Del App Tip": "Confirm to delete this app and all its chat records?", - "Connection is invalid": "Connection is invalid", - "Connection type is different": "Connection type is different", - "Copy Module Config": "Copy Config", - "Dataset Quote Template": "Knowledge Base QA Mode", - "Export Config Successful": "Config copied, please check for important data", - "Export Configs": "Export Configs", - "Feedback Count": "User Feedback", - "Import Configs": "Import Configs", - "Import Configs Failed": "Failed to import configs, please ensure configs are valid!", - "Input Field Settings": "Input Field Settings", - "Logs Empty": "No logs yet~", - "Logs Message Total": "Total Messages", - "Logs Source": "Source", - "Logs Time": "Time", - "Logs Title": "Title", - "Mark Count": "Marked Answer Count", - "My Apps": "My Apps", - "Output Field Settings": "Output Field Settings", - "Paste Config": "Paste Config", - "To Chat": "Go to Chat", - "To Settings": "View Details", - "Variable Key Repeat Tip": "Variable key is duplicate", - "module": { - "Combine Modules": "Combine Modules", - "Custom Title Tip": "This title will be displayed during the conversation", - "My Modules": "My Modules", - "No Modules": "No modules yet~", - "System Module": "System Module", - "type": "\"{{type}}\" type\n{{description}}" - }, - "modules": { - "Title is required": "Module name cannot be empty" + "App": "应用", + "Export": "导出", + "Folder": "文件夹", + "Move": "移动", + "Running": "运行中", + "Action": "操作", + "Add": "添加", + "Add New": "新增", + "All": "全部", + "Back": "返回", + "Beta": "实验版", + "Business edition features": "这是商业版功能~", + "Cancel": "取消", + "Choose": "选择", + "Close": "关闭", + "Collect": "收藏", + "Config": "配置", + "Confirm": "确认", + "Confirm Create": "确认创建", + "Confirm Import": "确认导入", + "Confirm Move": "移动到这", + "Confirm Update": "确认更新", + "Confirm to leave the page": "确认离开该页面?", + "Copy": "复制", + "Copy Successful": "复制成功", + "Course": "", + "Create Failed": "创建异常", + "Create New": "新建", + "Create Success": "创建成功", + "Create Time": "创建时间", + "Creating": "创建中", + "Custom Title": "自定义标题", + "Delete": "删除", + "Delete Failed": "删除失败", + "Delete Success": "删除成功", + "Delete Tip": "删除提示", + "Delete Warning": "删除警告", + "Detail": "详情", + "Done": "完成", + "Edit": "编辑", + "Exit": "退出", + "Expired Time": "过期时间", + "Field": "字段", + "File": "文件", + "Filed is repeat": "", + "Filed is repeated": "字段重复了", + "Finish": "完成", + "Import": "导入", + "Import failed": "导入失败", + "Import success": "导入成功", + "Input": "输入", + "Intro": "介绍", + "Invalid Json": "无效的JSON格式,请注意检查。", + "Last Step": "上一步", + "Last use time": "最后使用时间", + "Load Failed": "加载失败", + "Loading": "加载中...", + "More settings": "更多设置", + "MultipleRowSelect": { + "No data": "没有可选值" + }, + "Name": "名称", + "Name Can": "名称不能为空", + "Name is empty": "名称不能为空", + "New Create": "新建", + "Next Step": "下一步", + "No more data": "没有更多了~", + "Not open": "未开启", + "Number of words": "{{amount}}字", + "OK": "好的", + "Open": "打开", + "Opened": "已开启", + "Other": "其他", + "Output": "输出", + "Params": "参数", + "Password inconsistency": "两次密码不一致", + "Please Input Name": "请输入名称", + "Price used": "金额消耗", + "Read document": "查看文档", + "Read intro": "查看说明", + "Readed": "已读", + "Remove": "移除", + "Rename": "重命名", + "Rename Failed": "重命名失败", + "Rename Success": "重命名成功", + "Request Error": "请求异常", + "Require Input": "必填", + "Root folder": "根目录", + "Save": "保存", + "Save Failed": "保存失败", + "Save Success": "保存成功", + "Search": "搜索", + "Select File Failed": "选择文件异常", + "Select One Folder": "选择一个目录", + "Select template": "选择模板", + "Set Avatar": "点击设置头像", + "Set Name": "取个名字", + "Set Team Tags": "团队标签", + "Setting": "设置", + "Status": "状态", + "Submit failed": "提交失败", + "Submit success": "提交成功", + "Sync success": "同步成功", + "System Output": "系统输出", + "System version": "系统版本", + "Team": "团队", + "Team Tags Set": "标签", + "Test": "测试", + "Time": "时间", + "Un used": "未使用", + "UnKnow": "未知", + "UnKnow Source": "未知来源", + "Unlimited": "无限制", + "Update": "更新", + "Update Failed": "更新异常", + "Update Success": "更新成功", + "Update Successful": "更新成功", + "Update Time": "更新时间", + "Update success": "更新成功", + "Upload File Failed": "上传文件失败", + "Username": "用户名", + "Waiting": "等待中", + "Warning": "警告", + "Website": "网站", + "avatar": { + "Select Avatar": "点击选择头像", + "Select Failed": "选择头像异常" + }, + "change": "变更", + "choosable": "可选", + "confirm": { + "Common Tip": "操作确认" + }, + "course": { + "Read Course": "查看教程" + }, + "empty": { + "Common Tip": "没有什么数据噢~" + }, + "error": { + "Select avatar failed": "头像选择异常", + "Update error": "更新失败", + "unKnow": "出现了点意外~", + "fileNotFound": "文件找不到了~", + "team": { + "overSize": "团队成员超出上限" } }, - "common": { - "Action": "Action", - "Add": "Add", - "Add New": "Add New", - "All": "All", - "Back": "Back", - "Beta": "Beta", - "Business edition features": "This is a business edition feature~", - "Cancel": "Cancel", - "Choose": "Choose", - "Close": "Close", - "Collect": "Collect", - "Config": "Config", - "Confirm": "Confirm", - "Confirm Create": "Confirm Create", - "Confirm Import": "Confirm Import", - "Confirm Move": "Move here", - "Confirm Update": "Confirm Update", - "Confirm to leave the page": "", - "Copy": "Copy", - "Copy Successful": "Copied successfully", - "Course": "Course", - "Create Failed": "Create Failed", - "Create New": "Create New", - "Create Success": "Created Successfully", - "Create Time": "Create Time", - "Creating": "Creating", - "Custom Title": "Custom Title", - "Delete": "Delete", - "Delete Failed": "Delete Failed", - "Delete Success": "Deleted Successfully", - "Delete Tip": "Delete Tip", - "Delete Warning": "Delete Warning", - "Detail": "Detail", - "Done": "Done", - "Edit": "Edit", - "Exit": "Exit", - "Expired Time": "Expire Time", - "Field": "Field", - "File": "File", - "Filed is repeat": "Field is duplicate", - "Filed is repeated": "Field is repeated", - "Finish": "Finish", - "Import": "Import", - "Import failed": "Import failed", - "Import success": "Import success", - "Input": "Input", - "Intro": "Intro", - "Invalid Json": "Invalid JSON format, please check carefully.", - "Last Step": "Previous", - "Last use time": "Last use time", - "Load Failed": "Load Failed", - "Loading": "Loading...", - "More settings": "More settings", - "MultipleRowSelect": { - "No data": "" - }, - "Name": "Name", - "Name Can": "Name cannot be empty", - "Name is empty": "Name cannot be empty", - "New Create": "New Create", - "Next Step": "Next", - "No more data": "", - "Not open": "Not Open", - "Number of words": "{{amount}} words", - "OK": "OK", - "Open": "Open", - "Opened": "Opened", - "Other": "Other", - "Output": "Output", - "Params": "Params", - "Password inconsistency": "Passwords do not match", - "Please Input Name": "Please input a name", - "Price used": "Amount used", - "Read document": "View document", - "Read intro": "View intro", - "Readed": "Read", - "Remove": "Remove", - "Rename": "Rename", - "Rename Failed": "Rename Failed", - "Rename Success": "Renamed Successfully", - "Request Error": "Request Error", - "Require Input": "Required", - "Root folder": "Root folder", - "Save": "Save", - "Save Failed": "Save Failed", - "Save Success": "Saved Successfully", - "Search": "Search", - "Select File Failed": "Select File Failed", - "Select One Folder": "Select a folder", - "Select template": "Select template", - "Set Avatar": "Click to set avatar", - "Set Name": "Set a name", - "Set Team Tags": "Set Team Tags", - "Setting": "Settings", - "Status": "Status", - "Submit failed": "Submit failed", - "Submit success": "Submitted successfully", - "Sync success": "Sync success", - "System Output": "", - "System version": "System Version", - "Team": "Team", - "Team Tags Set": "Tags", - "Test": "Test", - "Time": "Time", - "Un used": "Unused", - "UnKnow": "Unknown", - "UnKnow Source": "Unknown Source", - "Unlimited": "Unlimited", - "Update": "Update", - "Update Failed": "Update Failed", - "Update Success": "Updated Successfully", - "Update Successful": "Updated Successfully", - "Update Time": "Update Time", - "Update success": "Update success", - "Upload File Failed": "Upload File Failed", - "Username": "Username", - "Waiting": "Waiting", - "Warning": "Warning", - "Website": "Website", - "avatar": { - "Select Avatar": "Click to select avatar", - "Select Failed": "Select avatar failed" - }, - "change": "change", - "choosable": "optional", - "confirm": { - "Common Tip": "Operation Confirmation" - }, - "course": { - "Read Course": "View Tutorial" - }, - "empty": { - "Common Tip": "No data yet~" - }, - "error": { - "Select avatar failed": "Select avatar failed", - "Update error": "Update failed", - "unKnow": "Something unexpected happened~" - }, - "export": "Export", - "file": { - "Empty file tip": "File content is empty, the file may be unreadable or contain only image content.", - "File Content": "File Content", - "File Name": "File Name", - "File Size": "File Size", - "File content can not be empty": "File content cannot be empty", - "Filename Can not Be Empty": "Filename cannot be empty", - "Read File Error": "Parse file failed", - "Select and drag file tip": "Click or drag files here to upload", - "Select failed": "Select file failed", - "Select file amount limit": "Select up to {{max}} files", - "Select file amount limit 100": "Select up to 100 files at a time", - "Some file count exceeds limit": "Over {{maxCount}} files, automatically truncated", - "Some file size exceeds limit": "Some files exceed: {{maxSize}}, filtered out", - "Support file type": "Supports {{fileType}} files", - "Support max count": "Supports up to {{maxCount}} files.", - "Support max size": "Maximum {{maxSize}} per file.", - "Upload failed": "Upload failed" - }, - "folder": { - "Drag Tip": "Click to drag", - "Move Success": "Move Success", - "No Folder": "No more subdirectories, just put it here", - "Root Path": "Root Path", - "empty": "Nothing left to select in this directory~" - }, - "input": { - "Repeat Value": "Duplicate values" - }, - "jsonEditor": { - "Parse error": "JSON may be wrong, please check carefully" - }, - "link": { - "UnValid": "Invalid link" - }, - "month": "month", - "price": { - "Amount": "{{amount}}{{unit}}" - }, - "speech": { - "error tip": "Speech to text failed", - "not support": "Your browser does not support voice input" - }, - "system": { - "Commercial version function": "Enterprise version feature", - "Help Chatbot": "Help Chatbot", - "Use Helper": "Use Help" - }, - "time": { - "Just now": "Just now", - "The day before yesterday": "The day before yesterday", - "Yesterday": "Yesterday" - }, - "ui": { - "textarea": { - "Magnifying": "Zoom In" - } + "file": { + "Empty file tip": "文件内容为空,可能该文件无法读取或为纯图片文件内容。", + "File Content": "文件内容", + "File Name": "文件名", + "File Size": "文件大小", + "File content can not be empty": "文件内容不能为空", + "Filename Can not Be Empty": "文件名不能为空", + "Read File Error": "解析文件失败", + "Select and drag file tip": "点击或拖动文件到此处上传", + "Select failed": "选择文件异常", + "Select file amount limit": "最多选择 {{max}} 个文件", + "Select file amount limit 100": "每次最多选择100个文件", + "Some file count exceeds limit": "超出{{maxCount}}个文件,已自动截取", + "Some file size exceeds limit": "部分文件超出: {{maxSize}},已被过滤", + "Support file type": "支持 {{fileType}} 类型文件", + "Support max count": "最多支持 {{maxCount}} 个文件。", + "Support max size": "单个文件最大 {{maxSize}}。", + "Upload failed": "上传异常", + "Click to download file template": "点击下载模板:{{name}}", + "Click to view file": "点击查看原始文件", + "Create File": "创建新文件", + "Create file": "创建文件", + "Drag and drop": "拖拽文件至此", + "Fetch Url": "链接读取", + "If the imported file is garbled, please convert CSV to UTF-8 encoding format": "如果导入文件乱码,请将 CSV 转成 UTF-8 编码格式", + "Parse": "{{name}} 解析中...", + "Release the mouse to upload the file": "松开鼠标上传文件", + "Select a maximum of 10 files": "最多选择10个文件", + "Uploading": "正在上传 {{name}},进度: {{percent}}%", + "max 10": "最多选择 10 个文件", + "select a document": "选择文件", + "support": "支持 {{fileExtension}} 文件", + "upload error description": "单次只支持上传多个文件或者一个文件夹" + }, + "folder": { + "Drag Tip": "点我可拖动", + "Move Success": "移动成功", + "No Folder": "没有子目录了,就放这里吧", + "Root Path": "根目录", + "empty": "这个目录已经没东西可选了~" + }, + "input": { + "Repeat Value": "有重复的值" + }, + "jsonEditor": { + "Parse error": "Json可能有误,请仔细检查" + }, + "link": { + "UnValid": "无效的链接" + }, + "month": "月", + "price": { + "Amount": "{{amount}}{{unit}}" + }, + "speech": { + "error tip": "语音转文字失败", + "not support": "您的浏览器不支持语音输入" + }, + "system": { + "Commercial version function": "商业版特有功能", + "Help Chatbot": "机器人助手", + "Use Helper": "使用帮助", + "Help Document": "帮助文档" + }, + "time": { + "Just now": "刚刚", + "The day before yesterday": "前天", + "Yesterday": "昨天" + }, + "ui": { + "textarea": { + "Magnifying": "放大" } }, "core": { - "Chat": "Chat", - "Chat test": "Test", - "Max Token": "Single Data Limit", - "Start chat": "Start Chat", - "Total chars": "Total characters: {{total}}", - "Total tokens": "Total Tokens: {{total}}", + "Chat": "对话", + "Chat test": "测试", + "Max Token": "单条数据上限", + "Start chat": "立即对话", + "Total chars": "总字数: {{total}}", + "Total tokens": "总 Tokens: {{total}}", "ai": { - "AI settings": "AI Settings", - "Ai point price": "AI Point Usage", - "Max context": "Max Context", - "Model": "AI Model", - "Not deploy rerank model": "Rerank model not deployed", - "Prompt": "Prompt", - "Support tool": "Function Calls", + "AI settings": "AI 配置", + "Ai point price": "AI积分消耗", + "Max context": "最大上下文", + "Model": "AI 模型", + "Not deploy rerank model": "未部署重排模型", + "Prompt": "提示词", + "Support tool": "函数调用", "model": { - "Dataset Agent Model": "File Processing Model", - "Vector Model": "Vector Model" + "Dataset Agent Model": "文件处理模型", + "Vector Model": "索引模型" } }, "app": { - "Ai response": "AI Response", - "Api request": "API Request", - "Api request desc": "Integrate into existing systems via API, such as WeCom or Feishu", - "App intro": "App Introduction", - "App params config": "App Configuration", - "Auto Save time": "", - "Change to simple mode": "", - "Chat Variable": "Chat Variable", - "Config schedule plan": "", - "Config whisper": "Configure Voice Input", - "External using": "External Usage", - "Interval timer config": "", - "Interval timer run": "", - "Interval timer tip": "", - "Make a brief introduction of your app": "Provide a brief introduction for your AI application", - "Max histories": "Max Chat Histories", - "Max tokens": "Max Response Tokens", - "Name and avatar": "Name & Avatar", - "Onclick to save": "", - "Publish": "", - "Publish Confirm": "", - "Publish Failed": "", - "Publish Success": "", - "Question Guide": "Suggested Questions", - "Question Guide Tip": "After the conversation ends, 3 guiding questions will be generated.", - "Quote prompt": "Quote Template Prompt", - "Quote templates": "Quote Content Templates", - "Random": "Randomize", - "Save and preview": "Save and Preview", - "Search team tags": "Search Tags", - "Select TTS": "Select Text-to-Speech Mode", - "Select app from template": "Select from Template", - "Select quote template": "Select Quote Template", - "Set a name for your app": "Set a name for your application", - "Setting ai property": "", - "Share link": "Share Link", - "Share link desc": "Share link with other users, no login required for direct usage", - "Share link desc detail": "You can directly share this model with other users for conversation, without them needing to log in. Note that this feature will consume your account balance, please keep the link secure!", - "Simple Config Tip": "Only includes basic features, for complex agent capabilities please use Advanced Orchestration.", - "TTS": "Text-to-Speech", - "TTS Tip": "When enabled, text-to-speech can be used after each conversation. Using this feature may incur additional costs.", - "TTS start": "Read Content", - "Team tags": "Team Tags", - "Temperature": "Temperature", - "Tool call": "Tool Invocation", - "Tool call tip": "Automatically select one or more tools to use via the AI model. If this feature is enabled, knowledge base queries will also be considered a tool invocation. Please try to select AI models that support \"function calls\" for better results.", + "Ai response": "返回AI内容", + "Api request": "API 访问", + "Api request desc": "通过 API 接入到已有系统中,或企微、飞书等", + "App intro": "应用介绍", + "App params config": "应用配置", + "Auto Save time": "自动保存: {{time}}", + "Change to simple mode": "切换简易模式", + "Chat Variable": "对话框变量", + "Config schedule plan": "配置定时执行", + "Config whisper": "配置语音输入", + "External using": "外部使用途径", + "Interval timer config": "定时执行配置", + "Interval timer run": "定时执行", + "Interval timer tip": "可定时执行应用", + "Make a brief introduction of your app": "给你的 AI 应用一个介绍", + "Max histories": "聊天记录数量", + "Max tokens": "回复上限", + "Name and avatar": "头像 & 名称", + "Onclick to save": "点击保存", + "Publish": "发布", + "Publish Confirm": "确认发布应用?会立即更新所有发布渠道的应用状态。", + "Publish Failed": "发布失败", + "Publish Success": "发布成功", + "Question Guide": "猜你想问", + "Question Guide Tip": "对话结束后,会为生成 3 个引导性问题。", + "Quote prompt": "引用模板提示词", + "Quote templates": "引用内容模板", + "Random": "发散", + "Save and preview": "保存并预览", + "Search team tags": "搜索标签", + "Select TTS": "选择语音播放模式", + "Select app from template": "从模板中选择", + "Select quote template": "选择引用提示模板", + "Set a name for your app": "给应用设置一个名称", + "Setting ai property": "点击配置AI模型相关属性", + "Share link": "免登录窗口", + "Share link desc": "分享链接给其他用户,无需登录即可直接进行使用", + "Share link desc detail": "可以直接分享该模型给其他用户去进行对话,对方无需登录即可直接进行对话。注意,这个功能会消耗你账号的余额,请保管好链接!", + "Simple Config Tip": "仅包含基础功能,复杂 agent 功能请使用高级编排。", + "TTS": "语音播放", + "TTS Tip": "开启后,每次对话后可使用语音播放功能。使用该功能可能产生额外费用。", + "TTS start": "朗读内容", + "Team tags": "团队标签", + "Temperature": "温度", + "Tool call": "工具调用", + "Tool call tip": "通过AI模型自动选择一个或多个工具进行使用。如果启动该功能,知识库调用也会被当做一个工具调用。请尽量选择支持“函数调用”的AI模型,效果更好。", "ToolCall": { - "No plugin": "No available plugins", - "Parameter setting": "", - "Setting tool": "Configure Tools", - "System": "System", - "Team": "Team", - "This plugin cannot be called as a tool": "This tool cannot be used in simple mode" + "No plugin": "没有可用的插件", + "Parameter setting": "输入参数", + "Setting tool": "配置工具", + "System": "系统", + "Team": "团队", + "This plugin cannot be called as a tool": "该工具无法在简易模式中使用" }, - "Welcome Text": "Conversation Opening", - "Whisper": "Voice Input", - "Whisper Tip": "Configure voice input related parameters", - "Whisper config": "Voice Input Configuration", - "create app": "Create your own AI application", - "deterministic": "Deterministic", + "Welcome Text": "对话开场白", + "Whisper": "语音输入", + "Whisper Tip": "配置语音输入相关参数", + "Whisper config": "语音输入配置", + "create app": "创建属于你的 AI 应用", + "deterministic": "严谨", "edit": { - "Confirm Save App Tip": "This application may be in Advanced Orchestration mode, saving will overwrite the Advanced Orchestration configuration, please confirm!", - "Out Ad Edit": "You are about to exit the Advanced Orchestration page, please confirm", - "Prompt Editor": "Prompt Editor", - "Query extension background prompt": "Conversation Background Description", - "Query extension background tip": "Describes the scope of the current conversation, allowing the AI to extend and complete the current question. The filled content usually refers to the assistant", - "Save and out": "Save and Exit", - "UnSave": "Don't Save" + "Confirm Save App Tip": "该应用可能为高级编排模式,保存后将会覆盖高级编排配置,请确认!", + "Out Ad Edit": "您即将退出高级编排页面,请确认", + "Prompt Editor": "提示词编辑", + "Query extension background prompt": "对话背景描述", + "Query extension background tip": "描述当前对话的范围,便于AI为当前问题进行补全和扩展。填写的内容,通常为该助手", + "Save and out": "保存并退出", + "UnSave": "不保存" }, "error": { - "App name can not be empty": "Application name cannot be empty", - "Get app failed": "Failed to get application" + "App name can not be empty": "应用名不能为空", + "Get app failed": "获取应用异常" }, "feedback": { - "Custom feedback": "Custom Feedback", - "close custom feedback": "Close Feedback" + "Custom feedback": "自定义反馈", + "close custom feedback": "关闭反馈" }, "logs": { - "Source And Time": "Source & Time" + "Source And Time": "来源 & 时间" }, "navbar": { - "External": "External Usage", - "Flow mode": "Advanced Orchestration", - "Publish": "Publish", - "Publish app": "Publish Application", - "Simple mode": "Simple Configuration" + "External": "外部使用", + "Flow mode": "高级编排", + "Publish": "发布", + "Publish app": "发布应用", + "Simple mode": "简易配置" }, "outLink": { - "Can Drag": "Icon is draggable", - "Default open": "Open by Default", - "Iframe block title": "Copy the below Iframe and add it to your website", - "Link block title": "Copy the link below and open it in a browser", - "Script Close Icon": "Close Icon", - "Script Icon": "Icon", - "Script Open Icon": "Open Icon", - "Script block title": "Add the code below to your website", - "Select Mode": "Start Using", - "Select Using Way": "Select Usage Method", - "Show History": "Show Chat History", - "Web Link": "Web Link" + "Can Drag": "图标可拖拽", + "Default open": "默认打开", + "Iframe block title": "复制下面 Iframe 加入到你的网站中", + "Link block title": "将下面链接复制到浏览器打开", + "Script Close Icon": "关闭图标", + "Script Icon": "图标", + "Script Open Icon": "打开图标", + "Script block title": "将下面代码加入到你的网站中", + "Select Mode": "开始使用", + "Select Using Way": "选择使用方式", + "Show History": "展示历史对话", + "Web Link": "网络链接" }, "publish": { - "Fei Shu Bot Desc": "", - "Fei shu bot": "", - "Fei shu bot publish": "" + "Fei Shu Bot Desc": "接入到飞书机器人中", + "Fei shu bot": "飞书", + "Fei shu bot publish": "发布到飞书机器人" }, "schedule": { - "Default prompt": "", - "Default prompt placeholder": "", - "Every day": "", - "Every month": "", - "Every week": "", - "Interval": "", - "Open schedule": "" + "Default prompt": "默认问题", + "Default prompt placeholder": "执行应用时的默认问题", + "Every day": "每天{{hour}}:00", + "Every month": "每月{{day}}号{{hour}}:00", + "Every week": "每周{{day}} {{hour}}:00", + "Interval": "每{{interval}}小时", + "Open schedule": "定时执行" }, - "setting": "Application Information Settings", + "setting": "应用信息设置", "share": { - "Amount limit tip": "Maximum 10 groups can be created", - "Create link": "Create New Link", - "Create link tip": "Created successfully. Share address has been copied and can be directly shared for use", - "Ip limit title": "IP Rate Limiting (people/minute)", - "Is response quote": "Return Quote", - "Not share link": "No share links created", - "Role check": "Identity Verification" + "Amount limit tip": "最多创建10组", + "Create link": "创建新链接", + "Create link tip": "创建成功。已复制分享地址,可直接分享使用", + "Ip limit title": "IP限流(人/分钟)", + "Is response quote": "返回引用", + "Not share link": "没有创建分享链接", + "Role check": "身份校验" }, "simple": { - "mode template select": "Simple Templates" + "mode template select": "简易模板" }, "template": { - "Classify and dataset": "Question Classification + Knowledge Base", - "Classify and dataset desc": "First classify the user's question, then execute different operations according to different question types", - "Common template": "Common Templates", - "Common template tip": "Common Templates\nAI attributes and knowledge bases can be fully customized", - "Dataset and guide": "Knowledge Base + Conversation Guidance", - "Dataset and guide desc": "Perform a knowledge base search for each question, and inject the search results into the LLM model for reference answers", - "Guide and variables": "Conversation Guidance + Variables", - "Guide and variables desc": "A prompt can be sent at the beginning of the conversation, or the user can fill in some content as variables for this conversation", - "Simple chat": "Simple Chat", - "Simple chat desc": "An extremely simple AI chat application", - "Simple template": "Simple Templates", - "Simple template tip": "Minimalist Templates\nParameter details are built-in" + "Classify and dataset": "问题分类 + 知识库", + "Classify and dataset desc": "先对用户的问题进行分类,再根据不同类型问题,执行不同的操作", + "Common template": "通用模板", + "Common template tip": "通用模板\n可完全自行配置AI属性和知识库", + "Dataset and guide": "知识库 + 对话引导", + "Dataset and guide desc": "每次提问时进行一次知识库搜索,将搜索结果注入 LLM 模型进行参考回答", + "Guide and variables": "对话引导 + 变量", + "Guide and variables desc": "可以在对话开始发送一段提示,或者让用户填写一些内容,作为本次对话的变量", + "Simple chat": "简单的对话", + "Simple chat desc": "一个极其简单的 AI 对话应用", + "Simple template": "简易模板", + "Simple template tip": "极简模板\n已内置参数细节" }, "tip": { - "Add a intro to app": "Give your application an introduction~", - "chatNodeSystemPromptTip": "Fixed prompts for the model, by adjusting this content, you can guide the model's chat direction. This content will be fixed at the beginning of the context. Variables can be used, e.g., {{language}}\nIf a knowledge base is associated, you can also appropriately describe how to guide the model to invoke knowledge base searches. For example:\nYou are the assistant for the movie \"Interstellar\", when the user asks about content related to \"Interstellar\", please search the knowledge base and answer in combination with the search results.", - "userGuideTip": "You can set guiding text before the conversation, set global variables, and set next step guidance", - "variableTip": "Before starting a conversation, you can require the user to fill in some content as specific variables for this round of conversation. This module is located after the opening guidance.\nVariables can be injected into other module string type inputs in the form of {{variable key}}, such as: prompts, constraints, etc.", - "welcomeTextTip": "Send an initial content before each conversation starts. Standard Markdown syntax is supported, extra markup that can be used:\n[Shortcut]: The user can directly send this question by clicking" + "Add a intro to app": "快来给应用一个介绍~", + "chatNodeSystemPromptTip": "模型固定的引导词,通过调整该内容,可以引导模型聊天方向。该内容会被固定在上下文的开头。可使用变量,例如 {{language}}\n如果关联了知识库,你还可以通过适当的描述,来引导模型何时去调用知识库搜索。例如:\n你是电影《星际穿越》的助手,当用户询问与《星际穿越》相关的内容时,请搜索知识库并结合搜索结果进行回答。", + "userGuideTip": "可以在对话前设置引导语,设置全局变量,设置下一步指引", + "variableTip": "可以在对话开始前,要求用户填写一些内容作为本轮对话的特定变量。该模块位于开场引导之后。\n变量可以通过 {{变量key}} 的形式注入到其他模块 string 类型的输入中,例如:提示词、限定词等", + "welcomeTextTip": "每次对话开始前,发送一个初始内容。支持标准 Markdown 语法,可使用的额外标记:\n[快捷按键]: 用户点击后可以直接发送该问题" }, "tts": { - "Close": "Don't Use", - "Model alloy": "Female Voice - Alloy", - "Model echo": "Male Voice - Echo", - "Speech model": "Speech Model", - "Speech speed": "Speech Speed", - "Test Listen": "Test Listen", - "Test Listen Text": "Hello, this is a speech test. If you can hear this sentence, it means the speech playback function is working properly", - "Web": "Browser Built-in (Free)" + "Close": "不使用", + "Model alloy": "女声 - Alloy", + "Model echo": "男声 - Echo", + "Speech model": "语音模型", + "Speech speed": "语速", + "Test Listen": "试听", + "Test Listen Text": "你好,这是语音测试,如果你能听到这句话,说明语音播放功能正常", + "Web": "浏览器自带(免费)" }, "whisper": { - "Auto send": "Auto Send", - "Auto send tip": "Directly send after voice input is completed, without needing to manually click the send button", - "Auto tts response": "Auto Voice Response", - "Auto tts response tip": "Questions sent via voice input will be directly responded to in voice form, please ensure voice playback is enabled.", - "Close": "Close", - "Not tts tip": "You have not enabled text-to-speech, this feature cannot be used", - "Open": "Enable", - "Switch": "Enable Voice Input" + "Auto send": "自动发送", + "Auto send tip": "语音输入完毕后直接发送,不需要再手动点击发送按键", + "Auto tts response": "自动语音回复", + "Auto tts response tip": "通过语音输入发送的问题,会直接以语音的形式响应,请确保打开了语音播报功能。", + "Close": "关闭", + "Not tts tip": "你没有开启语音播放,该功能无法使用", + "Open": "开启", + "Switch": "开启语音输入" } }, "chat": { - "Admin Mark Content": "Corrected Response", - "Audio Not Support": "", - "Audio Speech Error": "Speech Broadcast Error", - "Cancel Speak": "Cancel Voice Input", - "Canceled Speak": "Voice input has been canceled", - "Chat API is error or undefined": "Conversation interface error or returned empty", - "Confirm to clear history": "Confirm to clear the online chat history of this app? Shared and API call records will not be cleared.", - "Confirm to clear share chat history": "Confirm to delete all chat records?", - "Converting to text": "Converting to text...", - "Custom History Title": "Custom History Title", - "Custom History Title Description": "If set to empty, it will automatically follow the chat history.", - "Debug test": "Debug Preview", - "Exit Chat": "Exit Chat", - "Failed to initialize chat": "Failed to initialize chat", - "Feedback Failed": "Feedback submission error", - "Feedback Mark": "Mark", - "Feedback Modal": "Result Feedback", - "Feedback Modal Tip": "Enter where you think the answer is unsatisfactory", - "Feedback Submit": "Submit Feedback", - "Feedback Success": "Feedback successful!", - "Feedback Update Failed": "Failed to update feedback status", - "Finish Speak": "Voice input completed", - "History": "History", - "History Amount": "{{amount}} records", - "Mark": "Mark Expected Answer", - "Mark Description": "The current mark function is a beta version.\n\nAfter clicking to add a mark, you need to select a knowledge base to store the mark data. You can use this function to quickly mark questions and expected answers to guide the model's answers next time.\n\nCurrently, like other data in the knowledge base, the marking function is affected by the model and does not represent 100% compliance with expectations after marking.\n\nThe marked data is only unidirectionally synchronized with the knowledge base. If the knowledge base modifies the marked data, the marked data displayed in the log cannot be synchronized.", - "Mark Description Title": "Introduction to Mark Function", - "New Chat": "New Chat", - "Pin": "Pin", - "Question Guide": "You may want to ask", - "Quote": "Quote", - "Quote Amount": "Knowledge Base Quotes ({{amount}} pieces)", - "Read Mark Description": "View mark function introduction", - "Record": "Voice Input", - "Restart": "Restart Conversation", - "Select File": "Select File", - "Select Image": "Select Image", - "Select dataset": "Select Knowledge Base", - "Select dataset Desc": "Select a knowledge base to store the expected answer", - "Send Message": "Send", - "Speaking": "I'm listening, please speak...", - "Start Chat": "Start Chat", - "Stop Speak": "Stop Recording", - "Type a message": "Enter your question here, Send [Enter]/Wrap [Ctrl(Alt/Shift) + Enter]", - "Unpin": "Unpin", - "You need to a chat app": "You don't have an available app", + "Admin Mark Content": "纠正后的回复", + "Audio Not Support": "设备不支持语音播放", + "Audio Speech Error": "语音播报异常", + "Cancel Speak": "取消语音输入", + "Canceled Speak": "语音输入已取消", + "Chat API is error or undefined": "对话接口报错或返回为空", + "Confirm to clear history": "确认清空该应用的在线聊天记录?分享和 API 调用的记录不会被清空。", + "Confirm to clear share chat history": "确认删除所有聊天记录?", + "Converting to text": "正在转换为文本...", + "Custom History Title": "自定义历史记录标题", + "Custom History Title Description": "如果设置为空,会自动跟随聊天记录。", + "Debug test": "调试预览", + "Exit Chat": "退出聊天", + "Failed to initialize chat": "初始化聊天失败", + "Feedback Failed": "提交反馈异常", + "Feedback Mark": "标注", + "Feedback Modal": "结果反馈", + "Feedback Modal Tip": "输入你觉得回答不满意的地方", + "Feedback Submit": "提交反馈", + "Feedback Success": "反馈成功!", + "Feedback Update Failed": "更新反馈状态失败", + "Finish Speak": "语音输入完成", + "History": "记录", + "History Amount": "{{amount}}条记录", + "Mark": "标注预期回答", + "Mark Description": "当前标注功能为测试版。\n\n点击添加标注后,需要选择一个知识库,以便存储标注数据。你可以通过该功能快速的标注问题和预期回答,以便引导模型下次的回答。\n\n目前,标注功能同知识库其他数据一样,受模型的影响,不代表标注后 100% 符合预期。\n\n标注数据仅单向与知识库同步,如果知识库修改了该标注数据,日志展示的标注数据无法同步", + "Mark Description Title": "标注功能介绍", + "New Chat": "新对话", + "Pin": "置顶", + "Question Guide": "猜你想问", + "Quote": "引用", + "Quote Amount": "知识库引用({{amount}}条)", + "Read Mark Description": "查看标注功能介绍", + "Record": "语音输入", + "Restart": "重开对话", + "Select File": "选择文件", + "Select Image": "选择图片", + "Select dataset": "选择知识库", + "Select dataset Desc": "选择一个知识库存储预期答案", + "Send Message": "发送", + "Speaking": "我在听,请说...", + "Start Chat": "开始对话", + "Stop Speak": "停止录音", + "Type a message": "输入问题,发送 [Enter]/换行 [Ctrl(Alt/Shift) + Enter]", + "Unpin": "取消置顶", + "You need to a chat app": "你没有可用的应用", "error": { - "Chat error": "Conversation error", - "Messages empty": "Interface content is empty, the text may be too long~", - "Select dataset empty": "You have not selected a knowledge base", - "User input empty": "The passed user question is empty" + "Chat error": "对话出现异常", + "Messages empty": "接口内容为空,可能文本超长了~", + "Select dataset empty": "你没有选择知识库", + "User input empty": "传入的用户问题为空" }, "feedback": { "Close User Good Feedback": "", - "Close User Like": "User agrees\nClick to close this mark", - "Feedback Close": "Close Feedback", - "No Content": "The user did not fill in specific feedback", - "Read User dislike": "User disagrees\nClick to view content" + "Close User Like": "用户表示赞同\n点击关闭该标记", + "Feedback Close": "关闭反馈", + "No Content": "用户没有填写具体反馈内容", + "Read User dislike": "用户表示反对\n点击查看内容" }, "logs": { - "api": "API Call", - "online": "Online Usage", - "share": "External Link Call", - "test": "Test" + "api": "API 调用", + "online": "在线使用", + "share": "外部链接调用", + "test": "测试" }, "markdown": { - "Edit Question": "Edit Question", - "Quick Question": "Click to ask immediately", - "Send Question": "Send Question" + "Edit Question": "编辑问题", + "Quick Question": "点我立即提问", + "Send Question": "发送问题" }, "quote": { - "Quote Tip": "Only actual quoted content is displayed here and will not be updated in real-time if data is updated", - "Read Quote": "View Quote", - "Read Source": "View Source" + "Quote Tip": "此处仅显示实际引用内容,若数据有更新,此处不会实时更新", + "Read Quote": "查看引用", + "Read Source": "查看来源" }, "response": { - "Complete Response": "Complete Response", - "Extension model": "Question Optimization Model", - "Plugin response detail": "Plugin Details", - "Read complete response": "View Details", - "Read complete response tips": "Click to view detailed process", - "Tool call response detail": "Tool Run Details", - "Tool call tokens": "Tool Call Token Consumption", - "context total length": "Total Length of Context", - "module cq": "Question Classification List", - "module cq result": "Classification Result", - "module extract description": "Extract Requirement Description", - "module extract result": "Extraction Result", - "module historyPreview": "Complete Record", - "module http body": "Request Body", - "module http result": "Response Body", - "module http url": "Request URL", - "module if else Result": "", - "module limit": "Single Search Limit", - "module maxToken": "Max Response Tokens", - "module model": "Model", - "module name": "Model Name", - "module price": "Billing", - "module query": "Question/Search Keyword", - "module question": "Question", - "module quoteList": "Quote Content", - "module runningTime": "Running Time", - "module search query": "Search Keyword", - "module search response": "Search Result", - "module similarity": "Similarity", - "module temperature": "Temperature", - "module time": "Running Time", - "module tokens": "Total Tokens", - "plugin output": "Plugin Output Value", - "search using reRank": "Result Reranking", - "text output": "Text Output" + "Complete Response": "完整响应", + "Extension model": "问题优化模型", + "Plugin response detail": "插件详情", + "Read complete response": "查看详情", + "Read complete response tips": "点击查看详细流程", + "Tool call response detail": "工具运行详情", + "Tool call tokens": "工具调用Tokens消耗", + "context total length": "上下文总长度", + "module cq": "问题分类列表", + "module cq result": "分类结果", + "module extract description": "提取要求描述", + "module extract result": "提取结果", + "module historyPreview": "完整记录", + "module http body": "请求体", + "module http result": "响应体", + "module http url": "请求地址", + "module if else Result": "判断器结果", + "module limit": "单次搜索上限", + "module maxToken": "最大响应 Tokens", + "module model": "模型", + "module name": "模型名", + "module price": "计费", + "module query": "问题/检索词", + "module question": "问题", + "module quoteList": "引用内容", + "module runningTime": "运行时长", + "module search query": "检索词", + "module search response": "搜索结果", + "module similarity": "相似度", + "module temperature": "温度", + "module time": "运行时长", + "module tokens": "总Tokens", + "plugin output": "插件输出值", + "search using reRank": "结果重排", + "text output": "文本输出" }, - "retry": "Regenerate", + "retry": "重新生成", "tts": { - "Stop Speech": "Stop" + "Stop Speech": "停止" } }, "common": { "tip": { - "leave page": "Content has been modified, confirm to leave the page?" + "leave page": "内容已修改,确认离开页面吗?" } }, "dataset": { - "All Dataset": "All Datasets", - "Avatar": "Dataset Avatar", - "Choose Dataset": "Link Dataset", - "Chunk amount": "Chunk Count", - "Collection": "Collection", - "Common Dataset": "Common Dataset", - "Common Dataset Desc": "Build a dataset by importing files, web links or manual input", - "Create dataset": "Create a dataset", - "Dataset": "Dataset", - "Dataset ID": "Dataset ID", - "Dataset Type": "Dataset Type", - "Delete Confirm": "Confirm deleting this dataset? Data cannot be recovered after deletion, please confirm!", - "Delete Website Tips": "Confirm deleting this website?", + "All Dataset": "全部知识库", + "Avatar": "知识库头像", + "Choose Dataset": "关联知识库", + "Chunk amount": "分段数", + "Collection": "数据集", + "Common Dataset": "通用知识库", + "Common Dataset Desc": "可通过导入文件、网页链接或手动录入形式构建知识库", + "Create dataset": "创建一个知识库", + "Dataset": "知识库", + "Dataset ID": "知识库 ID", + "Dataset Type": "知识库类型", + "Delete Confirm": "确认删除该知识库?删除后数据无法恢复,请确认!", + "Delete Website Tips": "确认删除该站点?", "Empty Dataset": "", - "Empty Dataset Tips": "No datasets yet, go create one!", - "File collection": "File Collection", - "Folder Dataset": "Folder", - "Folder placeholder": "This is a directory", - "Go Dataset": "Go to Dataset", - "Intro Placeholder": "This dataset doesn't have a description yet~", - "Manual collection": "Manual Collection", - "My Dataset": "My Datasets", - "Name": "Dataset Name", - "Query extension intro": "Enabling query optimization can improve the accuracy of dataset searches during continuous conversations. When enabled, the AI will complete missing information in the query based on the conversation history when performing a dataset search.", - "Quote Length": "Quote Content Length", - "Read Dataset": "View Dataset Details", - "Search score tip": "{{scoreText}} The detailed ranking and scores are as follows:\n----\n{{detailScore}}", - "Select dataset": "Select Dataset", - "Set Empty Result Tip": ", reply with specified content when no results are found", - "Set Website Config": "Start configuring website info", - "Similarity": "Relevance", - "Start export": "Export started", - "Sync Time": "Last Updated", - "Table collection": "Table Collection", - "Text collection": "Text Collection", - "Total chunks": "Total Chunks: {{total}}", - "Website Dataset": "Web Site Sync", - "Website Dataset Desc": "Web site sync allows you to directly build a dataset using a webpage link", + "Empty Dataset Tips": "还没有知识库,快去创建一个吧!", + "File collection": "文件数据集", + "Folder Dataset": "文件夹", + "Folder placeholder": "这是一个目录", + "Go Dataset": "前往知识库", + "Intro Placeholder": "这个知识库还没有介绍~", + "Manual collection": "手动数据集", + "My Dataset": "我的知识库", + "Name": "知识库名称", + "Query extension intro": "开启问题优化功能,可以提高提高连续对话时,知识库搜索的精度。开启该功能后,在进行知识库搜索时,会根据对话记录,利用 AI 补全问题缺失的信息。", + "Quote Length": "引用内容长度", + "Read Dataset": "查看知识库详情", + "Search score tip": "{{scoreText}}下面是详细排名和得分情况:\n----\n{{detailScore}}", + "Select dataset": "选择知识库", + "Set Empty Result Tip": ",未搜索到内容时回复指定内容", + "Set Website Config": "开始配置网站信息", + "Similarity": "相关度", + "Start export": "已开始导出", + "Sync Time": "最后更新时间", + "Table collection": "表格数据集", + "Text collection": "文本数据集", + "Total chunks": "总分段: {{total}}", + "Website Dataset": "Web 站点同步", + "Website Dataset Desc": "Web 站点同步允许你直接使用一个网页链接构建知识库", "collection": { - "Click top config website": "Click to configure website", - "Collection name": "Collection Name", - "Collection raw text": "Collection Content", - "Empty Tip": "The collection is empty", - "QA Prompt": "QA Split Prompt", - "Start Sync Tip": "Confirm starting data sync? Old data will be deleted and re-fetched, please confirm!", - "Sync": "Sync Data", - "Sync Collection": "Data Sync", - "Website Create Success": "Created successfully, data sync in progress", - "Website Empty Tip": "No linked websites yet", - "Website Link": "Website URL", - "Website Sync": "Website Sync", - "id": "Collection ID", + "Click top config website": "点击配置网站", + "Collection name": "数据集名称", + "Collection raw text": "数据集内容", + "Empty Tip": "数据集空空如也", + "QA Prompt": "QA 拆分引导词", + "Start Sync Tip": "确认开始同步数据?将会删除旧数据后重新获取,请确认!", + "Sync": "同步数据", + "Sync Collection": "数据同步", + "Website Create Success": "创建成功,正在同步数据", + "Website Empty Tip": "还没有关联网站", + "Website Link": "Web 站点地址", + "Website Sync": "Web 站点同步", + "id": "集合ID", "metadata": { - "Chunk Size": "Chunk Size", - "Createtime": "Created At", - "Raw text length": "Raw Text Length", - "Read Metadata": "View Metadata", - "Training Type": "Training Mode", - "Updatetime": "Updated At", - "Web page selector": "Web Page Selector", - "metadata": "Metadata", - "read source": "View Raw Content", - "source": "Data Source", - "source name": "Source Name", - "source size": "Source Size" + "Chunk Size": "分割大小", + "Createtime": "创建时间", + "Raw text length": "原文长度", + "Read Metadata": "查看元数据", + "Training Type": "训练模式", + "Updatetime": "更新时间", + "Web page selector": "网站选择器", + "metadata": "元数据", + "read source": "查看原始内容", + "source": "数据来源", + "source name": "来源名", + "source size": "来源大小" }, "status": { - "active": "Ready", - "syncing": "Syncing" + "active": "已就绪", + "syncing": "同步中" }, "sync": { "result": { - "sameRaw": "Content unchanged, no update needed", - "success": "Sync started" + "sameRaw": "内容未变动,无需更新", + "success": "开始同步" } }, - "training": { - } + "training": {} }, "data": { - "Auxiliary Data": "Auxiliary Data", - "Auxiliary Data Placeholder": "This is an optional field, usually used to construct structured prompts together with the [Data Content] for special scenarios, up to {{maxToken}} characters.", - "Auxiliary Data Tip": "This is an optional field\nThis content is usually used to construct structured prompts together with the data content for special scenarios", - "Data Content": "Relevant Data Content", - "Data Content Placeholder": "This is a required field, usually a description of a knowledge point or a user's question, up to {{maxToken}} characters.", - "Data Content Tip": "This is a required field\nThis content is usually a description of a knowledge point or a user's question.", - "Default Index Tip": "Cannot edit, the default index will directly generate indexes using the text from [Relevant Data Content] and [Auxiliary Data].", - "Edit": "Edit Data", - "Empty Tip": "This collection has no data yet~", - "Main Content": "Main Content", - "Search data placeholder": "Search relevant data", - "Too Long": "Total length exceeded", - "Total Amount": "{{total}} sets", - "data is deleted": "This data has been deleted", - "get data error": "Error getting data", - "id": "Data ID", - "unit": " items" + "Auxiliary Data": "辅助数据", + "Auxiliary Data Placeholder": "该部分为可选填项, 通常是为了与前面的【数据内容】配合,构建结构化提示词,用于特殊场景,最多 {{maxToken}} 字。", + "Auxiliary Data Tip": "该部分为可选填项\n该内容通常是为了与前面的数据内容配合,构建结构化提示词,用于特殊场景", + "Data Content": "相关数据内容", + "Data Content Placeholder": "该输入框是必填项,该内容通常是对于知识点的描述,也可以是用户的问题,最多 {{maxToken}} 字。", + "Data Content Tip": "该输入框是必填项\n该内容通常是对于知识点的描述,也可以是用户的问题。", + "Default Index Tip": "无法编辑,默认索引会使用【相关数据内容】与【辅助数据】的文本直接生成索引。", + "Edit": "编辑数据", + "Empty Tip": "这个集合还没有数据~", + "Main Content": "主要内容", + "Search data placeholder": "搜索相关数据", + "Too Long": "总长度超长了", + "Total Amount": "{{total}} 组", + "data is deleted": "该数据已被删除", + "get data error": "获取数据异常", + "id": "数据ID", + "unit": "条" }, - "embedding model tip": "The index model can convert natural language into vectors for semantic retrieval.\nNote that different index models cannot be used together. Once an index model is selected, it cannot be changed.", + "embedding model tip": "索引模型可以将自然语言转成向量,用于进行语义检索。\n注意,不同索引模型无法一起使用,选择完索引模型后将无法修改。", "error": { - "Data not found": "Data does not exist or has been deleted", - "Start Sync Failed": "Failed to start sync", - "Template does not exist": "Template does not exist", - "unAuthDataset": "No permission to operate on this dataset", - "unAuthDatasetCollection": "No permission to operate on this collection", - "unAuthDatasetData": "No permission to operate on this data", - "unAuthDatasetFile": "No permission to operate on this file", - "unCreateCollection": "No permission to operate on this data", - "unLinkCollection": "Not a web link collection" + "Data not found": "数据不存在或已被删除", + "Start Sync Failed": "开始同步失败", + "Template does not exist": "模板不存在", + "unAuthDataset": "无权操作该知识库", + "unAuthDatasetCollection": "无权操作该数据集", + "unAuthDatasetData": "无权操作该数据", + "unAuthDatasetFile": "无权操作该文件", + "unCreateCollection": "无权操作该数据", + "unLinkCollection": "不是网络链接集合" }, - "file": "File", - "folder": "Folder", + "file": "文件", + "folder": "目录", "import": { - "Auto mode Estimated Price Tips": "Requires calling file processing model, consumes many tokens: {{price}} points/1k Tokens", - "Auto process": "Auto", - "Auto process desc": "Automatically set chunking and preprocessing rules", - "CSV Import": "CSV Import", - "CSV Import Tip": "Batch import QA pairs, data needs to be prepared in advance", - "Chunk Range": "Range: {{min}}~{{max}}", - "Chunk Split": "Direct Chunking", - "Chunk Split Tip": "Splits text into chunks according to certain rules and converts into a format that can be semantically searched, suitable for most scenarios. Does not require calling models for extra processing, low cost.", - "Chunk length": "Total Chunks", - "Csv format error": "CSV file format error, please ensure there are 'index' and 'content' columns", - "Custom file": "Custom Text", - "Custom process": "Custom Rules", - "Custom process desc": "Customize chunking and preprocessing rules", - "Custom prompt": "Custom Prompt", - "Custom split char": "Custom Delimiter", - "Custom split char Tips": "Allows you to chunk based on custom delimiters. Usually used for pre-processed data to precisely chunk using specific delimiters.", - "Custom text": "Custom Text", - "Custom text desc": "Manually input a piece of text as the dataset", - "Data Preprocessing": "Data Processing", - "Data file progress": "Data Upload Progress", - "Data process params": "Data Processing Parameters", - "Down load csv template": "Click to download CSV template", - "Embedding Estimated Price Tips": "Only uses index model, consumes few tokens: {{price}} points/1k Tokens", - "Estimated Price": "Estimated Price: {{amount}}{{unit}}", - "Estimated Price Tips": "QA billing is\nInput: {{charsPointsPrice}} points/1k Tokens", - "Estimated points": "Estimated {{points}} points consumed", - "Fetch Error": "Failed to fetch link", - "Fetch Url": "Web Link", - "Fetch url placeholder": "Up to 10 links, one per line.", - "Fetch url tip": "Only supports reading static links, please check the results", - "File chunk amount": "Chunks: {{amount}}", - "File list": "File List", - "Ideal chunk length": "Ideal Chunk Length", - "Ideal chunk length Tips": "Chunk based on end punctuation. We recommend your documents use punctuation appropriately to ensure each complete sentence does not exceed this length\nChinese documents recommend 400~1000\nEnglish documents recommend 600~1200", - "Import Failed": "File import failed", - "Import Success Tip": "Successfully imported {{num}} sets of data, please wait patiently for training.", - "Import Tip": "This task cannot be terminated and requires some time to generate indexes, please confirm the import. If your balance is insufficient, unfinished tasks will be paused and can be resumed after recharging.", - "Import success": "Import successful, please wait for training", - "Link name": "Web Link", - "Link name placeholder": "Only supports static links, if data is empty after uploading, the link may not be readable\nOne per line, up to 10 links each time", - "Local file": "Local File", - "Local file desc": "Upload files in formats like PDF, TXT, DOCX, etc.", - "Only Show First 50 Chunk": "Only showing partial", - "Predicted chunk": "Estimated Chunks", - "Predicted chunk amount": "Estimated Chunks:{{amount}}", - "Predicted total chars": "Estimated Characters: {{total}}", - "Preview chunks": "Preview Chunks (up to 5)", - "Preview raw text": "Preview Source Text (up to 3000 characters)", - "Process way": "Processing Method", - "QA Estimated Price Tips": "Requires calling file processing model, consumes many tokens: {{price}} points/1k Tokens", - "QA Import": "QA Split", - "QA Import Tip": "Splits text into larger paragraphs according to certain rules, calls AI to generate QA pairs for each paragraph. Has very high retrieval accuracy but will lose many content details.", - "Re Preview": "Re-generate Preview", - "Select file": "Select File", - "Select source": "Select Source", - "Set Chunk Error": "Text chunking error", - "Source name": "Source Name", - "Sources list": "Sources List", - "Start upload": "Start Upload", - "Total Chunk Preview": "Chunk Preview ({{totalChunks}} sets)", - "Total files": "{{total}} files total", - "Total tokens": "Total Tokens", - "Training mode": "Training Mode", - "Upload data": "Upload Data", - "Upload file progress": "File Upload Progress", - "Upload status": "Status", - "Upload success": "Upload Successful", - "Web link": "Web Link", - "Web link desc": "Read static webpage content as dataset" + "Auto mode Estimated Price Tips": "需调用文件处理模型,需要消耗较多Tokens: {{price}}积分/1k Tokens", + "Auto process": "自动", + "Auto process desc": "自动设置分割和预处理规则", + "CSV Import": "CSV 导入", + "CSV Import Tip": "通过批量导入问答对,要求提前整理好数据", + "Chunk Range": "范围: {{min}}~{{max}}", + "Chunk Split": "直接分段", + "Chunk Split Tip": "将文本按一定的规则进行分段处理后,转成可进行语义搜索的格式,适合绝大多数场景。不需要调用模型额外处理,成本低。", + "Chunk length": "分块总量", + "Csv format error": "csv 文件格式有误,请确保 index 和 content 两列", + "Custom file": "自定义文本", + "Custom process": "自定义规则", + "Custom process desc": "自定义设置分制和预处理规则", + "Custom prompt": "自定义提示词", + "Custom split char": "自定义分隔符", + "Custom split char Tips": "允许你根据自定义的分隔符进行分块。通常用于已处理好的数据,使用特定的分隔符来精确分块。", + "Custom text": "自定义文本", + "Custom text desc": "手动输入一段文本作为数据集", + "Data Preprocessing": "数据处理", + "Data file progress": "数据上传进度", + "Data process params": "数据处理参数", + "Down load csv template": "点击下载 CSV 模板", + "Embedding Estimated Price Tips": "仅使用索引模型,消耗少量AI积分: {{price}}积分/1k Tokens", + "Estimated Price": "预估价格: {{amount}}{{unit}}", + "Estimated Price Tips": "QA计费为\n输入: {{charsPointsPrice}}积分/1k Tokens", + "Estimated points": "预估消耗 {{points}} 积分", + "Fetch Error": "获取链接失败", + "Fetch Url": "网络链接", + "Fetch url placeholder": "最多10个链接,每行一个。", + "Fetch url tip": "仅支持读取静态链接,请注意检查结果", + "File chunk amount": "分段: {{amount}}", + "File list": "文件列表", + "Ideal chunk length": "理想分块长度", + "Ideal chunk length Tips": "按结束符号进行分段。我们建议您的文档应合理的使用标点符号,以确保每个完整的句子长度不要超过该值\n中文文档建议400~1000\n英文文档建议600~1200", + "Import Failed": "导入文件失败", + "Import Success Tip": "共成功导入 {{num}} 组数据,请耐心等待训练.", + "Import Tip": "该任务无法终止,需要一定时间生成索引,请确认导入。如果余额不足,未完成的任务会被暂停,充值后可继续进行。", + "Import success": "导入成功,请等待训练", + "Link name": "网络链接", + "Link name placeholder": "仅支持静态链接,如果上传后数据为空,可能该链接无法被读取\n每行一个,每次最多 10 个链接", + "Local file": "本地文件", + "Local file desc": "上传 PDF, TXT, DOCX 等格式的文件", + "Only Show First 50 Chunk": "仅展示部分", + "Predicted chunk": "预估分段", + "Predicted chunk amount": "预估分段:{{amount}}", + "Predicted total chars": "预估字数: {{total}}", + "Preview chunks": "预览分段(最多5段)", + "Preview raw text": "预览源文本(最多3000字)", + "Process way": "处理方式", + "QA Estimated Price Tips": "需调用文件处理模型,需要消耗较多AI积分: {{price}}积分/1k Tokens", + "QA Import": "QA拆分", + "QA Import Tip": "根据一定规则,将文本拆成一段较大的段落,调用 AI 为该段落生成问答对。有非常高的检索精度,但是会丢失很多内容细节。", + "Re Preview": "重新生成预览", + "Select file": "选择文件", + "Select source": "选择来源", + "Set Chunk Error": "文本分段异常", + "Source name": "来源名", + "Sources list": "来源列表", + "Start upload": "开始上传", + "Total Chunk Preview": "分段预览({{totalChunks}}组)", + "Total files": "共 {{total}} 个文件", + "Total tokens": "总Tokens", + "Training mode": "训练模式", + "Upload data": "上传数据", + "Upload file progress": "文件上传进度", + "Upload status": "状态", + "Upload success": "上传成功", + "Web link": "网页链接", + "Web link desc": "读取静态网页内容作为数据集" }, - "link": "Link", + "link": "链接", "search": { - "Basic params": "Basic Parameters", - "Dataset Search Params": "Dataset Search Configuration", - "Embedding score": "Semantic Search Score", - "Empty result response": "Empty Result Reply", - "Empty result response Tips": "If this is filled, when no suitable content is found, the filled content will be directly replied.", - "Filter": "Search Filter", + "Basic params": "基础参数", + "Dataset Search Params": "知识库搜索配置", + "Embedding score": "语意检索得分", + "Empty result response": "空搜索回复", + "Empty result response Tips": "若填写该内容,没有搜索到合适内容时,将直接回复填写的内容。", + "Filter": "搜索过滤", "Limit": "", - "Max Tokens": "Quote Limit", - "Max Tokens Tips": "Maximum Tokens per search, for Chinese about 1 character=1.7 Tokens, for English about 1 character=1 Token", - "Min Similarity": "Minimum Relevance", - "Min Similarity Tips": "Relevance differs for different index models, please use search tests to select an appropriate value. When using ReRank, the relevance may be very low.", - "No support similarity": "Relevance filtering is only supported when using result reranking or semantic search", - "Nonsupport": "Not supported", + "Max Tokens": "引用上限", + "Max Tokens Tips": "单次搜索最大的 Tokens 数量,中文约1字=1.7Tokens,英文约1字=1Tokens", + "Min Similarity": "最低相关度", + "Min Similarity Tips": "不同索引模型的相关度有区别,请通过搜索测试来选择合适的数值,使用 ReRank 时,相关度可能会很低。", + "No support similarity": "仅使用结果重排或语义检索时,支持相关度过滤", + "Nonsupport": "不支持", "Not similarity": "", - "Params Setting": "Search Parameter Settings", - "Quote index": "Quote Index", - "Rank": "Rank", - "Rank Tip": "Ranking among all data", - "ReRank": "Result Reranking", - "ReRank desc": "Use a reranking model for secondary sorting to enhance overall ranking.", - "Read score": "View Score", - "Rerank score": "Rerank Score", - "Score": "Score", - "Search type": "Type", - "Source id": "Source ID", - "Source name": "Quote Source Name", - "Tool description": "Invocation Timing", - "Top K": "Single Search Limit", + "Params Setting": "搜索参数设置", + "Quote index": "第几个引用", + "Rank": "排名", + "Rank Tip": "在所有数据中的排名", + "ReRank": "结果重排", + "ReRank desc": "使用重排模型来进行二次排序,可增强综合排名。", + "Read score": "查看得分", + "Rerank score": "结果重排得分", + "Score": "得分", + "Search type": "类型", + "Source id": "来源ID", + "Source name": "引用来源名", + "Tool description": "调用时机", + "Top K": "单次搜索上限", "Using cfr": "", - "Using query extension": "Using Query Optimization", + "Using query extension": "使用问题优化", "mode": { - "embedding": "Semantic Search", - "embedding desc": "Use vectors for text relevance queries", - "fullTextRecall": "Full-text Search", - "fullTextRecall desc": "Use traditional full-text search, suitable for finding data with specific keywords and subject-predicate combinations", - "mixedRecall": "Mixed Search", - "mixedRecall desc": "Return the combined results of vector search and full-text search, ranked using the RRF algorithm." + "embedding": "语义检索", + "embedding desc": "使用向量进行文本相关性查询", + "fullTextRecall": "全文检索", + "fullTextRecall desc": "使用传统的全文检索,适合查找一些关键词和主谓语特殊的数据", + "mixedRecall": "混合检索", + "mixedRecall desc": "使用向量检索与全文检索的综合结果返回,使用RRF算法进行排序。" }, "score": { - "embedding": "Semantic Search", - "embedding desc": "Calculate the score by computing the distance between vectors, range 0~1.", - "fullText": "Full-text Search", - "fullText desc": "Calculate the score of matching keywords, range 0~infinity.", + "embedding": "语义检索", + "embedding desc": "通过计算向量之间的距离获取得分,范围为 0~1。", + "fullText": "全文检索", + "fullText desc": "计算相同关键词的得分,范围为 0~无穷。", "fullTextRecall": "", "fullTextRecall desc": "", "mixedRecall": "", "mixedRecall desc": "", - "reRank": "Result Reranking", - "reRank desc": "Calculate the relevance between sentences using a ReRank model, range 0~1.", - "rrf": "Overall Ranking", - "rrf desc": "Merge multiple search results by calculating inverted rankings." + "reRank": "结果重排", + "reRank desc": "通过 ReRank 模型计算句子之间的关联度,范围为 0~1。", + "rrf": "综合排名", + "rrf desc": "通过倒排计算的方式,合并多个检索结果。" }, - "search mode": "Search Mode" + "search mode": "搜索模式" }, "settings": { - "Search basic params": "Search Parameters" + "Search basic params": "检索参数" }, "status": { - "active": "Ready", - "syncing": "Syncing" + "active": "已就绪", + "syncing": "同步中" }, "test": { - "Batch test": "Batch Test", - "Batch test Placeholder": "Select a CSV file", - "Search Test": "Search Test", - "Test": "Test", - "Test File": "Batch Test", - "Test Result": "Test Result", - "Test Text": "Single Text Test", - "Test Text Placeholder": "Enter text to test", - "Test params": "Test Parameters", - "delete test history": "Delete this test result", - "test history": "Test History", - "test result placeholder": "Test results will be shown here", - "test result tip": "Results are ranked by the similarity between the dataset content and test text. You can adjust the corresponding text based on the test results.\nNote: The data in the test records may have been modified. Clicking on a test data will show the latest data." + "Batch test": "批量测试", + "Batch test Placeholder": "选择一个 Csv 文件", + "Search Test": "搜索测试", + "Test": "测试", + "Test File": "批量测试", + "Test Result": "测试结果", + "Test Text": "单个文本测试", + "Test Text Placeholder": "输入需要测试的文本", + "Test params": "测试参数", + "delete test history": "删除该测试结果", + "test history": "测试历史", + "test result placeholder": "测试结果将在这里展示", + "test result tip": "根据知识库内容与测试文本的相似度进行排序,你可以根据测试结果调整对应的文本。\n注意:测试记录中的数据可能已经被修改过,点击某条测试数据后将展示最新的数据。" }, "training": { - "Agent queue": "QA Training Queue", - "Auto mode": "Enhanced Processing (Experimental)", - "Auto mode Tip": "Increase the semantic richness of data chunks through sub-indexes and calling models to generate related questions and summaries, which is more conducive to retrieval. Requires more storage space and increases AI invocations.", - "Chunk mode": "Direct Chunking", - "Full": "Estimated over 5 minutes", - "Leisure": "Idle", + "Agent queue": "QA训练排队", + "Auto mode": "增强处理(实验)", + "Auto mode Tip": "通过子索引以及调用模型生成相关问题与摘要,来增加数据块的语义丰富度,更利于检索。需要消耗更多的存储空间和增加AI调用次数。", + "Chunk mode": "直接分段", + "Full": "预计5分钟以上", + "Leisure": "空闲", "Manual": "", - "Manual mode": "Manual Import", - "QA mode": "QA Split", - "Vector queue": "Indexing Queue", - "Waiting": "Estimated 5 minutes", - "Website Sync": "Website Sync" + "Manual mode": "手动导入", + "QA mode": "问答拆分", + "Vector queue": "索引排队", + "Waiting": "预计5分钟", + "Website Sync": "Web 站点同步" }, "website": { - "Base Url": "Base URL", - "Config": "Website Configuration", - "Config Description": "The website sync function allows you to enter the base URL of a website, and the system will automatically deeply crawl related webpages for dataset training. Only static websites, mainly project documentation and blogs, will be crawled.", - "Confirm Create Tips": "Confirm syncing this site. The sync task will start afterwards. Please confirm!", - "Confirm Update Tips": "Confirm updating site configuration? Syncing will immediately start with the new configuration, please confirm!", - "Selector": "Selector", - "Selector Course": "Tutorial", - "Start Sync": "Start Sync", - "UnValid Website Tip": "Your site may not be a static site and cannot be synced" + "Base Url": "根地址", + "Config": "Web站点配置", + "Config Description": "Web 站点同步功能允许你填写一个网站的根地址,系统会自动深度抓取相关的网页进行知识库训练。仅会抓取静态的网站,以项目文档、博客为主。", + "Confirm Create Tips": "确认同步该站点,同步任务将随后开启,请确认!", + "Confirm Update Tips": "确认更新站点配置?会立即按新的配置开始同步,请确认!", + "Selector": "选择器", + "Selector Course": "使用教程", + "Start Sync": "开始同步", + "UnValid Website Tip": "您的站点可能非静态站点,无法同步" } }, "module": { - "Add question type": "Add Question Type", - "Can not connect self": "Cannot Connect to Self", - "Confirm Delete Node": "Confirm Delete Node?", - "Data Type": "Data Type", + "Add question type": "添加问题类型", + "Can not connect self": "不能连接自身", + "Confirm Delete Node": "确认删除该节点?", + "Data Type": "数据类型", "Dataset quote": { - "Add quote": "Add Quote", - "Concat result": "Concatenate Results", - "Input description": "Can accept results from knowledge base search.", - "label": "Knowledge Base Quote" + "Add quote": "添加引用", + "Concat result": "合并结果", + "Input description": "可接收知识库搜索的结果。", + "label": "知识库引用" }, - "Default Value": "", - "Default value": "Default Value", - "Default value placeholder": "If left blank, empty string will be returned by default", - "Edit intro": "Edit Description", - "Field Description": "Field Description", - "Field Name": "Field Name", - "Field Type": "Field Type", - "Field key": "Field Key", - "Http request props": "Request Parameters", - "Http request settings": "Request Configuration", - "Input Type": "Input Type", - "Laf sync params": "Sync Parameters", - "Max Length": "", - "Max Length placeholder": "", - "Max Value": "", - "Min Value": "", - "Model List": "", - "No Config Tips": "", - "Output Type": "", - "Plugin output must connect": "Custom output must be fully connected", - "Plugin tool Description": "", + "Default Value": "默认值", + "Default value": "默认值", + "Default value placeholder": "不填则默认返回空字符", + "Edit intro": "编辑描述", + "Field Description": "字段描述", + "Field Name": "字段名", + "Field Type": "字段类型", + "Field key": "字段Key", + "Http request props": "请求参数", + "Http request settings": "请求配置", + "Input Type": "输入类型", + "Laf sync params": "同步参数", + "Max Length": "最大长度", + "Max Length placeholder": "输入文本的最大长度", + "Max Value": "最大值", + "Min Value": "最小值", + "Model List": "模型列表", + "No Config Tips": "无可配置项", + "Output Type": "输出类型", + "Plugin output must connect": "自定义输出必须全部连接", + "Plugin tool Description": "工具参数需要描述", "QueryExtension": { - "placeholder": "For example:\nQuestions about Python introduction and usage.\nThe current conversation is related to the game \"GTA5\".", - "tip": "Describe the scope of the current conversation to help AI complete initial or ambiguous questions, enhancing the knowledge base's capability for continuous dialogue. It is recommended to briefly describe the context of the conversation when this feature is enabled, otherwise inaccurate completions may occur." + "placeholder": "例如:\n关于 python 的介绍和使用等问题。\n当前对话与游戏《GTA5》有关。", + "tip": "描述当前对话的范围,便于AI补全首次问题或模糊的问题,从而增强知识库连续对话的能力。建议开启该功能后,都简单的描述在对话的背景,否则容易造成补全对象不准确。" }, - "Quote prompt setting": "Quote Prompt Configuration", + "Quote prompt setting": "引用提示词配置", "Qupte prompt setting": "", - "Select Data List": "", - "Select app": "Select Application", - "Setting quote prompt": "Configure Quote Prompt", - "Unlink tip": "【{{name}}】has unfilled or unconnected parameters", - "Variable": "Global Variable", - "Variable Setting": "Variable Setting", - "Variable import": "External Parameter Input", + "Select Data List": "数据列表", + "Select app": "选择应用", + "Setting quote prompt": "配置引用提示词", + "Unlink tip": "【{{name}}】存在未填或未连接参数", + "Variable": "全局变量", + "Variable Setting": "变量设置", + "Variable import": "外部参数输入", "edit": { - "Field Already Exist": "Duplicate key", - "Field Edit": "Field Edit", - "Field Name Cannot Be Empty": "" + "Field Already Exist": "key 重复", + "Field Edit": "字段编辑", + "Field Name Cannot Be Empty": "字段名不能为空" }, "extract": { - "Add field": "Add Field", - "Enum Description": "List possible values for this field, one per line", - "Enum Value": "Enum Value", - "Field Description Placeholder": "Name/Age/SQL Statement...", - "Field Setting Title": "Extraction Field Configuration", - "Required": "Required", - "Required Description": "Even if the field cannot be extracted, it will be returned with a default value", - "Target field": "Target Field" + "Add field": "新增字段", + "Enum Description": "列举出该字段可能的值,每行一个", + "Enum Value": "枚举值", + "Field Description Placeholder": "姓名/年龄/sql语句……", + "Field Setting Title": "提取字段配置", + "Required": "必须返回", + "Required Description": "即使无法提取该字段,也会使用默认值进行返回", + "Target field": "目标字段" }, "http": { - "Add props": "Add Parameter", - "AppId": "Application ID", - "ChatId": "Current Conversation ID", - "Current time": "Current Time", - "Histories": "History, up to 10 records", - "Key already exists": "Key Already Exists", - "Key cannot be empty": "Parameter name cannot be empty", - "Props name": "Parameter Name", - "Props tip": "You can set relevant parameters for HTTP requests\nGlobal variables or external parameter inputs can be invoked using {{key}}, currently available variables:\n{{variable}}", - "Props value": "Parameter Value", - "ResponseChatItemId": "AI Reply ID", - "Url and params have been split": "URL parameters have been automatically added to Params", - "Variables": "Global Variables", - "curl import": "cURL Import", - "curl import placeholder": "Please enter content in cURL format, request information for the first interface will be extracted.", + "Add props": "添加参数", + "AppId": "应用的ID", + "ChatId": "当前对话ID", + "Current time": "当前时间", + "Histories": "最近10条聊天记录", + "Key already exists": "Key 已经存在", + "Key cannot be empty": "参数名不能为空", + "Props name": "参数名", + "Props tip": "可以设置 Http 请求的相关参数\n可通过 {{key}} 来调用全局变量或外部参数输入,当前可使用变量:\n{{variable}}", + "Props value": "参数值", + "ResponseChatItemId": "AI回复的ID", + "Url and params have been split": "路径参数已被自动加入 Params 中", + "Variables": "全局变量", + "curl import": "curl 导入", + "curl import placeholder": "请输入 curl 格式内容,将会提取第一个接口的请求信息。", "params": "Params" }, "input": { - "Add Input": "Add Input", - "Add Branch": "Add Branch", - "Input Number": "Input: {{length}}", - "add": "", + "Add Input": "添加入参", + "Input Number": "入参: {{length}}", + "add": "添加条件", + "Add Branch": "添加分支", "description": { - "Background": "You can add introductions to specific content for better identification of user question types. This content is usually used to introduce something the model doesn't know.", - "HTTP Dynamic Input": "", - "Http Request Header": "Custom request headers, please fill in strict JSON string.\n1. Ensure the last property has no comma\n2. Ensure keys are wrapped in double quotes\nFor example: {\"Authorization\":\"Bearer xxx\"}", - "Http Request Url": "New HTTP request URL. If there are two \"Request URLs\", you can delete the module and add it again to fetch the latest module configuration.", - "Quote": "Object array format, structure:\n[{q:'question',a:'answer'}]", - "Response content": "You can use \\n to achieve continuous line breaks.\nReplies can be implemented through external module input, which will overwrite the currently filled content when invoked.\nNon-string type data will be automatically converted to string when passed in", - "TFSwitch textarea": "Allows defining some strings to achieve false matching, one per line, supports regular expressions.", - "Trigger": "Most of the time, you don't need to connect this attribute.\nWhen you need to delay execution or precisely control timing, you can connect this attribute.", - "dynamic input": "Receives dynamically added parameters from users, these parameters will be flattened and passed in at runtime", - "textEditor textarea": "Variables passed in can be referenced using {{key}}. Variables only support strings or numbers." + "Background": "你可以添加一些特定内容的介绍,从而更好的识别用户的问题类型。这个内容通常是给模型介绍一个它不知道的内容。", + "HTTP Dynamic Input": "接收前方节点的输出值作为变量,这些变量可以被HTTP请求参数使用。", + "Http Request Header": "自定义请求头,请严格填入JSON字符串。\n1. 确保最后一个属性没有逗号\n2. 确保 key 包含双引号\n例如: {\"Authorization\":\"Bearer xxx\"}", + "Http Request Url": "新的HTTP请求地址。如果出现两个“请求地址”,可以删除该模块重新加入,会拉取最新的模块配置。", + "Quote": "对象数组格式,结构:\n [{q:'问题',a:'回答'}]", + "Response content": "可以使用 \\n 来实现连续换行。\n可以通过外部模块输入实现回复,外部模块输入时会覆盖当前填写的内容。\n如传入非字符串类型数据将会自动转成字符串", + "TFSwitch textarea": "允许定义一些字符串来实现 false 匹配,每行一个,支持正则表达式。", + "Trigger": "大部分时候,你不需要连接该属性。\n当你需要延迟执行,或精确控制执行时机时,可以连接该属性。", + "dynamic input": "接收用户动态添加的参数,会在运行时将这些参数平铺传入", + "textEditor textarea": "可以通过 {{key}} 的方式引用传入的变量。变量仅支持字符串或数字。" }, "label": { - "Background": "Background Knowledge", - "Classify model": "Classification Model", - "Http Request Header": "Request Header", - "Http Request Method": "Request Method", - "Http Request Url": "Request URL", - "LLM": "AI Model", - "Quote": "Quote Content", - "Response content": "Reply Content", - "Select dataset": "Select Knowledge Base", - "TFSwitch input tip": "Any content input", - "TFSwitch textarea": "Custom False Matching Rules", - "aiModel": "AI Model", + "Background": "背景知识", + "Classify model": "分类模型", + "Http Request Header": "请求头", + "Http Request Method": "请求方式", + "Http Request Url": "请求地址", + "LLM": "AI 模型", + "Quote": "引用内容", + "Response content": "回复的内容", + "Select dataset": "选择知识库", + "TFSwitch input tip": "任意内容输入", + "TFSwitch textarea": "自定义 False 匹配规则", + "aiModel": "AI 模型", "anyInput": "", - "chat history": "Chat History", - "switch": "Trigger", - "system params": "", - "textEditor textarea": "Text Editor", - "user question": "User Question" + "chat history": "聊天记录", + "switch": "触发器", + "system params": "系统参数", + "textEditor textarea": "文本编辑", + "user question": "用户问题" }, "placeholder": { - "Classify background": "For example:\n1. AIGC (AI-Generated Content) refers to automatically or semi-automatically generating digital content such as text, images, music, videos, etc. using artificial intelligence technology.\n2. AIGC technology includes but is not limited to natural language processing, computer vision, machine learning, and deep learning. These technologies can create new content or modify existing content to meet specific creative, educational, entertainment, or informational needs." + "Classify background": "例如: \n1. AIGC(人工智能生成内容)是指使用人工智能技术自动或半自动地生成数字内容,如文本、图像、音乐、视频等。\n2. AIGC技术包括但不限于自然语言处理、计算机视觉、机器学习和深度学习。这些技术可以创建新内容或修改现有内容,以满足特定的创意、教育、娱乐或信息需求。" } }, "inputType": { - "chat history": "Chat History", - "dynamicTargetInput": "Dynamic External Data", - "input": "Input Box", - "selectApp": "Select Application", - "selectDataset": "Select Knowledge Base", - "selectLLMModel": "Select Dialogue Model", - "switch": "Switch", - "target": "External Data", - "textarea": "Paragraph Input" + "chat history": "", + "dynamicTargetInput": "", + "input": "", + "selectApp": "", + "selectDataset": "", + "selectLLMModel": "", + "switch": "", + "target": "", + "textarea": "" }, "laf": { - "Select laf function": "Select LAF Function" + "Select laf function": "选择laf函数" }, "output": { - "Add Output": "Add Output", - "Output Number": "Output: {{length}}", + "Add Output": "添加出参", + "Output Number": "出参: {{length}}", "description": { - "Ai response content": "Will be triggered after stream reply is complete", - "New context": "Concatenates the current reply content with the history and returns it as the new context", - "Quote": "Always returns an array, if you want to perform additional operations when search results are empty, you need to use the above two inputs and the trigger of the target module", - "query extension result": "Outputs as a string array, this result can be directly connected to the \"User Question\" of \"Knowledge Base Search\", it is recommended not to connect it to the \"User Question\" of \"AI Conversation\"", - "running done": "Triggered when module invocation ends" + "Ai response content": "将在 stream 回复完毕后触发", + "New context": "将本次回复内容拼接上历史记录,作为新的上下文返回", + "Quote": "始终返回数组,如果希望搜索结果为空时执行额外操作,需要用到上面的两个输入以及目标模块的触发器", + "query extension result": "以字符串数组的形式输出,可将该结果直接连接到“知识库搜索”的“用户问题”中,建议不要连接到“AI对话”的“用户问题”中", + "running done": "模块调用结束时触发" }, "label": { - "Ai response content": "AI Reply Content", - "New context": "New Context", - "Quote": "Quote Content", - "Search result empty": "Search Results Empty", - "Search result not empty": "Search Results Not Empty", - "query extension result": "Optimization Result", + "Ai response content": "AI回复内容", + "New context": "新的上下文", + "Quote": "引用内容", + "Search result empty": "搜索结果为空", + "Search result not empty": "搜索结果不为空", + "query extension result": "优化结果", "result false": "False", "result true": "True", - "running done": "Module Invocation Ended", - "text": "Text Output" + "running done": "模块调用结束", + "text": "文本输出" } }, "template": { - "AI response switch tip": "If you want the current node not to output content, you can turn off this switch. The content output by AI will not be shown to the user, you can manually perform special processing using \"AI Reply Content\".", - "AI support tool tip": "Models that support function calling can better utilize tool invocations.", - "Ai chat": "AI Conversation", - "Ai chat intro": "AI Large Model Conversation", - "App system setting": "System Configuration", - "Assigned reply": "Assigned Reply", - "Assigned reply intro": "This module can directly reply with a specified piece of content. Commonly used for guidance and prompts. Non-string content will be converted to string for output when passed in.", - "Basic Node": "Basic Functions", - "Chat entrance": "Conversation Entrance", - "Chat entrance intro": "When a user sends content, the flow will start executing from this module.", - "Classify question": "Classify Question", - "Classify question intro": "Determine the type of the current question based on the user's history and current question. Multiple sets of question types can be added, here is a template example:\nType 1: Greeting\nType 2: Questions about product \"usage\"\nType 3: Questions about product \"purchase\"\nType 4: Other questions", - "Dataset search": "Knowledge Base Search", - "Dataset search intro": "Invokes knowledge base search capability to find content that may be relevant to the question", - "Dataset search result concat intro": "Can merge and output multiple knowledge base search results. Uses the RRF merging method for final ranking and output.", - "External module": "External Invocation", - "Extract field": "Extract Text Content", - "Extract field intro": "Can extract specified data from text, such as: SQL statements, search keywords, code, etc.", - "Function module": "Function Invocation", - "Guide module": "Guidance Module", - "Http request": "HTTP Request", - "Http request intro": "Can send an HTTP request to implement more complex operations (online search, database query, etc.)", - "My plugin module": "Personal Plugin", - "Query extension": "Question Optimization", - "Query extension intro": "Using the question optimization feature can improve the accuracy of knowledge base searches during continuous dialogue. When this feature is used, AI will first construct one or more new search terms based on the context, which are more conducive to knowledge base search. This module is built into the knowledge base search module, if you only perform a single knowledge base search, you can directly use the built-in completion function of the knowledge base.", - "Response module": "Text Output", - "Running app": "Application Invocation", - "Running app intro": "Can select another application to invoke", - "System Plugin": "System Plugin", - "System input module": "System Input", - "TFSwitch": "Judgment", - "TFSwitch intro": "Outputs True or False based on the input content. By default, when the input content is false, undefined, null, 0, none, it will output false. You can also add some custom strings to supplement content that outputs false. Non-string, non-number, non-boolean types directly output True.", - "Team Plugin": "Team Plugin", - "Tool module": "Tool", - "UnKnow Module": "Unknown Module", - "User guide": "User Guide", - "http body placeholder": "Same syntax as APIFox", - "textEditor": "Text Processing", - "textEditor intro": "Can process fixed or input text and then output, non-string type data will ultimately be converted to string type." + "AI response switch tip": "如果你希望当前节点不输出内容,可以关闭该开关。AI输出的内容不会展示给用户,你可以手动的使用“AI回复内容”进行特殊处理。", + "AI support tool tip": "支持函数调用的模型,可以更好的使用工具调用。", + "Ai chat": "AI 对话", + "Ai chat intro": "AI 大模型对话", + "App system setting": "系统配置", + "Assigned reply": "指定回复", + "Assigned reply intro": "该模块可以直接回复一段指定的内容。常用于引导、提示。非字符串内容传入时,会转成字符串进行输出。", + "Basic Node": "基础功能", + "Chat entrance": "对话入口", + "Chat entrance intro": "当用户发送一个内容后,流程将会从这个模块开始执行。", + "Classify question": "问题分类", + "Classify question intro": "根据用户的历史记录和当前问题判断该次提问的类型。可以添加多组问题类型,下面是一个模板例子:\n类型1: 打招呼\n类型2: 关于商品“使用”问题\n类型3: 关于商品“购买”问题\n类型4: 其他问题", + "Dataset search": "知识库搜索", + "Dataset search intro": "调用知识库搜索能力,查找有可能与问题相关的内容", + "Dataset search result concat intro": "可以将多个知识库搜索结果进行合并输出。使用 RRF 的合并方式进行最终排序输出。", + "External module": "外部调用", + "Extract field": "文本内容提取", + "Extract field intro": "可从文本中提取指定的数据,例如:sql语句、搜索关键词、代码等", + "Function module": "功能调用", + "Guide module": "引导模块", + "Http request": "HTTP 请求", + "Http request intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)", + "My plugin module": "个人插件", + "Query extension": "问题优化", + "Query extension intro": "使用问题优化功能,可以提高知识库连续对话时搜索的精度。使用该功能后,会先利用 AI 根据上下文构建一个或多个新的检索词,这些检索词更利于进行知识库搜索。该模块已内置在知识库搜索模块中,如果您仅进行一次知识库搜索,可直接使用知识库内置的补全功能。", + "Response module": "文本输出", + "Running app": "应用调用", + "Running app intro": "可以选择一个其他应用进行调用", + "System Plugin": "系统插件", + "System input module": "系统输入", + "TFSwitch": "判断器", + "TFSwitch intro": "根据传入的内容进行 True False 输出。默认情况下,当传入的内容为 false, undefined, null, 0, none 时,会输出 false。你也可以增加一些自定义的字符串来补充输出 false 的内容。非字符、非数字、非布尔类型,直接输出 True。", + "Team Plugin": "团队插件", + "Tool module": "工具", + "UnKnow Module": "未知模块", + "User guide": "用户引导", + "http body placeholder": "与APIFox相同的语法", + "textEditor": "文本加工", + "textEditor intro": "可对固定或传入的文本进行加工后输出,非字符串类型数据最终会转成字符串类型。" }, "templates": { - "Load plugin error": "Failed to load plugin" + "Load plugin error": "加载插件失败" }, "textEditor": { - "Text Edit": "Text Processing" + "Text Edit": "文本加工" }, "tool": { - "Tool input": "Tool Input" + "Tool input": "工具输入" }, "valueType": { - "any": "Any", - "arrayBoolean": "", - "arrayNumber": "", - "arrayObject": "", - "arrayString": "", - "boolean": "Boolean", - "chatHistory": "Chat History", - "datasetQuote": "Quote Content", - "dynamicTargetInput": "Dynamic Field Input", - "number": "Number", - "object": "", - "selectApp": "Select Application", - "selectDataset": "Select Knowledge Base", - "string": "String", - "tools": "Tool Invocation" + "any": "任意", + "arrayBoolean": "布尔数组", + "arrayNumber": "数字数组", + "arrayObject": "对象数组", + "arrayString": "字符串数组", + "boolean": "布尔", + "chatHistory": "历史记录", + "datasetQuote": "知识库类型", + "dynamicTargetInput": "动态字段输入", + "number": "数字", + "object": "对象", + "selectApp": "应用选择", + "selectDataset": "知识库选择", + "string": "字符串", + "tools": "工具调用" }, "variable": { - "Custom type": "Custom", - "add option": "Add Option", - "input type": "Text", - "key": "Variable Key", - "key is required": "Variable key is required", - "select type": "Single Select Dropdown", - "text max length": "Max Length", - "textarea type": "Paragraph", - "variable key is required": "Variable key cannot be empty", - "variable name": "Variable Name", - "variable name is required": "Variable name cannot be empty", - "variable option is required": "Options cannot all be empty", - "variable option is value is required": "Option content cannot be empty", - "variable options": "Options" + "Custom type": "自定义变量", + "add option": "添加选项", + "input type": "文本", + "key": "变量 key", + "key is required": "变量key是必须的", + "select type": "下拉单选", + "text max length": "最大长度", + "textarea type": "段落", + "variable key is required": "变量 key 不能为空", + "variable name": "变量名", + "variable name is required": "变量名不能为空", + "variable option is required": "选项不能全空", + "variable option is value is required": "选项内容不能为空", + "variable options": "选项" }, - "variable add option": "Add Option" + "variable add option": "添加选项" }, "plugin": { - "Custom headers": "Custom Headers", - "Delete http plugin": "Confirm to delete this group of HTTP plugins? All plugins under this directory will be deleted.", - "Get Plugin Module Detail Failed": "Plugin loading exception", - "Http plugin intro placeholder": "For display only, no actual effect", - "Intro placeholder": "If this plugin is invoked as a tool, this description will be used as the prompt." + "Custom headers": "自定义请求头", + "Delete http plugin": "确认删除该组HTTP插件?会删除该目录下所有插件。", + "Get Plugin Module Detail Failed": "加载插件异常", + "Http plugin intro placeholder": "仅做展示,无实际效果", + "Intro placeholder": "如果该插件作为工具被调用,则会使用该介绍作为提示词。" }, "shareChat": { - "Init Error": "Init Chat Error", - "Init History Error": "Init History Error" + "Init Error": "初始化对话框失败", + "Init History Error": "初始化聊天记录失败" }, "workflow": { - "Add variable": "Add", - "Can not delete node": "Can not delete the node", - "Change input type tip": "Changing the input type will empty the entered values, please confirm!", - "Check Failed": "Workflow verification fails. Check whether the node or connection is normal", - "Confirm stop debug": "Do you want to terminate debugging? Debugging information is not retained.", - "Copy node": "Copy node", - "Current workflow": "Current workflow", - "Custom inputs": "Inputs", - "Custom outputs": "Outputs", - "Custom variable": "Custom variable", - "Dataset quote": "Dataset quote", - "Debug": "Debug", - "Debug Node": "Workflow Debug", - "Failed": "Running failed", - "Not intro": "This node is not introduced", - "Run from here": "Run from here", - "Run result": "Run result", - "Running": "Running", - "Skipped": "Skipped", - "Stop debug": "Stop", - "Success": "Running success", - "Value type": "Type", + "Add variable": "新增变量", + "Can not delete node": "该节点不允许删除", + "Change input type tip": "修改输入类型会清空已填写的值,请确认!", + "Check Failed": "工作流校验失败,请检查节点是否正确填值,以及连线是否正常", + "Confirm stop debug": "确认终止调试?调试信息将会不保留。", + "Copy node": "已复制节点", + "Current workflow": "当前工作流", + "Custom inputs": "自定义输入", + "Custom outputs": "自定义输出", + "Custom variable": "自定义变量", + "Dataset quote": "知识库引用", + "Debug": "调试", + "Debug Node": "Debug模式", + "Failed": "运行失败", + "Not intro": "这个节点没有介绍~\\", + "Run from here": "从这里开始运行", + "Run result": "", + "Running": "运行中", + "Skipped": "跳过运行", + "Stop debug": "停止调试", + "Success": "运行成功", + "Value type": "数据类型", "Variable": { - "Variable type": "Variable type" + "Variable type": "变量类型" }, - "Variable outputs": "Variables", + "Variable outputs": "全局变量", "chat": { - "Quote prompt": "Quote prompt" + "Quote prompt": "引用提示词" }, "debug": { - "Done": "Done", - "Hide result": "Hide result", - "Not result": "Not result", - "Run result": "", - "Show result": "Show result" + "Done": "完成调试", + "Hide result": "隐藏结果", + "Not result": "无运行结果", + "Run result": "运行结果", + "Show result": "展示结果" }, "inputType": { - "JSON Editor": "JSON Editor", - "Manual input": "", - "Manual select": "Select", - "Reference": "Reference", - "Required": "Required", - "Select edit field": "Editable field", - "Select input default value": "Default value", - "Select input type": "Configurable input types", - "Select input type placeholder": "Please select a configurable input type", - "chat history": "History", - "dynamicTargetInput": "dynamic Target Input", - "input": "Input", - "number input": "number input", - "selectApp": "App Selector", - "selectDataset": "Dataset Selector", - "selectLLMModel": "Select Chat Model", - "switch": "Switch", - "target": "Target Data", - "textarea": "Textarea" + "JSON Editor": "JSON 输入框", + "Manual input": "手动输入", + "Manual select": "手动选择", + "Reference": "变量引用", + "Required": "必填", + "Select edit field": "可编辑内容", + "Select input default value": "默认值", + "Select input type": "可配置的输入类型", + "Select input type placeholder": "请选择可配置的输入类型", + "chat history": "历史记录", + "dynamicTargetInput": "动态外部数据", + "input": "单行输入框", + "number input": "数字输入框", + "selectApp": "应用选择", + "selectDataset": "知识库选择", + "selectLLMModel": "对话模型选择", + "switch": "开关", + "target": "外部数据", + "textarea": "多行输入框" }, "publish": { - "OnRevert version": "Click back to that version", - "OnRevert version confirm": "Sure you want to roll back to this version? The configuration for the version in editing is saved for you and a new release is created for the rollback version.", - "histories": "Publiish histories" + "OnRevert version": "点击回退到该版本", + "OnRevert version confirm": "确认回退至该版本?会为您保存编辑中版本的配置,并为回退版本创建一个新的发布版本。", + "histories": "发布记录" }, "tool": { - "Handle": "Tool handle", - "Select Tool": "Select Tool" + "Handle": "工具连接器", + "Select Tool": "选择工具" }, - "value": "Value", - "variable": "Variable" + "value": "值", + "variable": "变量" } }, "dataset": { - "Confirm move the folder": "Confirm moving to the directory", - "Confirm to delete the data": "Confirm deleting this data?", - "Confirm to delete the file": "Confirm deleting this file and all its data?", - "Create Folder": "Create Folder", - "Create manual collection": "Create manual dataset", - "Delete Dataset Error": "Error deleting knowledge base", - "Edit Folder": "Edit Folder", - "Export": "Export", - "Export Dataset Limit Error": "Failed to export data", - "File Input": "File Import", - "File Size": "File Size", - "Filename": "Filename", - "Files": "Files: {{total}}", - "Folder Name": "Enter folder name", - "Insert Data": "Insert", - "Manual Data": "Manual Entry", - "Manual Input": "Manual Input", - "Manual Mark": "Manual Annotation", - "Manual collection Tip": "Manual datasets allow creating an empty container to store data", - "Mark Data": "Annotate Data", - "Move Failed": "Error occurred while moving~", - "Queue Desc": "This data refers to the total number of pending training tasks in the current system. {{title}} uses a queued training method. If there are too many pending training tasks, it may take some time to wait.", - "Select Dataset": "Select this knowledge base", - "Select Dataset Tips": "Only knowledge bases of the same index model can be selected", - "Select Folder": "Enter folder", - "Training Name": "Data Training", - "Upload Time": "Upload Time", + "Confirm move the folder": "确认移动到该目录", + "Confirm to delete the data": "确认删除该数据?", + "Confirm to delete the file": "确认删除该文件及其所有数据?", + "Create Folder": "创建文件夹", + "Create manual collection": "创建手动数据集", + "Delete Dataset Error": "删除知识库异常", + "Edit Folder": "编辑文件夹", + "Export": "导出", + "Export Dataset Limit Error": "导出数据失败", + "File Input": "文件导入", + "File Size": "文件大小", + "Filename": "文件名", + "Files": "文件: {{total}}个", + "Folder Name": "输入文件夹名称", + "Insert Data": "插入", + "Manual Data": "手动录入", + "Manual Input": "手动录入", + "Manual Mark": "手动标注", + "Manual collection Tip": "手动数据集允许创建一个空的容器装入数据", + "Mark Data": "标注数据", + "Move Failed": "移动出现错误~", + "Queue Desc": "该数据是指整个系统当前待训练的数量。{{title}} 采用排队训练的方式,如果待训练的数据过多,可能需要等待一段时间", + "Select Dataset": "选择该知识库", + "Select Dataset Tips": "仅能选择同一个索引模型的知识库", + "Select Folder": "进入文件夹", + "Training Name": "数据训练", + "Upload Time": "上传时间", "collections": { - "Click to view file": "Click to view file details", - "Click to view folder": "Enter directory", - "Collection Embedding": "{{total}} groups of indexes", - "Confirm to delete the folder": "Confirm deleting this folder and all its contents?", - "Create And Import": "Create/Import", - "Create Training Data": "File Training-{{filename}}", - "Create manual collection Success": "Manual dataset created successfully", - "Data Amount": "Total Data", - "Select Collection": "Select File", - "Select One Collection To Store": "Select a file for storage" + "Click to view file": "点击查看文件详情", + "Click to view folder": "进入目录", + "Collection Embedding": "{{total}}组索引中", + "Confirm to delete the folder": "确认删除该文件夹及里面所有内容?", + "Create And Import": "新建/导入", + "Create Training Data": "文件训练-{{filename}}", + "Create manual collection Success": "创建手动数据集成功", + "Data Amount": "数据总量", + "Select Collection": "选择文件", + "Select One Collection To Store": "选择一个文件进行存储" }, "data": { - "Add Index": "Add Custom Index", - "Can not delete tip": "No modification permission", - "Can not edit": "No editing permission", - "Custom Index Number": "Custom Index {{number}}", - "Default Index": "Default Index", - "Delete Success Tip": "Deleted successfully", - "Delete Tip": "Confirm deleting this data entry?", - "File import": "File Import", - "Index Edit": "Data Index", - "Index Placeholder": "Enter index text content", - "Input Data": "Import New Data", - "Input Success Tip": "Data imported successfully", - "Update Data": "Update Data", - "Update Success Tip": "Data updated successfully", + "Add Index": "新增自定义索引", + "Can not delete tip": "无修改权限", + "Can not edit": "无编辑权限", + "Custom Index Number": "自定义索引{{number}}", + "Default Index": "默认索引", + "Delete Success Tip": "删除成功", + "Delete Tip": "确认删除该条数据?", + "File import": "文件导入", + "Index Edit": "数据索引", + "Index Placeholder": "输入索引文本内容", + "Input Data": "导入新数据", + "Input Success Tip": "导入数据成功", + "Update Data": "更新数据", + "Update Success Tip": "更新数据成功", "edit": { - "Content": "Data Content", - "Course": "Documentation", - "Delete": "Delete Data", - "Index": "Data Index ({{amount}})" + "Content": "数据内容", + "Course": "说明文档", + "Delete": "删除数据", + "Index": "数据索引({{amount}})" }, - "input is empty": "Data content cannot be empty" + "input is empty": "数据内容不能为空 " }, - "deleteFolderTips": "Confirm deleting this folder and all knowledge bases it contains? Data cannot be recovered after deletion, please confirm!", - "import csv tip": "Please ensure the CSV is in UTF-8 format, otherwise it will be garbled", + "deleteFolderTips": "确认删除该文件夹及其包含的所有知识库?删除后数据无法恢复,请确认!", + "import csv tip": "请确保CSV为UTF-8格式,否则会乱码", "test": { - "noResult": "Search results are empty" + "noResult": "搜索结果为空" } }, - "error": { - "fileNotFound": "File not found~", - "team": { - "overSize": "Team member limit exceeded" - } - }, - "file": { - "Click to download file template": "Click to download template: {{name}}", - "Click to view file": "Click to view original file", - "Create File": "Create New File", - "Create file": "Create file", - "Drag and drop": "Drag and drop files here", - "Fetch Url": "Link Import", - "If the imported file is garbled, please convert CSV to UTF-8 encoding format": "If the imported file is garbled, please convert CSV to UTF-8 encoding format", - "Parse": "Parsing {{name}}...", - "Release the mouse to upload the file": "Release the mouse to upload the file", - "Select a maximum of 10 files": "Select a maximum of 10 files", - "Uploading": "Uploading {{name}}, progress: {{percent}}%", - "max 10": "Select up to 10 files", - "select a document": "Select a file", - "support": "Support {{fileExtension}} files", - "upload error description": "Only supports uploading multiple files or one folder at a time" - }, "home": { - "AI Assistant": "AI Assistant", - "AI Assistant Desc": "AI will provide 24/7 service to your users, both internally and externally", - "Advanced Settings": "Advanced Orchestration", - "Advanced Settings Desc": "Based on the Flow orchestration mode, easily enable your AI with extended capabilities such as database queries, IO operations, and network communication", - "Choice Debug": "Convenient Debugging", - "Choice Debug Desc": "Multiple debugging methods including search testing, reference modification, and complete conversation preview", + "AI Assistant": "AI 客服", + "AI Assistant Desc": "无论对内还是对外,AI 将 24 小时为您的用户提供服务", + "Advanced Settings": "高级编排", + "Advanced Settings Desc": "基于 Flow 的流程编排模式,让你的 AI 轻松实现数据库查询、IO 操作、联网通信等扩展能力", + "Choice Debug": "调试便捷", + "Choice Debug Desc": "拥有搜索测试、引用修改、完整对话预览等多种调试途径", "Choice Desc": "", - "Choice Extension": "Unlimited Extension", - "Choice Extension Desc": "Easily implement custom functions based on HTTP extensions", - "Choice Fast": "Ready to Use", - "Choice Fast Desc": "{{title}} provides out-of-the-box visual operations, allowing you to build AI applications with just a few clicks", - "Choice Models": "Support Multiple Models", - "Choice Models Desc": "Support multiple models including GPT, Claude, Spark, ChatGLM, etc.", - "Choice Open": "More Open", - "Choice Open Desc": "{{title}} follows the Apache License 2.0 open source agreement", - "Choice QA": "Unique QA Structure", - "Choice QA Desc": "Builds indexes using a QA pair structure, suitable for various scenarios such as Q&A and reading", - "Choice Visual": "Visual Workflow", - "Choice Visual Desc": "Visually operate modules to easily create complex workflows, making your AI no longer singular", - "Commercial": "Business Consultation", - "Community": "Community", - "Dateset": "Automatic Data Preprocessing", - "Dateset Desc": "Provides multiple data import methods including manual input, direct segmentation, LLM automatic processing, CSV, etc.", - "Docs": "Docs", - "FastGPT Ability": "{{title}} Capabilities", - "FastGPT Desc": "{{title}} is a knowledge base Q&A system based on LLM large language models, providing out-of-the-box data processing, model invocation and other capabilities. It can also use Flow visualization to orchestrate workflows, thus realizing complex Q&A scenarios!", - "Features": "Features", - "Footer Developer": "Developers", - "Footer Docs": "Docs", - "Footer FastGPT Cloud": "{{title}} Cloud Service", - "Footer Feedback": "Feedback", - "Footer Git": "Source Code", - "Footer Product": "Products", - "Footer Support": "Support", - "Login": "Login", + "Choice Extension": "无限扩展", + "Choice Extension Desc": "基于 HTTP 实现扩展,轻松实现定制功能", + "Choice Fast": "开箱即用", + "Choice Fast Desc": "{{title}} 提供开箱即用的可视化操作,点点点即可构建 AI 应用", + "Choice Models": "支持多种模型", + "Choice Models Desc": "支持 GPT、Claude、Spark、ChatGLM等多模型", + "Choice Open": "更开放", + "Choice Open Desc": "{{title}} 遵循 Apache License 2.0 开源协议", + "Choice QA": "独特的 QA 结构", + "Choice QA Desc": "采用 QA 对的结构构建索引,适应问答、阅读等多种场景", + "Choice Visual": "可视化工作流", + "Choice Visual Desc": "可视化模块操作,轻松实现复杂工作流,让你的 AI 不再单一", + "Commercial": "商务咨询", + "Community": "社区", + "Dateset": "自动数据预处理", + "Dateset Desc": "提供手动输入、直接分段、LLM 自动处理和 CSV 等多种数据导入途径", + "Docs": "文档", + "FastGPT Ability": "{{title}} 能力", + "FastGPT Desc": "{{title}} 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!", + "Features": "特点", + "Footer Developer": "开发者", + "Footer Docs": "文档", + "Footer FastGPT Cloud": "{{title}} 线上服务", + "Footer Feedback": "反馈", + "Footer Git": "源码", + "Footer Product": "产品", + "Footer Support": "支持", + "Login": "登录", "Open": "", "OpenAPI": "OpenAPI", - "OpenAPI Desc": "Consistent external interface with GPT API, helping you easily access existing applications", - "Quickly build AI question and answer library": "Quickly build AI Q&A system", - "Start Now": "Get Started", - "Visual AI orchestration": "Visual AI Orchestration", - "Why FastGPT": "Why Choose {{title}}", - "desc": "AI Knowledge Base Q&A Platform Based on LLM Large Models", + "OpenAPI Desc": "与 GPT API 一致的对外接口,助你轻松接入已有应用", + "Quickly build AI question and answer library": "快速搭建 AI 问答系统", + "Start Now": "立即开始", + "Visual AI orchestration": "可视化 AI 编排", + "Why FastGPT": "为什么选择 {{title}}", + "desc": "基于 LLM 大模型的 AI 知识库问答平台", "navbar": { - "Use guidance": "Usage Guide", - "chatbot": "Chatbot" + "Use guidance": "使用引导", + "chatbot": "问答机器人" }, - "slogan": "Make AI Understand Your Knowledge Better" + "slogan": "让 AI 更懂你的知识" }, "module": { - "Confirm Delete Module": "Confirm to delete this custom module?", - "Confirm Sync Plugin": "Confirm to sync the latest plugin information? The connections and input content of the plugin will be cleared, please confirm!", - "Create Your Module": "Create Your Custom Module", - "Intro": "Module Introduction", - "Load Module Failed": "Failed to load module", - "Plugin input is not value": "The custom input parameter cannot be empty", - "Plugin input is required": "Plugin orchestration must include an input module", - "Plugin input must connect": "All custom input modules must be connected", - "Preview Plugin": "Preview Plugin", - "Save Config": "Save Configuration", - "Update Your Module": "Update Module Information" + "Confirm Delete Module": "确认删除该自定义模块?", + "Confirm Sync Plugin": "确认同步插件最新信息?插件的连线和输入的内容将会被清空,请确认!", + "Create Your Module": "创建自定义模块", + "Intro": "模块介绍", + "Load Module Failed": "加载模块失败", + "Plugin input is not value": "自定义输入的参数不能为空", + "Plugin input is required": "插件编排必须包含一个输入模块", + "Plugin input must connect": "自定义输入模块必须全部连接", + "Preview Plugin": "预览插件", + "Save Config": "保存配置", + "Update Your Module": "更新模块信息" }, "navbar": { - "Account": "Account", - "Apps": "Apps", - "Apps Share": "App Sharing", - "Chat": "Chat", - "Datasets": "Datasets", - "Module": "Module", - "Plugin": "Plugin", - "Store": "App Market", - "Tools": "Tools" + "Account": "账号", + "Apps": "应用", + "Apps Share": "应用分享", + "Chat": "聊天", + "Datasets": "知识库", + "Module": "模块", + "Plugin": "插件", + "Store": "应用市场", + "Tools": "工具" }, "openapi": { - "app key tips": "These keys already have the current app identifier, refer to the documentation for specific usage", - "key alias": "Alias for the key, only used for display", - "key tips": "You can use the API key to access some specific interfaces (cannot access apps, use the API Key within the app to access apps)" + "app key tips": "这些 key 已有当前应用标识,具体使用可参考文档", + "key alias": "key 的别名,仅用于展示", + "key tips": "你可以使用 API 秘钥访问一些特定的接口(无法访问应用,访问应用需使用应用内的API Key)" }, "outlink": { - "Copy IFrame": "Embed Webpage", - "Copy Link": "Copy", - "Create API Key": "Create New Key", - "Create Link": "Create Link", - "Delete Link": "Delete Link", - "Edit API Key": "Edit Key Info", - "Edit IFrame Link": "Update Embedded Link", - "Edit Link": "Edit", - "Edit Share Window": "Update Share Window", - "Link Name": "Share Link Name", + "Copy IFrame": "嵌入网页", + "Copy Link": "复制", + "Create API Key": "创建新 Key", + "Create Link": "创建链接", + "Delete Link": "删除链接", + "Edit API Key": "编辑 Key 信息", + "Edit IFrame Link": "更新嵌入链接", + "Edit Link": "编辑", + "Edit Share Window": "更新分享窗口", + "Link Name": "分享链接的名字", "Link is empty": "", "QPM": "", - "QPM Tips": "Maximum number of queries per minute per IP", - "QPM is empty": "QPM cannot be empty", - "token auth": "Authentication", - "token auth Tips": "Authentication server address. If this value is filled in, a request will be sent to the specified server before each conversation for identity verification.", - "token auth use cases": "View Authentication Usage Instructions" + "QPM Tips": "每个 IP 每分钟最多提问多少次", + "QPM is empty": "QPM 不能为空", + "token auth": "身份验证", + "token auth Tips": "身份校验服务器地址,如填写该值,每次对话前都会向指定服务器发送一个请求,进行身份校验", + "token auth use cases": "查看身份验证使用说明" }, "permission": { - "Private": "Private", - "Private Tip": "Only available to self", - "Public": "Team", - "Public Tip": "Available to all team members", - "Set Private": "Set to Private", - "Set Public": "Set to Team Accessible" + "Private": "私有", + "Private Tip": "仅自己可用", + "Public": "团队", + "Public Tip": "团队所有成员可使用", + "Set Private": "设为私有", + "Set Public": "设为团队可用" }, "plugin": { - "App": "Select App", - "Auth Header Prefix": "Auth Header Prefix", - "Auth Method": "Auth Method", - "Auth Type": "Auth Type", - "Confirm Delete": "Confirm to delete this plugin?", - "Create Your Plugin": "Create Your Plugin", - "Currentapp": "Current App", - "Custom Plugin": "Custom Plugin", - "Description": "Description", - "Edit Http Plugin": "Edit HTTP Plugin", - "Enter Env": "Enter laf environment", - "Enter PAT": "Please enter Personal Access Token (PAT)", - "Func": "Select Function", - "Get Plugin Module Detail Failed": "Failed to get plugin information", - "HTTP Plugin": "HTTP Plugin", - "Import Plugin": "Import HTTP Plugin", - "Import from URL": "Import from URL. https://xxxx", - "Intro": "Plugin Introduction", - "Invalid Appid": "Invalid appid", - "Invalid Env": "Invalid laf environment", - "Invalid Schema": "Invalid Schema", - "Invalid URL": "Invalid URL", - "Key": "Key", - "Load Plugin Failed": "Failed to load plugin", - "Method": "Method", - "My Plugins": "My Plugins", - "No Intro": "This plugin has no introduction~", - "None": "None", - "Path": "Path", - "Please bind laf accout first": "Please bind laf account first", - "Plugin List": "Plugin List", - "Plugin Module": "Plugin Module", - "Privacy Agreement": "Privacy Agreement", - "Search plugin": "Search plugin", - "Set Name": "Give the plugin a name", - "Synchronous app": "Sync App", - "Synchronous version": "Sync Version", - "To Edit Plugin": "Go to Edit", - "Update Your Plugin": "Update Plugin", - "Value": "Value", - "go to laf": "Go to Write", + "App": "选择应用", + "Auth Header Prefix": "鉴权头部前缀", + "Auth Method": "鉴权方法", + "Auth Type": "鉴权类型", + "Confirm Delete": "确认删除该插件?", + "Create Your Plugin": "创建你的插件", + "Currentapp": "当前应用", + "Custom Plugin": "自定义插件", + "Description": "描述", + "Edit Http Plugin": "编辑 HTTP 插件", + "Enter Env": "输入 laf 环境", + "Enter PAT": "请输入访问凭证(PAT)", + "Func": "选择函数", + "Get Plugin Module Detail Failed": "获取插件信息异常", + "HTTP Plugin": "HTTP 插件", + "Import Plugin": "导入 HTTP 插件", + "Import from URL": "从URL导入。https://xxxx", + "Intro": "插件介绍", + "Invalid Appid": "appid 无效", + "Invalid Env": "laf 环境错误", + "Invalid Schema": "Schema 无效", + "Invalid URL": "URL 无效", + "Key": "键", + "Load Plugin Failed": "加载插件异常", + "Method": "方法", + "My Plugins": "我的插件", + "No Intro": "这个插件没有介绍~", + "None": "无", + "Path": "路径", + "Please bind laf accout first": "请先绑定 laf 账号", + "Plugin List": "插件列表", + "Plugin Module": "插件模块", + "Privacy Agreement": "隐私协议", + "Search plugin": "搜索插件", + "Set Name": "给插件取个名字", + "Synchronous app": "同步应用", + "Synchronous version": "同步版本", + "To Edit Plugin": "去编辑", + "Update Your Plugin": "更新插件", + "Value": "值", + "go to laf": "去编写", "path": "", - "update params": "Update Parameters" + "update params": "更新参数" }, "support": { "account": { - "Individuation": "Personalization" + "Individuation": "个性化" }, "inform": { - "Read": "Read" + "Read": "已读" }, "openapi": { - "Api baseurl": "API Base URL", - "Api manager": "API Key Management", - "Copy success": "API address copied", - "Max usage": "Maximum Quota (¥)", - "New api key": "New API Key", - "New api key tip": "Please keep your key safe, it will not be displayed again.", - "Usage": "Used Quota (¥)" + "Api baseurl": "API根地址", + "Api manager": "API 秘钥管理", + "Copy success": "已复制 API 地址", + "Max usage": "最大额度(¥)", + "New api key": "新的 API 秘钥", + "New api key tip": "请保管好你的秘钥,秘钥不会再次展示~", + "Usage": "已用额度(¥)" }, "outlink": { - "Delete link tip": "Confirm to delete this login-free link? Once deleted, the link will become invalid immediately. Chat logs will be retained. Please confirm!", - "Max usage points": "Maximum Points", - "Max usage points tip": "The maximum points allowed for this link. Usage will be restricted if exceeded. -1 means no limit.", - "Usage points": "Points Consumed", + "Delete link tip": "确认删除该免登录链接?删除后,该链接将会立即失效,对话日志仍会保留,请确认!", + "Max usage points": "积分上限", + "Max usage points tip": "该链接最多允许使用多少积分,超出后将无法使用。-1 代表无限制。", + "Usage points": "积分消耗", "share": { - "Response Quote": "Response Quote", - "Response Quote tips": "Return quoted content in shared links, but users will not be allowed to download the original document." + "Response Quote": "返回引用", + "Response Quote tips": "在分享链接中返回引用内容,但不会允许用户下载原文档" } }, "standard": { - "AI Bonus Points": "AI Points", - "Expired Time": "End Time", - "Start Time": "Start Time", - "storage": "Storage", - "type": "Type" + "AI Bonus Points": "AI 积分", + "Expired Time": "结束时间", + "Start Time": "开始时间", + "storage": "存储量", + "type": "类型" }, "subscription": { - "Cancel subscription": "Cancel Subscription" + "Cancel subscription": "取消订阅" }, "team": { "limit": { - "No permission rerank": "No permission to use result re-ranking, please upgrade your plan." + "No permission rerank": "无权使用结果重排,请升级您的套餐" } }, "user": { - "AI point standard": "AI Point Standard", - "Avatar": "Avatar", - "Go laf env": "Click to go to laf to get PAT token.", - "Laf account course": "View tutorial on linking laf account.", - "Laf account intro": "After linking your laf account, you can use laf modules in workflows to write code online.", - "Need to login": "Please log in first", - "Price": "Pricing", - "User self info": "Personal Information", + "AI point standard": "AI积分标准", + "Avatar": "头像", + "Go laf env": "点击前往 {{env}} 获取 PAT 凭证。", + "Laf account course": "查看绑定 laf 账号教程。", + "Laf account intro": "绑定你的laf账号后,你将可以在工作流中使用 laf 模块,实现在线编写代码。", + "Need to login": "请先登录", + "Price": "计费标准", + "User self info": "个人信息", "auth": { - "Sending Code": "Sending" + "Sending Code": "正在发送" }, "inform": { - "System message": "System Message" + "System message": "系统消息" }, "login": { - "And": "and", - "Email": "Email", - "Forget Password": "Forgot Password?", - "Github": "Login with Github", - "Google": "Login with Google", - "Password": "Password", - "Password login": "Password Login", - "Phone": "Phone Login", - "Phone number": "Phone Number", - "Policy tip": "By using, you agree to our", - "Privacy": "Privacy Policy", - "Provider error": "Login error, please try again", - "Register": "Register Account", - "Root login": "Log in with root user", - "Root password placeholder": "root password is the environment variable you set", - "Terms": "Terms of Service", - "Username": "Username", - "Wechat": "Login with WeChat", - "Wx qr login": "Scan QR Code to Log In with WeChat" + "And": "和", + "Email": "邮箱", + "Forget Password": "忘记密码?", + "Github": "Github 登录", + "Google": "Google 登录", + "Password": "密码", + "Password login": "密码登录", + "Phone": "手机号登录", + "Phone number": "手机号", + "Policy tip": "使用即代表你同意我们的", + "Privacy": "隐私政策", + "Provider error": "登录异常,请重试", + "Register": "注册账号", + "Root login": "使用root用户登录", + "Root password placeholder": "root密码为你设置的环境变量", + "Terms": "服务协议", + "Username": "用户名", + "Wechat": "微信登录", + "Wx qr login": "微信扫码登录" }, "team": { - "Dataset usage": "Knowledge Base Capacity", - "Team Tags Async Success": "Sync completed", - "member": "Members", + "Dataset usage": "知识库容量", + "Team Tags Async Success": "同步完成", + "member": "成员", "tag": { - "Have not opened": "Team chat function not enabled" + "Have not opened": "未开通团队聊天功能" } } }, "wallet": { - "Ai point every thoundsand tokens": "{{points}} points/1K tokens", - "Ai point every thounsand tokens": "{{points}} points/1K tokens", - "Ai point every thousand tokens": "{{points}} points/1K tokens", - "Amount": "Amount", - "Balance not enough tip": "Insufficient balance. Please top up in account page first.", - "Bills": "Bills", - "Buy": "Buy", - "Buy more": "Expand", - "Confirm pay": "Confirm Payment", - "Not sufficient": "Your AI Points are insufficient. Please upgrade your plan or purchase extra AI Points to continue.", - "Pay error": "Payment failed", - "Pay success": "Payment successful", - "Plan expired time": "Plan Expiration Time", - "Plan reset time": "Plan Reset Time", - "Standard Plan Detail": "Plan Details", - "To read plan": "View Plan", + "Ai point every thoundsand tokens": "{{points}}积分/1K tokens", + "Ai point every thounsand tokens": "{{points}}积分/1K tokens", + "Ai point every thousand tokens": "{{points}}积分/1K tokens", + "Amount": "金额", + "Balance not enough tip": "余额不足,请先到账号页充值", + "Bills": "账单", + "Buy": "购买", + "Buy more": "扩容", + "Confirm pay": "支付确认", + "Not sufficient": "您的 AI 积分不足,请先升级套餐或购买额外 AI 积分后继续使用。", + "Pay error": "支付失败", + "Pay success": "支付成功", + "Plan expired time": "套餐到期时间", + "Plan reset time": "套餐重置时间", + "Standard Plan Detail": "套餐详情", + "To read plan": "查看套餐", "bill": { - "AI Model": "AI Model", - "AI Type": "AI Type", - "Number": "Order No.", - "Price": "Price (¥)", - "Status": "Status", - "Type": "Order Type", + "AI Model": "AI 模型", + "AI Type": "AI 类型", + "Number": "订单号", + "Price": "价格(¥)", + "Status": "状态", + "Type": "订单类型", "payWay": { - "Way": "Payment Method", - "balance": "Balance Payment", - "wx": "WeChat Pay" + "Way": "支付方式", + "balance": "余额支付", + "wx": "微信支付" }, "status": { - "closed": "Closed", - "notpay": "Unpaid", - "refund": "Refunded", - "success": "Paid Successfully" + "closed": "已关闭", + "notpay": "未支付", + "refund": "已退款", + "success": "支付成功" } }, "moduleName": { - "index": "Index Generation", - "qa": "QA Splitting" + "index": "索引生成", + "qa": "QA 拆分" }, - "noBill": "No billing records~", + "noBill": "无账单记录~", "subscription": { - "AI points": "AI Points", - "AI points click to read tip": "Each time an AI model is invoked, a certain amount of AI Points (similar to tokens) will be consumed. Click to view detailed calculation rules.", - "AI points tip": "Each time an AI model is invoked, a certain amount of AI Points will be consumed. Refer to the \"Pricing\" below for specific calculation standards.", - "AI points usage": "AI Points Usage", - "AI points usage tip": "Each time an AI model is invoked, a certain amount of AI Points will be consumed. Refer to the \"Pricing\" above for specific calculation standards.", - "Ai points": "AI Points Calculation", - "Buy now": "Change Plan", - "Change will take effect after the current subscription expires": "Update successful. It will take effect in the next subscription cycle.", - "Current dataset store": "Current Extra Capacity", - "Current extra ai points": "Current Extra Points", - "Current plan": "Current Plan", - "Dataset store": "Knowledge Base Capacity", - "Dataset store price tip": "Deducted from account balance on the 1st of each month", - "Expand size": "Expand Capacity", - "Extra ai points": "Extra AI Points", - "Extra dataset size": "Extra Knowledge Base Capacity", - "Extra plan": "Extra Resource Pack", - "Extra plan tip": "When the standard plan is insufficient, you can purchase extra resource packs to continue using", - "FAQ": "FAQ", - "Month amount": "Months", - "Next extra ai points": "Next Extra Points", - "Next plan": "Future Plan", - "Next sub dataset size": "Next Subscription Extra Capacity", - "Nonsupport": "Cannot Change", - "Refund plan and pay confirm": "No additional payment is required to change to this plan. {{amount}} will be refunded to your balance.", - "Stand plan level": "Subscription Plan", - "Standard plan pay confirm": "To change to this plan, you need to pay an additional {{payPrice}}.", - "Standard update fail": "Error updating subscription plan", - "Standard update success": "Subscription plan changed successfully!", - "Sub plan": "Subscription Plan", - "Sub plan tip": "Use {{title}} for free or upgrade to a higher plan", - "Team plan and usage": "Plan & Usage", - "Training weight": "Training priority:{{weight}}", - "Update extra ai points": "Extra AI Points", - "Update extra dataset size": "Extra Storage", - "Upgrade plan": "Upgrade Plan", + "AI points": "AI积分", + "AI points click to read tip": "每次调用AI模型时,都会消耗一定的AI积分(类似于 Tokens)。点击可查看详细计算规则。", + "AI points tip": "每次调用AI模型时,都会消耗一定的AI积分。具体的计算标准可参考下方的“计费标准”", + "AI points usage": "AI积分使用量", + "AI points usage tip": "每次调用AI模型时,都会消耗一定的AI积分。具体的计算标准可参考上方的“计费标准”", + "Ai points": "AI 积分计算标准", + "Buy now": "切换套餐", + "Change will take effect after the current subscription expires": "更新成功。将会再下个订阅周期生效。", + "Current dataset store": "当前额外容量", + "Current extra ai points": "当前额外积分", + "Current plan": "当前套餐", + "Dataset store": "知识库容量", + "Dataset store price tip": "每月1号从账号余额里扣除", + "Expand size": "扩大容量", + "Extra ai points": "额外AI积分", + "Extra dataset size": "额外知识库容量", + "Extra plan": "额外资源包", + "Extra plan tip": "标准套餐不够时,您可以购买额外资源包继续使用", + "FAQ": "常见问题", + "Month amount": "月数", + "Next extra ai points": "下次额外积分", + "Next plan": "未来套餐", + "Next sub dataset size": "下次订阅额外容量", + "Nonsupport": "无法切换", + "Refund plan and pay confirm": "切换该套餐您无需支付额外费用,并将退换 {{amount}} 元至余额中。", + "Stand plan level": "订阅套餐", + "Standard plan pay confirm": "切换该套餐,您本次需要补充支付 {{payPrice}} 元。", + "Standard update fail": "修改订阅套餐异常", + "Standard update success": "变更订阅套餐成功!", + "Sub plan": "订阅套餐", + "Sub plan tip": "免费使用 {{title}} 或升级更高的套餐", + "Team plan and usage": "套餐与用量", + "Training weight": "训练优先级: {{weight}}", + "Update extra ai points": "额外AI积分", + "Update extra dataset size": "额外存储量", + "Upgrade plan": "升级套餐", "function": { - "History store": "{{amount}} days of conversation history retention", - "Max app": "{{amount}} apps", - "Max dataset": "{{amount}} knowledge bases", - "Max dataset size": "{{amount}} knowledge base indexes", - "Max members": "{{amount}} team members", - "Points": "{{amount}} AI Points" + "History store": "{{amount}} 天对话记录保留", + "Max app": "{{amount}} 个应用", + "Max dataset": "{{amount}} 个知识库", + "Max dataset size": "{{amount}} 组知识库索引", + "Max members": "{{amount}} 个团队成员", + "Points": "{{amount}} AI积分" }, "mode": { - "Month": "Monthly", - "Period": "Subscription Period", - "Year": "Annual", - "Year sale": "2 months free" + "Month": "按月", + "Period": "订阅周期", + "Year": "按年", + "Year sale": "赠送两个月" }, "standardSubLevel": { - "enterprise": "Enterprise", - "experience": "Experience", + "enterprise": "企业版", + "experience": "体验版", "experience desc": "", - "free": "Free", - "free desc": "Basic features can be used for free each month. Knowledge base will be cleared after 30 days of inactivity.", - "team": "Team" + "free": "免费版", + "free desc": "每月均可免费使用基础功能,30天无使用记录时,将会清除知识库", + "team": "团队版" }, "type": { - "balance": "Balance Top-Up", - "extraDatasetSize": "Knowledge Base Expansion", - "extraPoints": "AI Points Package", - "standard": "Subscription Plan" + "balance": "余额充值", + "extraDatasetSize": "知识库扩容", + "extraPoints": "AI积分套餐", + "standard": "套餐订阅" } }, "usage": { - "Ai model": "AI Model", - "App name": "App Name", - "Audio Speech": "Voice Playback", - "Bill Module": "Billing Module", - "Chars length": "Text Length", - "Data Length": "Data Length", - "Dataset store": "Knowledge Base Storage", - "Duration": "Duration (s)", - "Extension Input Token Length": "Question Optimization Input Tokens", - "Extension Output Token Length": "Question Optimization Output Tokens", - "Extension result": "Question Optimization Result", - "Input Token Length": "Input Tokens", - "Module name": "Module Name", + "Ai model": "AI模型", + "App name": "应用名", + "Audio Speech": "语音播放", + "Bill Module": "扣费模块", + "Chars length": "文本长度", + "Data Length": "数据长度", + "Dataset store": "知识库存储", + "Duration": "时长(秒)", + "Extension Input Token Length": "问题优化输入Tokens", + "Extension Output Token Length": "问题优化输出Tokens", + "Extension result": "问题优化结果", + "Input Token Length": "输入 Tokens", + "Module name": "模块名", "Number": "", - "Output Token Length": "Output Tokens", - "ReRank": "Result Re-Ranking", - "Source": "Source", - "Text Length": "Text Length", - "Time": "Generation Time", - "Token Length": "Token Length", - "Total": "Total Amount", - "Total points": "AI Points Consumed", - "Usage Detail": "Usage Details", - "Whisper": "Voice Input", - "bill username": "User" + "Output Token Length": "输出 Tokens", + "ReRank": "结果重排", + "Source": "来源", + "Text Length": "文本长度", + "Time": "生成时间", + "Token Length": "Token长度", + "Total": "总金额", + "Total points": "AI积分消耗", + "Usage Detail": "使用详情", + "Whisper": "语音输入", + "bill username": "用户" } } }, - "system": { - "Help Document": "Help Document" - }, "template": { - "Quote Content Tip": "You can customize the structure of the quoted content to better fit different scenarios. You can use some variables for template configuration:\n{{q}} - retrieved content, {{a}} - expected content, {{source}} - source, {{sourceId}} - source filename, {{index}} - the nth quote, they are all optional, here is the default value:\n{{default}}", - "Quote Prompt Tip": "You can use {{quote}} to insert the quote content template and {{question}} to insert the question. Here is the default value:\n{{default}}" + "Quote Content Tip": "可以自定义引用内容的结构,以更好的适配不同场景。可以使用一些变量来进行模板配置:\n{{q}} - 检索内容, {{a}} - 预期内容, {{source}} - 来源,{{sourceId}} - 来源文件名,{{index}} - 第n个引用,他们都是可选的,下面是默认值:\n{{default}}", + "Quote Prompt Tip": "可以用 {{quote}} 来插入引用内容模板,使用 {{question}} 来插入问题。下面是默认值:\n{{default}}" }, "user": { - "Account": "Account", - "Amount of earnings": "Earnings (¥)", - "Amount of inviter": "Total number of invitees", - "Application Name": "Project Name", - "Avatar": "Avatar", - "Balance": "Balance", - "Bill Detail": "Bill Details", - "Change": "Change", - "Copy invite url": "Copy invite link", - "Current laf Env": "Current laf Environment", - "Edit name": "Click to edit nickname", - "Invite Url": "Invite Link", - "Invite url tip": "Friends who register through this link will be permanently bound to you, and you will receive a certain balance reward when they recharge.\nIn addition, when a friend registers using a mobile phone number, you will immediately receive a reward of 5 yuan.\nRewards will be sent to your default team.", - "Laf Account Setting": "laf Account Setting", - "Language": "Language", - "Learn More": "Learn More", - "Member Name": "Nickname", - "Notice": "Notice", - "Old password is error": "Old password is incorrect", - "OpenAI Account Setting": "OpenAI Account Setting", - "Password": "Password", - "Pay": "Recharge", - "Permission": "Permission", - "Personal Information": "Personal Information", + "Account": "账号", + "Amount of earnings": "收益(¥)", + "Amount of inviter": "累计邀请人数", + "Application Name": "项目名", + "Avatar": "头像", + "Balance": "余额", + "Bill Detail": "账单详情", + "Change": "变更", + "Copy invite url": "复制邀请链接", + "Current laf Env": "当前 laf 环境", + "Edit name": "点击修改昵称", + "Invite Url": "邀请链接", + "Invite url tip": "通过该链接注册的好友将永久与你绑定,其充值时你会获得一定余额奖励。\n此外,好友使用手机号注册时,你将立即获得 5 元奖励。\n奖励会发送到您的默认团队中。", + "Laf Account Setting": "laf 账号配置", + "Language": "语言", + "Learn More": "查看文档", + "Member Name": "昵称", + "Notice": "通知", + "Old password is error": "旧密码错误", + "OpenAI Account Setting": "OpenAI 账号配置", + "Password": "密码", + "Pay": "充值", + "Permission": "使用权限", + "Personal Information": "个人信息", "Promotion": "", - "Promotion Rate": "Cashback Ratio", - "Promotion Record": "Promotion Record", - "Promotion rate tip": "You will receive a certain percentage of balance reward when your friends recharge", - "Recharge Record": "Payment Record", - "Replace": "Replace", - "Set Laf Account Failed": "Set laf Account Failed", - "Set OpenAI Account Failed": "Set OpenAI Account Failed", - "Sign Out": "Sign Out", - "Source": "Source", + "Promotion Rate": "返现比例", + "Promotion Record": "推广记录", + "Promotion rate tip": "好友充值时你将获得一定比例的余额奖励", + "Recharge Record": "支付记录", + "Replace": "更换", + "Set Laf Account Failed": "设置 laf 账号异常", + "Set OpenAI Account Failed": "设置 OpenAI 账号异常", + "Sign Out": "登出", + "Source": "来源", "Standard Detail": "", - "Team": "Team", - "Time": "Time", - "Timezone": "Timezone", - "Total Amount": "Total Amount", - "Update Password": "Update Password", - "Update password failed": "Update password failed", - "Update password successful": "Update password successful", - "Usage Record": "Usage Record", + "Team": "团队", + "Time": "时间", + "Timezone": "时区", + "Total Amount": "总金额", + "Update Password": "修改密码", + "Update password failed": "修改密码异常", + "Update password successful": "修改密码成功", + "Usage Record": "使用记录", "apikey": { - "key": "API Key" + "key": "API 秘钥" }, "promotion": { - "pay": "Friend Recharge", - "register": "Friend Registration" + "pay": "好友充值", + "register": "好友注册" }, "team": { - "Balance": "Team Balance", - "Check Team": "Switch", - "Confirm Invite": "Confirm Invite", - "Create Team": "Create New Team", - "Invite Member": "Invite Member", - "Invite Member Failed Tip": "Inviting member failed", - "Invite Member Result Tip": "Invite Result Tip", - "Invite Member Success Tip": "Inviting member completed\nSuccess: {{success}} people\nInvalid username: {{inValid}}\nAlready in the team: {{inTeam}}", - "Invite Member Tips": "The other party can view or use other resources within the team", - "Invite Role Admin Alias": "Invite admin to join", - "Invite Role Admin Tip": "Admin\nCan create, edit and use team resources", - "Invite Role Visitor Alias": "Invite visitor to join", - "Invite Role Visitor Tip": "Visitor\nCan only use resources, no creation or editing permissions", - "Leave Team": "Leave Team", - "Leave Team Failed": "Leave Team Failed", - "Manage": "Team Management", - "Member": "Member", - "Member Name": "Member Name", - "Over Max Member Tip": "Team can have up to {{max}} people", - "Personal Team": "Personal Team", - "Processing invitations": "Processing invitations", - "Processing invitations Tips": "You have {{amount}} team invitations to process", - "Reinvite": "Reinvite", - "Remove Member Confirm Tip": "Confirm removing {{username}} from the team? All their resources will be transferred to the team creator's account.", - "Remove Member Failed": "Remove Member Failed", - "Remove Member Success": "Remove Member Success", - "Remove Member Tip": "Remove from Team", - "Role": "Role", - "Select Team": "Select Team", - "Set Name": "Name your team", - "Switch Team Failed": "Switch Team Failed", - "Tags Async": "Save", - "Team Name": "Team Name", - "Team Tags Async": "Tag Synchronization", - "Team Tags Async Success": "Link error reported successfully, tag information updated", - "Team Tags Async Tip": "Fill in the tag synchronization link to get the latest", - "Update Team": "Update Team Info", + "Balance": "团队余额", + "Check Team": "切换", + "Confirm Invite": "确认邀请", + "Create Team": "创建新团队", + "Invite Member": "邀请成员", + "Invite Member Failed Tip": "邀请成员出现异常", + "Invite Member Result Tip": "邀请结果提示", + "Invite Member Success Tip": "邀请成员完成\n成功: {{success}}人\n用户名无效: {{inValid}}\n已在团队中:{{inTeam}}", + "Invite Member Tips": "对方可查阅或使用团队内的其他资源", + "Invite Role Admin Alias": "邀请管理员加入", + "Invite Role Admin Tip": "管理员\n可创建、编辑和使用团队资源", + "Invite Role Visitor Alias": "邀请访客加入", + "Invite Role Visitor Tip": "访客\n仅可使用资源,无创建编辑权限", + "Leave Team": "离开团队", + "Leave Team Failed": "离开团队异常", + "Manage": "团队管理", + "Member": "成员", + "Member Name": "成员名", + "Over Max Member Tip": "团队最多{{max}}人", + "Personal Team": "个人团队", + "Processing invitations": "处理邀请", + "Processing invitations Tips": "你有{{amount}}个需要处理的团队邀请", + "Reinvite": "重新邀请", + "Remove Member Confirm Tip": "确认将 {{username}} 移出团队?其所有资源将转让到团队创建者的账户内。", + "Remove Member Failed": "移除团队成员异常", + "Remove Member Success": "移除团队成员成功", + "Remove Member Tip": "移出团队", + "Role": "身份", + "Select Team": "团队选择", + "Set Name": "给团队取个名字", + "Switch Team Failed": "切换团队异常", + "Tags Async": "保存", + "Team Name": "团队名", + "Team Tags Async": "标签同步", + "Team Tags Async Success": "链接报错成功,标签信息更新", + "Team Tags Async Tip": "填写标签同步连接,获取最新", + "Update Team": "更新团队信息", "invite": { - "Accept Confirm": "Confirm joining this team?", - "Accepted": "Joined Team", - "Deal Width Footer Tip": "It will automatically close after processing~", - "Reject": "Invite Rejected", - "Reject Confirm": "Confirm rejecting this invitation?", - "accept": "accept", - "reject": "reject" + "Accept Confirm": "确认加入该团队?", + "Accepted": "已加入团队", + "Deal Width Footer Tip": "处理完会自动关闭噢~", + "Reject": "已拒绝邀请", + "Reject Confirm": "确认拒绝该邀请?", + "accept": "接受", + "reject": "拒绝" }, "member": { - "Confirm Leave": "Confirm leaving this team?", - "active": "Joined", - "reject": "Reject", - "waiting": "Pending" + "Confirm Leave": "确认离开该团队?", + "active": "已加入", + "reject": "拒绝", + "waiting": "待接受" }, "role": { - "Admin": "Admin", - "Member": "Member", - "Owner": "Creator", - "Update to Visitor": "Change to Visitor", - "Visitor": "Visitor" + "Admin": "管理员", + "Member": "成员", + "Owner": "创建者", + "Update to Visitor": "修改成访客", + "Visitor": "访客" } } } diff --git a/projects/app/i18n/en/dataset.json b/projects/app/i18n/en/dataset.json new file mode 100644 index 000000000..e69de29bb diff --git a/projects/app/i18n/zh/app.json b/projects/app/i18n/zh/app.json new file mode 100644 index 000000000..3c11a35e0 --- /dev/null +++ b/projects/app/i18n/zh/app.json @@ -0,0 +1,44 @@ +{ + "AI Settings": "AI 配置", + "Advance App TestTip": "当前应用可能为高级编排模式\n如需切换为【简易模式】请点击左侧保存按键", + "App Detail": "应用详情", + "Apps Share": "应用分享", + "Basic Settings": "基本信息", + "Chat Debug": "调试预览", + "Chat Logs Tips": "日志会记录该应用的在线、分享和 API(需填写 chatId) 对话记录", + "Chat logs": "对话日志", + "Confirm Del App Tip": "确认删除该应用及其所有聊天记录?", + "Connection is invalid": "连接无效", + "Connection type is different": "连接的类型不一致", + "Copy Module Config": "复制配置", + "Dataset Quote Template": "知识库问答模式", + "Export Config Successful": "已复制配置,自动过滤部分敏感信息,请注意检查是否仍有敏感数据", + "Export Configs": "导出配置", + "Feedback Count": "用户反馈", + "Import Configs": "导入配置", + "Import Configs Failed": "导入配置失败,请确保配置正常!", + "Input Field Settings": "输入字段编辑", + "Logs Empty": "还没有日志噢~", + "Logs Message Total": "消息总数", + "Logs Source": "来源", + "Logs Time": "时间", + "Logs Title": "标题", + "Mark Count": "标注答案数量", + "My Apps": "我的应用", + "Output Field Settings": "输出字段编辑", + "Paste Config": "粘贴配置", + "To Chat": "前去对话", + "To Settings": "查看详情", + "Variable Key Repeat Tip": "变量 key 重复", + "module": { + "Combine Modules": "组合模块", + "Custom Title Tip": "该标题名字会展示在对话过程中", + "My Modules": "", + "No Modules": "还没有模块~", + "System Module": "系统模块", + "type": "\"{{type}}\"类型\n{{description}}" + }, + "modules": { + "Title is required": "模块名不能为空" + } +} diff --git a/projects/app/i18n/zh/common.json b/projects/app/i18n/zh/common.json index dde0683b2..335a8275f 100644 --- a/projects/app/i18n/zh/common.json +++ b/projects/app/i18n/zh/common.json @@ -8,51 +8,8 @@ "Running": "运行中", "UnKnow": "未知", "Warning": "提示", - "app": { - "AI Advanced Settings": "AI 高级配置", - "AI Settings": "AI 配置", - "Advance App TestTip": "当前应用可能为高级编排模式\n如需切换为【简易模式】请点击左侧保存按键", - "App Detail": "应用详情", - "Apps Share": "应用分享", - "Basic Settings": "基本信息", - "Chat Debug": "调试预览", - "Chat Logs Tips": "日志会记录该应用的在线、分享和 API(需填写 chatId) 对话记录", - "Chat logs": "对话日志", - "Confirm Del App Tip": "确认删除该应用及其所有聊天记录?", - "Connection is invalid": "连接无效", - "Connection type is different": "连接的类型不一致", - "Copy Module Config": "复制配置", - "Dataset Quote Template": "知识库问答模式", - "Export Config Successful": "已复制配置,自动过滤部分敏感信息,请注意检查是否仍有敏感数据", - "Export Configs": "导出配置", - "Feedback Count": "用户反馈", - "Import Configs": "导入配置", - "Import Configs Failed": "导入配置失败,请确保配置正常!", - "Input Field Settings": "输入字段编辑", - "Logs Empty": "还没有日志噢~", - "Logs Message Total": "消息总数", - "Logs Source": "来源", - "Logs Time": "时间", - "Logs Title": "标题", - "Mark Count": "标注答案数量", - "My Apps": "我的应用", - "Output Field Settings": "输出字段编辑", - "Paste Config": "粘贴配置", - "To Chat": "前去对话", - "To Settings": "查看详情", - "Variable Key Repeat Tip": "变量 key 重复", - "module": { - "Combine Modules": "组合模块", - "Custom Title Tip": "该标题名字会展示在对话过程中", - "My Modules": "", - "No Modules": "还没有模块~", - "System Module": "系统模块", - "type": "\"{{type}}\"类型\n{{description}}" - }, - "modules": { - "Title is required": "模块名不能为空" - } - }, + "New Create": "新建", + "common": { "Action": "操作", "Add": "添加", @@ -113,7 +70,6 @@ "Name": "名称", "Name Can": "名称不能为空", "Name is empty": "名称不能为空", - "New Create": "新建", "Next Step": "下一步", "No more data": "没有更多了~", "Not open": "未开启", @@ -933,10 +889,10 @@ "params": "Params" }, "input": { + "Add Branch": "添加分支", "Add Input": "添加入参", "Input Number": "入参: {{length}}", "add": "添加条件", - "Add Branch": "添加分支", "description": { "Background": "你可以添加一些特定内容的介绍,从而更好的识别用户的问题类型。这个内容通常是给模型介绍一个它不知道的内容。", "HTTP Dynamic Input": "接收前方节点的输出值作为变量,这些变量可以被HTTP请求参数使用。", diff --git a/projects/app/i18n/zh/dataset.json b/projects/app/i18n/zh/dataset.json new file mode 100644 index 000000000..e69de29bb diff --git a/projects/app/src/components/core/workflow/Flow/ImportSettings.tsx b/projects/app/src/components/core/workflow/Flow/ImportSettings.tsx index 791e0f995..f6b3496de 100644 --- a/projects/app/src/components/core/workflow/Flow/ImportSettings.tsx +++ b/projects/app/src/components/core/workflow/Flow/ImportSettings.tsx @@ -1,19 +1,18 @@ import React, { useState } from 'react'; import { Textarea, Button, ModalBody, ModalFooter } from '@chakra-ui/react'; import MyModal from '@fastgpt/web/components/common/MyModal'; -import { useTranslation } from 'next-i18next'; import { useToast } from '@fastgpt/web/hooks/useToast'; import { useContextSelector } from 'use-context-selector'; import { WorkflowContext } from '../context'; +import { useI18n } from '@/web/context/I18n'; type Props = { onClose: () => void; }; const ImportSettings = ({ onClose }: Props) => { - const { t } = useTranslation(); + const { appT } = useI18n(); const { toast } = useToast(); - const initData = useContextSelector(WorkflowContext, (v) => v.initData); const [value, setValue] = useState(''); @@ -23,11 +22,11 @@ const ImportSettings = ({ onClose }: Props) => { w={'600px'} onClose={onClose} iconSrc="/imgs/modal/params.svg" - title={t('app.Import Configs')} + title={appT('Import Configs')} >