Initial commit

This commit is contained in:
John Wang
2023-05-15 08:51:32 +08:00
commit db896255d6
744 changed files with 56028 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
const translation = {
apiServer: "API Server",
apiKey: "API Key",
status: "Status",
disabled: "Disabled",
ok: "In Service",
copy: "Copy",
copied: "Copied",
never: "Never",
apiKeyModal: {
apiSecretKey: "API Secret key",
apiSecretKeyTips: "To prevent API abuse, protect your API Key. Avoid using it as plain text in front-end code. :)",
createNewSecretKey: "Create new Secret key",
secretKey: "Secret Key",
created: "CREATED",
lastUsed: "LAST USED",
generateTips: "Keep this key in a secure and accessible place."
},
actionMsg: {
deleteConfirmTitle: "Delete this secret key?",
deleteConfirmTips: "This action cannot be undone.",
ok: "OK"
},
completionMode: {
title: "Completion App API",
info: "For high-quality text generation, such as articles, summaries, and translations, use the completion-messages API with user input. Text generation relies on the model parameters and prompt templates set in Dify Prompt Engineering.",
createCompletionApi: "Create Completion Message",
createCompletionApiTip: "Create a Completion Message to support the question-and-answer mode.",
inputsTips: "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.",
queryTips: "User input text content.",
blocking: "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)",
streaming: "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).",
messageFeedbackApi: "Message feedback (like)",
messageFeedbackApiTip: "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.",
messageIDTip: "Message ID",
ratingTip: "like or dislike, null is undo",
parametersApi: "Obtain application parameter information",
parametersApiTip: "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads."
},
chatMode: {
title: "Chat App API",
info: "For versatile conversational apps using a Q&A format, call the chat-messages API to initiate dialogue. Maintain ongoing conversations by passing the returned conversation_id. Response parameters and templates depend on Dify Prompt Eng. settings.",
createChatApi: "Create chat message",
createChatApiTip: "Create a new conversation message or continue an existing dialogue.",
inputsTips: "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.",
queryTips: "User input/question content",
blocking: "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)",
streaming: "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).",
conversationIdTip: "(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.",
messageFeedbackApi: "Message terminal user feedback, like",
messageFeedbackApiTip: "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.",
messageIDTip: "Message ID",
ratingTip: "like or dislike, null is undo",
chatMsgHistoryApi: "Get the chat history message",
chatMsgHistoryApiTip: "The first page returns the latest `limit` bar, which is in reverse order.",
chatMsgHistoryConversationIdTip: "Conversation ID",
chatMsgHistoryFirstId: "ID of the first chat record on the current page. The default is none.",
chatMsgHistoryLimit: "How many chats are returned in one request",
conversationsListApi: "Get conversation list",
conversationsListApiTip: "Gets the session list of the current user. By default, the last 20 sessions are returned.",
conversationsListFirstIdTip: "The ID of the last record on the current page, default none.",
conversationsListLimitTip: "How many chats are returned in one request",
conversationRenamingApi: "Conversation renaming",
conversationRenamingApiTip: "Rename conversations; the name is displayed in multi-session client interfaces.",
conversationRenamingNameTip: "New name",
parametersApi: "Obtain application parameter information",
parametersApiTip: "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads."
},
develop: {
requestBody: "Request Body",
pathParams: "Path Params",
query: "Query"
}
}
export default translation

View File

@@ -0,0 +1,76 @@
const translation = {
apiServer: "API 服务器",
apiKey: "API 密钥",
status: "状态",
disabled: "已停用",
ok: "运行中",
copy: "复制",
copied: "已复制",
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"
}
}
export default translation

View File

@@ -0,0 +1,139 @@
const translation = {
pageTitle: "Prompt Engineering",
operation: {
applyConfig: "Publish",
resetConfig: "Reset",
addFeature: "Add Feature",
stopResponding: "Stop responding",
},
notSetAPIKey: {
title: "LLM provider key has not been set",
trailFinished: "Trail finished",
description: "The LLM provider key has not been set, and it needs to be set before debugging.",
settingBtn: "Go to settings",
},
trailUseGPT4Info: {
title: 'Does not support gpt-4 now',
description: 'Use gpt-4, please set API Key.',
},
feature: {
groupChat: {
title: 'Chat enhance',
description: 'Add pre-conversation settings for apps can enhance user experience.'
},
groupExperience: {
title: 'Experience enhance',
},
conversationOpener: {
title: "Conversation remakers",
description: "In a chat app, the first sentence that the AI actively speaks to the user is usually used as a welcome."
},
suggestedQuestionsAfterAnswer: {
title: 'Follow-up',
description: 'Setting up next questions suggestion can give users a better chat.',
resDes: '3 suggestions for user next question.',
tryToAsk: 'Try to ask',
},
moreLikeThis: {
title: "More like this",
description: "Generate multiple texts at once, and then edit and continue to generate",
generateNumTip: "Number of each generated times",
tip: "Using this feature will incur additional tokens overhead"
},
dataSet: {
title: "Context",
noData: "You can import datasets as context",
words: "Words",
textBlocks: "Text Blocks",
selectTitle: "Select reference dataset",
selected: "Datasets selected",
noDataSet: "No dataset found",
toCreate: "Go to create",
notSupportSelectMulti: 'Currently only support one dataset'
}
},
resetConfig: {
title: "Confirm reset?",
message:
"Reset discards changes, restoring the last published configuration.",
},
errorMessage: {
nameOfKeyRequired: "name of the key: {{key}} required",
valueOfVarRequired: "Variables value can not be empty",
queryRequired: "Request text is required.",
waitForResponse:
"Please wait for the response to the previous message to complete.",
},
chatSubTitle: "Pre Prompt",
completionSubTitle: "Prefix Prompt",
promptTip:
"Prompts guide AI responses with instructions and constraints. Insert variables like {{input}}. This prompt won't be visible to users.",
formattingChangedTitle: "Formatting changed",
formattingChangedText:
"Modifying the formatting will reset the debug area, are you sure?",
variableTitle: "Variables",
variableTip:
"Users fill variables in a form, automatically replacing variables in the prompt.",
notSetVar: "Variables allow users to introduce prompt words or opening remarks when filling out forms. You can try entering \"{{input}}\" in the prompt words.",
autoAddVar: "Undefined variables referenced in pre-prompt, are you want to add them in user input form?",
variableTable: {
key: "Variable Key",
name: "User Input Field Name",
optional: "Optional",
type: "Input Type",
action: "Actions",
typeString: "String",
typeSelect: "Select",
},
varKeyError: {
canNoBeEmpty: "Variable key can not be empty",
tooLong: "Variable key: {{key}} too length. Can not be longer then 16 characters",
notValid: "Variable key: {{key}} is invalid. Can only contain letters, numbers, and underscores",
notStartWithNumber: "Variable key: {{key}} can not start with a number",
},
variableConig: {
modalTitle: "Field settings",
description: "Setting for variable {{varName}}",
fieldType: 'Field type',
string: 'Text',
select: 'Select',
notSet: 'Not set, try typing {{input}} in the prefix prompt',
stringTitle: "Form text box options",
maxLength: "Max length",
options: "Options",
addOption: "Add option",
},
openingStatement: {
title: "Opening remarks",
add: "Add",
writeOpner: "Write remarks",
placeholder: "Write your remarks message here",
noDataPlaceHolder:
"Starting the conversation with the user can help AI establish a closer connection with them in conversational applications.",
varTip: 'You can use variables, try type {{variable}}',
tooShort: "At least 20 words of initial prompt are required to generate an opening remarks for the conversation.",
notIncludeKey: "The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt.",
},
modelConfig: {
model: "Model",
setTone: "Set tone of responses",
title: "Model and Parameters",
},
inputs: {
title: "Debugging and Previewing",
noPrompt: "Try write some prompt in pre-prompt input",
userInputField: "User Input Field",
noVar: "Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started.",
chatVarTip:
"Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started",
completionVarTip:
"Fill in the value of the variable, which will be automatically replaced in the prompt words every time a question is submitted.",
previewTitle: "Prompt preview",
queryTitle: "Query content",
queryPlaceholder: "Please enter the request text.",
run: "RUN",
},
result: "Output Text",
};
export default translation;

View File

@@ -0,0 +1,134 @@
const translation = {
pageTitle: "提示词编排",
operation: {
applyConfig: "发布",
resetConfig: "重置",
addFeature: "添加功能",
stopResponding: "停止响应",
},
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"
},
dataSet: {
title: "上下文",
noData: "您可以导入数据集作为上下文",
words: "词",
textBlocks: "文本块",
selectTitle: "选择引用数据集",
selected: "个数据集被选中",
noDataSet: "未找到数据集",
toCreate: "去创建",
notSupportSelectMulti: '目前只支持引用一个数据集'
}
},
resetConfig: {
title: "确认重置?",
message: "重置将丢失当前页面所有修改,恢复至上次发布时的配置",
},
errorMessage: {
nameOfKeyRequired: "变量 {{key}} 对应的名称必填",
valueOfVarRequired: "变量值必填",
queryRequired: "主要文本必填",
waitForResponse: "请等待上条信息响应完成",
},
chatSubTitle: "对话前提示词",
completionSubTitle: "前缀提示词",
promptTip:
"提示词用于对 AI 的回复做出一系列指令和约束。可插入表单变量,例如 {{input}}。这段提示词不会被最终用户所看到。",
formattingChangedTitle: "编排已改变",
formattingChangedText: "修改编排将重置调试区域,确定吗?",
variableTitle: "变量",
notSetVar: "变量能使用户输入表单引入提示词或开场白,你可以试试在提示词中输入输入 {{input}}",
variableTip:
"变量将以表单形式让用户在对话前填写,用户填写的表单内容将自动替换提示词中的变量。",
autoAddVar: "提示词中引用了未定义的变量,是否自动添加到用户输入表单中?",
variableTable: {
key: "变量 Key",
name: "字段名称",
optional: "可选",
type: "类型",
action: "操作",
typeString: "文本",
typeSelect: "下拉选项",
},
varKeyError: {
canNoBeEmpty: "变量不能为空",
tooLong: "变量: {{key}} 长度太长。不能超过 16 个字符",
notValid: "变量: {{key}} 非法。只能包含英文字符,数字和下划线",
notStartWithNumber: "变量: {{key}} 不能以数字开头",
},
variableConig: {
modalTitle: "变量设置",
description: "设置变量 {{varName}}",
fieldType: '字段类型',
string: '文本',
select: '下拉选项',
notSet: '未设置,在 Prompt 中输入 {{input}} 试试',
stringTitle: "文本框设置",
maxLength: "最大长度",
options: "选项",
addOption: "添加选项",
},
openingStatement: {
title: "对话开场白",
add: "添加开场白",
writeOpner: "编写开场白",
placeholder: "请在这里输入开场白",
noDataPlaceHolder:
"在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。",
varTip: '你可以使用变量, 试试输入 {{variable}}',
tooShort: "对话前提示词至少 20 字才能生成开场白",
notIncludeKey: "前缀提示词中不包含变量 {{key}}。请在前缀提示词中添加该变量",
},
modelConfig: {
model: "语言模型",
setTone: "模型设置",
title: "模型及参数",
},
inputs: {
title: "调试与预览",
noPrompt: "尝试在对话前提示框中编写一些提示词",
userInputField: "用户输入",
noVar: "填入变量的值,每次启动新会话时该变量将自动替换提示词中的变量。",
chatVarTip: "填入变量的值,该值将在每次开启一个新会话时自动替换到提示词中",
completionVarTip: "填入变量的值,该值将在每次提交问题时自动替换到提示词中",
previewTitle: "提示词预览",
queryTitle: "查询内容",
queryPlaceholder: "请输入文本内容",
run: "运行",
},
result: "结果",
};
export default translation;

View File

@@ -0,0 +1,67 @@
const translation = {
title: 'Logs & Annotations',
description: 'The logs record the running status of the application, including user inputs and AI replies.',
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
table: {
header: {
time: 'Time',
endUser: 'End User',
input: 'Input',
output: 'Output',
summary: 'Summary',
messageCount: 'Message Count',
userRate: 'User Rate',
adminRate: 'Op. Rate',
},
pagination: {
previous: 'Prev',
next: 'Next',
},
empty: {
noChat: 'No conversation yet',
noOutput: 'No output',
element: {
title: 'Is anyone there?',
content: 'Observe and annotate interactions between end-users and AI applications here to continuously improve AI accuracy. You can try <shareLink>sharing</shareLink> or <testLink>testing</testLink> the Web App yourself, then return to this page.',
},
},
},
detail: {
time: 'Time',
conversationId: 'Conversation ID',
promptTemplate: 'Prompt Template',
promptTemplateBeforeChat: 'Prompt Template Before Chat · As System Message',
annotationTip: 'Improvements Marked by {{user}}',
timeConsuming: '',
second: 's',
tokenCost: 'Token spent',
loading: 'loading',
operation: {
like: 'like',
dislike: 'dislike',
addAnnotation: 'Add Improvement',
editAnnotation: 'Edit Improvement',
annotationPlaceholder: 'Enter the expected answer that you want AI to reply, which can be used for model fine-tuning and continuous improvement of text generation quality in the future.',
},
},
filter: {
period: {
today: 'Today',
last7days: 'Last 7 Days',
last4weeks: 'Last 4 weeks',
last3months: 'Last 3 months',
last12months: 'Last 12 months',
monthToDate: 'Month to date',
quarterToDate: 'Quarter to date',
yearToDate: 'Year to date',
allTime: 'All time',
},
annotation: {
all: 'All',
annotated: 'Annotated Improvements ({{count}} items)',
not_annotated: 'Not Annotated',
},
},
}
export default translation

View File

@@ -0,0 +1,67 @@
const translation = {
title: '日志与标注',
description: '日志记录了应用的运行情况,包括用户的输入和 AI 的回复。',
dateTimeFormat: 'YYYY-MM-DD HH:mm',
table: {
header: {
time: '时间',
endUser: '用户',
input: '输入',
output: '输出',
summary: '摘要',
messageCount: '消息数',
userRate: '用户反馈',
adminRate: '管理员反馈',
},
pagination: {
previous: '上一页',
next: '下一页',
},
empty: {
noChat: '未开始的对话',
noOutput: '无输出',
element: {
title: '这里有人吗',
content: '在这里观测和标注最终用户和 AI 应用程序之间的交互,以不断提高 AI 的准确性。您可以<testLink>试试</testLink> WebApp 或<shareLink>分享</shareLink>出去,然后返回此页面。',
},
},
},
detail: {
time: '时间',
conversationId: '对话 ID',
promptTemplate: '前缀提示词',
promptTemplateBeforeChat: '对话前提示词 · 以系统消息提交',
annotationTip: '{{user}} 标记的改进回复',
timeConsuming: '耗时',
second: ' 秒',
tokenCost: '花费 Token',
loading: '加载中',
operation: {
like: '赞同',
dislike: '反对',
addAnnotation: '标记改进回复',
editAnnotation: '编辑改进回复',
annotationPlaceholder: '输入你希望 AI 回复的预期答案,这在今后可用于模型微调,持续改进文本生成质量。',
},
},
filter: {
period: {
today: '今天',
last7days: '过去 7 天',
last4weeks: '过去 4 周',
last3months: '过去 3 月',
last12months: '过去 12 月',
monthToDate: '本月至今',
quarterToDate: '本季度至今',
yearToDate: '本年至今',
allTime: '所有时间',
},
annotation: {
all: '全部',
annotated: '已标注改进({{count}} 项)',
not_annotated: '未标注',
},
},
}
export default translation

View File

@@ -0,0 +1,102 @@
const translation = {
welcome: {
firstStepTip: 'To get started,',
enterKeyTip: 'enter your OpenAI API Key below',
getKeyTip: 'Get your API Key from OpenAI dashboard',
placeholder: 'Your OpenAI API Key(eg.sk-xxxx)',
},
overview: {
title: 'Overview',
appInfo: {
explanation: 'Ready-to-use AI WebApp',
accessibleAddress: 'Public URL',
preview: 'Preview',
share: {
entry: 'Share',
explanation: 'Share the following URL to invite more people to access the application.',
shareUrl: 'Share URL',
copyLink: 'Copy Link',
regenerate: 'Regenerate',
},
preUseReminder: 'Please enable WebApp before continuing.',
settings: {
entry: 'Settings',
title: 'WebApp Settings',
webName: 'WebApp Name',
webDesc: 'WebApp Description',
webDescTip: 'This text will be displayed on the client side, providing basic guidance on how to use the application',
webDescPlaceholder: 'Enter the description of the WebApp',
language: 'Language',
more: {
entry: 'Show more settings',
copyright: 'Copyright',
copyRightPlaceholder: 'Enter the name of the author or organization',
privacyPolicy: 'Privacy Policy',
privacyPolicyPlaceholder: 'Enter the privacy policy',
privacyPolicyTip: 'Helps visitors understand the data the application collects, see Dify\'s <privacyPolicyLink>Privacy Policy</privacyPolicyLink>.',
},
},
customize: {
way: 'way',
entry: 'Want to customize your WebApp?',
title: 'Customize AI WebApp',
explanation: 'You can customize the frontend of the Web App to fit your scenario and style needs.',
way1: {
name: 'Fork the client code, modify it and deploy to Vercel (recommended)',
step1: 'Fork the client code and modify it',
step1Tip: 'Click here to fork the source code into your GitHub account and modify the code',
step1Operation: 'Dify-WebClient',
step2: 'Configure the Web',
step2Tip: 'Copy the Web API and APP ID,then paste them into the client code config/index.ts',
step3: 'Deploy to Vercel',
step3Tip: 'Click here to import the repository into Vercel and deploy',
step3Operation: 'Import repository',
},
way2: {
name: 'Write client-side code to call the API and deploy it to a server',
operation: 'Documentation',
},
},
},
apiInfo: {
title: 'Backend service API',
explanation: 'Easily integrated into your application',
accessibleAddress: 'API Token',
doc: 'API Reference',
},
status: {
running: 'In service',
disable: 'Disable',
},
},
analysis: {
title: 'Analysis',
totalMessages: {
title: 'Total Messages',
explanation: 'Daily AI interactions count; prompt engineering/debugging excluded.',
},
activeUsers: {
title: 'Active Users',
explanation: 'Unique users engaging in Q&A with AI; prompt engineering/debugging excluded.',
},
tokenUsage: {
title: 'Token Usage',
explanation: 'Reflects the daily token usage of the language model for the application, useful for cost control purposes.',
consumed: 'Consumed',
},
avgSessionInteractions: {
title: 'Avg. Session Interactions',
explanation: 'Continuous user-AI communication count; for conversation-based apps.',
},
userSatisfactionRate: {
title: 'User Satisfaction Rate',
explanation: 'The number of likes per 1,000 messages. This indicates the proportion of answers that users are highly satisfied with.',
},
avgResponseTime: {
title: 'Avg. Response Time',
explanation: 'Time (ms) for AI to process/respond; for text-based apps.',
},
},
}
export default translation

View File

@@ -0,0 +1,102 @@
const translation = {
welcome: {
firstStepTip: '开始之前,',
enterKeyTip: '请先在下方输入你的 OpenAI API Key',
getKeyTip: '从 OpenAI 获取你的 API Key',
placeholder: '你的 OpenAI API Key例如 sk-xxxx',
},
overview: {
title: '概览',
appInfo: {
explanation: '开箱即用的 AI WebApp',
accessibleAddress: '公开访问 URL',
preview: '预览',
share: {
entry: '分享',
explanation: '将以下网址分享出去,让更多人访问该应用',
shareUrl: '分享 URL',
copyLink: '复制链接',
regenerate: '重新生成',
},
preUseReminder: '使用前请先打开开关',
settings: {
entry: '设置',
title: 'WebApp 设置',
webName: 'WebApp 名称',
webDesc: 'WebApp 描述',
webDescTip: '以下文字将展示在客户端中,对应用进行说明和使用上的基本引导',
webDescPlaceholder: '请输入 WebApp 的描述',
language: '语言',
more: {
entry: '展示更多设置',
copyright: '版权',
copyRightPlaceholder: '请输入作者或组织名称',
privacyPolicy: '隐私政策',
privacyPolicyPlaceholder: '请输入隐私政策',
privacyPolicyTip: '帮助访问者了解该应用收集的数据,可参考 Dify 的<privacyPolicyLink>隐私政策</privacyPolicyLink>。',
},
},
customize: {
way: '方法',
entry: '想要进一步自定义 WebApp',
title: '定制化 AI WebApp',
explanation: '你可以定制化 Web App 前端以符合你的情景与风格需求',
way1: {
name: 'Fork 客户端代码修改后部署到 Vercel推荐',
step1: 'Fork 客户端代码并修改',
step1Tip: '点击此处 Fork 源码到你的 GitHub 中,然后修改代码',
step1Operation: 'Dify-WebClient',
step2: '配置 Web APP',
step2Tip: '复制 Web API 秘钥 和 APP ID 拷贝到客户端代码 config/index.ts 中',
step3: '部署到 Vercel 中',
step3Tip: '点击此处将仓库导入到 Vercel 中部署',
step3Operation: '导入仓库',
},
way2: {
name: '编写客户端调用 API 并部署到服务器中',
operation: '查看文档',
},
},
},
apiInfo: {
title: '后端服务 API',
explanation: '可集成至你的应用的后端即服务',
accessibleAddress: 'API 访问凭据',
doc: '查阅 API 文档',
},
status: {
running: '运行中',
disable: '已停用',
},
},
analysis: {
title: '分析',
totalMessages: {
title: '全部消息数',
explanation: '反映 AI 每天的互动总次数,每回答用户一个问题算一条 Message。提示词编排和调试的消息不计入。',
},
activeUsers: {
title: '活跃用户数',
explanation: '与 AI 有效互动,即有一问一答以上的唯一用户数。提示词编排和调试的会话不计入。',
},
tokenUsage: {
title: '费用消耗',
explanation: '反映每日该应用请求语言模型的 Tokens 花费,用于成本控制。',
consumed: '耗费',
},
avgSessionInteractions: {
title: '平均会话互动数',
explanation: '反应每个会话用户的持续沟通次数,如果用户与 AI 问答了 10 轮,即为 10。该指标反映了用户粘性。仅在对话型应用提供。',
},
userSatisfactionRate: {
title: '用户满意度',
explanation: '每 1000 条消息的点赞数。反应了用户对回答十分满意的比例。',
},
avgResponseTime: {
title: '平均响应时间',
explanation: '衡量 AI 应用处理和回复用户请求所花费的平均时间,单位为毫秒,反映性能和用户体验。仅在文本型应用提供。',
},
},
}
export default translation

40
web/i18n/lang/app.en.ts Normal file
View File

@@ -0,0 +1,40 @@
const translation = {
createApp: 'Create new App',
modes: {
completion: 'Text Generator',
chat: 'Chat App',
},
createFromConfigFile: 'Create app from config file',
deleteAppConfirmTitle: 'Delete this app?',
deleteAppConfirmContent:
'Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.',
appDeleted: 'App deleted',
appDeleteFailed: 'Failed to delete app',
join: 'Join the community',
communityIntro:
'Discuss with team members, contributors and developers on different channels.',
roadmap: 'See our roadmap',
newApp: {
startToCreate: 'Let\'s start with your new app',
captionName: 'Give your app a name',
captionAppType: 'What kind of app do you want?',
previewDemo: 'Preview demo',
chatApp: 'Chat App',
chatAppIntro:
'I want to build a chat-based application. This app uses a question-and-answer format, allowing for multiple rounds of continuous conversation.',
completeApp: 'Text Generator',
completeAppIntro:
'I want to create an application that generates high-quality text based on prompts, such as generating articles, summaries, translations, and more.',
showTemplates: 'I want to choose from a template',
hideTemplates: 'Go back to mode selection',
Create: 'Create',
Cancel: 'Cancel',
nameNotEmpty: 'Name cannot be empty',
appTemplateNotSelected: 'Please select a template',
appTypeRequired: 'Please select an app type',
appCreated: 'App created',
appCreateFailed: 'Failed to create app',
},
}
export default translation

39
web/i18n/lang/app.zh.ts Normal file
View File

@@ -0,0 +1,39 @@
const translation = {
createApp: '创建应用',
modes: {
completion: '文本生成型',
chat: '对话型',
},
createFromConfigFile: '通过导入应用配置文件创建',
deleteAppConfirmTitle: '确认删除应用?',
deleteAppConfirmContent:
'删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。',
appDeleted: '应用已删除',
appDeleteFailed: '应用删除失败',
join: '参与社区',
communityIntro: '与团队成员、贡献者和开发者在不同频道中交流',
roadmap: '产品路线图',
newApp: {
startToCreate: '开始创建一个新应用',
captionName: '给应用起个名字',
captionAppType: '想要哪种应用类型?',
previewDemo: '预览 Demo',
chatApp: '对话型应用',
chatAppIntro:
'我要构建一个聊天场景的应用。该应用采用一问一答模式与用户持续对话。',
completeApp: '文本生成应用',
completeAppIntro:
'我要构建一个根据提示生成高质量文本的应用,例如生成文章、摘要、翻译等',
showTemplates: '我想从范例模板中选择',
hideTemplates: '返回应用类型选择',
Create: '创建',
Cancel: '取消',
nameNotEmpty: '名称不能为空',
appTemplateNotSelected: '请选择应用模版',
appTypeRequired: '请选择应用类型',
appCreated: '应用已创建',
appCreateFailed: '应用创建失败',
},
}
export default translation

205
web/i18n/lang/common.en.ts Normal file
View File

@@ -0,0 +1,205 @@
const translation = {
api: {
success: 'Success',
saved: 'Saved',
create: 'Created',
remove: 'Removed',
},
operation: {
confirm: 'Confirm',
cancel: 'Cancel',
clear: 'Clear',
save: 'Save',
edit: 'Edit',
add: 'Add',
refresh: 'Restart',
search: 'Search',
change: 'Change',
remove: 'Remove',
send: 'Send',
copy: 'Copy',
lineBreak: 'Line break',
sure: 'I\'m sure',
},
placeholder: {
input: 'Please enter',
select: 'Please select',
},
unit: {
char: 'chars',
},
actionMsg: {
modifiedSuccessfully: 'Modified successfully',
modificationFailed: 'Modification failed',
copySuccessfully: 'Copied successfully',
},
model: {
params: {
temperature: 'Temperature',
temperatureTip:
'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.',
topP: 'Top P',
topPTip:
'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.',
presencePenalty: 'Presence penalty',
presencePenaltyTip:
'How much to penalize new tokens based on whether they appear in the text so far. Increases the model\'s likelihood to talk about new topics.',
frequencyPenalty: 'Frequency penalty',
frequencyPenaltyTip:
'How much to penalize new tokens based on their existing frequency in the text so far. Decreases the model\'s likelihood to repeat the same line verbatim.',
maxToken: 'Max token',
maxTokenTip:
'Max tokens generated is 2,048 or 4,000, depending on the model. Prompt and completion share this limit. One token is roughly 1 English character.',
},
tone: {
Creative: 'Creative',
Balanced: 'Balanced',
Precise: 'Precise',
Custom: 'Custom',
},
},
menus: {
status: 'beta',
apps: 'Apps',
plugins: 'Plugins',
pluginsTips: 'Integrate third-party plugins or create ChatGPT-compatible AI-Plugins.',
datasets: 'Datasets',
datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
newApp: 'New App',
newDataset: 'Create dataset',
},
userProfile: {
settings: 'Settings',
workspace: 'Workspace',
createWorkspace: 'Create Workspace',
helpCenter: 'Help Document',
about: 'About',
logout: 'Log out',
},
settings: {
accountGroup: 'ACCOUNT',
workplaceGroup: 'WORKPLACE',
account: "My account",
members: "Members",
integrations: "Integrations",
language: "Language",
provider: "Model Provider"
},
account: {
avatar: 'Avatar',
name: 'Name',
email: 'Email',
langGeniusAccount: 'Dify account',
langGeniusAccountTip: 'Your Dify account and associated user data.',
editName: 'Edit Name',
showAppLength: 'Show {{length}} apps',
},
members: {
team: 'Team',
invite: 'Invite',
name: 'NAME',
lastActive: 'LAST ACTIVE',
role: 'ROLES',
pending: 'Pending...',
owner: 'Owner',
admin: 'Admin',
adminTip: 'Can build apps & manage team settings',
normal: 'Normal',
normalTip: 'Only can use appscan not build apps',
inviteTeamMember: 'Invite team member',
inviteTeamMemberTip: 'The other person will receive an email. If he\'s already a Dify user, he can access your team data directly after signing in.',
email: 'Email',
emailInvalid: 'Invalid Email Format',
emailPlaceholder: 'Input Email',
sendInvite: 'Send Invite',
invitationSent: 'Invitation sent',
invitationSentTip: 'The invitation is sent, and they can sign in to Dify to access your team data.',
ok: 'OK',
removeFromTeam: 'Remove from team',
removeFromTeamTip: 'Will remove team access',
setAdmin: 'Set as administrator',
setMember: 'Set to ordinary member',
disinvite: 'Cancel the invitation',
deleteMember: 'Delete Member',
you: '(You)',
},
integrations: {
connected: 'Connected',
google: 'Google',
googleAccount: 'Login with Google account',
github: 'GitHub',
githubAccount: 'Login with GitHub account',
connect: 'Connect'
},
language: {
displayLanguage: 'Display Language',
timezone: 'Time Zone',
},
provider: {
apiKey: "API Key",
enterYourKey: "Enter your API key here",
invalidKey: "Invalid OpenAI API key",
validating: "Validating key...",
saveFailed: "Save api key failed",
apiKeyExceedBill: "This API KEY has no quota available, please read",
addKey: 'Add Key',
comingSoon: 'Coming Soon',
editKey: 'Edit',
invalidApiKey: 'Invalid API key',
azure: {
resourceName: 'Resource Name',
resourceNamePlaceholder: 'The name of your Azure OpenAI Resource.',
deploymentId: 'Deployment ID',
deploymentIdPlaceholder: 'The deployment name you chose when you deployed the model.',
apiVersion: 'API Version',
apiVersionPlaceholder: 'The API version to use for this operation.',
apiKey: 'API Key',
apiKeyPlaceholder: 'Enter your API key here',
helpTip: 'Learn Azure OpenAI Service',
},
openaiHosted: {
openaiHosted: 'Hosted OpenAI',
onTrial: 'ON TRIAL',
exhausted: 'QUOTA EXHAUSTED',
desc: 'The OpenAI hosting service provided by Dify allows you to use models such as GPT-3.5. Before your trial quota is used up, you need to set up other model providers.',
callTimes: 'Call times',
usedUp: 'Trial quota used up. Add own Model Provider.',
useYourModel: 'Currently using own Model Provider.',
close: 'Close',
},
encrypted: {
front: 'Your API KEY will be encrypted and stored using',
back: ' technology.',
}
},
about: {
changeLog: 'Changlog',
updateNow: 'Update now',
nowAvailable: 'Dify {{version}} is now available.',
latestAvailable: 'Dify {{version}} is the latest version available.',
},
appMenus: {
overview: 'Overview',
promptEng: 'Prompt Eng.',
apiAccess: 'API Access',
logAndAnn: 'Logs & Ann.',
},
environment: {
testing: 'TESTING',
development: 'DEVELOPMENT',
},
appModes: {
completionApp: 'Text Generator',
chatApp: 'Chat App',
},
datasetMenus: {
documents: 'Documents',
hitTesting: 'Hit Testing',
settings: 'Settings',
emptyTip: 'The data set has not been associated, please go to the application or plug-in to complete the association.',
viewDoc: 'View documentation',
relatedApp: 'linked apps',
},
}
export default translation

206
web/i18n/lang/common.zh.ts Normal file
View File

@@ -0,0 +1,206 @@
const translation = {
api: {
success: '成功',
saved: '已保存',
create: '已创建',
remove: '已移除',
},
operation: {
confirm: '确认',
cancel: '取消',
clear: '清空',
save: '保存',
edit: '编辑',
add: '添加',
refresh: '重新开始',
search: '搜索',
change: '更改',
remove: '移除',
send: '发送',
copy: '复制',
lineBreak: '换行',
sure: '我确定',
},
placeholder: {
input: '请输入',
select: '请选择',
},
unit: {
char: '个字符',
},
actionMsg: {
modifiedSuccessfully: '修改成功',
modificationFailed: '修改失败',
copySuccessfully: '复制成功',
},
model: {
params: {
temperature: '多样性',
temperatureTip:
'较高的 Temperature 设置将导致更多样和创造性的输出,而较低的 Temperature 将产生更保守的输出并且类似于训练数据。',
topP: '采样范围',
topPTip:
'Top P值越高输出与训练文本越相似Top P值越低输出越有创意和变化。它可用于使输出更适合特定用例。',
presencePenalty: '词汇控制',
presencePenaltyTip:
'Presence penalty 是根据新词是否出现在目前的文本中来对其进行惩罚。正值将降低模型谈论新话题的可能性。',
frequencyPenalty: '重复控制',
frequencyPenaltyTip:
'Frequency penalty 是根据重复词在目前文本中的出现频率来对其进行惩罚。正值将不太可能重复常用单词和短语。',
maxToken: '最大 Token',
maxTokenTip:
'生成的最大令牌数为 2,048 或 4,000取决于模型。提示和完成共享令牌数限制。一个令牌约等于 1 个英文或 4 个中文字符。',
},
tone: {
Creative: '创意',
Balanced: '平衡',
Precise: '精确',
Custom: '自定义',
},
},
menus: {
status: 'beta',
apps: '应用',
plugins: '插件',
pluginsTips: '集成第三方插件或创建与 ChatGPT 兼容的 AI 插件。',
datasets: '数据集',
datasetsTips: '即将到来: 上传自己的长文本数据,或通过 Webhook 集成自己的数据源',
newApp: '创建应用',
newDataset: '创建数据集',
},
userProfile: {
settings: '设置',
workspace: '工作空间',
createWorkspace: '创建工作空间',
helpCenter: '帮助文档',
about: '关于',
logout: '登出',
},
settings: {
accountGroup: '账户',
workplaceGroup: '工作空间',
account: "我的账户",
members: "成员",
integrations: "集成",
language: "语言",
provider: "模型供应商"
},
account: {
avatar: '头像',
name: '用户名',
email: '邮箱',
edit: '编辑',
langGeniusAccount: 'Dify 账号',
langGeniusAccountTip: '您的 Dify 账号和相关的用户数据。',
editName: '编辑名字',
showAppLength: '显示 {{length}} 个应用',
},
members: {
team: '团队',
invite: '邀请',
name: '姓名',
lastActive: '上次活动时间',
role: '角色',
pending: '待定...',
owner: '所有者',
admin: '管理员',
adminTip: '能够建立应用程序和管理团队设置',
normal: '正常人',
normalTip: '只能使用应用程序,不能建立应用程序',
inviteTeamMember: '邀请团队成员',
inviteTeamMemberTip: '对方会收到一封邮件。如果他已经是 Dify 用户则可直接在登录后访问你的团队数据。',
email: '邮箱',
emailInvalid: '邮箱格式无效',
emailPlaceholder: '输入邮箱',
sendInvite: '发送邀请',
invitationSent: '邀请已发送',
invitationSentTip: '邀请已发送,对方登录 Dify 后即可访问你的团队数据。',
ok: '好的',
removeFromTeam: '移除团队',
removeFromTeamTip: '将取消团队访问',
setAdmin: '设为管理员',
setMember: '设为普通成员',
disinvite: '取消邀请',
deleteMember: '删除成员',
you: '(你)',
},
integrations: {
connected: '登录方式',
google: 'Google',
googleAccount: 'Google 账号登录',
github: 'GitHub',
githubAccount: 'GitHub 账号登录',
connect: '绑定'
},
language: {
displayLanguage: '界面语言',
timezone: '时区',
},
provider: {
apiKey: "API 密钥",
enterYourKey: "输入你的 API 密钥",
invalidKey: '无效的 OpenAI API 密钥',
validating: "验证密钥中...",
saveFailed: "API 密钥保存失败",
apiKeyExceedBill: "此 API KEY 已没有可用配额,请阅读",
addKey: '添加 密钥',
comingSoon: '即将推出',
editKey: '编辑',
invalidApiKey: '无效的 API 密钥',
azure: {
resourceName: 'Resource Name',
resourceNamePlaceholder: 'The name of your Azure OpenAI Resource.',
deploymentId: 'Deployment ID',
deploymentIdPlaceholder: 'The deployment name you chose when you deployed the model.',
apiVersion: 'API Version',
apiVersionPlaceholder: 'The API version to use for this operation.',
apiKey: 'API Key',
apiKeyPlaceholder: 'Enter your API key here',
helpTip: '了解 Azure OpenAI Service',
},
openaiHosted: {
openaiHosted: '托管 OpenAI',
onTrial: '体验',
exhausted: '超出限额',
desc: '托管 OpenAI 由 Dify 提供的托管 OpenAI 服务,你可以使用 GPT-3.5 等模型,在体验额度消耗完毕前你需要设置其它模型供应商。',
callTimes: '调用次数',
usedUp: '试用额度已用完,请在下方添加自己的模型供应商',
useYourModel: '当前正在使用你自己的模型供应商。',
close: '关闭',
},
encrypted: {
front: '密钥将使用 ',
back: ' 技术进行加密和存储。',
}
},
about: {
changeLog: '更新日志',
updateNow: '现在更新',
nowAvailable: 'Dify {{version}} 现已可用。',
latestAvailable: 'Dify {{version}} 已是最新版本。',
},
appMenus: {
overview: '概览',
promptEng: '提示词编排',
apiAccess: '访问 API',
logAndAnn: '日志与标注',
},
environment: {
testing: '测试环境',
development: '开发环境',
},
appModes: {
completionApp: '文本生成型应用',
chatApp: '对话型应用',
},
datasetMenus: {
documents: '文档',
hitTesting: '命中测试',
settings: '设置',
emptyTip: ' 数据集尚未关联,请前往应用程序或插件完成关联。',
viewDoc: '查看文档',
relatedApp: '个关联应用',
},
}
export default translation

View File

@@ -0,0 +1,108 @@
const translation = {
steps: {
header: {
creation: 'Create Dataset',
update: 'Add data',
},
one: 'Choose data source',
two: 'Text Preprocessing and Cleaning',
three: 'Execute and finish',
},
error: {
unavailable: 'This dataset is not avaliable',
},
stepOne: {
filePreview: 'File Preview',
dataSourceType: {
file: 'Import from text file',
notion: 'Sync from Notion',
web: 'Sync from web site',
},
uploader: {
title: 'Upload text file',
button: 'Drag and drop file, or',
browse: 'Browse',
tip: 'Supports txt, html, markdown, and pdf.',
validation: {
typeError: 'File type not supported',
size: 'File too large. Maximum is 15MB',
count: 'Multiple files not supported',
},
cancel: 'Cancel',
change: 'Change',
failed: 'Upload failed',
},
button: 'next',
emptyDatasetCreation: 'I want to create an empty dataset',
modal: {
title: 'Create an empty dataset',
tip: 'An empty dataset will contain no documents, and you can upload documents any time.',
input: 'Dataset name',
placeholder: 'Please input',
nameNotEmpty: 'Name cannot be empty',
nameLengthInvaild: 'Name must be between 1 to 40 characters',
cancelButton: 'Cancel',
confirmButton: 'Create',
failed: 'Creation failed',
},
},
stepTwo: {
segmentation: 'Segmentation settings',
auto: 'Automatic',
autoDescription: 'Automatically set segmentation and preprocessing rules. Unfamiliar users are recommended to select this.',
custom: 'Custom',
customDescription: 'Customize segmentation rules, segmentation length, and preprocessing rules, etc.',
separator: 'Segment identifier',
separatorPlaceholder: 'For example, newline (\\\\n) or special separator (such as "***")',
maxLength: 'Maximum segment length',
rules: 'Text preprocessing rules',
removeExtraSpaces: 'Replace consecutive spaces, newlines and tabs',
removeUrlEmails: 'Delete all URLs and email addresses',
removeStopwords: 'Remove stopwords such as "a", "an", "the"',
preview: 'Confirm & Preview',
reset: 'Reset',
indexMode: 'Index mode',
qualified: 'High Quality',
recommend: 'Recommend',
qualifiedTip: 'Call OpenAI\'s embedding interface for processing to provide higher accuracy when users query.',
warning: 'Please set up the model provider API key first.',
click: 'Go to settings',
economical: 'Economical',
economicalTip: 'Use offline vector engines, keyword indexes, etc. to reduce accuracy without spending tokens',
emstimateCost: 'Estimation',
emstimateSegment: 'Estimated segments',
segmentCount: 'segments',
calculating: 'Calculating...',
fileName: 'Preprocess document',
lastStep: 'Last step',
nextStep: 'Save & Process',
sideTipTitle: 'Why segment and preprocess?',
sideTipP1: 'When processing text data, segmentation and cleaning are two important preprocessing steps.',
sideTipP2: 'Segmentation splits long text into paragraphs so models can understand better. This improves the quality and relevance of model results.',
sideTipP3: 'Cleaning removes unnecessary characters and formats, making datasets cleaner and easier to parse.',
sideTipP4: 'Proper segmentation and cleaning improve model performance, providing more accurate and valuable results.',
previewTitle: 'Preview',
characters: 'characters',
indexSettedTip: 'To change the index method, please go to the ',
datasetSettingLink: 'dataset settings.',
},
stepThree: {
creationTitle: '🎉 Dataset created',
creationContent: 'We automatically named the dataset, you can modify it at any time',
label: 'Dataset name',
additionTitle: '🎉 Document uploaded',
additionP1: 'The document has been uploaded to the dataset',
additionP2: ', you can find it in the document list of the dataset。',
stop: 'Stop processing',
resume: 'Resume processing',
navTo: 'Go to document',
sideTipTitle: 'What\'s next',
sideTipContent: 'After the document finishes indexing, the dataset can be integrated into the application as context, you can find the context setting in the prompt orchestration page. You can also create it as an independent ChatGPT indexing plugin for release.',
modelTitle: 'Are you sure to stop embedding?',
modelContent: 'If you need to resume processing later, you will continue from where you left off.',
modelButtonConfirm: "Confirm",
modelButtonCancel: 'Cancel'
},
}
export default translation

View File

@@ -0,0 +1,108 @@
const translation = {
steps: {
header: {
creation: '创建数据集',
update: '上传文件',
},
one: '选择数据源',
two: '文本分段与清洗',
three: '处理并完成',
},
error: {
unavailable: '该数据集不可用',
},
stepOne: {
filePreview: '文件预览',
dataSourceType: {
file: '导入已有文本',
notion: '同步自 Notion 内容',
web: '同步自 Web 站点',
},
uploader: {
title: '上传文本文件',
button: '拖拽文件至此,或者',
browse: '选择文件',
tip: '已支持 TXT, HTML, Markdown, PDF',
validation: {
typeError: '文件类型不支持',
size: '文件太大了,不能超过 15MB',
count: '暂不支持多个文件',
},
cancel: '取消',
change: '更改文件',
failed: '上传失败',
},
button: '下一步',
emptyDatasetCreation: '创建一个空数据集',
modal: {
title: '创建空数据集',
tip: '空数据集中还没有文档,你可以在今后任何时候上传文档至该数据集。',
input: '数据集名称',
placeholder: '请输入数据集名称',
nameNotEmpty: '名称不能为空',
nameLengthInvaild: '名称长度不能超过 40 个字符',
cancelButton: '取消',
confirmButton: '创建',
failed: '创建失败',
},
},
stepTwo: {
segmentation: '分段设置',
auto: '自动分段与清洗',
autoDescription: '自动设置分段规则与预处理规则,如果不了解这些参数建议选择此项',
custom: '自定义',
customDescription: '自定义分段规则、分段长度以及预处理规则等参数',
separator: '分段标识符',
separatorPlaceholder: '例如换行符(\n或特定的分隔符如 "***"',
maxLength: '分段最大长度',
rules: '文本预处理规则',
removeExtraSpaces: '替换掉连续的空格、换行符和制表符',
removeUrlEmails: '删除所有 URL 和电子邮件地址',
removeStopwords: '去除停用词,例如 “a”“an”“the” 等',
preview: '确认并预览',
reset: '重置',
indexMode: '索引方式',
qualified: '高质量',
recommend: '推荐',
qualifiedTip: '调用 OpenAI 的嵌入接口进行处理,以在用户查询时提供更高的准确度',
warning: '请先完成模型供应商的 API KEY 设置。.',
click: '前往设置',
economical: '经济',
economicalTip: '使用离线的向量引擎、关键词索引等方式,降低了准确度但无需花费 Token',
emstimateCost: '执行嵌入预估消耗',
emstimateSegment: '预估分段数',
segmentCount: '段',
calculating: '计算中...',
fileName: '预处理文档',
lastStep: '上一步',
nextStep: '保存并处理',
sideTipTitle: '为什么要分段和预处理?',
sideTipP1: '在处理文本数据时,分段和清洗是两个重要的预处理步骤。',
sideTipP2: '分段的目的是将长文本拆分成较小的段落,以便模型更有效地处理和理解。这有助于提高模型生成的结果的质量和相关性。',
sideTipP3: '清洗则是对文本进行预处理,删除不必要的字符、符号或格式,使数据集更加干净、整洁,便于模型解析。',
sideTipP4: '通过对数据集进行适当的分段和清洗,可以提高模型在实际应用中的表现,从而为用户提供更准确、更有价值的结果。',
previewTitle: '分段预览',
characters: '字符',
indexSettedTip: '要更改索引方法,请转到',
datasetSettingLink: '数据集设置。',
},
stepThree: {
creationTitle: '🎉 数据集已创建',
creationContent: '我们自动为该数据集起了个名称,您也可以随时修改',
label: '数据集名称',
additionTitle: '🎉 文档已上传',
additionP1: '文档已上传至数据集:',
additionP2: ',你可以在数据集的文档列表中找到它。',
stop: '停止处理',
resume: '恢复处理',
navTo: '前往文档',
sideTipTitle: '接下来做什么',
sideTipContent: '当文档完成索引处理后,数据集即可集成至应用内作为上下文使用,你可以在提示词编排页找到上下文设置。你也可以创建成可独立使用的 ChatGPT 索引插件发布。',
modelTitle: '确认停止索引过程吗?',
modelContent:'如果您需要稍后恢复处理,则从停止处继续。',
modelButtonConfirm: "确认停止",
modelButtonCancel: '取消'
},
}
export default translation

View File

@@ -0,0 +1,314 @@
const translation = {
list: {
title: "Documents",
desc: "All files of the dataset are shown here, and the entire dataset can be linked to Dify citations or indexed via the Chat plugin.",
addFile: "add file",
table: {
header: {
fileName: "FILE NAME",
words: "WORDS",
hitCount: "HIT COUNT",
uploadTime: "UPLOAD TIME",
status: "STATUS",
action: "ACTION",
},
},
action: {
uploadFile: 'Upload new file',
settings: 'Segment settings',
archive: 'Archive',
delete: "Delete",
enableWarning: 'Archived file cannot be enabled',
},
index: {
enable: 'Enable',
disable: 'Disable',
all: 'All',
enableTip: 'The file can be indexed',
disableTip: 'The file cannot be indexed',
},
status: {
queuing: 'Queuing',
indexing: 'Indexing',
parsed: 'Parsed',
error: 'Error',
available: 'Available',
enabled: 'Enabled',
disabled: 'Disabled',
archived: 'Archived',
},
empty: {
title: "There is no documentation yet",
upload: {
tip: "You can upload files, sync from the website, or from webb apps like Notion, GitHub, etc.",
},
sync: {
tip: "Dify will periodically download files from your Notion and complete processing.",
},
},
delete: {
title: 'Are you sure Delete?',
content: 'If you need to resume processing later, you will continue from where you left off'
}
},
metadata: {
title: "Metadata",
desc: "Labeling metadata for documents allows AI to access them in a timely manner and exposes the source of references for users.",
dateTimeFormat: 'MMMM D, YYYY hh:mm A',
docTypeSelectTitle: "Please select a document type",
docTypeChangeTitle: "Change document type",
docTypeSelectWarning:
"If the document type is changed, the now filled metadata will no longer be preserved",
firstMetaAction: "Let's go",
placeholder: {
add: 'Add ',
select: 'Select ',
},
source: {
upload_file: 'Upload File',
notion: "Sync form Notion",
github: "Sync form Github",
},
type: {
book: "Book",
webPage: "Web Page",
paper: "Paper",
socialMediaPost: "Social Media Post",
personalDocument: "Personal Document",
businessDocument: "Business Document",
IMChat: "IM Chat",
wikipediaEntry: "Wikipedia Entry",
notion: "Sync form Notion",
github: "Sync form Github",
technicalParameters: 'Technical Parameters',
},
field: {
processRule: {
processDoc: 'Process Document',
segmentRule: 'Segment Rule',
segmentLength: 'Segment Length',
processClean: 'Text Process Clean',
},
book: {
title: "Title",
language: "Language",
author: "Author",
publisher: "Publisher",
publicationDate: "Publication Date",
ISBN: "ISBN",
category: "Category",
},
webPage: {
title: "Title",
url: "URL",
language: "Language",
authorPublisher: "Author/Publisher",
publishDate: "Publish Date",
topicsKeywords: "Topics/Keywords",
description: "Description",
},
paper: {
title: "Title",
language: "Language",
author: "Author",
publishDate: "Publish Date",
journalConferenceName: "Journal/Conference Name",
volumeIssuePage: "Volume/Issue/Page",
DOI: "DOI",
topicsKeywords: "Topics/Keywords",
abstract: "Abstract",
},
socialMediaPost: {
platform: "Platform",
authorUsername: "Author/Username",
publishDate: "Publish Date",
postURL: "Post URL",
topicsTags: "Topics/Tags",
},
personalDocument: {
title: "Title",
author: "Author",
creationDate: "Creation Date",
lastModifiedDate: "Last Modified Date",
documentType: "Document Type",
tagsCategory: "Tags/Category",
},
businessDocument: {
title: "Title",
author: "Author",
creationDate: "Creation Date",
lastModifiedDate: "Last Modified Date",
documentType: "Document Type",
departmentTeam: "Department/Team",
},
IMChat: {
chatPlatform: "Chat Platform",
chatPartiesGroupName: "Chat Parties/Group Name",
participants: "Participants",
startDate: "Start Date",
endDate: "End Date",
topicsKeywords: "Topics/Keywords",
fileType: "File Type",
},
wikipediaEntry: {
title: "Title",
language: "Language",
webpageURL: "Webpage URL",
editorContributor: "Editor/Contributor",
lastEditDate: "Last Edit Date",
summaryIntroduction: "Summary/Introduction",
},
notion: {
title: "Title",
language: "Language",
author: "Author",
createdTime: "Created Time",
lastModifiedTime: "Last Modified Time",
url: "URL",
tag: "Tag",
description: "Description",
},
github: {
repoName: "Repo Name",
repoDesc: "Repo Description",
repoOwner: "Repo Owner",
fileName: "File Name",
filePath: "File Path",
programmingLang: "Programming Language",
url: "URL",
license: "License",
lastCommitTime: "Last Commit Time",
lastCommitAuthor: "Last Commit Author",
},
originInfo: {
originalFilename: "Original filename",
originalFileSize: "Original file size",
uploadDate: "Upload date",
lastUpdateDate: "Last update date",
source: "Source",
},
technicalParameters: {
segmentSpecification: 'Segment specification',
segmentLength: 'Segment length',
avgParagraphLength: 'Avg. paragraph length',
paragraphs: 'Paragraphs',
hitCount: 'Hit count',
embeddingTime: 'Embedding time',
embeddedSpend: 'Embedded spend'
}
},
languageMap: {
zh: "Chinese",
en: "English",
es: "Spanish",
fr: "French",
de: "German",
ja: "Japanese",
ko: "Korean",
ru: "Russian",
ar: "Arabic",
pt: "Portuguese",
it: "Italian",
nl: "Dutch",
pl: "Polish",
sv: "Swedish",
tr: "Turkish",
he: "Hebrew",
hi: "Hindi",
da: "Danish",
fi: "Finnish",
no: "Norwegian",
hu: "Hungarian",
el: "Greek",
cs: "Czech",
th: "Thai",
id: "Indonesian",
},
categoryMap: {
book: {
fiction: "Fiction",
biography: "Biography",
history: "History",
science: "Science",
technology: "Technology",
education: "Education",
philosophy: "Philosophy",
religion: "Religion",
socialSciences: "SocialSciences",
art: "Art",
travel: "Travel",
health: "Health",
selfHelp: "SelfHelp",
businessEconomics: "BusinessEconomics",
cooking: "Cooking",
childrenYoungAdults: "ChildrenYoungAdults",
comicsGraphicNovels: "ComicsGraphicNovels",
poetry: "Poetry",
drama: "Drama",
other: "Other",
},
personalDoc: {
notes: "Notes",
blogDraft: "Blog Draft",
diary: "Diary",
researchReport: "Research Report",
bookExcerpt: "Book Excerpt",
schedule: "Schedule",
list: "List",
projectOverview: "Project Overview",
photoCollection: "Photo Collection",
creativeWriting: "Creative Writing",
codeSnippet: "Code Snippet",
designDraft: "Design Draft",
personalResume: "Personal Resume",
other: "Other",
},
businessDoc: {
meetingMinutes: "Meeting Minutes",
researchReport: "Research Report",
proposal: "Proposal",
employeeHandbook: "Employee Handbook",
trainingMaterials: "Training Materials",
requirementsDocument: "Requirements Document",
designDocument: "Design Document",
productSpecification: "Product Specification",
financialReport: "Financial Report",
marketAnalysis: "Market Analysis",
projectPlan: "Project Plan",
teamStructure: "Team Structure",
policiesProcedures: "Policies & Procedures",
contractsAgreements: "Contracts & Agreements",
emailCorrespondence: "Email Correspondence",
other: "Other",
},
},
},
embedding: {
processing: 'Embedding processing...',
paused: 'Embedding paused',
completed: 'Embedding completed',
error: 'Embedding error',
docName: 'Preprocessing document',
mode: 'Segmentation rule',
segmentLength: 'Segmentation length',
textCleaning: 'Text pre-definition and cleaning',
segments: 'Paragraphs',
highQuality: 'High-quality mode',
economy: 'Economy mode',
estimate: 'Estimated consumption',
stop: 'Stop processing',
resume: 'Resume processing',
automatic: 'Automatic',
custom: 'Custom',
previewTip: 'Paragraph preview will be available after embedding is complete'
},
segment: {
paragraphs: 'Paragraphs',
keywords: 'Key Words',
characters: 'characters',
hitCount: 'hit count',
vectorHash: 'Vector hash: ',
}
};
export default translation;

View File

@@ -0,0 +1,313 @@
const translation = {
list: {
title: "文档",
desc: "数据集的所有文件都在这里显示,整个数据集都可以链接到 Dify 引用或通过 Chat 插件进行索引。",
addFile: "添加文件",
table: {
header: {
fileName: "文件名",
words: "字符数",
hitCount: "命中次数",
uploadTime: "上传时间",
status: "状态",
action: "操作",
},
},
action: {
uploadFile: '上传新文件',
settings: '分段设置',
archive: '归档',
delete: "删除",
enableWarning: '归档的文件无法启用',
},
index: {
enable: '启用中',
disable: '禁用中',
all: '全部',
enableTip: '该文件可以被索引',
disableTip: '该文件无法被索引',
},
status: {
queuing: '排队中',
indexing: '索引中',
parsed: '已解析',
error: '错误',
available: '可用',
enabled: '已启用',
disabled: '已禁用',
archived: '已归档',
},
empty: {
title: "还没有文档",
upload: {
tip: "您可以上传文件从网站同步或者从网络应用程序如概念、GitHub 等)同步。",
},
sync: {
tip: "Dify 会定期从您的 Notion 中下载文件并完成处理。",
},
},
delete: {
title: '确定删除吗?',
content: '如果您需要稍后恢复处理,您将从您离开的地方继续'
}
},
metadata: {
title: "元数据",
desc: "标记文档的元数据允许 AI 及时访问它们并为用户公开参考来源。",
dateTimeFormat: 'YYYY-MM-DD HH:mm',
docTypeSelectTitle: "请选择一种文档类型",
docTypeChangeTitle: "更换文档类型",
docTypeSelectWarning: "如果更改文档类型,将不再保留现在填充的元数据",
firstMetaAction: "开始",
placeholder: {
add: '输入',
select: '选择',
},
source: {
upload_file: '文件上传',
notion: "从 Notion 同步的文档",
github: "从 Github 同步的代码",
},
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: "发布日期",
topicsKeywords: "主题/关键词",
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: {
processing: '嵌入处理中...',
paused: '嵌入已停止',
completed: '嵌入已完成',
error: '嵌入发生错误',
docName: '预处理文档',
mode: '分段规则',
segmentLength: '分段长度',
textCleaning: '文本预定义与清洗',
segments: '段落',
highQuality: '高质量模式',
economy: '经济模式',
estimate: '预估消耗',
stop: '停止处理',
resume: '恢复处理',
automatic: '自动',
custom: '自定义',
previewTip: '段落预览将在嵌入完成后可用'
},
segment: {
paragraphs: '段落',
keywords: '关键词',
characters: '字符',
hitCount: '命中次数',
vectorHash: '向量哈希:',
}
};
export default translation;

View File

@@ -0,0 +1,28 @@
const translation = {
title: "Hit Testing",
desc: "Test the hitting effect of the dataset based on the given query text.",
dateTimeFormat: 'MM/DD/YYYY hh:mm A',
recents: 'Recents',
table: {
header: {
source: "Source",
text: "Text",
time: "Time",
},
},
input: {
title: 'Source text',
placeholder: 'Please enter a text, a short declarative sentence is recommended.',
countWarning: 'Up to 200 characters.',
indexWarning: 'High quality dataset only.',
testing: 'Testing',
},
hit: {
title: "HIT PARAGRAPHS",
emptyTip: 'Hit Testing results will show here',
},
noRecentTip: 'No recent query results here',
viewChart: 'View VECTOR CHART',
};
export default translation;

View File

@@ -0,0 +1,28 @@
const translation = {
title: '命中测试',
desc: '基于给定的查询文本测试数据集的命中效果。',
dateTimeFormat: 'YYYY-MM-DD HH:mm',
recents: '最近查询',
table: {
header: {
source: "数据源",
text: "文本",
time: "时间",
},
},
input: {
title: '源文本',
placeholder: '请输入文本,建议使用简短的陈述句。',
countWarning: '不超过 200 个字符',
indexWarning: '仅支持高质量模式数据集',
testing: '测试',
},
hit: {
title: "命中段落",
emptyTip: '命中测试结果将展示在这里',
},
noRecentTip: '最近无查询结果',
viewChart: '查看向量图表',
}
export default translation

View File

@@ -0,0 +1,22 @@
const translation = {
title: 'Dataset settings',
desc: 'Here you can modify the properties and working methods of the dataset.',
form: {
name: 'Dataset Name',
nameError: 'Name cannot be empty',
desc: 'Dataset description',
descPlaceholder: 'Describe what is in this data set. A detailed description allows AI to access the content of the data set in a timely manner. If empty, Dify will use the default hit strategy.',
descWrite: 'Learn how to write a good dataset description.',
permissions: 'Permissions',
permissionsOnlyMe: 'Only me',
permissionsAllMember: 'All team members',
indexMethod: 'Index Method',
indexMethodHighQuality: 'High Quality',
indexMethodHighQualityTip: 'Call OpenAI\'s embedding interface for processing to provide higher accuracy when users query.',
indexMethodEconomy: 'Economical',
indexMethodEconomyTip: 'Use offline vector engines, keyword indexes, etc. to reduce accuracy without spending tokens',
save: 'Save',
},
}
export default translation

View File

@@ -0,0 +1,22 @@
const translation = {
title: '数据集设置',
desc: '在这里您可以修改数据集的工作方式以及其它设置。',
form: {
name: '数据集名称',
nameError: '名称不能为空',
desc: '数据集描述',
descPlaceholder: '描述这个数据集中的内容。详细的描述可以让 AI 及时访问数据集的内容。如果为空Dify 将使用默认的命中策略。',
descWrite: '了解如何编写更好的数据集描述。',
permissions: '可见权限',
permissionsOnlyMe: '只有我',
permissionsAllMember: '所有团队成员',
indexMethod: '索引模式',
indexMethodHighQuality: '高质量',
indexMethodHighQualityTip: '调用 OpenAI 的嵌入接口进行处理,以在用户查询时提供更高的准确度',
indexMethodEconomy: '经济',
indexMethodEconomyTip: '使用离线的向量引擎、关键词索引等方式,降低了准确度但无需花费 Token',
save: '保存',
},
}
export default translation

View File

@@ -0,0 +1,21 @@
const translation = {
documentCount: ' docs',
wordCount: 'k words',
appCount: ' linked apps',
createDataset: 'Create Dataset',
createDatasetIntro: 'Import your own text data or write data in real-time via Webhook for LLM context enhancement.',
deleteDatasetConfirmTitle: 'Delete this app?',
deleteDatasetConfirmContent:
'Deleting the dataset is irreversible. Users will no longer be able to access your dataset, and all prompt configurations and logs will be permanently deleted.',
datasetDeleted: 'Dataset deleted',
datasetDeleteFailed: 'Failed to delete dataset',
didYouKnow: 'Did you know?',
intro1: 'The dataset can be integrated into the Dify application ',
intro2: 'as a context',
intro3: ',',
intro4: 'or it ',
intro5: 'can be created',
intro6: ' as a standalone ChatGPT index plug-in to publish',
}
export default translation

View File

@@ -0,0 +1,21 @@
const translation = {
documentCount: ' 文档',
wordCount: '千字符',
appCount: ' 关联应用',
createDataset: '创建数据集',
createDatasetIntro: '导入您自己的文本数据或通过 Webhook 实时写入数据以增强 LLM 的上下文。',
deleteDatasetConfirmTitle: '要删除数据集吗?',
deleteDatasetConfirmContent:
'删除数据集是不可逆的。用户将无法再访问您的数据集,所有的提示配置和日志将被永久删除。',
datasetDeleted: '数据集已删除',
datasetDeleteFailed: '删除数据集失败',
didYouKnow: '你知道吗??',
intro1: '数据集可以被集成到 Dify 应用中',
intro2: '作为上下文',
intro3: ',',
intro4: '或可以',
intro5: '创建',
intro6: '为独立的 ChatGPT 插件发布使用',
}
export default translation

View File

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

View File

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

41
web/i18n/lang/login.en.ts Normal file
View File

@@ -0,0 +1,41 @@
const translation = {
"pageTitle": "Hey, let's get started!👋",
"welcome": "Welcome to Dify, please log in to continue.",
"email": "Email address",
"password": "Password",
"name": "Name",
"forget": "Forgot your password?",
"signBtn": "Sign in",
"installBtn": "Setting",
"setAdminAccount": "Setting up an admin account",
"setAdminAccountDesc": "Maximum privileges for admin account, which can be used to create applications and manage LLM providers, etc.",
"createAndSignIn": "Create and sign in",
"oneMoreStep": "One more step",
"createSample": "Based on this information, well create sample application for you",
"invitationCode": "Invitation Code",
"interfaceLanguage": "Interface Dify",
"timezone": "Time zone",
"go": "Go to Dify",
"sendUsMail": "Email us your introduction, and we'll handle the invitation request.",
"acceptPP": "I have read and accept the privacy policy",
"reset": "Please run following command to reset your password",
"withGitHub": "Continue with GitHub",
"withGoogle": "Continue with Google",
"rightTitle": "Unlock the full potential of LLM",
"rightDesc": "Effortlessly build visually captivating, operable, and improvable AI applications.",
"tos": "Terms of Service",
"pp": "Privacy Policy",
"tosDesc": "By signing up, you agree to our",
"donthave": "Don't have?",
"invalidInvitationCode": "Invalid invitation code",
"accountAlreadyInited": "Account already inited",
"error": {
"emailEmpty": "Email address is required",
"emailInValid": "Please enter a valid email address",
"nameEmpty": "Name is required",
"passwordEmpty": "Password is required",
"passwordInvalid": "Password must contain letters and numbers, and the length must be greater than 8",
}
}
export default translation

41
web/i18n/lang/login.zh.ts Normal file
View File

@@ -0,0 +1,41 @@
const translation = {
"pageTitle": "嗨,近来可好 👋",
"welcome": "欢迎来到 Dify, 登录以继续",
"email": "邮箱",
"password": "密码",
"name": "用户名",
"forget": "忘记密码?",
"signBtn": "登录",
"installBtn": "设置",
"setAdminAccount": "设置管理员账户",
"setAdminAccountDesc": "管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等。",
"createAndSignIn": "创建账户",
"oneMoreStep": "还差一步",
"createSample": "基于这些信息,我们将为您创建一个示例应用",
"invitationCode": "邀请码",
"interfaceLanguage": "界面语言",
"timezone": "时区",
"go": "跳转至 Dify",
"sendUsMail": "发封邮件介绍你自己,我们会尽快处理。",
"acceptPP": "我已阅读并接受隐私政策",
"reset": "请运行以下命令重置密码",
"withGitHub": "使用 GitHub 登录",
"withGoogle": "使用 Google 登录",
"rightTitle": "释放大型语言模型的全部潜能",
"rightDesc": "简单构建可视化、可运营、可改进的 AI 应用",
"tos": "使用协议",
"pp": "隐私政策",
"tosDesc": "使用即代表你并同意我们的",
"donthave": "还没有邀请码?",
"invalidInvitationCode": "无效的邀请码",
"accountAlreadyInited": "账户已经初始化",
"error": {
"emailEmpty": "邮箱不能为空",
"emailInValid": "请输入有效的邮箱地址",
"nameEmpty": "用户名不能为空",
"passwordEmpty": "密码不能为空",
"passwordInvalid": "密码必须包含字母和数字且长度不小于8位",
}
}
export default translation

View File

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

View File

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

View File

@@ -0,0 +1,45 @@
const translation = {
common: {
welcome: "Welcome to use",
appUnavailable: "App is unavailable",
appUnkonwError: "App is unavailable"
},
chat: {
newChat: "New chat",
newChatDefaultName: "New conversation",
powerBy: "Powered by",
prompt: "Prompt",
privatePromptConfigTitle: "Conversation settings",
publicPromptConfigTitle: "Initial Prompt",
configStatusDes: "Before start, you can modify conversation settings",
configDisabled:
"Previous session settings have been used for this session.",
startChat: "Start Chat",
privacyPolicyLeft:
"Please read the ",
privacyPolicyMiddle:
"privacy policy",
privacyPolicyRight:
" provided by the app developer.",
},
generation: {
tabs: {
create: "Create",
saved: "Saved",
},
savedNoData: {
title: "You haven't saved a result yet!",
description: 'Start generating content, and find your saved results here.',
startCreateContent: 'Start create content'
},
title: "AI Completion",
queryTitle: "Query content",
queryPlaceholder: "Write your query content...",
run: "RUN",
copy: "Copy",
resultTitle: "AI Completion",
noData: "AI will give you what you want here.",
},
};
export default translation;

View File

@@ -0,0 +1,41 @@
const translation = {
common: {
welcome: "欢迎使用",
appUnavailable: "应用不可用",
appUnkonwError: "应用不可用",
},
chat: {
newChat: "新对话",
newChatDefaultName: "新的对话",
powerBy: "Powered by",
prompt: "提示词",
privatePromptConfigTitle: "对话设置",
publicPromptConfigTitle: "对话前提示词",
configStatusDes: "开始前,您可以修改对话设置",
configDisabled: "此次会话已使用上次会话表单",
startChat: "开始对话",
privacyPolicyLeft: "请阅读由该应用开发者提供的",
privacyPolicyMiddle: "隐私政策",
privacyPolicyRight: "。",
},
generation: {
tabs: {
create: "创建",
saved: "已保存",
},
savedNoData: {
title: "您还没有保存结果!",
description: '开始生成内容,您可以在这里找到保存的结果。',
startCreateContent: '开始生成内容'
},
title: "AI 智能书写",
queryTitle: "查询内容",
queryPlaceholder: "请输入文本内容",
run: "运行",
copy: "拷贝",
resultTitle: "AI 书写",
noData: "AI 会在这里给你惊喜。",
},
};
export default translation;