This commit is contained in:
2025-12-01 17:21:38 +08:00
parent 32fee2b8ab
commit fab8c13cb3
7511 changed files with 996300 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
const translation = {
title: '标注',
name: '标注回复',
editBy: '{{author}}编辑的答案',
noData: {
title: '没有标注',
description: '你可以在应用会话调试中编辑标注,也可以在此批量导入标注用于高质量回复。',
},
table: {
header: {
question: '提问',
answer: '答案',
createdAt: '创建时间',
hits: '命中次数',
actions: '操作',
addAnnotation: '添加标注',
bulkImport: '批量导入',
bulkExport: '批量导出',
clearAll: '删除所有',
clearAllConfirm: '删除所有标注?',
},
},
editModal: {
title: '编辑标注回复',
queryName: '用户提问',
answerName: '机器回复',
yourAnswer: '您的回复',
answerPlaceholder: '在这里输入您的回复',
yourQuery: '您的提问',
queryPlaceholder: '在这里输入您的提问',
removeThisCache: '删除此标注',
createdAt: '创建于',
},
addModal: {
title: '添加标注回复',
queryName: '提问',
answerName: '回复',
answerPlaceholder: '输入回复',
queryPlaceholder: '输入提问',
createNext: '添加下一个标注回复',
},
batchModal: {
title: '批量导入',
csvUploadTitle: '将您的 CSV 文件拖放到此处,或',
browse: '选择文件',
tip: 'CSV 文件必须符合以下结构:',
question: '问题',
answer: '回答',
contentTitle: '分段内容',
content: '内容',
template: '下载模板',
cancel: '取消',
run: '导入',
runError: '批量导入失败',
processing: '批量处理中',
completed: '导入完成',
error: '导入出错',
ok: '确定',
},
list: {
delete: {
title: '确定删除吗?',
},
},
batchAction: {
selected: '已选择',
delete: '删除',
cancel: '取消',
},
errorMessage: {
answerRequired: '回复不能为空',
queryRequired: '提问不能为空',
},
viewModal: {
annotatedResponse: '标注回复',
hitHistory: '命中历史',
hit: '次命中',
hits: '次命中',
noHitHistory: '没有命中历史',
},
hitHistoryTable: {
query: '提问',
match: '匹配',
response: '回复',
source: '来源',
score: '分数',
time: '时间',
},
initSetup: {
title: '标注回复初始设置',
configTitle: '标注回复设置',
confirmBtn: '保存并启用',
configConfirmBtn: '保存',
},
embeddingModelSwitchTip: '标注文本向量化模型,切换模型会重新嵌入,产生额外费用消耗',
}
export default translation

View File

@@ -0,0 +1,85 @@
const translation = {
apiServer: 'API 服务器',
apiKey: 'API 密钥',
status: '状态',
disabled: '已停用',
ok: '运行中',
copy: '复制',
copied: '已复制',
regenerate: '重新生成',
play: '播放',
pause: '暂停',
playing: '播放中',
loading: '加载中',
merMaid: {
rerender: '重新渲染',
},
never: '从未',
apiKeyModal: {
apiSecretKey: 'API 密钥',
apiSecretKeyTips: '如果不想你的 API 被滥用,请保护好你的 API Key :) 最佳实践是避免在前端代码中明文引用。',
createNewSecretKey: '创建密钥',
secretKey: '密钥',
created: '创建时间',
lastUsed: '最后使用',
generateTips: '请将此密钥保存在安全且可访问的地方。',
},
actionMsg: {
deleteConfirmTitle: '删除此密钥?',
deleteConfirmTips: '删除密钥无法撤销,正在使用中的应用会受影响。',
ok: '好的',
},
completionMode: {
title: '文本生成型应用 API',
info: '可用于生成高质量文本的应用,例如生成文章、摘要、翻译等,通过调用 completion-messages 接口,发送用户输入得到生成文本结果。用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页的设置。',
createCompletionApi: '创建文本补全消息',
createCompletionApiTip: '创建文本补全消息,支持一问一答模式。',
inputsTips: '选填以键值对方式提供用户输入字段与提示词编排中的变量对应。Key 为变量名称Value 是参数值。如果字段类型为 Select传入的 Value 需为预设选项之一。',
queryTips: '用户输入的文本正文。',
blocking: 'blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)',
streaming: 'streaming 流式返回。基于 SSE**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。',
messageFeedbackApi: '消息反馈(点赞)',
messageFeedbackApiTip: '代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。',
messageIDTip: '消息 ID',
ratingTip: 'like 或 dislike空值为撤销',
parametersApi: '获取应用配置信息',
parametersApiTip: '获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。',
},
chatMode: {
title: '对话型应用 API',
info: '可用于大部分场景的对话型应用,采用一问一答模式与用户持续对话。要开始一个对话请调用 chat-messages 接口,通过继续传入返回的 conversation_id 可持续保持该会话。',
createChatApi: '发送对话消息',
createChatApiTip: '创建会话消息,或基于此前的对话继续发送消息。',
inputsTips: '选填以键值对方式提供用户输入字段与提示词编排中的变量对应。Key 为变量名称Value 是参数值。如果字段类型为 Select传入的 Value 需为预设选项之一。',
queryTips: ' 用户输入/提问内容',
blocking: 'blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)',
streaming: 'streaming 流式返回。基于 SSE**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。',
conversationIdTip: '(选填)会话标识符,首次对话可为空,如果要继续对话请传入上下文返回的 conversation_id',
messageFeedbackApi: '消息反馈(点赞)',
messageFeedbackApiTip: '代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。',
messageIDTip: '消息 ID',
ratingTip: 'like 或 dislike空值为撤销',
chatMsgHistoryApi: '获取会话历史消息',
chatMsgHistoryApiTip: '滚动加载形式返回历史聊天记录,第一页返回最新 `limit` 条,即:倒序返回。',
chatMsgHistoryConversationIdTip: '会话 ID',
chatMsgHistoryFirstId: '当前页第一条聊天记录的 ID默认 none',
chatMsgHistoryLimit: '一次请求返回多少条聊天记录',
conversationsListApi: '获取会话列表',
conversationsListApiTip: '获取当前用户的会话列表,默认返回最近的 20 条。',
conversationsListFirstIdTip: ' 当前页最前面一条记录的 ID默认 none',
conversationsListLimitTip: '一次请求返回多少条记录',
conversationRenamingApi: '会话重命名',
conversationRenamingApiTip: '对会话进行重命名,会话名称用于显示在支持多会话的客户端上。',
conversationRenamingNameTip: '新的名称',
parametersApi: '获取应用配置信息',
parametersApiTip: '获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。',
},
develop: {
requestBody: 'Request Body',
pathParams: 'Path Params',
query: 'Query',
toc: '目录',
},
}
export default translation

View File

@@ -0,0 +1,569 @@
const translation = {
pageTitle: {
line1: '提示词',
line2: '编排',
},
orchestrate: '编排',
promptMode: {
simple: '切换到专家模式以编辑完整的提示词',
advanced: '专家模式',
switchBack: '返回简易模式',
advancedWarning: {
title: '您已切换到专家模式,一旦修改提示词,将无法返回简易模式。',
description: '在专家模式下,您可以编辑完整的提示词。',
learnMore: '了解更多',
ok: '确定',
},
operation: {
addMessage: '添加消息',
},
contextMissing: '上下文内容块缺失,提示词的有效性可能不好。',
},
operation: {
applyConfig: '发布',
resetConfig: '重置',
debugConfig: '调试',
addFeature: '添加功能',
automatic: '生成',
stopResponding: '停止响应',
agree: '赞同',
disagree: '反对',
cancelAgree: '取消赞同',
cancelDisagree: '取消反对',
userAction: '用户表示',
},
notSetAPIKey: {
title: 'LLM 提供者的密钥未设置',
trailFinished: '试用已结束',
description: '在调试之前需要设置 LLM 提供者的密钥。',
settingBtn: '去设置',
},
trailUseGPT4Info: {
title: '当前不支持使用 gpt-4',
description: '使用 gpt-4请设置 API Key',
},
feature: {
groupChat: {
title: '聊天增强',
description: '为聊天型应用添加预对话设置,可以提升用户体验。',
},
groupExperience: {
title: '体验增强',
},
conversationOpener: {
title: '对话开场白',
description: '在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。',
},
suggestedQuestionsAfterAnswer: {
title: '下一步问题建议',
description: '设置下一步问题建议可以让用户更好的对话。',
resDes: '回答结束后系统会给出 3 个建议',
tryToAsk: '试着问问',
},
moreLikeThis: {
title: '更多类似的',
description: '一次生成多条文本,可在此基础上编辑并继续生成',
generateNumTip: '每次生成数',
tip: '使用此功能将会额外消耗 tokens',
},
speechToText: {
title: '语音转文字',
description: '您可以使用语音输入。',
resDes: '语音输入已启用',
},
textToSpeech: {
title: '文字转语音',
description: '文本可以转换成语音。',
resDes: '文本转音频已启用',
},
citation: {
title: '引用和归属',
description: '显示源文档和生成内容的归属部分。',
resDes: '引用和归属已启用',
},
annotation: {
title: '标注回复',
description: '启用后,将标注用户的回复,以便在用户重复提问时快速响应。',
resDes: '标注回复已启用',
scoreThreshold: {
title: '分数阈值',
description: '用于设置标注回复的匹配相似度阈值。',
easyMatch: '容易匹配',
accurateMatch: '精准匹配',
},
matchVariable: {
title: '匹配变量',
choosePlaceholder: '请选择变量',
},
cacheManagement: '标注管理',
cached: '已标注',
remove: '移除',
removeConfirm: '删除这个标注?',
add: '添加标注',
edit: '编辑标注',
},
dataSet: {
title: '知识库',
noData: '您可以导入知识库作为上下文',
selectTitle: '选择引用知识库',
selected: '个知识库被选中',
noDataSet: '未找到知识库',
toCreate: '去创建',
notSupportSelectMulti: '目前只支持引用一个知识库',
queryVariable: {
title: '查询变量',
tip: '该变量将用作上下文检索的查询输入,获取与该变量的输入相关的上下文信息。',
choosePlaceholder: '请选择变量',
noVar: '没有变量',
noVarTip: '请创建变量',
unableToQueryDataSet: '无法查询知识库',
unableToQueryDataSetTip: '无法成功查询知识库,请在上下文部分选择一个上下文查询变量。',
ok: '好的',
contextVarNotEmpty: '上下文查询变量不能为空',
deleteContextVarTitle: '删除变量“{{varName}}”?',
deleteContextVarTip: '该变量已被设置为上下文查询变量,删除该变量将影响知识库的正常使用。如果您仍需要删除它,请在上下文部分中重新选择它。',
},
},
tools: {
title: '工具',
tips: '工具提供了一个标准的 API 调用方式,将用户输入或变量作为 API 的请求参数,用于查询外部数据作为上下文。',
toolsInUse: '{{count}} 工具使用中',
modal: {
title: '工具',
toolType: {
title: '工具类型',
placeholder: '请选择工具类型',
},
name: {
title: '名称',
placeholder: '请填写名称',
},
variableName: {
title: '变量名称',
placeholder: '请填写变量名称',
},
},
},
conversationHistory: {
title: '对话历史',
description: '设置对话角色的前缀名称',
tip: '对话历史未启用,请在上面的提示中添加<histories>。',
learnMore: '了解更多',
editModal: {
title: '编辑对话角色名称',
userPrefix: '用户前缀',
assistantPrefix: '助手前缀',
},
},
toolbox: {
title: '工具箱',
},
moderation: {
title: '内容审查',
description: '您可以调用审查 API 或者维护敏感词库来使模型更安全地输出。',
contentEnableLabel: '内容审查已启用',
allEnabled: '输入内容和输出内容',
inputEnabled: '输入内容',
outputEnabled: '输出内容',
modal: {
title: '内容审查设置',
provider: {
title: '类别',
openai: 'OpenAI Moderation',
openaiTip: {
prefix: 'OpenAI Moderation 需要在',
suffix: '中配置 OpenAI API 密钥。',
},
keywords: '关键词',
},
keywords: {
tip: '每行一个,用换行符分隔。每行最多 100 个字符。',
placeholder: '每行一个,用换行符分隔',
line: '行',
},
content: {
input: '审查输入内容',
output: '审查输出内容',
preset: '预设回复',
placeholder: '这里预设回复内容',
condition: '审查输入内容和审查输出内容至少启用一项',
fromApi: '预设回复通过 API 返回',
errorMessage: '预设回复不能为空',
supportMarkdown: '支持 Markdown',
},
openaiNotConfig: {
before: 'OpenAI 内容审查需要在',
after: '中配置 OpenAI API 密钥。',
},
},
},
fileUpload: {
title: '文件上传',
description: '聊天输入框支持上传文件。类型包括图片、文档以及其它类型',
supportedTypes: '支持的文件类型',
numberLimit: '最大上传数',
modalTitle: '文件上传设置',
},
imageUpload: {
title: '图片上传',
description: '支持上传图片',
supportedTypes: '支持的文件类型',
numberLimit: '最大上传数',
modalTitle: '图片上传设置',
},
bar: {
empty: '开启功能增强 web app 用户体验',
enableText: '功能已开启',
manage: '管理',
},
documentUpload: {
title: '文档',
description: '启用文档后,模型可以接收文档并回答关于它们的问题。',
},
audioUpload: {
title: '音频',
description: '启用音频后,模型可以处理音频文件进行转录和分析。',
},
},
codegen: {
title: '代码生成器',
description: '代码生成器使用配置的模型根据您的指令生成高质量的代码。请提供清晰详细的说明。',
instruction: '指令',
instructionPlaceholder: '请输入您想要生成的代码的详细描述。',
noDataLine1: '在左侧描述您的用例,',
noDataLine2: '代码预览将在此处显示。',
generate: '生成',
generatedCodeTitle: '生成的代码',
loading: '正在生成代码...',
apply: '应用',
applyChanges: '应用更改',
resTitle: '生成的代码',
overwriteConfirmTitle: '是否覆盖现有代码?',
overwriteConfirmMessage: '此操作将覆盖现有代码。您确定要继续吗?',
},
generate: {
title: '提示词生成器',
description: '提示词生成器使用配置的模型来优化提示词,以获得更高的质量和更好的结构。请写出清晰详细的说明。',
tryIt: '试一试',
instruction: '指令',
instructionPlaceHolderTitle: '描述您希望如何改进此提示词。例如:',
instructionPlaceHolderLine1: '使输出更简洁,保留核心要点。',
instructionPlaceHolderLine2: '输出格式不正确,请严格遵循 JSON 格式。',
instructionPlaceHolderLine3: '语气过于生硬,请使其更友好。',
codeGenInstructionPlaceHolderLine: '反馈越详细,例如输入和输出的数据类型以及变量的处理方式,代码生成就会越准确。',
idealOutput: '理想输出',
idealOutputPlaceholder: '描述您理想的回复格式、长度、语气和内容要求……',
optional: '可选',
dismiss: '取消',
generate: '生成',
resTitle: '生成的提示词',
newNoDataLine1: '在左侧描述您的用例,点击生成查看结果。',
apply: '应用',
loading: '为您编排应用程序中…',
overwriteTitle: '覆盖现有配置?',
overwriteMessage: '应用此提示将覆盖现有配置。',
template: {
pythonDebugger: {
name: 'Python 代码助手',
instruction: '一个帮你写和纠错程序的机器人',
},
translation: {
name: '翻译机器人',
instruction: '一个可以翻译多种语言的翻译器',
},
professionalAnalyst: {
name: '职业分析师',
instruction: ' 从长篇报告中提取洞察、识别风险并提炼关键信息',
},
excelFormulaExpert: {
name: 'Excel 公式专家',
instruction: '一个可以让小白用户理解、使用和创建 Excel 公式的对话机器人',
},
travelPlanning: {
name: '旅行规划助手',
instruction: '旅行规划助手是一个智能工具,旨在帮助用户轻松规划他们的旅行',
},
SQLSorcerer: {
name: 'SQL 生成',
instruction: '把自然语言转换成 SQL 查询语句',
},
GitGud: {
name: 'Git 大师',
instruction: '从用户提出的版本管理需求生成合适的 Git 命令',
},
meetingTakeaways: {
name: '总结会议纪要',
instruction: '将会议内容提炼总结,包括讨论主题、关键要点和待办事项',
},
writingsPolisher: {
name: '润色文章',
instruction: '用地道的编辑技巧改进我的文章',
},
},
press: '输入',
to: '来',
insertContext: '插入上下文',
optimizePromptTooltip: '在提示词生成器中优化',
optimizationNote: '优化说明',
versions: '版本',
version: '版本',
latest: '最新',
},
resetConfig: {
title: '确认重置?',
message: '重置将丢失当前页面所有修改,恢复至上次发布时的配置',
},
errorMessage: {
nameOfKeyRequired: '变量 {{key}} 对应的名称必填',
valueOfVarRequired: '{{key}}必填',
queryRequired: '主要文本必填',
waitForResponse: '请等待上条信息响应完成',
waitForBatchResponse: '请等待批量任务完成',
notSelectModel: '请选择模型',
waitForImgUpload: '请等待图片上传完成',
waitForFileUpload: '请等待文件上传完成',
},
warningMessage: {
timeoutExceeded: '由于超时,结果未显示。请参考日志获取完整结果。',
},
chatSubTitle: '提示词',
completionSubTitle: '前缀提示词',
promptTip:
'提示词用于对 AI 的回复做出一系列指令和约束。可插入表单变量,例如 {{input}}。这段提示词不会被最终用户所看到。',
formattingChangedTitle: '编排已改变',
formattingChangedText: '修改编排将重置调试区域,确定吗?',
variableTitle: '变量',
notSetVar: '变量能使用户输入表单引入提示词或开场白,你可以试试在提示词中输入 {{input}}',
variableTip:
'变量将以表单形式让用户在对话前填写,用户填写的表单内容将自动替换提示词中的变量。',
autoAddVar: '提示词中引用了未定义的变量,是否自动添加到用户输入表单中?',
variableTable: {
key: '变量 Key',
name: '字段名称',
type: '类型',
action: '操作',
typeString: '文本',
typeSelect: '下拉选项',
},
varKeyError: {
canNoBeEmpty: '{{key}}必填',
tooLong: '{{key}} 长度太长。不能超过 30 个字符',
notValid: '{{key}} 非法。只能包含英文字符,数字和下划线',
notStartWithNumber: '{{key}} 不能以数字开头',
keyAlreadyExists: '{{key}} 已存在',
},
otherError: {
promptNoBeEmpty: '提示词不能为空',
historyNoBeEmpty: '提示词中必须设置对话历史',
queryNoBeEmpty: '提示词中必须设置查询内容',
},
variableConfig: {
'addModalTitle': '添加变量',
'editModalTitle': '编辑变量',
'description': '设置变量 {{varName}}',
'fieldType': '字段类型',
'string': '文本',
'text-input': '文本',
'paragraph': '段落',
'select': '下拉选项',
'number': '数字',
'checkbox': '复选框',
'single-file': '单文件',
'multi-files': '文件列表',
'json': 'JSON',
'jsonSchema': 'JSON Schema',
'optional': '可选',
'notSet': '未设置,在 Prompt 中输入 {{input}} 试试',
'stringTitle': '文本框设置',
'maxLength': '最大长度',
'options': '选项',
'addOption': '添加选项',
'apiBasedVar': '基于 API 的变量',
'varName': '变量名称',
'inputPlaceholder': '请输入',
'labelName': '显示名称',
'displayName': '显示名称',
'required': '必填',
'hide': '隐藏',
'placeholder': '占位符',
'placeholderPlaceholder': '输入字段为空时显示的文本',
'defaultValue': '默认值',
'defaultValuePlaceholder': '输入默认值以预先填充字段',
'unit': '单位',
'unitPlaceholder': '在数字后显示的单位,如 token',
'tooltips': '提示',
'tooltipsPlaceholder': '输入悬停在标签上时显示的提示文本',
'showAllSettings': '显示所有设置',
'startSelectedOption': '默认选中项',
'noDefaultSelected': '不默认选中',
'file': {
supportFileTypes: '支持的文件类型',
image: {
name: '图片',
},
audio: {
name: '音频',
},
document: {
name: '文档',
},
video: {
name: '视频',
},
custom: {
name: '其他文件类型',
description: '指定其他文件类型',
createPlaceholder: '+ 文件扩展名,例如 .doc',
},
},
'uploadFileTypes': '上传文件类型',
'uploadMethod': '上传方式',
'localUpload': '本地上传',
'both': '两者',
'maxNumberOfUploads': '最大上传数',
'maxNumberTip': '文档 < {{docLimit}}, 图片 < {{imgLimit}}, 音频 < {{audioLimit}}, 视频 < {{videoLimit}}',
'content': '内容',
'errorMsg': {
labelNameRequired: '显示名称必填',
varNameCanBeRepeat: '变量名称不能重复',
atLeastOneOption: '至少需要一个选项',
optionRepeat: '选项不能重复',
},
'startChecked': '默认勾选',
'noDefaultValue': '无默认值',
'selectDefaultValue': '选择默认值',
},
vision: {
name: '视觉',
description: '开启视觉功能将允许模型输入图片,并根据图像内容的理解回答用户问题',
onlySupportVisionModelTip: '只有视觉模型配置视觉功能',
settings: '设置',
visionSettings: {
title: '视觉设置',
resolution: '分辨率',
resolutionTooltip: `低分辨率模式将使模型接收图像的低分辨率版本,尺寸为 512 x 512并使用 65 Tokens 来表示图像。这样可以使 API 更快地返回响应,并在不需要高细节的用例中消耗更少的输入。
\n
高分辨率模式将首先允许模型查看低分辨率图像,然后根据输入图像的大小创建 512 像素的详细裁剪图像。每个详细裁剪图像使用两倍的预算总共为 129 Tokens。`,
high: '高',
low: '低',
uploadMethod: '上传方式',
both: '两者',
localUpload: '本地上传',
url: 'URL',
uploadLimit: '上传数量限制',
},
},
voice: {
name: '音色',
defaultDisplay: '缺省音色',
description: '文本转语音音色设置',
settings: '设置',
voiceSettings: {
title: '音色设置',
language: '语言',
resolutionTooltip: '文本转语音音色支持语言。',
voice: '音色',
autoPlay: '自动播放',
autoPlayEnabled: '开启',
autoPlayDisabled: '关闭',
},
},
openingStatement: {
title: '对话开场白',
add: '添加开场白',
writeOpener: '编写开场白',
placeholder: '在这里写下你的开场白,你可以使用变量,尝试输入 {{variable}}。',
openingQuestion: '开场问题',
openingQuestionPlaceholder: '可以使用变量,尝试输入 {{variable}}。',
noDataPlaceHolder:
'在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。',
varTip: '你可以使用变量,试试输入 {{variable}}',
tooShort: '对话前提示词至少 20 字才能生成开场白',
notIncludeKey: '前缀提示词中不包含变量 {{key}}。请在前缀提示词中添加该变量',
},
modelConfig: {
model: '语言模型',
setTone: '模型设置',
title: '模型及参数',
modeType: {
chat: '对话型',
completion: '补全型',
},
},
inputs: {
title: '调试与预览',
noPrompt: '尝试在对话前提示框中编写一些提示词',
userInputField: '用户输入',
noVar: '填入变量的值,每次启动新会话时该变量将自动替换提示词中的变量。',
chatVarTip: '填入变量的值,该值将在每次开启一个新会话时自动替换到提示词中',
completionVarTip: '填入变量的值,该值将在每次提交问题时自动替换到提示词中',
previewTitle: '提示词预览',
queryTitle: '查询内容',
queryPlaceholder: '请输入文本内容',
run: '运行',
},
result: '结果',
noResult: '输出结果展示在这',
datasetConfig: {
settingTitle: '召回设置',
knowledgeTip: '点击“+”按钮添加知识库',
retrieveOneWay: {
title: 'N 选 1 召回',
description: '根据用户意图和知识库描述,由 Agent 自主判断选择最匹配的单个知识库来查询相关文本,适合知识库区分度大且知识库数量偏少的应用。',
},
retrieveMultiWay: {
title: '多路召回',
description: '根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果。',
},
embeddingModelRequired: '未配置 Embedding 模型',
rerankModelRequired: '未配置 Rerank 模型',
params: '参数设置',
top_k: 'Top K',
top_kTip: '用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整分段数量。',
score_threshold: 'Score 阈值',
score_thresholdTip: '用于设置文本片段筛选的相似度阈值。',
retrieveChangeTip: '修改索引模式和检索模式可能会影响与该知识库关联的应用程序。',
},
debugAsSingleModel: '单一模型进行调试',
debugAsMultipleModel: '多个模型进行调试',
duplicateModel: '复制模型',
publishAs: '发布为',
assistantType: {
name: '助手类型',
chatAssistant: {
name: '基础助手',
description: '基于 LLM 构建一个聊天型助手',
},
agentAssistant: {
name: '智能助手',
description: '构建一个智能助手,他可以自主选择工具完成你设置的任务',
},
},
agent: {
agentMode: 'Agent Mode',
agentModeDes: '设置代理的推理模式类型',
agentModeType: {
ReACT: 'ReAct',
functionCall: 'Function Calling',
},
setting: {
name: 'Agent 设置',
description: '智能助手设置允许设置代理模式和内置提示等高级功能,仅在代理类型中可用。',
maximumIterations: {
name: '最大迭代次数',
description: '限制代理型助手执行迭代的次数',
},
},
buildInPrompt: '内置提示词',
firstPrompt: '第一次提示词',
nextIteration: '下一次迭代',
promptPlaceholder: '在这里写下您的提示词',
tools: {
name: '工具',
description: '使用工具可以扩展代理的能力,比如搜索互联网或科学计算',
enabled: '启用',
},
},
}
export default translation

View File

@@ -0,0 +1,112 @@
const translation = {
title: '日志',
description: '日志记录了应用的运行情况,包括用户的输入和 AI 的回复。',
dateTimeFormat: 'YYYY-MM-DD HH:mm:ss',
dateFormat: 'YYYY-MM-DD',
table: {
header: {
updatedTime: '更新时间',
time: '创建时间',
endUser: '用户或账户',
input: '输入',
output: '输出',
summary: '标题',
messageCount: '消息数',
userRate: '用户反馈',
adminRate: '管理员反馈',
startTime: '开始时间',
status: '状态',
runtime: '运行时间',
tokens: 'TOKENS',
user: '用户或账户',
version: '版本',
triggered_from: '触发方式',
},
pagination: {
previous: '上一页',
next: '下一页',
},
empty: {
noChat: '未开始的对话',
noOutput: '无输出',
element: {
title: '这里有人吗',
content: '在这里观测和标注最终用户和 AI 应用程序之间的交互,以不断提高 AI 的准确性。您可以尝试<shareLink>分享</shareLink>或<testLink>测试</testLink>此Web应用程序然后返回此页面。',
},
},
},
detail: {
time: '时间',
conversationId: '对话 ID',
promptTemplate: '前缀提示词',
promptTemplateBeforeChat: '对话前提示词 · 以系统消息提交',
annotationTip: '{{user}} 标记的改进回复',
timeConsuming: '耗时',
second: ' 秒',
tokenCost: '花费 Token',
loading: '加载中',
operation: {
like: '赞同',
dislike: '反对',
addAnnotation: '标记改进回复',
editAnnotation: '编辑改进回复',
annotationPlaceholder: '输入你希望 AI 回复的预期答案,这在今后可用于模型微调,持续改进文本生成质量。',
},
variables: '变量',
uploadImages: '上传的图片',
modelParams: '模型参数',
},
filter: {
period: {
today: '今天',
last7days: '过去 7 天',
last30days: '过去 30 天',
last4weeks: '过去 4 周',
last3months: '过去 3 月',
last12months: '过去 12 月',
monthToDate: '本月至今',
quarterToDate: '本季度至今',
yearToDate: '本年至今',
allTime: '所有时间',
custom: '自定义',
},
annotation: {
all: '全部',
annotated: '已标注改进({{count}} 项)',
not_annotated: '未标注',
},
sortBy: '排序:',
descending: '降序',
ascending: '升序',
},
workflowTitle: '日志',
workflowSubtitle: '日志记录了应用的执行情况',
runDetail: {
title: '对话日志',
workflowTitle: '日志详情',
fileListLabel: '文件详情',
fileListDetail: '详情',
testWithParams: '按此参数测试',
},
promptLog: 'Prompt 日志',
agentLog: 'Agent 日志',
viewLog: '查看日志',
agentLogDetail: {
agentMode: 'Agent 模式',
toolUsed: '使用工具',
iterations: '迭代次数',
iteration: '迭代',
finalProcessing: '最终处理',
},
triggerBy: {
debugging: '调试',
appRun: '网页应用',
webhook: 'Webhook',
schedule: '定时任务',
plugin: '插件',
ragPipelineRun: 'RAG 流水线',
ragPipelineDebugging: 'RAG 调试',
},
}
export default translation

View File

@@ -0,0 +1,189 @@
const translation = {
welcome: {
firstStepTip: '开始之前,',
enterKeyTip: '请先在下方输入你的 OpenAI API Key',
getKeyTip: '从 OpenAI 获取你的 API Key',
placeholder: '你的 OpenAI API Key例如 sk-xxxx',
},
apiKeyInfo: {
cloud: {
trial: {
title: '您正在使用 {{providerName}} 的试用配额。',
description: '试用配额仅供您测试使用。在试用配额用完之前,请自行设置模型提供商或购买额外配额。',
},
exhausted: {
title: '您的试用额度已用完,请设置您的 APIKey。',
description: '您的试用配额已用完。请设置您自己的模型提供商或购买额外配额。',
},
},
selfHost: {
title: {
row1: '首先,',
row2: '设置您的模型提供商。',
},
},
callTimes: '调用次数',
usedToken: '使用 Tokens',
setAPIBtn: '设置模型提供商',
tryCloud: '或者尝试使用 Dify 的云版本并使用试用配额',
},
overview: {
title: '概览',
appInfo: {
title: 'Web App',
explanation: '开箱即用的 AI web app',
accessibleAddress: '公开访问 URL',
preview: '预览',
launch: '启动',
regenerate: '重新生成',
regenerateNotice: '您是否要重新生成公开访问 URL',
preUseReminder: '使用前请先打开开关',
enableTooltip: {
description: '要启用此功能,请在画布中添加用户输入节点。(草稿中可能已存在,发布后生效)',
learnMore: '了解更多',
},
settings: {
entry: '设置',
title: 'web app 设置',
modalTip: '客户端 web app 设置。',
webName: 'web app 名称',
webDesc: 'web app 描述',
webDescTip: '以下文字将展示在客户端中,对应用进行说明和使用上的基本引导',
webDescPlaceholder: '请输入 web app 的描述',
language: '语言',
workflow: {
title: '工作流',
subTitle: '工作流详情',
show: '显示',
hide: '隐藏',
showDesc: '在 web app 中展示或者隐藏工作流详情',
},
chatColorTheme: '聊天颜色主题',
chatColorThemeDesc: '设置聊天机器人的颜色主题',
chatColorThemeInverted: '反转',
invalidHexMessage: '无效的十六进制值',
invalidPrivacyPolicy: '无效的隐私政策链接,请使用以 http 或 https 开头的有效链接',
sso: {
label: '单点登录认证',
title: 'web app SSO 认证',
description: '启用后,所有用户都需要先进行 SSO 认证才能访问',
tooltip: '联系管理员以开启 web app SSO 认证',
},
more: {
entry: '展示更多设置',
copyright: '版权',
copyrightTip: '在 web app 中展示版权信息',
copyrightTooltip: '请升级到专业版或者更高',
copyRightPlaceholder: '请输入作者或组织名称',
privacyPolicy: '隐私政策',
privacyPolicyPlaceholder: '请输入隐私政策链接',
privacyPolicyTip: '帮助访问者了解该应用收集的数据,可参考 Dify 的<privacyPolicyLink>隐私政策</privacyPolicyLink>。',
customDisclaimer: '自定义免责声明',
customDisclaimerPlaceholder: '请输入免责声明',
customDisclaimerTip: '在应用中展示免责声明,可用于告知用户 AI 的局限性。',
},
},
embedded: {
entry: '嵌入',
title: '嵌入到网站中',
explanation: '选择一种方式将聊天应用嵌入到你的网站中',
iframe: '将以下 iframe 嵌入到你的网站中的目标位置',
scripts: '将以下代码嵌入到你的网站中',
chromePlugin: '安装 Dify Chrome 浏览器扩展',
copied: '已复制',
copy: '复制',
},
qrcode: {
title: '二维码分享',
scan: '扫码分享应用',
download: '下载二维码',
},
customize: {
way: '方法',
entry: '定制化',
title: '定制化 AI web app',
explanation: '你可以定制化 Web App 前端以符合你的情景与风格需求',
way1: {
name: 'Fork 客户端代码修改后部署到 Vercel推荐',
step1: 'Fork 客户端代码并修改',
step1Tip: '点击此处 Fork 源码到你的 GitHub 中,然后修改代码',
step1Operation: 'Dify-WebClient',
step2: '部署到 Vercel 中',
step2Tip: '点击此处将仓库导入到 Vercel 中部署',
step2Operation: '导入仓库',
step3: '配置环境变量',
step3Tip: '在 Vercel 环境变量中添加以下环境变量',
},
way2: {
name: '编写客户端调用 API 并部署到服务器中',
operation: '查看文档',
},
},
},
apiInfo: {
title: '后端服务 API',
explanation: '可集成至你的应用的后端即服务',
accessibleAddress: 'API 访问凭据',
doc: '查阅 API 文档',
},
triggerInfo: {
title: '触发器',
explanation: '工作流触发器管理',
triggersAdded: '已添加 {{count}} 个触发器',
noTriggerAdded: '未添加触发器',
triggerStatusDescription: '触发器节点状态显示在这里。(草稿中可能已存在,发布后生效)',
learnAboutTriggers: '了解触发器',
},
status: {
running: '运行中',
disable: '已停用',
},
disableTooltip: {
triggerMode: '触发节点模式下不支持{{feature}}功能。',
},
},
analysis: {
title: '分析',
ms: '毫秒',
tokenPS: 'Token/秒',
totalMessages: {
title: '全部消息数',
explanation: '反映 AI 每天的互动总次数,每回答用户一个问题算一条 Message。',
},
totalConversations: {
title: '全部会话数',
explanation: '反映 AI 每天的会话总次数,提示词编排和调试的消息不计入。',
},
activeUsers: {
title: '活跃用户数',
explanation: '与 AI 有效互动,即有一问一答以上的唯一用户数。提示词编排和调试的会话不计入。',
},
tokenUsage: {
title: '费用消耗',
explanation: '反映每日该应用请求语言模型的 Tokens 花费,用于成本控制。',
consumed: '耗费',
},
avgSessionInteractions: {
title: '平均会话互动数',
explanation: '反映每个会话用户的持续沟通次数,如果用户与 AI 问答了 10 轮,即为 10。该指标反映了用户粘性。仅在对话型应用提供。',
},
avgUserInteractions: {
title: '平均用户调用次数',
explanation: '反映每天用户的使用次数。该指标反映了用户粘性。',
},
userSatisfactionRate: {
title: '用户满意度',
explanation: '每 1000 条消息的点赞数。反映了用户对回答十分满意的比例。',
},
avgResponseTime: {
title: '平均响应时间',
explanation: '衡量 AI 应用处理和回复用户请求所花费的平均时间,单位为毫秒,反映性能和用户体验。仅在文本型应用提供。',
},
tps: {
title: 'Token 输出速度',
explanation: '衡量 LLM 的性能。统计 LLM 从请求开始到输出完毕这段期间的 Tokens 输出速度。',
},
},
}
export default translation

View File

@@ -0,0 +1,348 @@
const translation = {
createApp: '创建应用',
types: {
all: '全部',
chatbot: '聊天助手',
agent: 'Agent',
workflow: '工作流',
completion: '文本生成',
advanced: 'Chatflow',
basic: '基础编排',
},
duplicate: '复制',
mermaid: {
handDrawn: '手绘',
classic: '经典',
},
duplicateTitle: '复制应用',
export: '导出 DSL',
exportFailed: '导出 DSL 失败',
importDSL: '导入 DSL 文件',
createFromConfigFile: '通过 DSL 文件创建',
importFromDSL: '导入 DSL',
importFromDSLFile: '文件',
importFromDSLUrl: 'URL',
importFromDSLUrlPlaceholder: '输入 DSL 文件的 URL',
dslUploader: {
button: '拖拽文件至此,或者',
browse: '选择文件',
},
deleteAppConfirmTitle: '确认删除应用?',
deleteAppConfirmContent:
'删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。',
appDeleted: '应用已删除',
appDeleteFailed: '应用删除失败',
join: '参与社区',
communityIntro: '与团队成员、贡献者和开发者在不同频道中交流',
roadmap: '产品路线图',
newApp: {
learnMore: '了解更多',
startFromBlank: '创建空白应用',
startFromTemplate: '从应用模板创建',
foundResult: '{{count}} 个结果',
foundResults: '{{count}} 个结果',
noAppsFound: '未找到应用',
noTemplateFound: '未找到模板',
noTemplateFoundTip: '请尝试使用不同的关键字进行搜索。',
chatbotShortDescription: '简单配置即可构建基于 LLM 的对话机器人',
chatbotUserDescription: '通过简单的配置快速搭建一个基于 LLM 的对话机器人。支持切换为 Chatflow 编排。',
completionShortDescription: '用于文本生成任务的 AI 助手',
completionUserDescription: '通过简单的配置快速搭建一个面向文本生成类任务的 AI 助手。',
agentShortDescription: '具备推理与自主工具调用的智能助手',
agentUserDescription: '能够迭代式的规划推理、自主工具调用,直至完成任务目标的智能助手。',
workflowShortDescription: '面向单轮自动化任务的编排工作流',
workflowUserDescription: '基于工作流编排,适用于自动化、批处理等单轮生成类任务的场景。',
workflowWarning: '正在进行 Beta 测试',
advancedShortDescription: '支持记忆的复杂多轮对话工作流',
advancedUserDescription: '基于工作流编排,适用于定义等复杂流程的多轮对话场景,具有记忆功能。',
chooseAppType: '选择应用类型',
forBeginners: '新手适用',
forAdvanced: '进阶用户适用',
noIdeaTip: '没有想法?试试我们的模板',
captionName: '应用名称 & 图标',
appNamePlaceholder: '给你的应用起个名字',
optional: '可选',
captionDescription: '描述',
appDescriptionPlaceholder: '输入应用的描述',
useTemplate: '使用该模板',
previewDemo: '预览 Demo',
chatApp: '助手',
chatAppIntro:
'我要构建一个聊天场景的应用。该应用采用一问一答模式与用户持续对话。',
agentAssistant: '新的智能助手',
completeApp: '文本生成应用',
completeAppIntro:
'我要构建一个根据提示生成高质量文本的应用,例如生成文章、摘要、翻译等',
showTemplates: '我想从范例模板中选择',
hideTemplates: '返回应用类型选择',
Create: '创建',
Cancel: '取消',
Confirm: '确认',
import: '导入',
nameNotEmpty: '名称不能为空',
appTemplateNotSelected: '请选择应用模板',
appTypeRequired: '请选择应用类型',
appCreated: '应用已创建',
caution: '注意',
appCreateDSLWarning: '注意DSL 版本差异可能影响部分功能表现',
appCreateDSLErrorTitle: '版本不兼容',
appCreateDSLErrorPart1: '检测到 DSL 版本差异较大,强制导入应用可能无法正常运行。',
appCreateDSLErrorPart2: '是否继续?',
appCreateDSLErrorPart3: '当前应用 DSL 版本:',
appCreateDSLErrorPart4: '系统支持 DSL 版本:',
appCreateFailed: '应用创建失败',
dropDSLToCreateApp: '拖放 DSL 文件到此处创建应用',
},
newAppFromTemplate: {
byCategories: '分类',
searchAllTemplate: '搜索所有模板...',
sidebar: {
Recommended: '推荐',
Agent: 'Agent',
Assistant: '助手',
HR: '人力资源',
Workflow: '工作流',
Writing: '写作',
Programming: '编程',
},
},
editApp: '编辑信息',
editAppTitle: '编辑应用信息',
editDone: '应用信息已更新',
editFailed: '更新应用信息失败',
iconPicker: {
ok: '确认',
cancel: '取消',
emoji: '表情符号',
image: '图片',
},
answerIcon: {
title: '使用 web app 图标替换 🤖',
description: '是否使用 web app 图标替换分享的应用界面中的 🤖',
descriptionInExplore: '是否使用 web app 图标替换 Explore 界面中的 🤖',
},
switch: '迁移为工作流编排',
switchTipStart: '将为您创建一个使用工作流编排的新应用。新应用将',
switchTip: '不能够',
switchTipEnd: '迁移回基础编排',
switchLabel: '新应用创建为',
removeOriginal: '删除原应用',
switchStart: '开始迁移',
typeSelector: {
all: '所有类型',
chatbot: '聊天助手',
agent: 'Agent',
workflow: '工作流',
completion: '文本生成',
advanced: 'Chatflow',
},
tracing: {
title: '追踪应用性能',
description: '配置第三方 LLMOps 提供商并跟踪应用程序性能。',
config: '配置',
view: '查看',
collapse: '折叠',
expand: '展开',
tracing: '追踪',
disabled: '已禁用',
disabledTip: '请先配置提供商',
enabled: '已启用',
tracingDescription: '捕获应用程序执行的完整上下文,包括 LLM 调用、上下文、提示、HTTP 请求等,发送到第三方跟踪平台。',
configProviderTitle: {
configured: '已配置',
notConfigured: '配置提供商以启用追踪',
moreProvider: '更多提供商',
},
arize: {
title: 'Arize',
description: '企业级LLM可观测性、在线和离线评估、监控和实验平台基于OpenTelemetry构建专为LLM和代理驱动的应用程序设计。',
},
phoenix: {
title: 'Phoenix',
description: '开源且基于OpenTelemetry的可观测性、评估、提示工程和实验平台适用于您的LLM工作流程和代理。',
},
langsmith: {
title: 'LangSmith',
description: '一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。',
},
langfuse: {
title: 'Langfuse',
description: '跟踪、评估、提示管理和指标,以调试和改进您的 LLM 应用程序。',
},
opik: {
title: 'Opik',
description: '一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。',
},
inUse: '使用中',
configProvider: {
title: '配置 ',
placeholder: '输入你的{{key}}',
project: '项目',
publicKey: '公钥',
secretKey: '密钥',
viewDocsLink: '查看 {{key}} 的文档',
removeConfirmTitle: '删除 {{key}} 配置?',
removeConfirmContent: '当前配置正在使用中,删除它将关闭追踪功能。',
clientSecret: 'OAuth 客户端密钥',
trackingUri: '跟踪 URI',
password: '密码',
databricksHost: 'Databricks 工作区 URL',
username: '用户名',
clientId: 'OAuth 客户端 ID',
experimentId: '实验编号',
personalAccessToken: '个人访问令牌(旧版)',
},
weave: {
title: '编织',
description: 'Weave 是一个开源平台,用于评估、测试和监控大型语言模型应用程序。',
},
aliyun: {
title: '云监控',
description: '阿里云提供的全托管免运维可观测平台一键开启Dify应用的监控追踪和评估',
},
mlflow: {
title: 'MLflow',
description: '开源LLMOps平台提供实验跟踪、可观测性和评估功能帮助您自信地构建AI/LLM应用。',
},
databricks: {
title: 'Databricks',
description: 'Databricks提供完全托管的MLflow具有强大的治理和安全功能用于存储跟踪数据。',
},
tencent: {
title: '腾讯云 APM',
description: '腾讯云应用性能监控,提供 LLM 应用全链路追踪和多维分析',
},
},
appSelector: {
label: '应用',
placeholder: '选择一个应用',
params: '应用参数',
noParams: '无需参数',
},
openInExplore: '在“探索”中打开',
showMyCreatedAppsOnly: '我创建的',
structOutput: {
moreFillTip: '最多显示 10 级嵌套',
required: '必填',
LLMResponse: 'LLM 的响应',
configure: '配置',
notConfiguredTip: '结构化输出尚未配置',
structured: '结构化输出',
structuredTip: '结构化输出是一项功能,可确保模型始终生成符合您提供的 JSON 模式的响应',
modelNotSupported: '模型不支持',
modelNotSupportedTip: '当前模型不支持此功能,将自动降级为提示注入。',
},
accessControl: 'Web 应用访问控制',
accessItemsDescription: {
anyone: '任何人都可以访问该 web 应用(无需登录)',
specific: '仅指定的平台内成员可访问该 Web 应用',
organization: '平台内所有成员均可访问该 Web 应用',
external: '仅经认证的外部用户可访问该 Web 应用',
},
accessControlDialog: {
title: 'Web 应用访问权限',
description: '设置 web 应用访问权限。',
accessLabel: '谁可以访问',
accessItems: {
anyone: '任何人',
specific: '平台内指定成员',
organization: '平台内所有成员',
external: '经认证的外部用户',
},
groups_one: '{{count}} 个组',
groups_other: '{{count}} 个组',
members_one: '{{count}} 个成员',
members_other: '{{count}} 个成员',
noGroupsOrMembers: '未选择分组或成员',
webAppSSONotEnabledTip: '请联系企业管理员配置 Web 应用外部认证方式。',
operateGroupAndMember: {
searchPlaceholder: '搜索组或成员',
allMembers: '所有成员',
expand: '展开',
noResult: '没有结果',
},
updateSuccess: '更新成功',
},
publishApp: {
title: '谁可以访问 web 应用',
notSet: '未设置',
notSetDesc: '当前任何人都无法访问 Web 应用。请设置访问权限。',
},
noAccessPermission: '没有权限访问 web 应用',
noUserInputNode: '缺少用户输入节点',
notPublishedYet: '应用暂未发布',
maxActiveRequests: '最大活跃请求数',
maxActiveRequestsPlaceholder: '0 表示不限制',
maxActiveRequestsTip: '当前应用的最大活跃请求数0 表示不限制)',
gotoAnything: {
searchPlaceholder: '搜索或输入 @ 或 / 以使用命令...',
searchTitle: '搜索任何内容',
searching: '搜索中...',
noResults: '未找到结果',
searchFailed: '搜索失败',
searchTemporarilyUnavailable: '搜索暂时不可用',
servicesUnavailableMessage: '某些搜索服务可能遇到问题,请稍后再试。',
someServicesUnavailable: '某些搜索服务不可用',
resultCount: '{{count}} 个结果',
resultCount_other: '{{count}} 个结果',
inScope: '在 {{scope}}s 中',
clearToSearchAll: '清除 @ 以搜索全部',
useAtForSpecific: '使用 @ 进行特定类型搜索',
selectToNavigate: '选择以导航',
startTyping: '开始输入以搜索',
tips: '按 ↑↓ 导航',
pressEscToClose: '按 ESC 关闭',
selectSearchType: '选择搜索内容',
searchHint: '开始输入即可立即搜索所有内容',
commandHint: '输入 @ 按类别浏览',
slashHint: '输入 / 查看所有可用命令',
actions: {
searchApplications: '搜索应用程序',
searchApplicationsDesc: '搜索并导航到您的应用程序',
searchPlugins: '搜索插件',
searchPluginsDesc: '搜索并导航到您的插件',
searchKnowledgeBases: '搜索知识库',
searchKnowledgeBasesDesc: '搜索并导航到您的知识库',
searchWorkflowNodes: '搜索工作流节点',
searchWorkflowNodesDesc: '按名称或类型查找并跳转到当前工作流中的节点',
searchWorkflowNodesHelp: '此功能仅在查看工作流时有效。首先导航到工作流。',
runTitle: '命令',
runDesc: '快速执行命令(主题、语言等)',
themeCategoryTitle: '主题',
themeCategoryDesc: '切换应用主题',
themeSystem: '系统主题',
themeSystemDesc: '跟随系统外观',
themeLight: '浅色主题',
themeLightDesc: '使用浅色外观',
themeDark: '深色主题',
themeDarkDesc: '使用深色外观',
languageCategoryTitle: '语言',
languageCategoryDesc: '切换界面语言',
languageChangeDesc: '更改界面语言',
slashDesc: '执行命令(输入 / 查看所有可用命令)',
accountDesc: '导航到账户页面',
communityDesc: '打开 Discord 社区',
docDesc: '打开帮助文档',
feedbackDesc: '打开社区反馈讨论',
},
emptyState: {
noAppsFound: '未找到应用',
noPluginsFound: '未找到插件',
noKnowledgeBasesFound: '未找到知识库',
noWorkflowNodesFound: '未找到工作流节点',
tryDifferentTerm: '尝试不同的搜索词',
trySpecificSearch: '尝试使用 {{shortcuts}} 进行特定搜索',
},
groups: {
apps: '应用程序',
plugins: '插件',
knowledgeBases: '知识库',
workflowNodes: '工作流节点',
commands: '命令',
},
noMatchingCommands: '未找到匹配的命令',
tryDifferentSearch: '请尝试不同的搜索词',
},
}
export default translation

View File

@@ -0,0 +1,222 @@
const translation = {
currentPlan: '当前套餐',
usagePage: {
teamMembers: '团队成员',
buildApps: '构建应用程序数',
annotationQuota: '标注回复数',
documentsUploadQuota: '文档上传配额',
vectorSpace: '知识库数据存储空间',
vectorSpaceTooltip: '采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。',
triggerEvents: '触发器事件数',
perMonth: '每月',
resetsIn: '{{count,number}} 天后重置',
},
triggerLimitModal: {
title: '升级以解锁更多触发器事件数',
description: '您已达到此计划上工作流的触发器事件数限制。',
dismiss: '知道了',
upgrade: '升级',
usageTitle: '触发事件额度',
},
upgradeBtn: {
plain: '查看套餐',
encourage: '立即升级',
encourageShort: '升级',
},
viewBilling: '管理账单及订阅',
buyPermissionDeniedTip: '请联系企业管理员订阅',
plansCommon: {
title: {
plans: '套餐',
description: '选择最适合您团队需求的套餐。',
},
freeTrialTipPrefix: '注册即可',
freeTrialTip: '免费试用 200 个 OpenAI 消息额度',
freeTrialTipSuffix: '。无需信用卡',
yearlyTip: '支付 10 个月,享受 1 年!',
mostPopular: '最受欢迎',
cloud: '云服务',
self: '自部署',
planRange: {
monthly: '按月',
yearly: '按年',
},
month: '月',
year: '年',
save: '节省',
free: '免费',
annualBilling: '按年计费节省 {{percent}}%',
taxTip: '所有订阅价格(按月/按年)均不含适用税费(如增值税、销售税)。',
taxTipSecond: '如果您所在地区无适用税费要求,结账时将不会显示税费,且在整个订阅周期内您都无需支付任何额外费用。',
comparePlanAndFeatures: '对比套餐 & 功能特性',
priceTip: '每个团队空间/',
currentPlan: '当前计划',
contractSales: '联系销售',
contractOwner: '联系团队管理员',
startForFree: '免费开始',
startBuilding: '开始构建',
getStarted: '立即开始',
contactSales: '联系销售',
talkToSales: '联系销售',
modelProviders: '支持 OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate',
teamWorkspace: '{{count,number}} 个团队空间',
teamMember_one: '{{count,number}} 名团队成员',
teamMember_other: '{{count,number}} 名团队成员',
annotationQuota: '标注回复数',
buildApps: '{{count, number}} 个应用程序',
documents: '{{count, number}} 个知识库文档上传配额',
documentsTooltip: '从知识库的数据源导入的文档数量配额。',
vectorSpace: '{{size}} 知识库数据存储空间',
vectorSpaceTooltip: '采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。',
documentsRequestQuota: '{{count,number}} 知识请求/分钟',
documentsRequestQuotaTooltip: '指每分钟内一个空间在知识库中可执行的操作总数包括数据集的创建、删除、更新文档的上传、修改、归档以及知识库查询等用于评估知识库请求的性能。例如Sandbox 用户在 1 分钟内连续执行 10 次命中测试,其工作区将在接下来的 1 分钟内无法继续执行以下操作:数据集的创建、删除、更新,文档的上传、修改等操作。',
apiRateLimit: 'API 请求频率限制',
apiRateLimitUnit: '{{count,number}} 次',
unlimitedApiRate: 'API 请求频率无限制',
apiRateLimitTooltip: 'API 请求频率限制涵盖所有通过 Dify API 发起的调用,例如文本生成、聊天对话、工作流执行和文档处理等。',
documentProcessingPriority: '文档处理',
documentProcessingPriorityUpgrade: '以更快的速度、更高的精度处理更多的数据。',
priority: {
'standard': '标准',
'priority': '优先',
'top-priority': '最高优先级',
},
triggerEvents: {
sandbox: '{{count,number}} 触发器事件数',
professional: '{{count,number}} 触发器事件数/月',
unlimited: '无限触发器事件数',
tooltip: '通过插件、定时触发器、Webhook 等来自动触发工作流的事件数。',
},
workflowExecution: {
standard: '标准工作流执行队列',
faster: '快速工作流执行队列',
priority: '高优先级工作流执行队列',
tooltip: '工作流的执行队列优先级与运行速度。',
},
startNodes: {
limited: '最多 {{count}} 个触发器/工作流',
unlimited: '无限制的触发器/工作流',
},
logsHistory: '{{days}}日志历史',
customTools: '自定义工具',
unavailable: '不可用',
days: '天',
unlimited: '无限制',
support: '支持',
supportItems: {
communityForums: '社区论坛',
emailSupport: '电子邮件支持',
priorityEmail: '优先电子邮件和聊天支持',
logoChange: 'Logo 更改',
SSOAuthentication: 'SSO 认证',
personalizedSupport: '个性化支持',
dedicatedAPISupport: '专用 API 支持',
customIntegration: '自定义集成和支持',
ragAPIRequest: 'RAG API 请求',
bulkUpload: '批量上传文档',
agentMode: '代理模式',
workflow: '工作流',
llmLoadingBalancing: 'LLM 负载均衡',
llmLoadingBalancingTooltip: '向模型添加多个 API 密钥,有效绕过 API 速率限制。',
},
comingSoon: '即将推出',
member: '成员',
memberAfter: '个成员',
messageRequest: {
title: '{{count,number}} 条消息额度',
titlePerMonth: '{{count,number}} 条消息额度/月',
tooltip: '消息额度旨在帮助您便捷地试用 Dify 中的各类 OpenAI 模型。不同模型会消耗不同额度。额度用尽后,您可以切换为使用自己的 OpenAI API 密钥。',
},
annotatedResponse: {
title: '{{count,number}} 个标注回复数',
tooltip: '标注回复功能通过人工编辑标注为应用提供了可定制的高质量问答回复能力。',
},
ragAPIRequestTooltip: '指单独调用 Dify 知识库数据处理能力的 API。',
receiptInfo: '只有团队所有者和团队管理员才能订阅和查看账单信息',
},
plans: {
sandbox: {
name: 'Sandbox',
for: '核心能力的免费试用',
description: '免费试用核心功能。',
},
professional: {
name: 'Professional',
for: '适合独立开发者或小团队',
description: '适合准备构建生产级 AI 应用的独立开发者和小团队。',
},
team: {
name: 'Team',
for: '适合中等规模的团队',
description: '适合需要协作和更高吞吐量的中等规模团队。',
},
community: {
name: 'Community',
for: '适用于个人用户、小型团队或非商业项目',
description: '适用于开源爱好者、个人开发者以及非商业项目',
price: '免费',
btnText: '开始使用',
includesTitle: '免费功能:',
features: [
'所有核心功能均在公共存储库下发布',
'单一工作空间',
'符合 Dify 开源许可证',
],
},
premium: {
name: 'Premium',
for: '对于中型组织和团队',
description: '适合需要部署灵活性和增强支持的中型组织和团队',
price: '可扩展',
priceTip: '基于云市场',
btnText: '获得 Premium 版',
includesTitle: 'Community 版的所有功能,加上:',
comingSoon: '即将支持 Microsoft Azure & Google Cloud',
features: [
'各个云提供商自行管理的可靠性',
'单一工作空间',
'自定义 WebApp & 品牌',
'优先电子邮件 & 聊天支持',
],
},
enterprise: {
name: 'Enterprise',
for: '适合大人员规模的团队',
description: '适合需要组织级安全性、合规性、可扩展性、控制和定制解决方案的企业',
price: '定制',
priceTip: '仅按年计费',
btnText: '联系销售',
includesTitle: '<highlight>Premium</highlight> 版的所有功能,加上:',
features: [
'企业级可扩展部署解决方案',
'商业许可授权',
'专属企业级功能',
'多个工作空间 & 企业级管理',
'SSO',
'由 Dify 合作伙伴支持的可协商的 SLAs',
'高级的安全 & 控制',
'由 Dify 官方提供的更新 & 维护',
'专业技术支持',
],
},
},
vectorSpace: {
fullTip: '知识库数据存储空间已满。',
fullSolution: '升级您的套餐以获得更多空间。',
},
apps: {
fullTip1: '升级以创建更多应用',
fullTip1des: '您已达到此计划上构建应用的限制',
fullTip2: '计划限制已达到',
fullTip2des: '推荐您清理不活跃的应用或者联系我们',
contactUs: '联系我们',
},
annotatedResponse: {
fullTipLine1: '升级您的套餐以',
fullTipLine2: '标注更多对话。',
quotaTitle: '标注的配额',
},
teamMembers: '团队成员',
}
export default translation

View File

@@ -0,0 +1,788 @@
const translation = {
theme: {
theme: '主题',
light: '浅色',
dark: '深色',
auto: '自动',
},
api: {
success: '成功',
actionSuccess: '操作成功',
saved: '已保存',
create: '已创建',
remove: '已移除',
},
operation: {
create: '创建',
confirm: '确认',
cancel: '取消',
clear: '清空',
save: '保存',
yes: '是',
no: '否',
deleteConfirmTitle: '删除?',
confirmAction: '请确认您的操作。',
saveAndEnable: '保存并启用',
edit: '编辑',
add: '添加',
added: '已添加',
refresh: '重新开始',
reset: '重置',
search: '搜索',
noSearchResults: '没有找到{{content}}',
resetKeywords: '重置关键词',
selectCount: '已选择 {{count}} 项',
searchCount: '找到 {{count}} 个 {{content}}',
noSearchCount: '0 个 {{content}}',
change: '更改',
remove: '移除',
send: '发送',
copy: '复制',
copied: ' 已复制',
lineBreak: '换行',
sure: '我确定',
download: '下载',
downloadSuccess: '下载完毕',
downloadFailed: '下载失败,请稍后重试。',
viewDetails: '查看详情',
delete: '删除',
deleteApp: '删除应用',
settings: '设置',
setup: '设置',
config: '配置',
getForFree: '免费获取',
reload: '刷新',
ok: '好的',
log: '日志',
learnMore: '了解更多',
params: '参数设置',
duplicate: '复制',
rename: '重命名',
audioSourceUnavailable: '音源不可用',
copyImage: '复制图片',
imageCopied: '图片已复制',
zoomOut: '缩小',
zoomIn: '放大',
openInNewTab: '在新标签页打开',
in: '在',
saveAndRegenerate: '保存并重新生成子分段',
close: '关闭',
view: '查看',
viewMore: '查看更多',
regenerate: '重新生成',
submit: '提交',
skip: '跳过',
format: '格式化',
more: '更多',
selectAll: '全选',
deSelectAll: '取消全选',
now: '现在',
},
errorMsg: {
fieldRequired: '{{field}} 为必填项',
urlError: 'url 应该以 http:// 或 https:// 开头',
},
placeholder: {
input: '请输入',
select: '请选择',
search: '搜索...',
},
noData: '暂无数据',
label: {
optional: '(可选)',
},
voice: {
language: {
zhHans: '中文',
zhHant: '繁体中文',
enUS: '英语',
deDE: '德语',
frFR: '法语',
esES: '西班牙语',
itIT: '意大利语',
thTH: '泰语',
idID: '印尼语',
jaJP: '日语',
koKR: '韩语',
ptBR: '葡萄牙语',
ruRU: '俄语',
ukUA: '乌克兰语',
viVN: '越南语',
plPL: '波兰语',
roRO: '罗马尼亚语',
hiIN: '印地语',
trTR: '土耳其语',
faIR: '波斯语',
},
},
unit: {
char: '个字符',
},
actionMsg: {
noModification: '暂无修改',
modifiedSuccessfully: '修改成功',
modifiedUnsuccessfully: '修改失败',
copySuccessfully: '复制成功',
generatedSuccessfully: '已重新生成',
generatedUnsuccessfully: '生成失败',
paySucceeded: '已支付成功',
payCancelled: '已取消支付',
},
model: {
params: {
temperature: '随机性 temperature',
temperatureTip:
'控制回复的随机性。\n值越大回复越随机。\n值越小回复越确定或一致。',
top_p: '核采样 top_p',
top_pTip:
'控制生成多样性。\n值越大输出会包括更多的单词选项。\n值越小模型会更集中在高概率的单词上输出更确定但可能缺乏多样性。\n核采样和随机性不建议同时修改。',
presence_penalty: '话题新鲜度 presence_penalty',
presence_penaltyTip:
'控制生成时对上文已存在的话题的偏好程度。\n值越大越可能使用到新的话题。',
frequency_penalty: '频率惩罚度 frequency_penalty',
frequency_penaltyTip:
'影响常见与罕见词汇使用。\n值较大时倾向于生成不常见的词汇和表达方式。\n值越小更倾向于使用常见和普遍接受的词汇或短语。',
max_tokens: '单次回复限制 max_tokens',
max_tokensTip:
'用于限制回复的最大长度,以 token 为单位。\n较大的值可能会限制给提示词、聊天记录和知识库留出的空间。\n建议将其设置在三分之二以下。\ngpt-4-1106-preview、gpt-4-vision-preview 最大长度 (输入 128k输出 4k)',
maxTokenSettingTip: '您设置的最大 tokens 数较大,可能会导致 prompt、用户问题、知识库内容没有 token 空间进行处理,建议设置到 2/3 以下。',
setToCurrentModelMaxTokenTip: '最大令牌数更新为当前模型最大的令牌数 {{maxToken}} 的 80%。',
stop_sequences: '停止序列 stop_sequences',
stop_sequencesTip: '最多四个序列API 将停止生成更多的 token。返回的文本将不包含停止序列。',
stop_sequencesPlaceholder: '输入序列并按 Tab 键',
},
tone: {
Creative: '创意',
Balanced: '平衡',
Precise: '精确',
Custom: '自定义',
},
addMoreModel: '添加更多模型',
settingsLink: '模型设置',
capabilities: '多模态能力',
},
menus: {
status: 'beta',
explore: '探索',
apps: '工作室',
appDetail: '应用详情',
account: '账户',
plugins: '插件',
exploreMarketplace: '探索 Marketplace',
pluginsTips: '集成第三方插件或创建与 ChatGPT 兼容的 AI 插件。',
datasets: '知识库',
datasetsTips: '即将到来:上传自己的长文本数据,或通过 Webhook 集成自己的数据源',
newApp: '创建应用',
newDataset: '创建知识库',
tools: '工具',
},
userProfile: {
settings: '设置',
emailSupport: '邮件支持',
workspace: '工作空间',
createWorkspace: '创建工作空间',
helpCenter: '查看帮助文档',
support: '支持',
compliance: '合规',
forum: '论坛',
roadmap: '路线图',
github: 'GitHub',
community: '社区',
about: '关于',
logout: '登出',
contactUs: '联系我们',
},
compliance: {
soc2Type1: 'SOC 2 Type I Report',
soc2Type2: 'SOC 2 Type II Report',
iso27001: 'ISO 27001:2022 Certification',
gdpr: 'GDPR DPA',
sandboxUpgradeTooltip: '仅适用于 Professional 或 Team 版计划。',
professionalUpgradeTooltip: '仅适用于 Team 版计划或以上。',
},
settings: {
accountGroup: '通用',
workplaceGroup: '工作空间',
generalGroup: '通用',
account: '我的账户',
members: '成员',
billing: '账单',
integrations: '集成',
language: '语言',
provider: '模型供应商',
dataSource: '数据来源',
plugin: '插件',
apiBasedExtension: 'API 扩展',
},
account: {
account: '账户',
myAccount: '我的账户',
studio: '工作室',
avatar: '头像',
name: '用户名',
email: '邮箱',
password: '密码',
passwordTip: '如果您不想使用验证码登录,可以设置永久密码',
setPassword: '设置密码',
resetPassword: '重置密码',
currentPassword: '原密码',
newPassword: '新密码',
notEqual: '两个密码不相同',
confirmPassword: '确认密码',
langGeniusAccount: '账号关联数据',
langGeniusAccountTip: '您的账号相关的用户数据。',
editName: '编辑名字',
showAppLength: '显示 {{length}} 个应用',
delete: '删除账户',
deleteTip: '请注意,一旦确认,作为任何空间的所有者,您的空间将被安排进入永久删除队列,您的所有用户数据也将被排入永久删除队列。',
deletePrivacyLinkTip: '有关我们如何处理您的数据的更多信息,请参阅我们的',
deletePrivacyLink: '隐私政策',
deleteSuccessTip: '删除账户需要一些时间。完成后,我们会通过邮件通知您。',
deleteLabel: '请输入您的邮箱以确认',
deletePlaceholder: '输入您的邮箱...',
sendVerificationButton: '发送验证码',
verificationLabel: '验证码',
verificationPlaceholder: '输入 6 位数字验证码',
permanentlyDeleteButton: '永久删除',
feedbackTitle: '反馈',
feedbackLabel: '请告诉我们您为什么删除账户?',
feedbackPlaceholder: '选填',
editWorkspaceInfo: '编辑工作空间信息',
workspaceName: '工作空间名称',
workspaceIcon: '工作空间图标',
changeEmail: {
title: '更改邮箱',
verifyEmail: '验证当前邮箱',
newEmail: '设置新邮箱',
verifyNew: '验证新邮箱',
authTip: '一旦您的电子邮件地址更改,链接到您旧电子邮件地址的 Google 或 GitHub 帐户将无法再登录该帐户。',
content1: '如果您继续,我们将向 <email>{{email}}</email> 发送验证码以进行重新验证。',
content2: '你的当前邮箱是 <email>{{email}}</email> 。验证码已发送至该邮箱。',
content3: '输入新的邮箱,我们将向您发送验证码。',
content4: '我们已将验证码发送至 <email>{{email}}</email>。',
codeLabel: '验证码',
codePlaceholder: '输入 6 位数字验证码',
emailLabel: '新邮箱',
emailPlaceholder: '输入新邮箱',
existingEmail: '该邮箱已存在',
unAvailableEmail: '该邮箱暂时无法使用。',
sendVerifyCode: '发送验证码',
continue: '继续',
changeTo: '更改为 {{email}}',
resendTip: '没有收到验证码?',
resendCount: '请在 {{count}} 秒后重新发送',
resend: '重新发送',
},
},
members: {
team: '团队',
invite: '添加',
name: '姓名',
lastActive: '上次活动时间',
role: '角色',
pending: '待定...',
owner: '所有者',
admin: '管理员',
adminTip: '能够建立应用程序和管理团队设置',
normal: '成员',
normalTip: '只能使用应用程序,不能建立应用程序',
editor: '编辑',
editorTip: '能够建立并编辑应用程序,不能管理团队设置',
datasetOperator: '知识库管理员',
datasetOperatorTip: '只能管理知识库',
inviteTeamMember: '添加团队成员',
inviteTeamMemberTip: '对方在登录后可以访问你的团队数据。',
emailNotSetup: '由于邮件服务器未设置,无法发送邀请邮件。请将邀请后生成的邀请链接通知用户。',
email: '邮箱',
emailInvalid: '邮箱格式无效',
emailPlaceholder: '输入邮箱',
sendInvite: '发送邀请',
invitedAsRole: '邀请为{{role}}用户',
invitationSent: '邀请已发送',
invitationSentTip: '邀请已发送,对方登录 Dify 后即可访问你的团队数据。',
invitationLink: '邀请链接',
failedInvitationEmails: '邀请以下邮箱失败',
ok: '好的',
removeFromTeam: '移出团队',
removeFromTeamTip: '将取消团队访问',
setAdmin: '设为管理员',
setMember: '设为普通成员',
setEditor: '设为编辑',
disInvite: '取消邀请',
deleteMember: '删除成员',
you: '(你)',
builderTip: '可以构建和编辑自己的应用程序',
setBuilder: 'Set as builder设置为构建器',
builder: '构建器',
transferOwnership: '转移所有权',
transferModal: {
title: '转移工作空间所有权',
warning: '您即将转移 “{{workspace}}”的所有权。该操作将立即生效,且无法撤销。',
warningTip: '您将成为管理员成员,新所有者将拥有完全控制权。',
sendTip: '如果您继续,我们将向 <email>{{email}}</email> 发送验证码以进行身份认证。',
verifyEmail: '验证您当前的邮箱',
verifyContent: '您当前的邮箱是 <email>{{email}}</email>。',
verifyContent2: '我们将向该邮箱发送临时验证码以完成身份验证。',
codeLabel: '验证码',
codePlaceholder: '输入 6 位数字验证码',
resendTip: '没有收到验证码?',
resendCount: '请在 {{count}} 秒后重新发送',
resend: '重新发送',
transferLabel: '新所有者',
transferPlaceholder: '选择一个成员',
sendVerifyCode: '发送验证码',
continue: '继续',
transfer: '转移工作空间所有权',
},
},
integrations: {
connected: '登录方式',
google: 'Google',
googleAccount: 'Google 账号登录',
github: 'GitHub',
githubAccount: 'GitHub 账号登录',
connect: '绑定',
},
language: {
displayLanguage: '界面语言',
timezone: '时区',
},
provider: {
apiKey: 'API 密钥',
enterYourKey: '输入你的 API 密钥',
invalidKey: '无效的 OpenAI API 密钥',
validatedError: '校验失败:',
validating: '验证密钥中...',
saveFailed: 'API 密钥保存失败',
apiKeyExceedBill: '此 API KEY 已没有可用配额,请阅读',
addKey: '添加 密钥',
comingSoon: '即将推出',
editKey: '编辑',
invalidApiKey: '无效的 API 密钥',
azure: {
apiBase: 'API Base',
apiBasePlaceholder: '输入您的 Azure OpenAI API Base 地址',
apiKey: 'API Key',
apiKeyPlaceholder: '输入你的 API 密钥',
helpTip: '了解 Azure OpenAI Service',
},
openaiHosted: {
openaiHosted: '托管 OpenAI',
onTrial: '体验',
exhausted: '超出限额',
desc: '托管 OpenAI 由 Dify 提供的托管 OpenAI 服务,你可以使用 GPT-3.5 等模型,在体验额度消耗完毕前你需要设置其它模型供应商。',
callTimes: '调用次数',
usedUp: '试用额度已用完,请在下方添加自己的模型供应商',
useYourModel: '当前正在使用你自己的模型供应商。',
close: '关闭',
},
anthropicHosted: {
anthropicHosted: 'Anthropic Claude',
onTrial: '体验',
exhausted: '超出限额',
desc: '功能强大的模型,擅长执行从复杂对话和创意内容生成到详细指导的各种任务。',
callTimes: '调用次数',
usedUp: '试用额度已用完,请在下方添加自己的模型供应商',
useYourModel: '当前正在使用你自己的模型供应商。',
close: '关闭',
trialQuotaTip: '您的 Anthropic 体验额度将于 2025/03/17 过期,过期后将无法使用,请尽快体验。',
},
anthropic: {
using: '嵌入能力正在使用',
enableTip: '要启用 Anthropic 模型,您需要先绑定 OpenAI 或 Azure OpenAI 服务。',
notEnabled: '未启用',
keyFrom: '从 Anthropic 获取您的 API 密钥',
},
encrypted: {
front: '密钥将使用 ',
back: ' 技术进行加密和存储。',
},
},
modelProvider: {
notConfigured: '系统模型尚未完全配置',
systemModelSettings: '系统模型设置',
systemModelSettingsLink: '为什么需要设置系统模型?',
selectModel: '选择您的模型',
setupModelFirst: '请先设置您的模型',
systemReasoningModel: {
key: '系统推理模型',
tip: '设置创建应用使用的默认推理模型,以及对话名称生成、下一步问题建议等功能也会使用该默认推理模型。',
},
embeddingModel: {
key: 'Embedding 模型',
tip: '设置知识库文档嵌入处理的默认模型,检索和导入知识库均使用该 Embedding 模型进行向量化处理,切换后将导致已导入的知识库与问题之间的向量维度不一致,从而导致检索失败。为避免检索失败,请勿随意切换该模型。',
required: '请选择 Embedding 模型',
},
speechToTextModel: {
key: '语音转文本模型',
tip: '设置对话中语音转文字输入的默认使用模型。',
},
ttsModel: {
key: '文本转语音模型',
tip: '设置对话中文字转语音输出的默认使用模型。',
},
rerankModel: {
key: 'Rerank 模型',
tip: '重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果',
},
quota: '额度',
searchModel: '搜索模型',
noModelFound: '找不到模型 {{model}}',
models: '模型列表',
showMoreModelProvider: '显示更多模型提供商',
selector: {
tip: '该模型已被删除。请添模型或选择其他模型。',
emptyTip: '无可用模型',
emptySetting: '请前往设置进行配置',
rerankTip: '请设置 Rerank 模型',
},
card: {
quota: '额度',
onTrial: '试用中',
paid: '已购买',
quotaExhausted: '配额已用完',
callTimes: '调用次数',
tokens: 'Tokens',
buyQuota: '购买额度',
priorityUse: '优先使用',
removeKey: '删除 API 密钥',
tip: '已付费额度将优先考虑。试用额度将在付费额度用完后使用。',
},
item: {
deleteDesc: '{{modelName}} 被用作系统推理模型。删除后部分功能将无法使用。请确认。',
freeQuota: '免费额度',
},
addApiKey: '添加您的 API 密钥',
invalidApiKey: 'Invalid API key',
encrypted: {
front: '您的密钥将使用',
back: '技术进行加密和存储。',
},
freeQuota: {
howToEarn: '如何获取',
},
addMoreModelProvider: '添加更多模型提供商',
addModel: '添加模型',
modelsNum: '{{num}} 个模型',
showModels: '显示模型',
showModelsNum: '显示 {{num}} 个模型',
collapse: '收起',
config: '配置',
modelAndParameters: '模型及参数',
model: '模型',
featureSupported: '支持 {{feature}} 功能',
callTimes: '调用次数',
credits: '消息额度',
buyQuota: '购买额度',
getFreeTokens: '获得免费 Tokens',
priorityUsing: '优先使用',
deprecated: '已弃用',
confirmDelete: '确认删除?',
quotaTip: '剩余免费额度',
loadPresets: '加载预设',
parameters: '参数',
loadBalancing: '负载均衡',
loadBalancingDescription: '为模型配置多组凭据,并自动调用。',
loadBalancingHeadline: '负载均衡',
configLoadBalancing: '设置负载均衡',
modelHasBeenDeprecated: '该模型已废弃',
providerManaged: '由模型供应商管理',
providerManagedDescription: '使用模型供应商提供的单组凭据',
defaultConfig: '默认配置',
apiKeyStatusNormal: 'API Key 正常',
apiKeyRateLimit: '已达频率上限,{{seconds}}秒后恢复',
addConfig: '增加配置',
editConfig: '修改配置',
loadBalancingLeastKeyWarning: '至少启用 2 个 Key 以使用负载均衡',
loadBalancingInfo: '默认情况下,负载均衡使用 Round-robin 策略。如果触发速率限制,将应用 1 分钟的冷却时间',
upgradeForLoadBalancing: '升级以解锁负载均衡功能',
apiKey: 'API 密钥',
toBeConfigured: '待配置',
configureTip: '请配置 API 密钥,添加模型。',
installProvider: '安装模型供应商',
installDataSourceProvider: '安装数据源供应商',
discoverMore: '发现更多就在',
emptyProviderTitle: '尚未安装模型供应商',
emptyProviderTip: '请安装模型供应商。',
auth: {
unAuthorized: '未授权',
authRemoved: '授权已移除',
apiKeys: 'API 密钥',
addApiKey: '添加 API 密钥',
addModel: '添加模型',
addNewModel: '添加新模型',
addCredential: '添加凭据',
addModelCredential: '添加模型凭据',
editModelCredential: '编辑模型凭据',
modelCredentials: '模型凭据',
modelCredential: '模型凭据',
configModel: '配置模型',
configLoadBalancing: '配置负载均衡',
authorizationError: '授权错误',
specifyModelCredential: '指定模型凭据',
specifyModelCredentialTip: '使用已配置的模型凭据。',
providerManaged: '由模型供应商管理',
providerManagedTip: '使用模型供应商提供的单组凭据。',
apiKeyModal: {
title: 'API 密钥授权配置',
desc: '配置凭据后,工作空间中的所有成员都可以在编排应用时使用此模型。',
addModel: '添加模型',
},
manageCredentials: '管理凭据',
customModelCredentials: '自定义模型凭据',
addNewModelCredential: '添加模型新凭据',
removeModel: '移除模型',
selectModelCredential: '选择模型凭据',
customModelCredentialsDeleteTip: '模型凭据正在使用中,无法删除',
},
parametersInvalidRemoved: '部分参数无效,已移除',
},
dataSource: {
add: '添加数据源',
connect: '绑定',
configure: '配置',
notion: {
title: 'Notion',
description: '使用 Notion 作为知识库的数据源。',
connectedWorkspace: '已绑定工作空间',
addWorkspace: '添加工作空间',
connected: '已绑定',
disconnected: '未绑定',
changeAuthorizedPages: '更改授权页面',
pagesAuthorized: '已授权页面',
sync: '同步',
remove: '删除',
selector: {
pageSelected: '已选页面',
searchPages: '搜索页面...',
noSearchResult: '无搜索结果',
addPages: '添加页面',
preview: '预览',
},
integratedAlert: 'Notion通过内部凭证集成无需重新授权。',
},
website: {
title: '网站',
description: '使用网络爬虫从网站导入内容。',
with: '使用',
configuredCrawlers: '已配置的爬虫',
active: '可用',
inactive: '不可用',
},
},
plugin: {
serpapi: {
apiKey: 'API Key',
apiKeyPlaceholder: '输入你的 API 密钥',
keyFrom: '从 SerpAPI 帐户页面获取您的 SerpAPI 密钥',
},
},
apiBasedExtension: {
title: 'API 扩展提供了一个集中式的 API 管理,在此统一添加 API 配置后,方便在 Dify 上的各类应用中直接使用。',
link: '了解如何开发您自己的 API 扩展。',
add: '新增 API 扩展',
selector: {
title: 'API 扩展',
placeholder: '请选择 API 扩展',
manage: '管理 API 扩展',
},
modal: {
title: '新增 API 扩展',
editTitle: '编辑 API 扩展',
name: {
title: '名称',
placeholder: '请输入名称',
},
apiEndpoint: {
title: 'API Endpoint',
placeholder: '请输入 API endpoint',
},
apiKey: {
title: 'API-key',
placeholder: '请输入 API-key',
lengthError: 'API-key 不能少于 5 位',
},
},
type: '类型',
},
about: {
changeLog: '更新日志',
updateNow: '现在更新',
nowAvailable: 'Dify {{version}} 现已可用。',
latestAvailable: 'Dify {{version}} 已是最新版本。',
},
appMenus: {
overview: '监测',
promptEng: '编排',
apiAccess: '访问 API',
logAndAnn: '日志与标注',
logs: '日志',
},
environment: {
testing: '测试环境',
development: '开发环境',
},
appModes: {
completionApp: '文本生成型应用',
chatApp: '对话型应用',
},
datasetMenus: {
documents: '文档',
hitTesting: '召回测试',
settings: '设置',
emptyTip: '此知识尚未集成到任何应用程序中。请参阅文档以获取指导。',
viewDoc: '查看文档',
relatedApp: '个关联应用',
noRelatedApp: '无关联应用',
pipeline: '流水线',
},
voiceInput: {
speaking: '现在讲...',
converting: '正在转换为文本...',
notAllow: '麦克风未授权',
},
modelName: {
'gpt-3.5-turbo': 'GPT-3.5-Turbo',
'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K',
'gpt-4': 'GPT-4',
'gpt-4-32k': 'GPT-4-32K',
'text-davinci-003': 'Text-Davinci-003',
'text-embedding-ada-002': 'Text-Embedding-Ada-002',
'whisper-1': 'Whisper-1',
'claude-instant-1': 'Claude-Instant',
'claude-2': 'Claude-2',
},
chat: {
renameConversation: '重命名会话',
conversationName: '会话名称',
conversationNamePlaceholder: '请输入会话名称',
conversationNameCanNotEmpty: '会话名称必填',
citation: {
title: '引用',
linkToDataset: '跳转至知识库',
characters: '字符:',
hitCount: '召回次数:',
vectorHash: '向量哈希:',
hitScore: '召回得分:',
},
inputPlaceholder: '和 {{botName}} 聊天',
thinking: '深度思考中...',
thought: '已深度思考',
resend: '重新发送',
},
promptEditor: {
placeholder: '在这里写你的提示词,输入\'{\' 插入变量、输入\'/\' 插入提示内容块',
context: {
item: {
title: '上下文',
desc: '插入上下文模板',
},
modal: {
title: '有 {{num}} 个知识库在上下文中',
add: '添加上下文',
footer: '您可以在下面的“上下文”部分中管理上下文。',
},
},
history: {
item: {
title: '会话历史',
desc: '插入历史消息模板',
},
modal: {
title: '示例',
user: '你好',
assistant: '你好!今天我能为您提供什么帮助?',
edit: '编辑对话角色名称',
},
},
variable: {
item: {
title: '变量 & 外部工具',
desc: '插入变量和外部工具',
},
outputToolDisabledItem: {
title: '变量',
desc: '插入变量',
},
modal: {
add: '添加新变量',
addTool: '添加工具',
},
},
query: {
item: {
title: '查询内容',
desc: '插入用户查询模板',
},
},
existed: 'Prompt 中已存在',
},
imageUploader: {
uploadFromComputer: '从本地上传',
uploadFromComputerReadError: '图片读取失败,请重新选择。',
uploadFromComputerUploadError: '图片上传失败,请重新上传。',
uploadFromComputerLimit: '上传图片不能超过 {{size}} MB',
pasteImageLink: '粘贴图片链接',
pasteImageLinkInputPlaceholder: '将图像链接粘贴到此处',
pasteImageLinkInvalid: '图片链接无效',
imageUpload: '图片上传',
},
fileUploader: {
uploadFromComputer: '从本地上传',
pasteFileLink: '粘贴文件链接',
pasteFileLinkInputPlaceholder: '输入文件链接',
uploadFromComputerReadError: '文件读取失败,请重新选择。',
uploadFromComputerUploadError: '文件上传失败,请重新上传。',
uploadFromComputerLimit: '上传 {{type}} 不能超过 {{size}}',
pasteFileLinkInvalid: '文件链接无效',
fileExtensionNotSupport: '文件类型不支持',
fileExtensionBlocked: '出于安全考虑,该文件类型已被禁止上传',
},
tag: {
placeholder: '全部标签',
addNew: '创建新标签',
noTag: '没有标签',
noTagYet: '还没有标签',
addTag: '添加标签',
editTag: '修改标签',
manageTags: '管理标签',
selectorPlaceholder: '搜索或者创建',
create: '创建',
delete: '删除标签',
deleteTip: '标签正在使用中,是否删除?',
created: '标签创建成功',
failed: '标签创建失败',
},
license: {
expiring: '许可证还有 1 天到期',
expiring_plural: '许可证还有 {{count}} 天到期',
unlimited: '无限制',
},
pagination: {
perPage: '每页显示',
},
avatar: {
deleteTitle: '删除头像',
deleteDescription: '确定要删除你的个人头像吗?你的账号将使用默认的首字母头像。',
},
imageInput: {
dropImageHere: '将图片拖放到此处,或',
browse: '浏览',
supportedFormats: '支持 PNG、JPG、JPEG、WEBP 和 GIF 格式',
},
you: '你',
feedback: {
content: '反馈内容',
subtitle: '请告诉我们这次回应出错的原因。',
title: '提供反馈',
placeholder: '请描述发生了什么问题或我们可以如何改进...',
},
dynamicSelect: {
error: '加载选项失败',
noData: '没有可用的选项',
loading: '加载选项...',
selected: '已选择 {{count}} 项',
},
}
export default translation

View File

@@ -0,0 +1,32 @@
const translation = {
custom: '定制',
upgradeTip: {
title: '升级您的计划',
des: '升级您的计划来定制您的品牌。',
prefix: '升级您的计划以',
suffix: '定制您的品牌。',
},
webapp: {
title: '定制 web app 品牌',
removeBrand: '移除 Powered by Dify',
changeLogo: '更改 Powered by Brand 图片',
changeLogoTip: 'SVG 或 PNG 格式,最小尺寸为 40x40px',
},
app: {
title: '定制应用品牌',
changeLogoTip: 'SVG 或 PNG 格式,最小尺寸为 80x80px',
},
upload: '上传',
uploading: '上传中',
uploadedFail: '图片上传失败,请重新上传。',
change: '更改',
apply: '应用',
restore: '恢复默认',
customize: {
contactUs: '联系我们',
prefix: '如需在 Dify 内自定义品牌图标,请',
suffix: '升级至企业版。',
},
}
export default translation

View File

@@ -0,0 +1,217 @@
const translation = {
steps: {
header: {
fallbackRoute: '知识库',
},
one: '选择数据源',
two: '文本分段与清洗',
three: '处理并完成',
},
error: {
unavailable: '该知识库不可用',
},
firecrawl: {
configFirecrawl: '配置 🔥Firecrawl',
apiKeyPlaceholder: '从 firecrawl.dev 获取 API Key',
getApiKeyLinkText: '从 firecrawl.dev 获取您的 API Key',
},
watercrawl: {
configWatercrawl: '配置 Watercrawl',
apiKeyPlaceholder: '从 watercrawl.dev 获取 API Key',
getApiKeyLinkText: '从 watercrawl.dev 获取您的 API Key',
},
jinaReader: {
configJinaReader: '配置 Jina Reader',
apiKeyPlaceholder: '从 jina.ai 获取 API Key',
getApiKeyLinkText: '从 jina.ai 获取您的免费 API Key',
},
stepOne: {
filePreview: '文件预览',
pagePreview: '页面预览',
dataSourceType: {
file: '导入已有文本',
notion: '同步自 Notion 内容',
web: '同步自 Web 站点',
},
uploader: {
title: '上传文本文件',
button: '拖拽文件或文件夹至此,或者',
buttonSingleFile: '拖拽文件至此,或者',
browse: '选择文件',
tip: '已支持 {{supportTypes}},每批最多 {{batchCount}} 个文件,每个文件不超过 {{size}} MB ,总数不超过 {{totalCount}} 个文件。',
validation: {
typeError: '文件类型不支持',
size: '文件太大了,不能超过 {{size}}MB',
count: '暂不支持多个文件',
filesNumber: '批量上传限制 {{filesNumber}}。',
},
cancel: '取消',
change: '更改文件',
failed: '上传失败',
},
notionSyncTitle: 'Notion 未绑定',
notionSyncTip: '同步 Notion 内容前,须先绑定 Notion 空间',
connect: '去绑定',
cancel: '取消',
button: '下一步',
emptyDatasetCreation: '创建一个空知识库',
modal: {
title: '创建空知识库',
tip: '空知识库中还没有文档,你可以在今后任何时候上传文档至该知识库。',
input: '知识库名称',
placeholder: '请输入知识库名称',
nameNotEmpty: '名称不能为空',
nameLengthInvalid: '名称长度不能超过 40 个字符',
cancelButton: '取消',
confirmButton: '创建',
failed: '创建失败',
},
website: {
chooseProvider: '选择工具',
fireCrawlNotConfigured: 'Firecrawl 未配置',
fireCrawlNotConfiguredDescription: '请配置 Firecrawl 的 API 密钥以使用它。',
jinaReaderNotConfigured: 'Jina Reader 未配置',
jinaReaderNotConfiguredDescription: '请配置 Jina Reader 的免费 API 密钥以访问它。',
waterCrawlNotConfigured: 'Watercrawl 未配置',
waterCrawlNotConfiguredDescription: '请配置 Watercrawl 的 API 密钥以使用它。',
configure: '配置',
configureFirecrawl: '配置 Firecrawl',
configureJinaReader: '配置 Jina Reader',
run: '运行',
running: '运行中',
firecrawlTitle: '使用 🔥Firecrawl 提取网页内容',
firecrawlDoc: 'Firecrawl 文档',
jinaReaderTitle: '将整个站点内容转换为 Markdown 格式',
jinaReaderDoc: '了解更多关于 Jina Reader',
jinaReaderDocLink: 'https://jina.ai/reader',
useSitemap: '使用 sitemap',
useSitemapTooltip: '根据 sitemap 爬取站点。否则Jina Reader 将基于页面相关性迭代爬取,抓取较少的页面,但质量更高。',
options: '选项',
crawlSubPage: '爬取子页面',
limit: '限制数量',
maxDepth: '最大深度',
excludePaths: '排除路径',
includeOnlyPaths: '仅包含路径',
extractOnlyMainContent: '仅提取主要内容(无标题、导航、页脚等)',
exceptionErrorTitle: '运行时发生异常:',
unknownError: '未知错误',
totalPageScraped: '抓取页面总数:',
selectAll: '全选',
resetAll: '重置全部',
scrapTimeInfo: '总共在 {{time}}秒 内抓取了 {{total}} 个页面',
preview: '预览',
maxDepthTooltip: '相对于输入 URL 的最大抓取深度。深度 0 仅抓取输入 URL 本身的页面,深度 1 抓取输入 URL 及其后的一层目录(一个 /),依此类推。',
watercrawlDoc: 'Watercrawl 文档',
configureWatercrawl: '配置水爬行',
watercrawlTitle: '使用 Watercrawl 提取网页内容',
},
},
stepTwo: {
segmentation: '分段设置',
auto: '自动分段与清洗',
autoDescription: '自动设置分段规则与预处理规则,如果不了解这些参数建议选择此项',
custom: '自定义',
customDescription: '自定义分段规则、分段长度以及预处理规则等参数',
general: '通用',
generalTip: '通用文本分块模式,检索和召回的块是相同的',
parentChild: '父子分段',
parentChildTip: '使用父子模式时,子块用于检索,父块用作上下文',
parentChunkForContext: '父块用作上下文',
childChunkForRetrieval: '子块用于检索',
paragraph: '段落',
paragraphTip: '此模式根据分隔符和最大块长度将文本拆分为段落,使用拆分文本作为检索的父块',
fullDoc: '全文',
fullDocTip: '整个文档用作父块并直接检索。请注意,出于性能原因,超过 10000 个标记的文本将被自动截断。',
qaTip: '使用 Q&A 模式时,块将被拆分为问题和答案对。检索时将使用问题部分进行检索,答案部分将作为上下文返回。',
separator: '分段标识符',
separatorTip: '分隔符是用于分隔文本的字符。\\n\\n 和 \\n 是常用于分隔段落和行的分隔符。用逗号连接分隔符(\\n\\n,\\n当段落超过最大块长度时会按行进行分割。你也可以使用自定义的特殊分隔符例如 ***)。',
separatorPlaceholder: '\\n\\n 用于分段;\\n 用于分行',
maxLength: '分段最大长度',
maxLengthCheck: '分段最大长度不能大于 {{limit}}',
overlap: '分段重叠长度',
overlapTip: '设置分段之间的重叠长度可以保留分段之间的语义关系,提升召回效果。建议设置为最大分段长度的 10%-25%',
overlapCheck: '分段重叠长度不能大于分段最大长度',
rules: '文本预处理规则',
removeExtraSpaces: '替换掉连续的空格、换行符和制表符',
removeUrlEmails: '删除所有 URL 和电子邮件地址',
removeStopwords: '去除停用词例如“a”“an”“the”等',
preview: '预览',
previewChunk: '预览块',
reset: '重置',
indexMode: '索引方式',
qualified: '高质量',
highQualityTip: '使用高质量模式进行嵌入后,无法切换回经济模式。',
recommend: '推荐',
qualifiedTip: '调用嵌入模型处理文档以实现更精确的检索,可以帮助 LLM 生成高质量的答案。',
warning: '请先完成模型供应商的 API KEY 设置。.',
click: '前往设置',
economical: '经济',
economicalTip: '每个数据块使用 10 个关键词进行检索,不会消耗任何 tokens但会以降低检索准确性为代价。',
QATitle: '采用 Q&A 分段模式',
QATip: '开启后将会消耗额外的 token',
QALanguage: '分段使用',
useQALanguage: '使用 Q&A 分段,语言',
estimateCost: '执行嵌入预估消耗',
estimateSegment: '预估分段数',
segmentCount: '段',
calculating: '计算中...',
fileSource: '预处理文档',
notionSource: '预处理页面',
websiteSource: '预处理页面',
other: '和其他 ',
fileUnit: ' 个文件',
notionUnit: ' 个页面',
webpageUnit: ' 个页面',
previousStep: '上一步',
nextStep: '保存并处理',
save: '保存并处理',
cancel: '取消',
sideTipTitle: '为什么要分段和预处理?',
sideTipP1: '在处理文本数据时,分段和清洗是两个重要的预处理步骤。',
sideTipP2: '分段的目的是将长文本拆分成较小的段落,以便模型更有效地处理和理解。这有助于提高模型生成的结果的质量和相关性。',
sideTipP3: '清洗则是对文本进行预处理,删除不必要的字符、符号或格式,使知识库更加干净、整洁,便于模型解析。',
sideTipP4: '通过对知识库进行适当的分段和清洗,可以提高模型在实际应用中的表现,从而为用户提供更准确、更有价值的结果。',
previewTitle: '分段预览',
previewTitleButton: '预览',
previewButton: '切换至 Q&A 形式',
previewSwitchTipStart: '当前分段预览是文本模式,切换到 Q&A 模式将会',
previewSwitchTipEnd: '消耗额外的 token',
characters: '字符',
indexSettingTip: '要更改索引方法和 embedding 模型,请转到',
retrievalSettingTip: '要更改检索方法,请转到',
datasetSettingLink: '知识库设置。',
previewChunkTip: '点击左侧的“预览块”按钮来加载预览',
previewChunkCount: '{{count}} 预估块',
switch: '切换',
qaSwitchHighQualityTipTitle: 'Q&A 格式需要高质量的索引方法',
qaSwitchHighQualityTipContent: '目前,只有高质量的索引方法支持 Q&A 格式分块。您要切换到高质量模式吗?',
notAvailableForParentChild: '不支持父子索引',
notAvailableForQA: '不支持 Q&A 索引',
parentChildDelimiterTip: '文本分隔符是用于分隔文本的字符。建议用 \n\n 将原始文档划分为较大的父级片段。您也可以自定义特殊分隔符。',
parentChildChunkDelimiterTip: '文本分隔符是用于分隔文本的字符。建议使用 \n 将父级片段拆分为较小的子级片段。您也可以自定义特殊分隔符。',
},
stepThree: {
creationTitle: '🎉 知识库已创建',
creationContent: '我们自动为该知识库起了个名称,您也可以随时修改',
label: '知识库名称',
additionTitle: '🎉 文档已上传',
additionP1: '文档已上传至知识库:',
additionP2: ',你可以在知识库的文档列表中找到它。',
stop: '停止处理',
resume: '恢复处理',
navTo: '前往文档',
sideTipTitle: '接下来做什么',
sideTipContent: '当文档完成索引后,您可以管理和编辑文档、运行检索测试以及修改知识库设置。知识库即可集成到应用程序内作为上下文使用,因此请调整检索设置以确保最佳性能。',
modelTitle: '确认停止索引过程吗?',
modelContent: '如果您需要稍后恢复处理,则从停止处继续。',
modelButtonConfirm: '确认停止',
modelButtonCancel: '取消',
},
otherDataSource: {
title: '连接到其他数据源?',
description: '目前Dify 的知识库只有有限的数据源。向 Dify 知识库贡献数据源是帮助所有用户增强平台灵活性和强大功能的绝佳方式。我们的贡献指南使入门变得容易。请点击下面的链接了解更多信息。',
learnMore: '了解更多信息',
},
}
export default translation

View File

@@ -0,0 +1,406 @@
const translation = {
list: {
title: '文档',
desc: '知识库的所有文件都在这里显示,整个知识库都可以链接到 Dify 引用或通过 Chat 插件进行索引。',
learnMore: '了解更多',
addFile: '添加文件',
addPages: '添加页面',
addUrl: '添加 URL',
table: {
header: {
fileName: '名称',
chunkingMode: '分段模式',
words: '字符数',
hitCount: '召回次数',
uploadTime: '上传时间',
status: '状态',
action: '操作',
},
rename: '重命名',
name: '名称',
},
action: {
uploadFile: '上传新文件',
settings: '分段设置',
addButton: '添加分段',
add: '添加新分段',
batchAdd: '批量添加',
archive: '归档',
unarchive: '撤销归档',
delete: '删除',
enableWarning: '归档的文件无法启用',
sync: '同步',
pause: '暂停',
resume: '恢复',
},
index: {
enable: '启用中',
disable: '禁用中',
all: '全部',
enableTip: '该文件可以被索引',
disableTip: '该文件无法被索引',
},
sort: {
uploadTime: '上传时间',
hitCount: '召回次数',
},
status: {
queuing: '排队中',
indexing: '索引中',
paused: '已暂停',
error: '错误',
available: '可用',
enabled: '已启用',
disabled: '已禁用',
archived: '已归档',
},
empty: {
title: '还没有文档',
upload: {
tip: '您可以上传文件从网站同步或者从网络应用程序如概念、GitHub 等)同步。',
},
sync: {
tip: 'Dify 会定期从您的 Notion 中下载文件并完成处理。',
},
},
delete: {
title: '确定删除吗?',
content: '如果您需要稍后恢复处理,您将从您离开的地方继续',
},
batchModal: {
title: '批量添加分段',
csvUploadTitle: '将您的 CSV 文件拖放到此处,或',
browse: '选择文件',
tip: 'CSV 文件必须符合以下结构:',
question: '问题',
answer: '回答',
contentTitle: '分段内容',
content: '内容',
template: '下载模板',
cancel: '取消',
run: '导入',
runError: '批量导入失败',
processing: '批量处理中',
completed: '导入完成',
error: '导入出错',
ok: '确定',
},
},
metadata: {
title: '元数据',
desc: '标记文档的元数据允许 AI 及时访问它们并为用户公开参考来源。',
dateTimeFormat: 'YYYY-MM-DD HH:mm',
docTypeSelectTitle: '请选择一种文档类型',
docTypeChangeTitle: '更换文档类型',
docTypeSelectWarning: '如果更改文档类型,将不再保留现在填充的元数据',
firstMetaAction: '开始',
placeholder: {
add: '输入',
select: '选择',
},
source: {
upload_file: '文件上传',
notion: '从 Notion 同步的文档',
github: '从 Github 同步的代码',
local_file: '本地文件',
website_crawl: '网站爬取',
online_document: '在线文档',
},
type: {
book: '书籍',
webPage: '网页',
paper: '论文',
socialMediaPost: '社交媒体帖子',
personalDocument: '个人文档',
businessDocument: '商务文档',
IMChat: 'IM 聊天记录',
wikipediaEntry: '维基百科条目',
notion: '从 Notion 同步的文档',
github: '从 Github 同步的代码',
technicalParameters: '技术参数',
},
field: {
processRule: {
processDoc: '预处理文档',
segmentRule: '分段规则',
segmentLength: '分段长度',
processClean: '文本预处理与清洗',
},
book: {
title: '标题',
language: '语言',
author: '作者',
publisher: '出版商',
publicationDate: '出版日期',
ISBN: 'ISBN',
category: '类别',
},
webPage: {
title: '标题',
url: '网址',
language: '语言',
authorPublisher: '作者/出版商',
publishDate: '发布日期',
topicKeywords: '主题/关键词',
description: '描述',
},
paper: {
title: '标题',
language: '语言',
author: '作者',
publishDate: '发布日期',
journalConferenceName: '期刊/会议名称',
volumeIssuePage: '卷/期/页码',
DOI: 'DOI',
topicsKeywords: '主题/关键词',
abstract: '摘要',
},
socialMediaPost: {
platform: '平台',
authorUsername: '作者/用户名',
publishDate: '发布日期',
postURL: '帖子网址',
topicsTags: '主题/标签',
},
personalDocument: {
title: '标题',
author: '作者',
creationDate: '创建日期',
lastModifiedDate: '最后修改日期',
documentType: '文档类型',
tagsCategory: '标签/类别',
},
businessDocument: {
title: '标题',
author: '作者',
creationDate: '创建日期',
lastModifiedDate: '最后修改日期',
documentType: '文档类型',
departmentTeam: '部门/团队',
},
IMChat: {
chatPlatform: '聊天平台',
chatPartiesGroupName: '聊天参与方/群组名称',
participants: '参与者',
startDate: '开始日期',
endDate: '结束日期',
topicsKeywords: '主题/关键词',
fileType: '文件类型',
},
wikipediaEntry: {
title: '标题',
language: '语言',
webpageURL: '网页网址',
editorContributor: '编辑/贡献者',
lastEditDate: '最后编辑日期',
summaryIntroduction: '摘要/介绍',
},
notion: {
title: '标题',
language: '语言',
author: '作者',
createdTime: '创建时间',
lastModifiedTime: '最后修改时间',
url: '网址',
tag: '标签',
description: '描述',
},
github: {
repoName: '仓库名',
repoDesc: '仓库描述',
repoOwner: '仓库所有者',
fileName: '文件名',
filePath: '文件路径',
programmingLang: '编程语言',
url: '网址',
license: '许可证',
lastCommitTime: '最后提交时间',
lastCommitAuthor: '最后提交者',
},
originInfo: {
originalFilename: '原始文件名称',
originalFileSize: '原始文件大小',
uploadDate: '上传日期',
lastUpdateDate: '最后更新日期',
source: '来源',
},
technicalParameters: {
segmentSpecification: '分段规则',
segmentLength: '段落长度',
avgParagraphLength: '平均段落长度',
paragraphs: '段落数量',
hitCount: '召回次数',
embeddingTime: '嵌入时间',
embeddedSpend: '嵌入花费',
},
},
languageMap: {
zh: '中文',
en: '英文',
es: '西班牙语',
fr: '法语',
de: '德语',
ja: '日语',
ko: '韩语',
ru: '俄语',
ar: '阿拉伯语',
pt: '葡萄牙语',
it: '意大利语',
nl: '荷兰语',
pl: '波兰语',
sv: '瑞典语',
tr: '土耳其语',
he: '希伯来语',
hi: '印地语',
da: '丹麦语',
fi: '芬兰语',
no: '挪威语',
hu: '匈牙利语',
el: '希腊语',
cs: '捷克语',
th: '泰语',
id: '印度尼西亚语',
},
categoryMap: {
book: {
fiction: '小说',
biography: '传记',
history: '历史',
science: '科学',
technology: '技术',
education: '教育',
philosophy: '哲学',
religion: '宗教',
socialSciences: '社会科学',
art: '艺术',
travel: '旅行',
health: '健康',
selfHelp: '自助',
businessEconomics: '商业/经济',
cooking: '烹饪',
childrenYoungAdults: '儿童/青少年',
comicsGraphicNovels: '漫画/图形小说',
poetry: '诗歌',
drama: '戏剧',
other: '其他',
},
personalDoc: {
notes: '笔记',
blogDraft: '博客草稿',
diary: '日记',
researchReport: '研究报告',
bookExcerpt: '书籍摘录',
schedule: '日程安排',
list: '列表',
projectOverview: '项目概述',
photoCollection: '照片集',
creativeWriting: '创意写作',
codeSnippet: '代码片段',
designDraft: '设计草稿',
personalResume: '个人简历',
other: '其他',
},
businessDoc: {
meetingMinutes: '会议纪要',
researchReport: '研究报告',
proposal: '提案',
employeeHandbook: '员工手册',
trainingMaterials: '培训材料',
requirementsDocument: '需求文档',
designDocument: '设计文档',
productSpecification: '产品规格',
financialReport: '财务报告',
marketAnalysis: '市场分析',
projectPlan: '项目计划',
teamStructure: '团队结构',
policiesProcedures: '政策和流程',
contractsAgreements: '合同和协议',
emailCorrespondence: '邮件往来',
other: '其他',
},
},
},
embedding: {
waiting: '嵌入等待中...',
processing: '嵌入处理中...',
paused: '嵌入已停止',
completed: '嵌入已完成',
error: '嵌入发生错误',
docName: '预处理文档',
mode: '分段模式',
segmentLength: '最大分段长度',
textCleaning: '文本预处理规则',
segments: '段落',
highQuality: '高质量模式',
economy: '经济模式',
estimate: '预估消耗',
stop: '停止处理',
pause: '暂停',
resume: '恢复',
automatic: '自动',
custom: '自定义',
hierarchical: '父子分段',
previewTip: '段落预览将在嵌入完成后可用',
parentMaxTokens: '父',
childMaxTokens: '子',
},
segment: {
paragraphs: '段落',
chunks_one: '分段',
chunks_other: '分段',
parentChunks_one: '父分段',
parentChunks_other: '父分段',
childChunks_one: '子分段',
childChunks_other: '子分段',
searchResults_zero: '搜索结果',
searchResults_one: '搜索结果',
searchResults_other: '搜索结果',
empty: '未找到分段',
clearFilter: '清空搜索条件',
chunk: '分段',
parentChunk: '父分段',
newChunk: '新分段',
childChunk: '子分段',
newChildChunk: '新子分段',
keywords: '关键词',
addKeyWord: '添加关键词',
keywordError: '关键词最大长度为 20',
characters_one: '字符',
characters_other: '字符',
hitCount: '召回次数',
vectorHash: '向量哈希:',
questionPlaceholder: '在这里添加问题',
questionEmpty: '问题不能为空',
answerPlaceholder: '在这里添加答案',
answerEmpty: '答案不能为空',
contentPlaceholder: '在这里添加内容',
contentEmpty: '内容不能为空',
newTextSegment: '新文本分段',
newQaSegment: '新问答分段',
addChunk: '新增分段',
addChildChunk: '新增子分段',
addAnother: '连续新增',
delete: '删除这个分段?',
chunkAdded: '新增一个分段',
childChunkAdded: '新增一个子分段',
editChunk: '编辑分段',
editParentChunk: '编辑父分段',
editChildChunk: '编辑子分段',
chunkDetail: '分段详情',
regenerationConfirmTitle: '是否需要重新生成子分段?',
regenerationConfirmMessage: '重新生成的子分段将会覆盖当前的子分段,包括编辑过的分段和新添加的分段。重新生成操作无法撤销。',
regeneratingTitle: '正在生成子分段',
regeneratingMessage: '生成子分段需要一些时间,请耐心等待...',
regenerationSuccessTitle: '子分段已重新生成',
regenerationSuccessMessage: '可以关闭窗口',
edited: '已编辑',
editedAt: '编辑于',
dateTimeFormat: 'YYYY/MM/DD HH:mm',
expandChunks: '展开分段',
collapseChunks: '折叠分段',
keywordEmpty: '关键词不能为空',
keywordDuplicate: '关键词已经存在',
},
}
export default translation

View File

@@ -0,0 +1,34 @@
const translation = {
title: '召回测试',
settingTitle: '召回设置',
desc: '根据给定的查询文本测试知识的召回效果。',
dateTimeFormat: 'YYYY-MM-DD HH:mm',
records: '记录',
table: {
header: {
source: '数据源',
text: '文本',
time: '时间',
},
},
input: {
title: '源文本',
placeholder: '请输入文本,建议使用简短的陈述句。',
countWarning: '不超过 200 个字符',
indexWarning: '仅支持高质量模式知识库',
testing: '测试',
},
hit: {
title: '{{num}} 个召回段落',
emptyTip: '召回测试结果将展示在这里',
},
noRecentTip: '最近无查询结果',
viewChart: '查看向量图表',
viewDetail: '查看详情',
chunkDetail: '段落详情',
hitChunks: '命中 {{num}} 个子段落',
open: '打开',
keyword: '关键词',
}
export default translation

View File

@@ -0,0 +1,166 @@
const translation = {
creation: {
backToKnowledge: '返回知识库',
createFromScratch: {
title: '空白知识流水线',
description: '从零开始创建一个自定义知识流水线,对数据处理和结构拥有完全控制权。',
},
importDSL: '从 DSL 文件导入',
createKnowledge: '创建知识流水线',
errorTip: '创建知识流水线失败',
successTip: '成功创建知识流水线',
caution: '注意',
},
templates: {
customized: '自定义',
},
operations: {
choose: '选择',
details: '详情',
editInfo: '编辑信息',
useTemplate: '使用此知识流水线',
backToDataSource: '返回数据源',
process: '处理',
dataSource: '数据源',
saveAndProcess: '保存并处理',
preview: '预览',
exportPipeline: '导出知识流水线',
convert: '转换',
},
knowledgeNameAndIcon: '知识库名称和图标',
knowledgeNameAndIconPlaceholder: '请输入知识库名称',
knowledgeDescription: '知识库描述',
knowledgeDescriptionPlaceholder: '描述知识库中的内容。详细的描述可以让 AI 更准确地访问数据集的内容。如果为空Dify 将使用默认的命中策略。(可选)',
knowledgePermissions: '权限',
editPipelineInfo: '编辑知识流水线信息',
pipelineNameAndIcon: '知识流水线名称和图标',
deletePipeline: {
title: '要删除此知识流水线模板吗?',
content: '删除知识流水线模板是不可逆的。',
},
publishPipeline: {
success: {
message: '知识流水线发布成功',
tip: '<CustomLink>前往文档</CustomLink>添加或管理文档。',
},
error: {
message: '知识流水线发布失败',
},
},
publishTemplate: {
success: {
message: '知识流水线模板发布成功',
tip: '您可以在创建页使用该模板。',
learnMore: '了解更多',
},
error: {
message: '知识流水线模板发布失败',
},
},
exportDSL: {
successTip: '成功导出知识流水线 DSL',
errorTip: '导出知识流水线 DSL 失败',
},
details: {
createdBy: '由 {{author}} 创建',
structure: '文档结构',
structureTooltip: '文档结构决定了文档的拆分和索引方式Dify 提供了通用、父子和问答模式,每个知识库的文档结构是唯一的。',
},
testRun: {
title: '测试运行',
tooltip: '在测试运行模式下,每次只能导入一个文档,以便于调试和观察。',
steps: {
dataSource: '数据源',
documentProcessing: '文档处理',
},
dataSource: {
localFiles: '本地文件',
},
notion: {
title: '选择 Notion 页面',
docTitle: 'Notion 文档',
},
},
inputField: '输入字段',
inputFieldPanel: {
title: '用户输入字段',
description: '用户输入字段用于定义和收集知识流水线执行过程中所需的变量,用户可以自定义字段类型,并灵活配置输入,以满足不同数据源或文档处理的需求。',
uniqueInputs: {
title: '非共享输入',
tooltip: '非共享输入只能被选定的数据源及其下游节点访问。用户在选择其他数据源时不需要填写它。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段将在第二步(处理文档)中显示。',
},
globalInputs: {
title: '全局共享输入',
tooltip: '全局共享输入在所有节点之间共享。用户在选择任何数据源时都需要填写它们。例如,像分隔符和最大块长度这样的字段可以跨多个数据源统一应用。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段都显示在第二步(处理文档)中。',
},
addInputField: '添加输入字段',
editInputField: '编辑输入字段',
preview: {
stepOneTitle: '数据源',
stepTwoTitle: '处理文档',
},
error: {
variableDuplicate: '变量名已存在。请选择其他名称。',
},
},
addDocuments: {
title: '添加文档',
steps: {
chooseDatasource: '选择数据源',
processDocuments: '处理文档',
processingDocuments: '正在处理文档',
},
backToDataSource: '数据源',
stepOne: {
preview: '预览',
},
stepTwo: {
chunkSettings: '分段设置',
previewChunks: '预览分段',
},
stepThree: {
learnMore: '了解更多',
},
characters: '字符',
selectOnlineDocumentTip: '最多处理 {{count}} 页',
selectOnlineDriveTip: '最多处理 {{count}} 个文件,每个文件最大 {{fileSize}} MB',
},
documentSettings: {
title: '文档设置',
},
onlineDocument: {
pageSelectorTitle: '{{name}} 页面',
},
onlineDrive: {
notConnected: '{{name}} 未绑定',
notConnectedTip: '同步 {{name}} 内容前, 须先绑定 {{name}}。',
breadcrumbs: {
allBuckets: '所有云存储桶',
allFiles: '所有文件',
searchResult: '在 "{{folderName}}" 文件夹中找到 {{searchResultsLength}} 个项目',
searchPlaceholder: '搜索文件...',
},
notSupportedFileType: '不支持此文件类型',
emptyFolder: '此文件夹为空',
emptySearchResult: '未找到任何项目',
resetKeywords: '重置关键词',
},
credentialSelector: {
name: '{{credentialName}} 的 {{pluginName}}',
},
configurationTip: '配置 {{pluginName}}',
conversion: {
title: '转换为知识流水线',
descriptionChunk1: '您现在可以将现有知识库转换为使用知识流水线来处理文档',
descriptionChunk2: ' —— 这是一种更开放、更灵活的方式,可以访问我们市场中的插件。新的处理方式将应用到后续添加的所有文档。',
warning: '此操作无法撤销。',
confirm: {
title: '确认',
content: '此操作是永久性的。您将无法恢复到之前的方式。请确认转换。',
},
errorMessage: '转换数据集为知识流水线失败',
successMessage: '成功将数据集转换为知识流水线',
},
}
export default translation

View File

@@ -0,0 +1,51 @@
const translation = {
title: '知识库设置',
desc: '在这里,您可以修改此知识库的属性和检索设置',
form: {
name: '知识库名称',
nameAndIcon: '名称和图标',
namePlaceholder: '请输入知识库名称',
nameError: '名称不能为空',
desc: '描述',
descInfo: '请写出清楚的文字描述来概述知识库的内容。当从多个知识库中进行选择匹配时,该描述将用作匹配的基础。',
descPlaceholder: '描述该数据集的内容。详细描述可以让 AI 更快地访问数据集的内容。如果为空Dify 将使用默认的命中策略。',
helpText: '学习如何编写一份优秀的数据集描述。',
descWrite: '了解如何编写更好的知识库描述。',
permissions: '可见权限',
permissionsOnlyMe: '只有我',
permissionsAllMember: '所有团队成员',
permissionsInvitedMembers: '部分团队成员',
me: '(你)',
onSearchResults: '没有成员匹配您的搜索查询。\n请尝试其他关键词。',
chunkStructure: {
title: '分段模式',
learnMore: '了解更多',
description: '关于分段模式。',
},
indexMethod: '索引模式',
indexMethodHighQuality: '高质量',
indexMethodHighQualityTip: '调用嵌入模型来处理文档以实现更精确的检索,可以帮助大语言模型生成高质量的回答。',
upgradeHighQualityTip: '一旦升级为高质量模式,将无法切换回经济模式。',
indexMethodEconomy: '经济',
indexMethodEconomyTip: '每个块使用 {{count}} 个关键词进行检索,不消耗 tokens但会降低检索准确性。',
numberOfKeywords: '关键词数量',
embeddingModel: 'Embedding 模型',
embeddingModelTip: '修改 Embedding 模型,请去',
embeddingModelTipLink: '设置',
retrievalSetting: {
title: '检索设置',
method: '检索方法',
learnMore: '了解更多',
description: '关于检索方法。',
longDescription: '关于检索方法,您可以随时在知识库设置中更改此设置。',
},
externalKnowledgeAPI: '外部知识 API',
externalKnowledgeID: '外部知识库 ID',
save: '保存',
retrievalSettings: '检索设置',
indexMethodChangeToEconomyDisabledTip: '无法从高质量降级为经济',
searchModel: '搜索模型',
},
}
export default translation

View File

@@ -0,0 +1,241 @@
const translation = {
knowledge: '知识库',
chunkingMode: {
general: '通用',
parentChild: '父子',
qa: '问答',
graph: '图',
},
parentMode: {
paragraph: '段落',
fullDoc: '全文',
},
externalTag: '外部',
externalAPI: '外部 API',
externalAPIPanelTitle: '外部知识库 API',
externalKnowledgeId: '外部知识库 ID',
externalKnowledgeName: '外部知识库名称',
externalKnowledgeDescription: '知识库描述',
externalKnowledgeIdPlaceholder: '请输入外部知识库 ID',
externalKnowledgeNamePlaceholder: '请输入外部知识库名称',
externalKnowledgeDescriptionPlaceholder: '描述知识库内容(可选)',
learnHowToWriteGoodKnowledgeDescription: '了解如何编写良好的知识库描述',
externalAPIPanelDescription: '外部知识库 API 用于连接到 Dify 之外的知识库并从中检索知识。',
externalAPIPanelDocumentation: '了解如何创建外部知识库 API',
externalKnowledgeBase: '外部知识库',
localDocs: '本地文档',
documentCount: ' 文档',
docAllEnabled_one: '{{count}} 个文档可用',
docAllEnabled_other: '所有 {{count}} 个文档均可用',
partialEnabled_one: '共计 {{count}} 个文档, {{num}} 可用',
partialEnabled_other: '共计 {{count}} 个文档, {{num}} 可用',
wordCount: ' 千字符',
appCount: ' 关联应用',
updated: '更新于',
createDataset: '创建知识库',
createFromPipeline: '通过知识流水线创建知识库',
noExternalKnowledge: '还没有外部知识库 API点击此处创建',
createExternalAPI: '添加外部知识库 API',
createNewExternalAPI: '创建新的外部知识库 API',
editExternalAPIFormTitle: '编辑外部知识库 API',
editExternalAPITooltipTitle: '个关联知识库',
editExternalAPIConfirmWarningContent: {
front: '此外部知识库 API 已链接到',
end: '个外部知识库,此修改将应用于所有这些知识库。您确定要保存此更改吗?',
},
editExternalAPIFormWarning: {
front: '此外部 API 已链接到',
end: '外部知识库',
},
deleteExternalAPIConfirmWarningContent: {
title: {
front: '删除',
end: '',
},
content: {
front: '此外部知识库 API 已链接到',
end: '个外部知识库。删除此 API 将使所有这些知识库失效。您确定要删除此 API 吗?',
},
noConnectionContent: '您确定要删除此 API 吗?',
},
connectDatasetIntro: {
title: '如何连接到外部知识库',
content: {
front: '要连接到外部知识库,您需要先创建一个外部 API。请仔细阅读并参考',
link: '了解如何创建外部 API',
end: '。然后找到相应的知识库 ID 并填写在左侧表单中。如果所有信息正确,点击连接按钮后将自动跳转到知识库中的检索测试。',
},
learnMore: '了解更多',
},
connectHelper: {
helper1: '通过 API 和知识库 ID 连接到外部知识库。目前,',
helper2: '仅支持检索功能',
helper3: '。我们强烈建议您在使用此功能之前',
helper4: '仔细阅读帮助文档',
helper5: '。',
},
connectDataset: '连接外部知识库',
createDatasetIntro: '导入您自己的文本数据或通过 Webhook 实时写入数据以增强 LLM 的上下文。',
deleteDatasetConfirmTitle: '要删除知识库吗?',
deleteDatasetConfirmContent:
'删除知识库是不可逆的。用户将无法再访问您的知识库,所有的提示配置和日志将被永久删除。',
datasetUsedByApp: '某些应用正在使用该知识库。应用将无法再使用该知识库,所有的提示配置和日志将被永久删除。',
datasetDeleted: '知识库已删除',
datasetDeleteFailed: '删除知识库失败',
selectExternalKnowledgeAPI: {
placeholder: '选择一个外部知识 API',
},
didYouKnow: '你知道吗?',
intro1: '知识库可以被集成到 Dify 应用中',
intro2: '作为上下文',
intro3: ',',
intro4: '或可以',
intro5: '发布',
intro6: '为独立的服务',
unavailable: '不可用',
datasets: '知识库',
datasetsApi: 'API',
externalKnowledgeForm: {
connect: '连接',
cancel: '取消',
},
externalAPIForm: {
name: '名称',
endpoint: 'API 端点',
apiKey: 'API 密钥',
save: '保存',
cancel: '取消',
edit: '编辑',
encrypted: {
front: '您的 API Token 将使用',
end: '加密并存储。',
},
},
retrieval: {
semantic_search: {
title: '向量检索',
description: '通过生成查询嵌入并查询与其向量表示最相似的文本分段',
},
full_text_search: {
title: '全文检索',
description: '索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段',
},
hybrid_search: {
title: '混合检索',
description: '同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,用户可以选择设置权重或配置重新排序模型。',
recommend: '推荐',
},
keyword_search: {
title: '倒排索引',
description: '倒排索引是一种用于高效检索的结构。按术语组织,每个术语指向包含它的文档或网页',
},
change: '更改',
changeRetrievalMethod: '更改检索方法',
},
docsFailedNotice: '文档索引失败',
retry: '重试',
documentsDisabled: '{{num}} 个文档已禁用 - 未活动超过 30 天',
enable: '启用',
indexingTechnique: {
high_quality: '高质量',
economy: '经济',
},
indexingMethod: {
semantic_search: '向量检索',
full_text_search: '全文检索',
hybrid_search: '混合检索',
invertedIndex: '倒排索引',
},
defaultRetrievalTip: '默认情况下使用多路召回。从多个知识库中检索知识,然后重新排序。',
mixtureHighQualityAndEconomicTip: '混合使用高质量和经济型知识库需要配置 Rerank 模型。',
inconsistentEmbeddingModelTip: '当所选知识库配置的 Embedding 模型不一致时,需要配置 Rerank 模型。',
mixtureInternalAndExternalTip: '混合使用内部和外部知识时需要配置 Rerank 模型。',
allExternalTip: '仅使用外部知识时,用户可以选择是否启用 Rerank 模型。如果不启用,检索到的文本块将根据分数排序。当不同知识库的检索策略不一致时,结果可能不准确。',
retrievalSettings: '召回设置',
rerankSettings: 'Rerank 设置',
weightedScore: {
title: '权重设置',
description: '通过调整分配的权重,重新排序策略确定是优先进行语义匹配还是关键字匹配。',
semanticFirst: '语义优先',
keywordFirst: '关键词优先',
customized: '自定义',
semantic: '语义',
keyword: '关键词',
},
nTo1RetrievalLegacy: '9 月 1 日起我们将不再提供此能力,推荐使用最新的多路召回获得更好的检索效果。',
nTo1RetrievalLegacyLink: '了解更多',
nTo1RetrievalLegacyLinkText: '9 月 1 日起我们将不再提供此能力。',
batchAction: {
selected: '已选择',
enable: '启用',
disable: '禁用',
archive: '归档',
delete: '删除',
cancel: '取消',
},
preprocessDocument: '{{num}} 个预处理文档',
allKnowledge: '所有知识库',
allKnowledgeDescription: '选择以显示该工作区内所有知识库。只有工作区所有者才能管理所有知识库。',
embeddingModelNotAvailable: 'Embedding 模型不可用。',
metadata: {
metadata: '元数据',
addMetadata: '添加元数据',
chooseTime: '选择时间',
createMetadata: {
title: '新建元数据',
back: '返回',
type: '类型',
name: '名称',
namePlaceholder: '添加元数据名称',
},
checkName: {
empty: '元数据名称不能为空',
invalid: '元数据名称只能包含小写字母、数字和下划线,并且必须以小写字母开头',
tooLong: '元数据名称不得超过{{max}}个字符',
},
batchEditMetadata: {
editMetadata: '编辑元数据',
editDocumentsNum: '编辑 {{num}} 个文档',
applyToAllSelectDocument: '应用于所有选定文档',
applyToAllSelectDocumentTip: '自动为所有选定文档创建上述编辑和新元数据,否则仅对具有元数据的文档应用编辑。',
multipleValue: '多个值',
},
selectMetadata: {
search: '搜索元数据',
newAction: '新建元数据',
manageAction: '管理',
},
datasetMetadata: {
description: '元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。',
addMetaData: '添加元数据',
values: '{{num}} 个值',
disabled: '已禁用',
rename: '重命名',
name: '名称',
namePlaceholder: '元数据名称',
builtIn: '内置',
builtInDescription: '内置元数据是系统预定义的元数据,您可以在此处查看和管理内置元数据。',
deleteTitle: '确定删除',
deleteContent: '你确定要删除元数据 "{{name}}" 吗?',
},
documentMetadata: {
metadataToolTip: '元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。',
startLabeling: '开始标注',
documentInformation: '文档信息',
technicalParameters: '技术参数',
},
},
serviceApi: {
title: '服务 API',
enabled: '运行中',
disabled: '已停用',
card: {
title: '后端服务 API',
endpoint: 'API 端点',
apiKey: 'API 密钥',
apiReference: 'API 文档',
},
},
}
export default translation

View File

@@ -0,0 +1,76 @@
const translation = {
toVerified: '获取教育版认证',
toVerifiedTip: {
front: '您现在符合教育版认证的资格。请在下方输入您的教育信息,以完成认证流程,并领取 Dify Professional 版的',
coupon: '100% 独家优惠券',
end: '。',
},
currentSigned: '您当前登录的账户是',
form: {
schoolName: {
title: '您的学校名称',
placeholder: '请输入您的学校的官方全称(不得缩写)',
},
schoolRole: {
title: '您在学校的身份',
option: {
student: '学生',
teacher: '教师',
administrator: '学校管理员',
},
},
terms: {
title: '条款与协议',
desc: {
front: '您的信息和教育版认证资格的使用需遵守我们的',
and: '和',
end: '。提交即表示:',
termsOfService: '服务条款',
privacyPolicy: '隐私政策',
},
option: {
age: '我确认我已年满 18 周岁。',
inSchool: '我确认我目前已在提供的学校入学或受雇。Dify 可能会要求提供入学/雇佣证明。如我虚报资格,我同意支付因教育版认证而被减免的费用。',
},
},
},
submit: '提交',
submitError: '提交表单失败,请稍后重新提交问卷。',
learn: '了解如何获取教育版认证',
successTitle: '您已成功获得 Dify 教育版认证!',
successContent: '我们已向您的账户发放 Dify Professional 版 100% 折扣优惠券。该优惠券有效期为一年,请在有效期内使用。',
rejectTitle: '您的 Dify 教育版认证已被拒绝',
rejectContent: '非常遗憾,您无法使用此电子邮件以获得教育版认证资格,也无法领取 Dify Professional 版的 100% 独家优惠券。',
emailLabel: '您当前的邮箱',
notice: {
dateFormat: 'YYYY/MM/DD',
expired: {
title: '您的教育认证已过期',
summary: {
line1: '您仍可继续使用 Dify但将无法再领取新的教育优惠券。',
line2: '',
},
},
isAboutToExpire: {
title: '您的教育认证将于 {{date}} 过期',
summary: '别担心,这不会影响您当前的订阅。但续订时您将无法继续享受教育优惠,除非重新完成身份验证。',
},
stillInEducation: {
title: '仍在就读?',
expired: '立即重新认证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次升级时使用。',
isAboutToExpire: '立即重新验证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次续订时使用。',
},
alreadyGraduated: {
title: '已毕业?',
expired: '您可以随时升级以获得所有付费功能。',
isAboutToExpire: '您的当前订阅仍将保持有效。订阅结束后,空间将切换为 Sandbox 套餐,您也可以随时升级,恢复全部付费功能的使用。',
},
action: {
dismiss: '忽略',
upgrade: '升级套餐',
reVerify: '重新认证',
},
},
}
export default translation

View File

@@ -0,0 +1,44 @@
const translation = {
title: '探索',
sidebar: {
discovery: '发现',
chat: '智聊',
workspace: '工作区',
action: {
pin: '置顶',
unpin: '取消置顶',
rename: '重命名',
delete: '删除',
},
delete: {
title: '删除程序',
content: '您确定要删除此程序吗?',
},
},
apps: {
title: '探索应用',
description: '使用这些模板应用程序,或根据模板自定义您自己的应用程序。',
allCategories: '推荐',
},
appCard: {
addToWorkspace: '添加到工作区',
customize: '自定义',
},
appCustomize: {
title: '从 {{name}} 创建应用程序',
subTitle: '应用程序图标和名称',
nameRequired: '应用程序名称不能为空',
},
category: {
Agent: 'Agent',
Assistant: '助手',
Writing: '写作',
Translate: '翻译',
Programming: '编程',
HR: '人力资源',
Workflow: '工作流',
Entertainment: '娱乐',
},
}
export default translation

View File

@@ -0,0 +1,8 @@
const translation = {
sidebar: {
expandSidebar: '展开侧边栏',
collapseSidebar: '收起侧边栏',
},
}
export default translation

View File

@@ -0,0 +1,126 @@
const translation = {
pageTitle: '登录 Dify',
pageTitleForE: '嗨,近来可好',
welcome: '👋 欢迎!请登录以开始使用。',
email: '邮箱',
emailPlaceholder: '输入邮箱地址',
password: '密码',
passwordPlaceholder: '输入密码',
name: '用户名',
namePlaceholder: '输入用户名',
forget: '忘记密码?',
signBtn: '登录',
continueWithCode: '发送验证码',
sendVerificationCode: '发送验证码',
usePassword: '使用密码登录',
useVerificationCode: '使用验证码登录',
or: '或',
installBtn: '设置',
setAdminAccount: '设置管理员账户',
setAdminAccountDesc: '管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等。',
createAndSignIn: '创建账户',
oneMoreStep: '还差一步',
createSample: '基于这些信息,我们将为您创建一个示例应用',
invitationCode: '邀请码',
invitationCodePlaceholder: '输入邀请码',
interfaceLanguage: '界面语言',
timezone: '时区',
go: '跳转至 Dify',
sendUsMail: '发封邮件介绍你自己,我们会尽快处理。',
acceptPP: '我已阅读并接受隐私政策',
reset: '请运行以下命令重置密码',
withGitHub: '使用 GitHub 登录',
withGoogle: '使用 Google 登录',
withSSO: '使用 SSO 登录',
rightTitle: '释放大型语言模型的全部潜能',
rightDesc: '简单构建可视化、可运营、可改进的 AI 应用',
tos: '使用协议',
pp: '隐私政策',
tosDesc: '使用即代表您同意我们的',
goToInit: '如果您还没有初始化账户,请前往初始化页面',
dontHave: '还没有邀请码?',
invalidInvitationCode: '无效的邀请码',
accountAlreadyInited: '账户已经初始化',
forgotPassword: '忘记密码?',
resetLinkSent: '重置链接已发送',
sendResetLink: '发送重置链接',
backToSignIn: '返回登录',
forgotPasswordDesc: '请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件,包含如何重置密码的说明。',
checkEmailForResetLink: '请检查您的电子邮件以获取重置密码的链接。如果几分钟内没有收到,请检查您的垃圾邮件文件夹。',
passwordChanged: '立即登录',
changePassword: '设置密码',
changePasswordTip: '请输入您的新密码',
changePasswordBtn: '设置密码',
invalidToken: '无效或已过期的令牌',
confirmPassword: '确认密码',
confirmPasswordPlaceholder: '确认您的新密码',
passwordChangedTip: '您的密码已成功更改',
error: {
emailEmpty: '邮箱不能为空',
emailInValid: '请输入有效的邮箱地址',
nameEmpty: '用户名不能为空',
passwordEmpty: '密码不能为空',
passwordInvalid: '密码必须包含字母和数字,且长度不小于 8 位',
passwordLengthInValid: '密码必须至少为 8 个字符',
registrationNotAllowed: '账户不存在,请联系系统管理员注册账户',
invalidEmailOrPassword: '邮箱或密码错误',
},
license: {
tip: '启动 Dify 社区版之前,请阅读 GitHub 上的',
link: '开源协议',
},
join: '加入 ',
joinTipStart: '邀请你加入 ',
joinTipEnd: ' 团队',
invalid: '链接已失效',
explore: '探索 Dify',
activatedTipStart: '您已加入',
activatedTipEnd: '团队',
activated: '现在登录',
adminInitPassword: '管理员初始化密码',
validate: '验证',
checkCode: {
checkYourEmail: '验证您的电子邮件',
validTime: '请注意验证码 5 分钟内有效',
verificationCode: '验证码',
verificationCodePlaceholder: '输入 6 位验证码',
verify: '验证',
didNotReceiveCode: '没有收到验证码?',
resend: '重新发送',
useAnotherMethod: '使用其他方式登录',
emptyCode: '验证码不能为空',
invalidCode: '验证码无效',
tipsPrefix: '我们发送一个验证码到',
},
resetPassword: '重置密码',
resetPasswordDesc: '请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件。',
backToLogin: '返回登录',
setYourAccount: '设置您的账户',
enterYourName: '请输入用户名',
back: '返回',
noLoginMethod: '未配置身份认证方式',
noLoginMethodTip: '请联系系统管理员添加身份认证方式',
licenseExpired: '许可证已过期',
licenseExpiredTip: '您所在空间的 Dify Enterprise 许可证已过期,请联系管理员以继续使用 Dify。',
licenseLost: '许可证丢失',
licenseLostTip: '无法连接 Dify 许可证服务器,请联系管理员以继续使用 Dify。',
licenseInactive: '许可证未激活',
licenseInactiveTip: '您所在空间的 Dify Enterprise 许可证尚未激活,请联系管理员以继续使用 Dify。',
webapp: {
login: '登录',
noLoginMethod: 'Web 应用未配置身份认证方式',
noLoginMethodTip: '请联系系统管理员添加身份认证方式',
disabled: 'Web 应用身份认证已禁用,请联系系统管理员启用。您也可以尝试直接使用应用。',
},
signup: {
noAccount: '没有账户?',
signUp: '立即注册',
createAccount: '创建您的账户',
welcome: '👋 欢迎!请填写信息以开始使用。',
verifyMail: '发送验证码',
haveAccount: '已有账户?',
signIn: '立即登录',
},
}
export default translation

View File

@@ -0,0 +1,27 @@
const translation = {
tips: {
loggedIn: '想要访问您的 Dify Cloud 账号中的以下信息。',
notLoggedIn: '想要访问您的 Dify Cloud 账号',
needLogin: '请先登录以授权',
common: '我们尊重您的隐私,并仅使用此信息来增强您对我们开发工具的使用体验。',
},
connect: '连接到',
continue: '继续',
switchAccount: '切换账号',
login: '登录',
scopes: {
name: '名称',
email: '邮箱',
avatar: '头像',
languagePreference: '语言偏好',
timezone: '时区',
},
error: {
invalidParams: '无效的参数',
authorizeFailed: '授权失败',
authAppInfoFetchFailed: '获取待授权应用的信息失败',
},
unknownApp: '未知应用',
}
export default translation

View File

@@ -0,0 +1,40 @@
const translation = {
common: {
goToAddDocuments: '去添加文档',
publishAs: '发布为自定义流水线模板',
confirmPublish: '确认发布',
confirmPublishContent: '成功发布知识流水线后,此知识库的分段结构将无法修改。您确定要发布吗?',
publishAsPipeline: {
name: '知识流水线名称和图标',
namePlaceholder: '请输入此知识流水线的名称。 (必填)',
description: '知识流水线描述',
descriptionPlaceholder: '请输入此知识流水线的描述。 (可选)',
},
testRun: '测试运行',
preparingDataSource: '准备数据源',
reRun: '重新运行',
processing: '处理中',
},
inputField: {
create: '创建用户输入字段',
manage: '管理',
},
publishToast: {
title: '此知识流水线尚未发布',
desc: '当知识流水线未发布时,您可以修改知识库节点中的分块结构,知识流水线编排和更改将自动保存为草稿。',
},
result: {
resultPreview: {
loading: '处理中...请稍后',
error: '执行过程中出现错误',
viewDetails: '查看详情',
footerTip: '在测试运行模式下,最多预览 {{count}} 个分段',
},
},
ragToolSuggestions: {
title: 'RAG 工具推荐',
noRecommendationPlugins: '暂无推荐插件,更多插件请在 <CustomLink>Marketplace</CustomLink> 中查找',
},
}
export default translation

View File

@@ -0,0 +1,26 @@
const translation = {
allTags: '所有标签',
searchTags: '搜索标签',
tags: {
agent: 'Agent',
rag: 'RAG',
search: '搜索',
image: '图片',
videos: '视频',
weather: '天气',
finance: '金融',
design: '设计',
travel: '旅行',
social: '社交',
news: '新闻',
medical: '医疗',
productivity: '生产力',
education: '教育',
business: '商业',
entertainment: '娱乐',
utilities: '工具',
other: '其他',
},
}
export default translation

View File

@@ -0,0 +1,186 @@
const translation = {
subscription: {
title: '订阅',
listNum: '{{num}} 个订阅',
empty: {
title: '暂无订阅',
button: '新建订阅',
},
createButton: {
oauth: '通过 OAuth 新建订阅',
apiKey: '通过 API Key 新建订阅',
manual: '粘贴 URL 以创建新订阅',
},
createSuccess: '订阅创建成功',
createFailed: '订阅创建失败',
maxCount: '最多 {{num}} 个订阅',
selectPlaceholder: '选择订阅',
noSubscriptionSelected: '未选择订阅',
subscriptionRemoved: '订阅已移除',
list: {
title: '订阅列表',
addButton: '添加',
tip: '通过订阅接收事件',
item: {
enabled: '已启用',
disabled: '已禁用',
credentialType: {
api_key: 'API密钥',
oauth2: 'OAuth',
unauthorized: '手动',
},
actions: {
delete: '删除',
deleteConfirm: {
title: '删除 {{name}}',
success: '订阅 {{name}} 删除成功',
error: '订阅 {{name}} 删除失败',
content: '删除后,该订阅将无法恢复,请确认。',
contentWithApps: '该订阅正在被 {{count}} 个应用使用,删除它将导致这些应用停止接收订阅事件。',
confirm: '确认删除',
cancel: '取消',
confirmInputWarning: '请输入正确的名称确认。',
confirmInputPlaceholder: '输入 "{{name}}" 确认',
confirmInputTip: '请输入 “{{name}}” 确认:',
},
},
status: {
active: '活跃',
inactive: '非活跃',
},
usedByNum: '被 {{num}} 个工作流使用',
noUsed: '未被工作流使用',
},
},
addType: {
title: '添加订阅',
description: '选择创建触发器订阅的方式',
options: {
apikey: {
title: '通过 API Key 创建',
description: '使用 API 凭据自动创建订阅',
},
oauth: {
title: '通过 OAuth 创建',
description: '与第三方平台授权以创建订阅',
clientSettings: 'OAuth 客户端设置',
clientTitle: 'OAuth 客户端',
default: '默认',
custom: '自定义',
},
manual: {
title: '手动设置',
description: '粘贴 URL 以创建新订阅',
tip: '手动配置 URL 到第三方平台',
},
},
},
},
modal: {
steps: {
verify: '验证',
configuration: '配置',
},
common: {
cancel: '取消',
back: '返回',
next: '下一步',
create: '创建',
verify: '验证',
authorize: '授权',
creating: '创建中...',
verifying: '验证中...',
authorizing: '授权中...',
},
oauthRedirectInfo: '由于未找到此工具提供方的系统客户端密钥,需要手动设置,对于 redirect_uri请使用',
apiKey: {
title: '通过 API Key 创建',
verify: {
title: '验证凭据',
description: '请提供您的 API 凭据以验证访问权限',
error: '凭据验证失败,请检查您的 API 密钥。',
success: '凭据验证成功',
},
configuration: {
title: '配置订阅',
description: '设置您的订阅参数',
},
},
oauth: {
title: '通过 OAuth 创建',
authorization: {
title: 'OAuth 授权',
description: '授权 Dify 访问您的账户',
redirectUrl: '重定向 URL',
redirectUrlHelp: '在您的 OAuth 应用配置中使用此 URL',
authorizeButton: '使用 {{provider}} 授权',
waitingAuth: '等待授权中...',
authSuccess: '授权成功',
authFailed: '获取 OAuth 授权信息失败',
waitingJump: '已授权,待跳转',
},
configuration: {
title: '配置订阅',
description: '授权完成后设置您的订阅参数',
success: 'OAuth 配置成功',
failed: 'OAuth 配置失败',
},
remove: {
success: 'OAuth 移除成功',
failed: 'OAuth 移除失败',
},
save: {
success: 'OAuth 配置保存成功',
},
},
manual: {
title: '手动设置',
description: '手动配置您的 Webhook 订阅',
logs: {
title: '请求日志',
request: '请求',
loading: '等待 {{pluginName}} 的请求...',
},
},
form: {
subscriptionName: {
label: '订阅名称',
placeholder: '输入订阅名称',
required: '订阅名称为必填项',
},
callbackUrl: {
label: '回调 URL',
description: '此 URL 将接收Webhook事件',
tooltip: '填写能被触发器提供方访问的公网地址,用于接收回调请求。',
placeholder: '生成中...',
privateAddressWarning: '此 URL 似乎是一个内部地址,可能会导致 Webhook 请求失败。',
},
},
errors: {
createFailed: '创建订阅失败',
verifyFailed: '验证凭据失败',
authFailed: '授权失败',
networkError: '网络错误,请重试',
},
},
events: {
title: '可用事件',
description: '此触发器插件可以订阅的事件',
empty: '没有可用事件',
event: '事件',
events: '事件',
actionNum: '包含 {{num}} 个 {{event}}',
item: {
parameters: '{{count}}个参数',
noParameters: '暂无参数',
},
output: '输出',
},
node: {
status: {
warning: '未连接',
},
},
}
export default translation

View File

@@ -0,0 +1,320 @@
const translation = {
metadata: {
title: '插件',
},
category: {
all: '全部',
models: '模型',
tools: '工具',
agents: 'Agent 策略',
extensions: '扩展',
triggers: '触发器',
bundles: '插件集',
datasources: '数据源',
},
categorySingle: {
model: '模型',
tool: '工具',
agent: 'Agent 策略',
extension: '扩展',
trigger: '触发器',
bundle: '插件集',
datasource: '数据源',
},
search: '搜索',
allCategories: '所有类别',
searchCategories: '搜索类别',
searchPlugins: '搜索插件',
from: '来自',
findMoreInMarketplace: '在 Marketplace 中查找更多',
searchInMarketplace: '在 Marketplace 中搜索',
fromMarketplace: '来自市场',
endpointsEnabled: '{{num}} 组端点已启用',
searchTools: '搜索工具...',
installPlugin: '安装插件',
installFrom: '安装源',
deprecated: '已弃用',
list: {
noInstalled: '无已安装的插件',
notFound: '未找到插件',
source: {
marketplace: '从 Marketplace 安装',
github: '从 GitHub 安装',
local: '本地插件',
},
},
source: {
marketplace: 'Marketplace',
github: 'GitHub',
local: '本地插件',
},
detailPanel: {
switchVersion: '切换版本',
categoryTip: {
marketplace: '从 Marketplace 安装',
github: '从 Github 安装',
local: '本地插件',
debugging: '调试插件',
},
operation: {
install: '安装',
detail: '详情',
update: '更新',
info: '插件信息',
checkUpdate: '检查更新',
viewDetail: '查看详情',
remove: '移除',
back: '返回',
},
actionNum: '包含 {{num}} 个 {{action}}',
strategyNum: '包含 {{num}} 个 {{strategy}}',
endpoints: 'API 端点',
endpointsTip: '此插件通过 API 端点提供特定功能,您可以为当前工作区配置多个 API 端点集。',
endpointsDocLink: '查看文档',
endpointsEmpty: '点击 \'+\' 按钮添加 API 端点',
endpointDisableTip: '停用 API 端点',
endpointDisableContent: '是否要停用 {{name}} 的 API 端点?',
endpointDeleteTip: '移除 API 端点',
endpointDeleteContent: '是否要移除 {{name}} ',
endpointModalTitle: '设置 API 端点',
endpointModalDesc: '完成配置后可使用插件 API 端点提供的功能',
serviceOk: '服务正常',
disabled: '停用',
modelNum: '包含 {{num}} 个模型',
toolSelector: {
title: '添加工具',
toolSetting: '工具设置',
toolLabel: '工具',
descriptionLabel: '工具描述',
descriptionPlaceholder: '简要描述工具目的,例如,获取特定位置的温度。',
placeholder: '选择工具',
settings: '用户设置',
params: '推理配置',
paramsTip1: '控制 LLM 推理参数。',
paramsTip2: '当“自动”关闭时,使用默认值。',
auto: '自动',
empty: '点击 "+" 按钮添加工具。您可以添加多个工具。',
uninstalledTitle: '工具未安装',
uninstalledContent: '此插件安装自 本地 / GitHub 仓库,请安装后使用。',
uninstalledLink: '在插件中管理',
unsupportedTitle: '不支持的 Action',
unsupportedContent: '已安装的插件版本不提供这个 action。',
unsupportedContent2: '点击切换版本',
unsupportedMCPTool: '当前选定的 Agent 策略插件版本不支持 MCP 工具。',
},
configureApp: '应用设置',
configureModel: '模型设置',
configureTool: '工具设置',
deprecation: {
fullMessage: '由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。请使用<CustomLink href=\'https://example.com/\'>{{-alternativePluginId}}</CustomLink>替代。',
onlyReason: '由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。',
noReason: '此插件已被弃用,将不再发布新版本。',
reason: {
businessAdjustments: '业务调整',
ownershipTransferred: '所有权转移',
noMaintainer: '无人维护',
},
},
},
install: '{{num}} 次安装',
installAction: '安装',
debugInfo: {
title: '调试',
viewDocs: '查看文档',
},
privilege: {
title: '插件偏好',
whoCanInstall: '谁可以安装和管理插件?',
whoCanDebug: '谁可以调试插件?',
everyone: '所有人',
admins: '管理员',
noone: '无人',
},
autoUpdate: {
automaticUpdates: '自动更新',
updateTime: '更新时间',
specifyPluginsToUpdate: '指定要更新的插件',
strategy: {
disabled: {
name: '禁用',
description: '插件将不会自动更新',
},
fixOnly: {
name: '仅修复',
description: '仅自动更新补丁版本例如1.0.1 → 1.0.2)。次要版本更改不会触发更新。',
selectedDescription: '仅自动更新补丁版本',
},
latest: {
name: '最新',
description: '始终更新到最新版本',
selectedDescription: '始终更新到最新版本',
},
},
updateTimeTitle: '更新时间',
upgradeMode: {
all: '更新全部',
exclude: '排除选定',
partial: '仅选定',
},
upgradeModePlaceholder: {
exclude: '选定的插件将不会自动更新',
partial: '仅选定的插件将自动更新。目前未选择任何插件,因此不会自动更新任何插件。',
},
excludeUpdate: '以下 {{num}} 个插件将不会自动更新',
partialUPdate: '仅以下 {{num}} 个插件将自动更新',
operation: {
clearAll: '清除所有',
select: '选择插件',
},
nextUpdateTime: '下次自动更新时间: {{time}}',
pluginDowngradeWarning: {
title: '插件降级',
description: '此插件目前已启用自动更新。降级版本可能会导致您的更改在下次自动更新时被覆盖。',
downgrade: '仍然降级',
exclude: '从自动更新中排除',
},
noPluginPlaceholder: {
noFound: '未找到插件',
noInstalled: '未安装插件',
},
updateSettings: '更新设置',
changeTimezone: '要更改时区,请前往<setTimezone>设置</setTimezone>',
},
pluginInfoModal: {
title: '插件信息',
repository: '仓库',
release: '发布版本',
packageName: '包',
},
action: {
checkForUpdates: '检查更新',
pluginInfo: '插件信息',
delete: '移除插件',
deleteContentLeft: '是否要移除 ',
deleteContentRight: ' 插件?',
usedInApps: '此插件正在 {{num}} 个应用中使用。',
},
installModal: {
installPlugin: '安装插件',
installComplete: '安装完成',
installedSuccessfully: '安装成功',
installedSuccessfullyDesc: '插件已成功安装。',
uploadFailed: '上传失败',
installFailed: '安装失败',
installFailedDesc: '插件安装失败。',
install: '安装',
installing: '安装中...',
uploadingPackage: '上传 {{packageName}} 中...',
readyToInstall: '即将安装以下插件',
readyToInstallPackage: '即将安装以下插件',
readyToInstallPackages: '即将安装以下 {{num}} 个插件',
fromTrustSource: '请保证仅从<trustSource>可信源</trustSource>安装插件。',
dropPluginToInstall: '拖放插件包到此处安装',
labels: {
repository: '仓库',
version: '版本',
package: '包',
},
close: '关闭',
cancel: '取消',
back: '返回',
next: '下一步',
pluginLoadError: '插件加载错误',
pluginLoadErrorDesc: '此插件将不会被安装',
installWarning: '此插件不允许安装。',
},
installFromGitHub: {
installPlugin: '从 GitHub 安装插件',
updatePlugin: '更新来自 GitHub 的插件',
installedSuccessfully: '安装成功',
installFailed: '安装失败',
uploadFailed: '上传失败',
gitHubRepo: 'GitHub 仓库',
selectVersion: '选择版本',
selectVersionPlaceholder: '请选择一个版本',
installNote: '请确保只从可信源安装插件。',
selectPackage: '选择包',
selectPackagePlaceholder: '请选择一个包',
},
upgrade: {
title: '安装插件',
successfulTitle: '安装成功',
description: '即将安装以下插件',
usedInApps: '在 {{num}} 个应用中使用',
upgrade: '安装',
upgrading: '安装中...',
close: '关闭',
},
error: {
inValidGitHubUrl: '无效的 GitHub URL。请输入格式为 https://github.com/owner/repo 的有效 URL',
fetchReleasesError: '无法获取发布版本。请稍后再试。',
noReleasesFound: '未找到发布版本。请检查 GitHub 仓库或输入的 URL。',
},
marketplace: {
empower: '助力您的 AI 开发',
discover: '探索',
and: '和',
difyMarketplace: 'Dify 市场',
moreFrom: '更多来自市场',
noPluginFound: '未找到插件',
pluginsResult: '{{num}} 个插件结果',
sortBy: '排序方式',
sortOption: {
mostPopular: '最受欢迎',
recentlyUpdated: '最近更新',
newlyReleased: '最新发布',
firstReleased: '首次发布',
},
viewMore: '查看更多',
verifiedTip: '此插件由 Dify 认证',
partnerTip: '此插件由 Dify 合作伙伴认证',
},
task: {
installing: '{{installingLength}} 个插件安装中0 已完成',
installingWithSuccess: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功',
installingWithError: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功,{{errorLength}} 安装失败',
installError: '{{errorLength}} 个插件安装失败,点击查看',
installedError: '{{errorLength}} 个插件安装失败',
clearAll: '清除所有',
},
requestAPlugin: '申请插件',
publishPlugins: '发布插件',
difyVersionNotCompatible: '当前 Dify 版本不兼容该插件,其最低版本要求为 {{minimalDifyVersion}}',
auth: {
default: '默认',
custom: '自定义',
setDefault: '设为默认',
useOAuth: '使用 OAuth',
useOAuthAuth: '使用 OAuth 授权',
addOAuth: '添加 OAuth',
setupOAuth: '设置 OAuth 客户端',
useApi: '使用 API Key',
addApi: '添加 API Key',
useApiAuth: 'API Key 授权配置',
useApiAuthDesc: '配置凭据后,工作区内的所有成员在编排应用时都可以使用此工具。',
oauthClientSettings: 'OAuth 客户端设置',
saveOnly: '仅保存',
saveAndAuth: '保存并授权',
authorization: '凭据',
authorizations: '凭据',
authorizationName: '凭据名称',
workspaceDefault: '工作区默认',
authRemoved: '凭据已移除',
clientInfo: '由于未找到此工具提供者的系统客户端密钥,因此需要手动设置,对于 redirect_uri请使用',
oauthClient: 'OAuth 客户端',
credentialUnavailable: '自定义凭据当前不可用,请联系管理员。',
credentialUnavailableInButton: '凭据不可用',
customCredentialUnavailable: '自定义凭据当前不可用',
unavailable: '不可用',
connectedWorkspace: '已连接的工作区',
emptyAuth: '请配置凭据',
},
readmeInfo: {
title: 'README',
needHelpCheckReadme: '需要帮助?查看 README。',
noReadmeAvailable: 'README 文档不可用',
failedToFetch: '获取 README 文档失败',
},
}
export default translation

View File

@@ -0,0 +1,4 @@
const translation = {
}
export default translation

View File

@@ -0,0 +1,31 @@
const translation = {
input: '输入',
result: '结果',
detail: '详情',
tracing: '追踪',
resultPanel: {
status: '状态',
time: '运行时间',
tokens: '总 token 数',
},
meta: {
title: '元数据',
status: '状态',
version: '版本',
executor: '执行人',
startTime: '开始时间',
time: '运行时间',
tokens: '总 token 数',
steps: '运行步数',
},
resultEmpty: {
title: '本次运行仅输出 JSON 格式,',
tipLeft: '请转到',
link: '详细信息面板',
tipRight: '查看它。',
},
actionLogs: 'Action 日志',
circularInvocationTip: '当前工作流中存在工具/节点的循环调用。',
}
export default translation

View File

@@ -0,0 +1,82 @@
const translation = {
common: {
welcome: '',
appUnavailable: '应用不可用',
appUnknownError: '应用不可用',
},
chat: {
newChat: '开启新对话',
newChatTip: '已在新对话中',
chatSettingsTitle: '新对话设置',
chatFormTip: '对话开始后,对话设置将无法修改。',
pinnedTitle: '已置顶',
unpinnedTitle: '对话列表',
newChatDefaultName: '新的对话',
resetChat: '重置对话',
viewChatSettings: '查看对话设置',
poweredBy: 'Powered by',
prompt: '提示词',
privatePromptConfigTitle: '对话设置',
publicPromptConfigTitle: '对话前提示词',
configStatusDes: '开始前,您可以修改对话设置',
configDisabled: '此次会话已使用上次会话表单',
startChat: '开始对话',
privacyPolicyLeft: '请阅读由该应用开发者提供的',
privacyPolicyMiddle: '隐私政策',
privacyPolicyRight: '。',
deleteConversation: {
title: '删除对话',
content: '您确定要删除此对话吗?',
},
tryToSolve: '尝试解决',
temporarySystemIssue: '抱歉,临时系统问题。',
expand: '展开',
collapse: '折叠',
},
generation: {
tabs: {
create: '运行一次',
batch: '批量运行',
saved: '已保存',
},
savedNoData: {
title: '您还没有保存结果!',
description: '开始生成内容,您可以在这里找到保存的结果。',
startCreateContent: '开始生成内容',
},
title: 'AI 智能书写',
queryTitle: '查询内容',
completionResult: '生成结果',
queryPlaceholder: '请输入文本内容',
run: '运行',
execution: '运行',
executions: '{{num}} 次运行',
copy: '拷贝',
resultTitle: 'AI 书写',
noData: 'AI 会在这里给你惊喜。',
csvUploadTitle: '将您的 CSV 文件拖放到此处,或',
browse: '浏览',
csvStructureTitle: 'CSV 文件必须符合以下结构:',
downloadTemplate: '下载模板',
field: '',
batchFailed: {
info: '{{num}} 次运行失败',
retry: '重试',
outputPlaceholder: '无输出内容',
},
errorMsg: {
empty: '上传文件的内容不能为空',
fileStructNotMatch: '上传文件的内容与结构不匹配',
emptyLine: '第 {{rowIndex}} 行的内容为空',
invalidLine: '第 {{rowIndex}} 行:{{varName}}值必填',
moreThanMaxLengthLine: '第 {{rowIndex}} 行:{{varName}}值超过最大长度 {{maxLength}}',
atLeastOne: '上传文件的内容不能少于一条',
},
stopRun: '停止运行',
},
login: {
backToHome: '返回首页',
},
}
export default translation

View File

@@ -0,0 +1,45 @@
const translation = {
daysInWeek: {
Sun: '日',
Mon: '一',
Tue: '二',
Wed: '三',
Thu: '四',
Fri: '五',
Sat: '六',
},
months: {
January: '一月',
February: '二月',
March: '三月',
April: '四月',
May: '五月',
June: '六月',
July: '七月',
August: '八月',
September: '九月',
October: '十月',
November: '十一月',
December: '十二月',
},
operation: {
now: '此刻',
ok: '确定',
cancel: '取消',
pickDate: '选择日期',
},
title: {
pickTime: '选择时间',
},
defaultPlaceholder: '请选择时间...',
// Date format configurations
dateFormats: {
display: 'YYYY年MM月DD日',
displayWithTime: 'YYYY年MM月DD日 HH:mm',
input: 'YYYY-MM-DD',
output: 'YYYY-MM-DD',
outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
},
}
export default translation

View File

@@ -0,0 +1,257 @@
const translation = {
title: '工具',
createCustomTool: '创建自定义工具',
customToolTip: '了解更多关于 Dify 自定义工具的信息',
type: {
builtIn: '工具',
custom: '自定义',
workflow: '工作流',
},
contribute: {
line1: '我有兴趣为 ',
line2: 'Dify 贡献工具。',
viewGuide: '查看指南',
},
author: '作者',
auth: {
authorized: '已授权',
setup: '要使用请先授权',
setupModalTitle: '设置授权',
setupModalTitleDescription: '配置凭据后,工作区中的所有成员都可以在编排应用程序时使用此工具。',
},
includeToolNum: '包含 {{num}} 个 {{action}}',
addToolModal: {
type: '类型',
category: '类别',
added: '已添加',
custom: {
title: '没有可用的自定义工具',
tip: '创建自定义工具',
},
workflow: {
title: '没有可用的工作流工具',
tip: '在工作室中发布工作流作为工具',
},
mcp: {
title: '没有可用的 MCP 工具',
tip: '添加 MCP 服务器',
},
agent: {
title: '没有可用的 agent 策略',
},
},
createTool: {
title: '创建自定义工具',
editAction: '编辑',
editTitle: '编辑自定义工具',
name: '名称',
toolNamePlaceHolder: '输入工具名称',
nameForToolCall: '工具调用名称',
nameForToolCallPlaceHolder: '用于机器识别,如 getCurrentWeather, list_pets',
nameForToolCallTip: '仅支持数字、字母、下划线。',
description: '工具描述',
descriptionPlaceholder: '工具用途的简要描述,例如获取特定位置的温度。',
schema: 'Schema',
schemaPlaceHolder: '在此处输入您的 OpenAPI schema',
viewSchemaSpec: '查看 OpenAPI-Swagger 规范',
importFromUrl: '从 URL 中导入',
importFromUrlPlaceHolder: 'https://...',
urlError: '请输入有效的 URL',
examples: '例子',
exampleOptions: {
json: '天气 (JSON)',
yaml: '宠物商店 (YAML)',
blankTemplate: '空白模板',
},
availableTools: {
title: '可用工具',
name: '名称',
description: '描述',
method: '方法',
path: '路径',
action: '操作',
test: '测试',
},
authMethod: {
title: '鉴权方法',
type: '鉴权类型',
keyTooltip: 'HTTP 头部名称,如果你不知道是什么,可以将其保留为 Authorization 或设置为自定义值',
queryParam: '查询参数',
queryParamTooltip: '用于传递 API 密钥查询参数的名称,如 "https://example.com/test?key=API_KEY" 中的 "key"参数',
types: {
none: '无',
api_key_header: '请求头',
api_key_query: '查询参数',
apiKeyPlaceholder: 'HTTP 头部名称,用于传递 API Key',
apiValuePlaceholder: '输入 API Key',
queryParamPlaceholder: '查询参数名称,用于传递 API Key',
},
key: '键',
value: '值',
},
authHeaderPrefix: {
title: '鉴权头部前缀',
types: {
basic: 'Basic',
bearer: 'Bearer',
custom: 'Custom',
},
},
privacyPolicy: '隐私协议',
privacyPolicyPlaceholder: '请输入隐私协议',
toolInput: {
title: '工具入参',
name: '名称',
required: '必须',
method: '方式',
methodSetting: '用户输入',
methodSettingTip: '用户在工具配置中填写',
methodParameter: 'LLM 填入',
methodParameterTip: 'LLM 在推理过程中填写',
label: '标签',
labelPlaceholder: '选择标签 (可选)',
description: '描述',
descriptionPlaceholder: '参数意义的描述',
},
customDisclaimer: '自定义免责声明',
customDisclaimerPlaceholder: '请输入自定义免责声明',
confirmTitle: '确认保存?',
confirmTip: '发布新的工具版本可能会影响该工具已关联的应用',
deleteToolConfirmTitle: '删除这个工具?',
deleteToolConfirmContent: '删除工具是不可逆的。用户将无法再访问您的工具。',
},
test: {
title: '测试',
parametersValue: '参数和值',
parameters: '参数',
value: '值',
testResult: '测试结果',
testResultPlaceholder: '测试结果将显示在这里',
},
thought: {
using: '正在使用',
used: '已使用',
requestTitle: '请求',
responseTitle: '响应',
},
setBuiltInTools: {
info: '信息',
setting: '设置',
toolDescription: '工具描述',
parameters: '参数',
string: '字符串',
number: '数字',
file: '文件',
required: '必填',
infoAndSetting: '信息和设置',
},
noCustomTool: {
title: '没有自定义工具!',
content: '在此统一添加和管理你的自定义工具,方便构建应用时使用。',
createTool: '创建工具',
},
noSearchRes: {
title: '抱歉,没有结果!',
content: '我们找不到任何与您的搜索相匹配的工具。',
reset: '重置搜索',
},
builtInPromptTitle: '提示词',
toolRemoved: '工具已被移除',
notAuthorized: '工具未授权',
howToGet: '如何获取',
openInStudio: '在工作室中打开',
toolNameUsageTip: '工具调用名称,用于 Agent 推理和提示词',
copyToolName: '复制名称',
noTools: '没有工具',
mcp: {
create: {
cardTitle: '添加 MCP 服务 (HTTP)',
cardLink: '了解更多关于 MCP 服务集成的信息',
},
noConfigured: '未配置',
updateTime: '更新于',
toolsCount: '{{count}} 个工具',
noTools: '没有可用的工具',
modal: {
title: '添加 MCP 服务 (HTTP)',
editTitle: '修改 MCP 服务 (HTTP)',
name: '名称和图标',
namePlaceholder: '命名你的 MCP 服务',
serverUrl: '服务端点 URL',
serverUrlPlaceholder: '服务端点的 URL',
serverUrlWarning: '修改服务端点 URL 可能会影响使用当前 MCP 的应用。',
serverIdentifier: '服务器标识符',
serverIdentifierTip: '工作空间内服务器的唯一标识。支持小写字母、数字、下划线和连字符,最多 24 个字符。',
serverIdentifierPlaceholder: '服务器唯一标识,例如 my-mcp-server',
serverIdentifierWarning: '更改服务器标识符后,现有应用将无法识别此服务器',
headers: '请求头',
headersTip: '发送到 MCP 服务器的额外 HTTP 请求头',
headerKey: '请求头名称',
headerValue: '请求头值',
headerKeyPlaceholder: '例如Authorization',
headerValuePlaceholder: '例如Bearer token123',
addHeader: '添加请求头',
noHeaders: '未配置自定义请求头',
maskedHeadersTip: '为了安全,请求头值已被掩码处理。修改将更新实际值。',
cancel: '取消',
save: '保存',
confirm: '添加并授权',
timeout: '超时时间',
sseReadTimeout: 'SSE 读取超时时间',
timeoutPlaceholder: '30',
authentication: '认证',
useDynamicClientRegistration: '使用动态客户端注册',
redirectUrlWarning: '请将您的 OAuth 重定向 URL 配置为:',
clientID: '客户端 ID',
clientSecret: '客户端密钥',
clientSecretPlaceholder: '客户端密钥',
configurations: '配置',
},
delete: '删除 MCP 服务',
deleteConfirmTitle: '你想要删除 {{mcp}} 吗?',
operation: {
edit: '修改',
remove: '删除',
},
authorize: '授权',
authorizing: '授权中...',
authorizingRequired: '需要授权',
authorizeTip: '授权后,工具将显示在这里。',
update: '更新',
updating: '更新中',
gettingTools: '获取工具中...',
updateTools: '更新工具中...',
toolsEmpty: '工具未加载',
getTools: '获取工具',
toolUpdateConfirmTitle: '更新工具列表',
toolUpdateConfirmContent: '更新工具列表可能影响现有应用。您想继续吗?',
toolsNum: '包含 {{count}} 个工具',
onlyTool: '包含 1 个工具',
identifier: '服务器标识符 (点击复制)',
server: {
title: 'MCP 服务',
url: '服务端点 URL',
reGen: '你想要重新生成服务端点 URL 吗?',
addDescription: '添加描述',
edit: '编辑描述',
modal: {
addTitle: '添加描述以启用 MCP 服务',
editTitle: '编辑 MCP 服务描述',
description: '描述',
descriptionPlaceholder: '解释此工具的功能以及 LLM 应如何使用它',
parameters: '参数',
parametersTip: '为每个参数添加描述,以帮助 LLM 理解其目的和约束条件。',
parametersPlaceholder: '参数的用途和约束条件',
confirm: '启用 MCP 服务',
},
publishTip: '应用未发布。请先发布应用。',
},
toolItem: {
parameters: '参数',
noDescription: '暂无描述',
},
},
allTools: '全部工具',
}
export default translation

File diff suppressed because it is too large Load Diff