feat: support i18n
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
Typos Check / Spell Check with Typos (push) Waiting to run

This commit is contained in:
wxg0103 2025-01-20 11:28:53 +08:00
parent 96f467fa21
commit d8995e996d
18 changed files with 1154 additions and 40 deletions

View File

@ -0,0 +1,273 @@
export default {
node: 'Node',
baseComponent: 'Base Component',
nodeSetting: 'Node Setting',
workflow: 'Workflow',
searchBar: {
placeholder: 'Search by name'
},
info: {
previewVersion: 'Preview Version:',
saveTime: 'Save Time:'
},
setting: {
restoreVersion: 'Restore Version',
restoreCurrentVersion: 'Restore This Version',
addComponent: 'Add Component',
public: 'Publish',
releaseHistory: 'Release History',
autoSave: 'Auto Save',
latestRelease: 'Latest Release',
copyParam: 'Copy Parameter'
},
tip: {
publicSuccess: 'Published Successfully',
noData: 'No related results found',
nameMessage: 'Name cannot be empty!',
onlyRight: 'Only allow connections from the right anchor point',
notRecyclable: 'Cannot create a loop connection',
onlyLeft: 'Only allow connections to the left anchor point',
applicationNodeError: 'This application is unavailable',
functionNodeError: 'This function is unavailable',
repeatedNodeError: 'Node name already exists!',
cannotCopy: 'Cannot be copied',
copyError: 'Node has been copied',
paramErrorMessage: 'Parameter already exists: '
},
delete: {
confirmTitle: 'Confirm to delete this node?',
deleteMessage: 'Node cannot be deleted'
},
control: {
zoomOut: 'Zoom Out',
zoomIn: 'Zoom In',
fitView: 'Fit View',
retract: 'Collapse All Nodes',
extend: 'Expand All Nodes',
beautify: 'One-click Beautification'
},
variable: {
global: 'Global Variable',
Referencing: 'Reference Variable',
ReferencingRequired: 'Reference Variable Required',
ReferencingError: 'Reference Variable Error',
NoReferencing: 'Non-existent Reference Variable',
fieldMessage: 'Please select a variable'
},
condition: {
title: 'Execution Condition',
front: 'Precondition',
AND: 'All',
OR: 'Any',
text: 'After the connected node is executed, execute the current node'
},
validate: {
startNodeRequired: 'Start Node Required',
startNodeOnly: 'There can only be one Start Node',
baseNodeRequired: 'Base Info Node Required',
baseNodeOnly: 'There can only be one Base Info Node',
notInWorkFlowNode: 'Node not in workflow',
noNextNode: 'Non-existent next node',
nodeUnavailable: 'Node unavailable',
needConnect1: 'The branch of the node needs to be connected',
cannotEndNode: 'Node cannot be used as an end node'
},
nodes: {
startNode: {
label: 'Start',
question: 'User Question',
currentTime: 'Current Time'
},
baseNode: {
label: 'Base Info',
fileUpload: {
label: 'File Upload',
tooltip: 'When enabled, the Q&A page will display a file upload button.'
},
FileUploadSetting: {
title: 'File Upload Settings',
maxFiles: 'Maximum number of files per upload',
fileLimit: 'Maximum size per file (MB)',
fileUploadType: {
label: 'File types allowed for upload',
documentText: 'Requires "Document Content Extraction" node to parse document content',
imageText: 'Requires "Image Understanding" node to parse image content',
audioText: 'Requires "Speech-to-Text" node to parse audio content'
}
}
},
aiChatNode: {
label: 'AI Chat',
text: 'Chat with AI large model',
answer: 'AI Answer Content',
returnContent: {
label: 'Return Content',
tooltip: `If turned off, the content of this node will not be output to the user.
If you want the user to see the output of this node, please turn on the switch.`
},
defaultPrompt: `Known Information:
{{knowledgeBaseSearch.data}}
Question:
{{start.question}}`
},
searchDatasetNode: {
label: 'Knowledge Base Search',
text: 'Associate knowledge base and find relevant segments',
paragraph_list: 'List of retrieved paragraphs',
is_hit_handling_method_list: 'List of segments that meet direct response criteria',
result: 'Search Result',
directly_return: 'Content of segments that meet direct response criteria',
selectDatasetText: 'Associated knowledge base displayed here',
searchParam: 'Search Parameters',
searchQuestion: {
label: 'Search Question',
placeholder: 'Please select a search question',
requiredMessage: 'Please select a search question'
}
},
questionNode: {
label: 'Question Optimization',
text: 'Optimize and improve the current question based on historical chat records to better match knowledge base segments',
result: 'Optimized Question Result',
defaultPrompt: `Optimize and improve the user's question based on context: {{start.question}}
Please output an optimized question.`,
systemDefault: 'You are a question optimization expert'
},
conditionNode: {
label: 'Conditional Branch',
text: 'Execute different nodes based on different conditions',
branch_name: 'Branch Name',
conditions: {
label: 'Conditions',
info: 'Meets the following',
requiredMessage: 'Please select conditions'
},
valueMessage: 'Please enter a value',
addCondition: 'Add Condition',
addBranch: 'Add Branch'
},
replyNode: {
label: 'Specified Reply',
text: 'Specify reply content, referenced variables will be converted to strings for output',
content: 'Content',
replyContent: {
label: 'Reply Content',
custom: 'Custom',
reference: 'Reference Variable'
}
},
rerankerNode: {
label: 'Multi-path Recall',
text: 'Use re-ranking model to perform secondary recall on retrieval results from multiple knowledge bases',
result_list: 'Re-ranked Results List',
result: 'Re-ranking Result',
rerankerContent: {
label: 'Re-ranking Content',
requiredMessage: 'Please select re-ranking content'
},
higher: 'Higher',
ScoreTooltip: 'The higher the Score, the stronger the relevance.',
max_paragraph_char_number: 'Maximum number of characters to quote',
reranker_model: {
label: 'Re-ranking Model',
placeholder: 'Please select a re-ranking model'
}
},
formNode: {
label: 'Form Collection',
text: 'Used to collect user information during Q&A process, subsequent processes can be executed based on collected form data',
form_content_format: `Hello, please fill out the form below:
{{form}}
Click the [Submit] button after filling it out.`,
form_data: 'All Form Content',
formContent: {
label: 'Form Output Content',
requiredMessage: 'Please set the output content of this node, { form } is a placeholder for the form.',
tooltip: 'Set the content output by executing this node, { form } is a placeholder for the form.'
},
formAllContent: 'All Form Content',
formSetting: 'Form Configuration'
},
documentExtractNode: {
label: 'Document Content Extraction',
text: 'Extract content from documents',
content: 'Document Content'
},
imageUnderstandNode: {
label: 'Image Understanding',
text: 'Identify objects, scenes, etc., in images to answer user questions',
answer: 'AI Answer Content',
model: {
label: 'Image Understanding Model',
requiredMessage: 'Please select an image understanding model'
},
image: {
label: 'Select Image',
requiredMessage: 'Please select an image'
}
},
imageGenerateNode: {
label: 'Image Generation',
text: 'Generate images based on provided text content',
answer: 'AI Answer Content',
model: {
label: 'Image Generation Model',
requiredMessage: 'Please select an image generation model'
},
prompt: {
label: 'Positive Prompt',
tooltip: 'Positive prompt words, used to describe elements and visual features expected in the generated image'
},
negative_prompt: {
label: 'Negative Prompt',
tooltip: 'Negative prompt words, used to describe content that should not appear in the image, which can limit the image.',
placeholder: 'Please describe content you do not want to generate, such as color, bloody content'
}
},
speechToTextNode: {
label: 'Speech-to-Text',
text: 'Convert audio to text through speech recognition model',
stt_model: {
label: 'Speech Recognition Model'
},
audio: {
label: 'Select Audio File',
placeholder: 'Please select an audio file'
}
},
textToSpeechNode: {
label: 'Text-to-Speech',
text: 'Convert text to audio through speech synthesis model',
tts_model: {
label: 'Speech Synthesis Model'
},
content: {
label: 'Select Text Content'
}
},
functionNode: {
label: 'Custom Function',
text: 'Execute custom scripts to achieve data processing'
},
applicationNode: {
label: 'Application Node'
}
},
compare: {
is_null: 'Is Null',
is_not_null: 'Is Not Null',
contain: 'Contains',
not_contain: 'Does Not Contain',
eq: 'Equals',
ge: 'Greater Than or Equal To',
gt: 'Greater Than',
le: 'Less Than or Equal To',
lt: 'Less Than',
len_eq: 'Length Equals',
len_ge: 'Length Greater Than or Equal To',
len_gt: 'Length Greater Than',
len_le: 'Length Less Than or Equal To',
len_lt: 'Length Less Than'
},
FileUploadSetting: {}
}

View File

@ -28,7 +28,7 @@ export default {
applicationForm: {
title: {
info: 'Application Information',
apptest: 'Debug Preview',
appTest: 'Debug Preview',
copy: 'copy'
},
form: {

View File

@ -0,0 +1,157 @@
export default {
uploadDocument: 'Upload Document',
importDocument: 'Import Document',
syncDocument: 'Sync Document',
selected: 'Selected',
items: 'Items',
searchBar: {
placeholder: 'Search by Document Name'
},
setting: {
migration: 'Migration',
generateQuestion: 'Generate Questions',
cancelGenerateQuestion: 'Cancel Generating Questions',
cancelVectorization: 'Cancel Vectorization',
cancelGenerate: 'Cancel Generation'
},
tip: {
saveMessage: 'Current changes have not been saved. Confirm exit?',
cancelSuccess: 'Batch cancellation successful',
sendMessage: 'Sent successfully',
vectorizationSuccess: 'Batch vectorization successful',
nameMessage: 'File name cannot be empty!',
importMessage: 'Import successful',
migrationSuccess: 'Migration successful'
},
upload: {
selectFile: 'Select File',
selectFiles: 'Select Folder',
uploadMessage: 'Drag and drop files here to upload or',
formats: 'Supported formats:',
requiredMessage: 'Please upload a file',
errorMessage1: 'Please upload a file',
errorMessage2: 'Unsupported file format',
errorMessage3: 'File cannot be empty',
errorMessage4: 'Up to 50 files can be uploaded at once',
template: 'Template',
download: 'Download'
},
fileType: {
txt: {
label: 'Text File',
tip1: '1. It is recommended to standardize the paragraph markers in the file before uploading.',
tip2: '2. Up to 50 files can be uploaded at once, with each file not exceeding 100MB'
},
table: {
label: 'Table',
tip1: '1. Click to download the corresponding template and complete the information:',
tip2: '2. The first row must be column headers, and the column headers must be meaningful terms. Each record in the table will be treated as a segment.',
tip3: '3. Each sheet in the uploaded spreadsheet file will be treated as a document, with the sheet name as the document name.',
tip4: '4. Up to 50 files can be uploaded at once, with each file not exceeding 100MB'
},
QA: {
label: 'QA Pairs',
tip1: '1. Click to download the corresponding template and complete the information.',
tip2: '2. Each sheet in the uploaded spreadsheet file will be treated as a document, with the sheet name as the document name.',
tip3: '3. Up to 50 files can be uploaded at once, with each file not exceeding 100MB'
}
},
setRules: {
title: {
setting: 'Set Segment Rules',
preview: 'Segment Preview'
},
intelligent: {
label: 'Intelligent Segmentation (Recommended)',
text: 'If you are unsure how to set segmentation rules, it is recommended to use intelligent segmentation.'
},
advanced: {
label: 'Advanced Segmentation',
text: 'Users can customize segmentation delimiters, segment length, and cleaning rules based on document standards.'
},
patterns: {
label: 'Segment Delimiters',
tooltip: 'Recursively split according to the selected symbols in order. If the split result exceeds the segment length, it will be truncated to the segment length.',
placeholder: 'Please select'
},
limit: {
label: 'Segment Length'
},
with_filter: {
label: 'Auto Clean',
text: 'Remove duplicate extra symbols, spaces, blank lines, and tab characters.'
},
checkedConnect: {
label: 'Add Segment Titles as Associated Questions During Import (Applicable for QA Pairs where Titles are Questions)'
}
},
buttons: {
prev: 'Previous',
next: 'Next',
import: 'Start Import',
preview: 'Generate Preview'
},
table: {
name: 'File Name',
char_length: 'Character Count',
paragraph: 'Segment',
all: 'All',
updateTime: 'Update Time'
},
fileStatus: {
label: 'File Status',
SUCCESS: 'Success',
FAILURE: 'Failure',
EMBEDDING: 'Indexing',
PENDING: 'Queued',
GENERATE: 'Generating',
SYNC: 'Syncing',
REVOKE: 'Cancelling'
},
enableStatus: {
label: 'Enable Status',
enable: 'Enabled',
close: 'Disabled'
},
sync: {
label: 'Sync',
confirmTitle: 'Confirm Sync Document?',
confirmMessage1: 'Syncing will delete existing data and retrieve new data. Please proceed with caution.',
confirmMessage2: 'Cannot sync, please set the document URL first.',
successMessage: 'Document synced successfully'
},
delete: {
confirmTitle1: 'Confirm Batch Deletion of',
confirmTitle2: 'Documents?',
confirmMessage: 'Segments within the selected documents will also be deleted. Please proceed with caution.',
successMessage: 'Batch deletion successful',
confirmTitle3: 'Confirm Deleting Document:',
confirmMessage1: 'All segments under this document will be deleted. Please proceed with caution.'
},
form: {
source_url: {
label: 'Document URL',
placeholder: 'Enter document URLs, one per line. Incorrect URLs will cause import failure.',
requiredMessage: 'Please enter a document URL'
},
selector: {
label: 'Selector',
placeholder: 'Default is body, you can input .classname/#idname/tagname'
},
hit_handling_method: {
label: 'Hit Handling Method',
tooltip: 'When user asks a question, handle matched segments according to the set method.'
},
similarity: {
label: 'Similarity Higher Than',
placeholder: 'Directly return segment content',
requiredMessage: 'Please enter similarity value'
},
selectVectorization: {
label: 'Select Vectorization Content',
error: 'Segments that failed vectorization',
all: 'All Segments'
}
}
}

View File

@ -1,20 +1,31 @@
import notFound from './404'
import application from './application'
import applicationOverview from './application-overview'
import system from './system'
import functionLib from './function-lib'
import user from './user'
import team from './team'
import template from './template'
import dataset from './dataset'
import application from './application';
import applicationOverview from './application-overview';
import dataset from './dataset';
import system from './system';
import functionLib from './function-lib';
import user from './user';
import team from './team';
import template from './template';
import document from './document';
import paragraph from './paragraph';
import problem from './problem';
import log from './log';
import applicationWorkflow from './application-workflow';
export default {
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset,
applicationWorkflow,
document,
paragraph,
problem,
log,
}

View File

@ -0,0 +1,42 @@
export default {
title: 'Conversation Logs',
delete: {
confirmTitle: 'Confirm Deletion of Problem:',
confirmMessage1: 'Deleting this problem will cancel the association of',
confirmMessage2: 'paragraphs. Please proceed with caution.'
},
buttons: {
clearStrategy: 'Clear Strategy',
prev: 'Previous',
next: 'Next'
},
table: {
abstract: 'Abstract',
chat_record_count: 'Number of Conversation Questions',
feedback: {
label: 'User Feedback',
star: 'Agree',
trample: 'Disagree'
},
mark: 'Improvement Label',
recenTimes: 'Recent Conversation Time'
},
addToDataset: 'Add to Knowledge Base',
daysText: 'Conversation records from more than X days ago',
selectDataset: 'Select Knowledge Base',
selectDatasetPlaceholder: 'Please select a knowledge base',
saveToDocument: 'Save to Document',
documentPlaceholder: 'Please select a document',
editContent: 'Edit Content',
editMark: 'Edit Label',
form: {
content: {
label: 'Content',
placeholder: 'Please enter the content'
},
title: {
label: 'Title',
placeholder: 'Please set a title for the current content for management and viewing'
},
}
}

View File

@ -0,0 +1,36 @@
export default {
title: 'Paragraph',
editParagraph: 'Edit Paragraph',
addParagraph: 'Add Paragraph',
paragraphDetail: 'Paragraph Details',
character_count: 'characters',
setting: {
batchSelected: 'Batch Select',
cancelSelected: 'Cancel Selection'
},
tip: {},
searchBar: {
title: 'Title',
content: 'Content'
},
delete: {
confirmTitle: 'Confirm Deletion of Paragraph:',
confirmMessage: 'Deletion cannot be undone. Please proceed with caution.'
},
relatedProblem: {
title: 'Related Questions',
placeholder: 'Please select a question'
},
form: {
paragraphTitle: {
label: 'Paragraph Title',
placeholder: 'Please enter the paragraph title'
},
content: {
label: 'Paragraph Content',
placeholder: 'Please enter the paragraph content',
requiredMessage1: 'Please enter the paragraph content',
requiredMessage2: 'Content must not exceed 100,000 characters'
}
}
}

View File

@ -0,0 +1,37 @@
export default {
title: 'Problem',
createProblem: 'Create Problem',
detailProblem: 'Problem Details',
quickCreateProblem: 'Quick Create Problem',
tip: {
placeholder: 'Enter the problem, support multiple entries, one per line.',
errorMessage: 'Problem cannot be empty!',
requiredMessage: 'Please enter a problem',
relatedSuccess: 'Batch association of paragraphs successful'
},
setting: {
batchDelete: 'Batch Delete',
cancelRelated: 'Cancel Association'
},
searchBar: {
placeholder: 'Search by Name'
},
table: {
paragraph_count: 'Number of Associated Paragraphs',
updateTime: 'Update Time'
},
delete: {
confirmTitle: 'Confirm Deletion of Problem:',
confirmMessage1: 'Deleting this problem will cancel the association of',
confirmMessage2: 'paragraphs. Please proceed with caution.'
},
relateParagraph: {
title: 'Associate Paragraphs',
selectDocument: 'Select Document',
placeholder: 'Search by Document Name',
selectParagraph: 'Select Paragraph',
selectedParagraph: 'Selected Paragraphs',
count: 'Count'
},
}

View File

@ -26,7 +26,7 @@ export default {
nameMessage: '名字不能为空!',
onlyRight: '只允许从右边的锚点连出',
notRecyclable: '不可循环连线',
onlylest: '只允许连接左边的锚点',
onlyLeft: '只允许连接左边的锚点',
applicationNodeError: '该应用不可用',
functionNodeError: '该函数不可用',
repeatedNodeError: '节点名称已存在!',

View File

@ -24,7 +24,7 @@ export default {
applicationForm: {
title: {
info: '应用信息',
apptest: '调试预览',
appTest: '调试预览',
copy: '副本'
},
form: {

View File

@ -0,0 +1,274 @@
export default {
node: '節點',
baseComponent: '基礎組件',
nodeSetting: '節點設置',
workflow: '工作流',
searchBar: {
placeholder: '按名稱搜索'
},
info: {
previewVersion: '預覽版本:',
saveTime: '保存時間:'
},
setting: {
restoreVersion: '恢復版本',
restoreCurrentVersion: '恢復此版本',
addComponent: '添加組件',
public: '發布',
releaseHistory: '發布歷史',
autoSave: '自動保存',
latestRelease: '最近發布',
copyParam: '複製參數'
},
tip: {
publicSuccess: '發布成功',
noData: '沒有找到相關結果',
nameMessage: '名字不能為空!',
onlyRight: '只允許從右邊的錨點連出',
notRecyclable: '不可循環連線',
onlyLeft: '只允許連接左邊的錨點',
applicationNodeError: '該應用不可用',
functionNodeError: '該函數不可用',
repeatedNodeError: '節點名稱已存在!',
cannotCopy: '不能被複製',
copyError: '已複製節點',
paramErrorMessage: '參數已存在: '
},
delete: {
confirmTitle: '確定刪除該節點?',
deleteMessage: '節點不允許刪除'
},
control: {
zoomOut: '縮小',
zoomIn: '放大',
fitView: '適應',
retract: '收起全部節點',
extend: '展開全部節點',
beautify: '一鍵美化'
},
variable: {
global: '全局變量',
Referencing: '引用變量',
ReferencingRequired: '引用變量必填',
ReferencingError: '引用變量錯誤',
NoReferencing: '不存在的引用變量',
fieldMessage: '請選擇變量'
},
condition: {
title: '執行條件',
front: '前置',
AND: '所有',
OR: '任一',
text: '連線節點執行完,執行當前節點'
},
validate: {
startNodeRequired: '開始節點必填',
startNodeOnly: '開始節點只能有一個',
baseNodeRequired: '基本信息節點必填',
baseNodeOnly: '基本信息節點只能有一個',
notInWorkFlowNode: '未在流程中的節點',
noNextNode: '不存在的下一個節點',
nodeUnavailable: '節點不可用',
needConnect1: '節點的',
needConnect2: '分支需要連接',
cannotEndNode: '節點不能當做結束節點'
},
nodes: {
startNode: {
label: '開始',
question: '用戶問題',
currentTime: '當前時間'
},
baseNode: {
label: '基本信息',
fileUpload: {
label: '文件上傳',
tooltip: '開啟後,問答頁面會顯示上傳文件的按鈕。'
},
FileUploadSetting: {
title: '文件上傳設置',
maxFiles: '單次上傳最多文件數',
fileLimit: '每個文件最大MB',
fileUploadType: {
label: '上傳的文件類型',
documentText: '需要使用「文檔內容提取」節點解析文檔內容',
imageText: '需要使用「圖片理解」節點解析圖片內容',
audioText: '需要使用「語音轉文本」節點解析音頻內容'
}
}
},
aiChatNode: {
label: 'AI 對話',
text: '與 AI 大模型進行對話',
answer: 'AI 回答內容',
returnContent: {
label: '返回內容',
tooltip: `關閉後該節點的內容則不輸出給用戶。
`
},
defaultPrompt: `已知信息:
{{.data}}
{{.question}}`
},
searchDatasetNode: {
label: '知識庫檢索',
text: '關聯知識庫,查找與問題相關的分段',
paragraph_list: '檢索結果的分段列表',
is_hit_handling_method_list: '滿足直接回答的分段列表',
result: '檢索結果',
directly_return: '滿足直接回答的分段內容',
selectDatasetText: '關聯的知識庫展示在這裡',
searchParam: '檢索參數',
searchQuestion: {
label: '檢索問題',
placeholder: '請選擇檢索問題',
requiredMessage: '請選擇檢索問題'
}
},
questionNode: {
label: '問題優化',
text: '根據歷史聊天記錄優化完善當前問題,更利於匹配知識庫分段',
result: '問題優化結果',
defaultPrompt: `根據上下文優化和完善用戶問題:{{開始.question}}
`,
systemDefault: '你是一個問題優化大師'
},
conditionNode: {
label: '判斷器',
text: '根據不同條件執行不同的節點',
branch_name: '分支名稱',
conditions: {
label: '條件',
info: '符合以下',
requiredMessage: '請選擇條件'
},
valueMessage: '請輸入值',
addCondition: '添加條件',
addBranch: '添加分支'
},
replyNode: {
label: '指定回覆',
text: '指定回覆內容,引用變量會轉換為字符串進行輸出',
content: '內容',
replyContent: {
label: '回覆內容',
custom: '自定義',
reference: '引用變量'
}
},
rerankerNode: {
label: '多路召回',
text: '使用重排模型對多個知識庫的檢索結果進行二次召回',
result_list: '重排結果列表',
result: '重排結果',
rerankerContent: {
label: '重排內容',
requiredMessage: '請選擇重排內容'
},
higher: '高於',
ScoreTooltip: 'Score越高相關性越強。',
max_paragraph_char_number: '最大引用字符數',
reranker_model: {
label: '重排模型',
placeholder: '請選擇重排模型'
}
},
formNode: {
label: '表單收集',
text: '在問答過程中用於收集用戶信息,可以根據收集到表單數據執行後續流程',
form_content_format: `你好,請先填寫下面表單內容:
{{form}}
`,
form_data: '表單全部內容',
formContent: {
label: '表單輸出內容',
requiredMessage: '請表單輸出內容',
tooltip: '設置執行該節點輸出的內容,{ form } 為表單的佔位符。'
},
formAllContent: '表單全部內容',
formSetting: '表單配置'
},
documentExtractNode: {
label: '文檔內容提取',
text: '提取文檔中的內容',
content: '文檔內容'
},
imageUnderstandNode: {
label: '圖片理解',
text: '識別出圖片中的物件、場景等信息回答用戶問題',
answer: 'AI 回答內容',
model: {
label: '圖片理解模型',
requiredMessage: '請選擇圖片理解模型'
},
image: {
label: '選擇圖片',
requiredMessage: '請選擇圖片'
}
},
imageGenerateNode: {
label: '圖片生成',
text: '根據提供的文本內容生成圖片',
answer: 'AI 回答內容',
model: {
label: '圖片生成模型',
requiredMessage: '請選擇圖片生成模型'
},
prompt: {
label: '提示詞(正向)',
tooltip: '正向提示詞,用來描述生成圖像中期望包含的元素和視覺特點'
},
negative_prompt: {
label: '提示詞(負向)',
tooltip: '反向提示詞,用來描述不希望在畫面中看到的內容,可以對畫面進行限制。',
placeholder: '請描述不想生成的圖片內容,比如:顏色、血腥內容'
}
},
speechToTextNode: {
label: '語音轉文本',
text: '將音頻通過語音識別模型轉換為文本',
stt_model: {
label: '語音識別模型'
},
audio: {
label: '選擇語音文件',
placeholder: '請選擇語音文件'
}
},
textToSpeechNode: {
label: '文本轉語音',
text: '將文本通過語音合成模型轉換為音頻',
tts_model: {
label: '語音合成模型'
},
content: {
label: '選擇文本內容'
}
},
functionNode: {
label: '自定義函數',
text: '通過執行自定義腳本,實現數據處理'
},
applicationNode: {
label: '應用節點'
}
},
compare: {
is_null: '為空',
is_not_null: '不為空',
contain: '包含',
not_contain: '不包含',
eq: '等於',
ge: '大於等於',
gt: '大於',
le: '小於等於',
lt: '小於',
len_eq: '長度等於',
len_ge: '長度大於等於',
len_gt: '長度大於',
len_le: '長度小於等於',
len_lt: '長度小於'
},
FileUploadSetting: {}
}

View File

@ -24,7 +24,7 @@ export default {
applicationForm: {
title: {
info: '應用資訊',
apptest: '調試預覽',
appTest: '調試預覽',
copy: '副本'
},
form: {

View File

@ -0,0 +1,158 @@
export default {
uploadDocument: '上傳文檔',
importDocument: '導入文檔',
syncDocument: '同步文檔',
selected: '已選',
items: '項',
searchBar: {
placeholder: '按 文檔名稱 搜索'
},
setting: {
migration: '遷移',
generateQuestion: '生成問題',
cancelGenerateQuestion: '取消生成問題',
cancelVectorization: '取消向量化',
cancelGenerate: '取消生成'
},
tip: {
saveMessage: '當前的更改尚未保存,確認退出嗎?',
cancelSuccess: '批量取消成功',
sendMessage: '發送成功',
vectorizationSuccess: '批量向量化成功',
nameMessage: '文件名稱不能为空!',
importMessage: '導入成功',
migrationSuccess: '遷移成功'
},
upload: {
selectFile: '選擇文件',
selectFiles: '選擇文件夾',
uploadMessage: '拖拽文件至此上傳或',
formats: '支持格式:',
requiredMessage: '請上傳文件',
errorMessage1: '請上傳文件',
errorMessage2: '文件格式不支持',
errorMessage3: '文件不能为空',
errorMessage4: '每次最多上傳50個文件',
template: '模板',
download: '下載'
},
fileType: {
txt: {
label: '文本文件',
tip1: '1、文件上傳前建議規範文件的分段標識',
tip2: '2、每次最多上傳 50 個文件,每個文件不超过 100MB'
},
table: {
label: '表格',
tip1: '1、點擊下載對應模板並完善信息',
tip2: '2、第一行必須是列標題且列標題必須是有意義的術語表中每條記錄將作為一個分段',
tip3: '3、上傳的表格文件中每個 sheet 會作為一個文檔sheet 名稱為文檔名稱',
tip4: '4、每次最多上傳 50 個文件,每個文件不超过 100MB'
},
QA: {
label: 'QA 問答對',
tip1: '1、點擊下載對應模板並完善信息',
tip2: '2、上傳的表格文件中每個 sheet 會作為一個文檔sheet 名稱為文檔名稱',
tip3: '3、每次最多上傳 50 個文件,每個文件不超过 100MB'
}
},
setRules: {
title: {
setting: '設置分段規則',
preview: '分段預覽'
},
intelligent: {
label: '智能分段(推薦)',
text: '不了解如何設置分段規則推薦使用智能分段'
},
advanced: {
label: '高級分段',
text: '用戶可根據文檔規範自行設置分段標識符、分段長度以及清洗規則'
},
patterns: {
label: '分段標識',
tooltip: '按照所選符號先後順序做遞歸分割,分割結果超出分段長度將截取至分段長度。',
placeholder: '請選擇'
},
limit: {
label: '分段長度'
},
with_filter: {
label: '自動清洗',
text: '去掉重複多餘符號空格、空行、制表符'
},
checkedConnect: {
label: '導入時添加分段標題為關聯問題(適用於標題為問題的問答對)'
}
},
buttons: {
prev: '上一步',
next: '下一步',
import: '開始導入',
preview: '生成預覽'
},
table: {
name: '文件名稱',
char_length: '字符數',
paragraph: '分段',
all: '全部',
updateTime: '更新時間'
},
fileStatus: {
label: '文件狀態',
SUCCESS: '成功',
FAILURE: '失敗',
EMBEDDING: '索引中',
PENDING: '排隊中',
GENERATE: '生成中',
SYNC: '同步中',
REVOKE: '取消中'
},
enableStatus: {
label: '啟用狀態',
enable: '開啟',
close: '關閉'
},
sync: {
label: '同步',
confirmTitle: '確認同步文檔?',
confirmMessage1: '同步將刪除已有數據重新獲取新數據,請謹慎操作。',
confirmMessage2: '無法同步,請先去設置文檔 URL地址',
successMessage: '同步文檔成功'
},
delete: {
confirmTitle1: '是否批量刪除',
confirmTitle2: '個文檔?',
confirmMessage: '所選文檔中的分段會跟隨刪除,請謹慎操作。',
successMessage: '批量刪除成功',
confirmTitle3: '是否刪除文檔:',
confirmMessage1: '此文檔下的',
confirmMessage2: '個分段都會被刪除,請謹慎操作。'
},
form: {
source_url: {
label: '文檔地址',
placeholder: '請輸入文檔地址,一行一個,地址不正確文檔會導入失敗。',
requiredMessage: '請輸入文檔地址'
},
selector: {
label: '選擇器',
placeholder: '默認為 body可輸入 .classname/#idname/tagname'
},
hit_handling_method: {
label: '命中處理方式',
tooltip: '用戶提問時,命中文檔下的分段時按照設置的方式進行處理。'
},
similarity: {
label: '相似度高于',
placeholder: '直接返回分段内容',
requiredMessage: '请输入相似度'
},
selectVectorization: {
label: '选择向量化内容',
error: '向量化未成功的分段',
all: '全部分段'
}
}
}

View File

@ -1,20 +1,31 @@
import notFound from './404'
import application from './application'
import applicationOverview from './application-overview'
import system from './system'
import functionLib from './function-lib'
import user from './user'
import team from './team'
import template from './template'
import dataset from './dataset'
import application from './application';
import applicationOverview from './application-overview';
import dataset from './dataset';
import system from './system';
import functionLib from './function-lib';
import user from './user';
import team from './team';
import template from './template';
import document from './document';
import paragraph from './paragraph';
import problem from './problem';
import log from './log';
import applicationWorkflow from './application-workflow';
export default {
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset
notFound,
application,
applicationOverview,
system,
functionLib,
user,
team,
template,
dataset,
applicationWorkflow,
document,
paragraph,
problem,
log,
}

View File

@ -0,0 +1,42 @@
export default {
title: '對話日誌',
delete: {
confirmTitle: '是否刪除問題:',
confirmMessage1: '刪除問題關聯的',
confirmMessage2: '個分段會被取消關聯,請謹慎操作。'
},
buttons: {
clearStrategy: '清除策略',
prev: '上一條',
next: '下一條'
},
table: {
abstract: '摘要',
chat_record_count: '對話提問數',
feedback: {
label: '用戶反饋',
star: '贊同',
trample: '反對'
},
mark: '改進標註',
recenTimes: '最近對話時間'
},
addToDataset: '添加至知識庫',
daysText: '天之前的對話記錄',
selectDataset: '選擇知識庫',
selectDatasetPlaceholder: '請選擇知識庫',
saveToDocument: '保存至文件',
documentPlaceholder: '請選擇文件',
editContent: '修改內容',
editMark: '修改標註',
form: {
content: {
label: '內容',
placeholder: '請輸入內容'
},
title: {
label: '標題',
placeholder: '請給當前內容設定一個標題,以便管理查看'
},
}
}

View File

@ -0,0 +1,36 @@
export default {
title: '段落',
editParagraph: '編輯分段',
addParagraph: '添加分段',
paragraphDetail: '分段詳情',
character_count: '個字符',
setting: {
batchSelected: '批量選擇',
cancelSelected: '取消選擇'
},
tip: {},
searchBar: {
title: '標題',
content: '內容'
},
delete: {
confirmTitle: '是否刪除段落:',
confirmMessage: '刪除後無法恢復,請謹慎操作。'
},
relatedProblem: {
title: '關聯問題',
placeholder: '請選擇問題'
},
form: {
paragraphTitle: {
label: '分段標題',
placeholder: '請輸入分段標題'
},
content: {
label: '分段內容',
placeholder: '請輸入分段內容',
requiredMessage1: '請輸入分段內容',
requiredMessage2: '內容最多不超過 100000 個字'
}
}
}

View File

@ -0,0 +1,37 @@
export default {
title: '問題',
createProblem: '建立問題',
detailProblem: '問題詳情',
quickCreateProblem: '快速建立問題',
tip: {
placeholder: '請輸入問題,支持輸入多個,一行一個。',
errorMessage: '問題不能為空!',
requiredMessage: '請輸入問題',
relatedSuccess: '批量關聯分段成功'
},
setting: {
batchDelete: '批量刪除',
cancelRelated: '取消關聯'
},
searchBar: {
placeholder: '按名稱搜尋'
},
table: {
paragraph_count: '關聯分段數',
updateTime: '更新時間'
},
delete: {
confirmTitle: '是否刪除問題:',
confirmMessage1: '刪除問題關聯的',
confirmMessage2: '個分段會被取消關聯,請謹慎操作。'
},
relateParagraph: {
title: '關聯分段',
selectDocument: '選擇文件',
placeholder: '按 文件名稱 搜尋',
selectParagraph: '選擇分段',
selectedParagraph: '已選分段',
count: '個'
},
}

View File

@ -384,7 +384,7 @@
</el-col>
<el-col :span="14" class="p-24 border-l">
<h4 class="title-decoration-1 mb-16">
{{ $t('views.application.applicationForm.title.apptest') }}
{{ $t('views.application.applicationForm.title.appTest') }}
</h4>
<div class="dialog-bg">
<div class="flex align-center p-24">

View File

@ -308,7 +308,7 @@ class AppNodeModel extends HtmlResize.model {
this.sourceRules.push(circleOnlyAsTarget)
this.targetRules.push({
message: t('views.applicationWorkflow.tip.onlylest'),
message: t('views.applicationWorkflow.tip.onlyLeft'),
validate: (sourceNode: any, targetNode: any, sourceAnchor: any, targetAnchor: any) => {
return targetAnchor.type === 'left'
}