diff --git a/web/app/components/workflow/types.ts b/web/app/components/workflow/types.ts index 0f542d58b6..c9e5aa31b5 100644 --- a/web/app/components/workflow/types.ts +++ b/web/app/components/workflow/types.ts @@ -1,444 +1,444 @@ -import type { - Edge as ReactFlowEdge, - Node as ReactFlowNode, - Viewport, - XYPosition, -} from 'reactflow' -import type { Resolution, TransferMethod } from '@/types/app' -import type { ToolDefaultValue } from '@/app/components/workflow/block-selector/types' -import type { VarType as VarKindType } from '@/app/components/workflow/nodes/tool/types' -import type { FileResponse, NodeTracing, PanelProps } from '@/types/workflow' -import type { Collection, Tool } from '@/app/components/tools/types' -import type { ChatVarType } from '@/app/components/workflow/panel/chat-variable-panel/type' -import type { - DefaultValueForm, - ErrorHandleTypeEnum, -} from '@/app/components/workflow/nodes/_base/components/error-handle/types' -import type { WorkflowRetryConfig } from '@/app/components/workflow/nodes/_base/components/retry/types' -import type { StructuredOutput } from '@/app/components/workflow/nodes/llm/types' - -export enum BlockEnum { - Start = 'start', - End = 'end', - Answer = 'answer', - LLM = 'llm', - KnowledgeRetrieval = 'knowledge-retrieval', - QuestionClassifier = 'question-classifier', - IfElse = 'if-else', - Code = 'code', - TemplateTransform = 'template-transform', - HttpRequest = 'http-request', - VariableAssigner = 'variable-assigner', - VariableAggregator = 'variable-aggregator', - Tool = 'tool', - ParameterExtractor = 'parameter-extractor', - Iteration = 'iteration', - DocExtractor = 'document-extractor', - ListFilter = 'list-operator', - IterationStart = 'iteration-start', - Assigner = 'assigner', // is now named as VariableAssigner - Agent = 'agent', - Loop = 'loop', - LoopStart = 'loop-start', - LoopEnd = 'loop-end', -} - -export enum ControlMode { - Pointer = 'pointer', - Hand = 'hand', -} -export enum ErrorHandleMode { - Terminated = 'terminated', - ContinueOnError = 'continue-on-error', - RemoveAbnormalOutput = 'remove-abnormal-output', -} -export type Branch = { - id: string - name: string -} - -export type CommonNodeType = { - _connectedSourceHandleIds?: string[] - _connectedTargetHandleIds?: string[] - _targetBranches?: Branch[] - _isSingleRun?: boolean - _runningStatus?: NodeRunningStatus - _runningBranchId?: string - _singleRunningStatus?: NodeRunningStatus - _isCandidate?: boolean - _isBundled?: boolean - _children?: { nodeId: string; nodeType: BlockEnum }[] - _isEntering?: boolean - _showAddVariablePopup?: boolean - _holdAddVariablePopup?: boolean - _iterationLength?: number - _iterationIndex?: number - _inParallelHovering?: boolean - _waitingRun?: boolean - _retryIndex?: number - isInIteration?: boolean - iteration_id?: string - selected?: boolean - title: string - desc: string - type: BlockEnum - width?: number - height?: number - position?: XYPosition - _loopLength?: number - _loopIndex?: number - isInLoop?: boolean - loop_id?: string - error_strategy?: ErrorHandleTypeEnum - retry_config?: WorkflowRetryConfig - default_value?: DefaultValueForm[] -} & T & Partial> - -export type CommonEdgeType = { - _hovering?: boolean - _connectedNodeIsHovering?: boolean - _connectedNodeIsSelected?: boolean - _isBundled?: boolean - _sourceRunningStatus?: NodeRunningStatus - _targetRunningStatus?: NodeRunningStatus - _waitingRun?: boolean - isInIteration?: boolean - iteration_id?: string - isInLoop?: boolean - loop_id?: string - sourceType: BlockEnum - targetType: BlockEnum -} - -export type Node = ReactFlowNode> -export type SelectedNode = Pick -export type NodeProps = { id: string; data: CommonNodeType } -export type NodePanelProps = { - id: string - data: CommonNodeType - panelProps: PanelProps -} -export type Edge = ReactFlowEdge - -export type WorkflowDataUpdater = { - nodes: Node[] - edges: Edge[] - viewport: Viewport -} - -export type ValueSelector = string[] // [nodeId, key | obj key path] - -export type Variable = { - variable: string - label?: string | { - nodeType: BlockEnum - nodeName: string - variable: string - } - value_selector: ValueSelector - value_type?: VarType - variable_type?: VarKindType - value?: string - options?: string[] - required?: boolean - isParagraph?: boolean -} - -export type EnvironmentVariable = { - id: string - name: string - value: any - value_type: 'string' | 'number' | 'secret' -} - -export type ConversationVariable = { - id: string - name: string - value_type: ChatVarType - value: any - description: string -} - -export type GlobalVariable = { - name: string - value_type: 'string' | 'number' - description: string -} - -export type VariableWithValue = { - key: string - value: string -} - -export enum InputVarType { - textInput = 'text-input', - paragraph = 'paragraph', - select = 'select', - number = 'number', - url = 'url', - files = 'files', - json = 'json', // obj, array - contexts = 'contexts', // knowledge retrieval - iterator = 'iterator', // iteration input - singleFile = 'file', - multiFiles = 'file-list', - loop = 'loop', // loop input -} - -export type InputVar = { - type: InputVarType - label: string | { - nodeType: BlockEnum - nodeName: string - variable: string - isChatVar?: boolean - } - variable: string - max_length?: number - default?: string - required: boolean - hint?: string - options?: string[] - value_selector?: ValueSelector - getVarValueFromDependent?: boolean - hide?: boolean - isFileItem?: boolean -} & Partial - -export type ModelConfig = { - provider: string - name: string - mode: string - completion_params: Record -} - -export enum PromptRole { - system = 'system', - user = 'user', - assistant = 'assistant', -} - -export enum EditionType { - basic = 'basic', - jinja2 = 'jinja2', -} - -export type PromptItem = { - id?: string - role?: PromptRole - text: string - edition_type?: EditionType - jinja2_text?: string -} - -export enum MemoryRole { - user = 'user', - assistant = 'assistant', -} - -export type RolePrefix = { - user: string - assistant: string -} - -export type Memory = { - role_prefix?: RolePrefix - window: { - enabled: boolean - size: number | string | null - } - query_prompt_template: string -} - -export enum VarType { - string = 'string', - number = 'number', - secret = 'secret', - boolean = 'boolean', - object = 'object', - file = 'file', - array = 'array', - arrayString = 'array[string]', - arrayNumber = 'array[number]', - arrayObject = 'array[object]', - arrayFile = 'array[file]', - any = 'any', - arrayAny = 'array[any]', -} - -export enum ValueType { - variable = 'variable', - constant = 'constant', -} - -export type Var = { - variable: string - type: VarType - children?: Var[] | StructuredOutput // if type is obj, has the children struct - isParagraph?: boolean - isSelect?: boolean - options?: string[] - required?: boolean - des?: string - isException?: boolean - isLoopVariable?: boolean - nodeId?: string -} - -export type NodeOutPutVar = { - nodeId: string - title: string - vars: Var[] - isStartNode?: boolean - isLoop?: boolean -} - -export type Block = { - classification?: string - type: BlockEnum - title: string - description?: string -} - -export type NodeDefault = { - defaultValue: Partial - defaultRunInputData?: Record - getAvailablePrevNodes: (isChatMode: boolean) => BlockEnum[] - getAvailableNextNodes: (isChatMode: boolean) => BlockEnum[] - checkValid: (payload: T, t: any, moreDataForCheckValid?: any) => { isValid: boolean; errorMessage?: string } -} - -export type OnSelectBlock = (type: BlockEnum, toolDefaultValue?: ToolDefaultValue) => void - -export enum WorkflowRunningStatus { - Waiting = 'waiting', - Running = 'running', - Succeeded = 'succeeded', - Failed = 'failed', - Stopped = 'stopped', -} - -export enum WorkflowVersion { - Draft = 'draft', - Latest = 'latest', -} - -export enum NodeRunningStatus { - NotStart = 'not-start', - Waiting = 'waiting', - Running = 'running', - Succeeded = 'succeeded', - Failed = 'failed', - Exception = 'exception', - Retry = 'retry', - Stopped = 'stopped', -} - -export type OnNodeAdd = ( - newNodePayload: { - nodeType: BlockEnum - sourceHandle?: string - targetHandle?: string - toolDefaultValue?: ToolDefaultValue - }, - oldNodesPayload: { - prevNodeId?: string - prevNodeSourceHandle?: string - nextNodeId?: string - nextNodeTargetHandle?: string - } -) => void - -export type CheckValidRes = { - isValid: boolean - errorMessage?: string -} - -export type RunFile = { - type: string - transfer_method: TransferMethod[] - url?: string - upload_file_id?: string - related_id?: string -} - -export type WorkflowRunningData = { - task_id?: string - message_id?: string - conversation_id?: string - result: { - workflow_id?: string - inputs?: string - process_data?: string - outputs?: string - status: string - error?: string - elapsed_time?: number - total_tokens?: number - created_at?: number - created_by?: string - finished_at?: number - steps?: number - showSteps?: boolean - total_steps?: number - files?: FileResponse[] - exceptions_count?: number - } - tracing?: NodeTracing[] -} - -export type HistoryWorkflowData = { - id: string - status: string - conversation_id?: string - finished_at?: number -} - -export enum ChangeType { - changeVarName = 'changeVarName', - remove = 'remove', -} - -export type MoreInfo = { - type: ChangeType - payload?: { - beforeKey: string - afterKey?: string - } -} - -export type ToolWithProvider = Collection & { - tools: Tool[] -} - -export enum SupportUploadFileTypes { - image = 'image', - document = 'document', - audio = 'audio', - video = 'video', - custom = 'custom', -} - -export type UploadFileSetting = { - allowed_file_upload_methods: TransferMethod[] - allowed_file_types: SupportUploadFileTypes[] - allowed_file_extensions?: string[] - max_length: number - number_limits?: number -} - -export type VisionSetting = { - variable_selector: ValueSelector - detail: Resolution -} - -export enum WorkflowVersionFilterOptions { - all = 'all', - onlyYours = 'onlyYours', -} - -export enum VersionHistoryContextMenuOptions { - restore = 'restore', - edit = 'edit', - delete = 'delete', -} +import type { + Edge as ReactFlowEdge, + Node as ReactFlowNode, + Viewport, + XYPosition, +} from 'reactflow' +import type { Resolution, TransferMethod } from '@/types/app' +import type { ToolDefaultValue } from '@/app/components/workflow/block-selector/types' +import type { VarType as VarKindType } from '@/app/components/workflow/nodes/tool/types' +import type { FileResponse, NodeTracing, PanelProps } from '@/types/workflow' +import type { Collection, Tool } from '@/app/components/tools/types' +import type { ChatVarType } from '@/app/components/workflow/panel/chat-variable-panel/type' +import type { + DefaultValueForm, + ErrorHandleTypeEnum, +} from '@/app/components/workflow/nodes/_base/components/error-handle/types' +import type { WorkflowRetryConfig } from '@/app/components/workflow/nodes/_base/components/retry/types' +import type { StructuredOutput } from '@/app/components/workflow/nodes/llm/types' + +export enum BlockEnum { + Start = 'start', + End = 'end', + Answer = 'answer', + LLM = 'llm', + KnowledgeRetrieval = 'knowledge-retrieval', + QuestionClassifier = 'question-classifier', + IfElse = 'if-else', + Code = 'code', + TemplateTransform = 'template-transform', + HttpRequest = 'http-request', + VariableAssigner = 'variable-assigner', + VariableAggregator = 'variable-aggregator', + Tool = 'tool', + ParameterExtractor = 'parameter-extractor', + Iteration = 'iteration', + DocExtractor = 'document-extractor', + ListFilter = 'list-operator', + IterationStart = 'iteration-start', + Assigner = 'assigner', // is now named as VariableAssigner + Agent = 'agent', + Loop = 'loop', + LoopStart = 'loop-start', + LoopEnd = 'loop-end', +} + +export enum ControlMode { + Pointer = 'pointer', + Hand = 'hand', +} +export enum ErrorHandleMode { + Terminated = 'terminated', + ContinueOnError = 'continue-on-error', + RemoveAbnormalOutput = 'remove-abnormal-output', +} +export type Branch = { + id: string + name: string +} + +export type CommonNodeType = { + _connectedSourceHandleIds?: string[] + _connectedTargetHandleIds?: string[] + _targetBranches?: Branch[] + _isSingleRun?: boolean + _runningStatus?: NodeRunningStatus + _runningBranchId?: string + _singleRunningStatus?: NodeRunningStatus + _isCandidate?: boolean + _isBundled?: boolean + _children?: { nodeId: string; nodeType: BlockEnum }[] + _isEntering?: boolean + _showAddVariablePopup?: boolean + _holdAddVariablePopup?: boolean + _iterationLength?: number + _iterationIndex?: number + _inParallelHovering?: boolean + _waitingRun?: boolean + _retryIndex?: number + isInIteration?: boolean + iteration_id?: string + selected?: boolean + title: string + desc: string + type: BlockEnum + width?: number + height?: number + position?: XYPosition + _loopLength?: number + _loopIndex?: number + isInLoop?: boolean + loop_id?: string + error_strategy?: ErrorHandleTypeEnum + retry_config?: WorkflowRetryConfig + default_value?: DefaultValueForm[] +} & T & Partial> + +export type CommonEdgeType = { + _hovering?: boolean + _connectedNodeIsHovering?: boolean + _connectedNodeIsSelected?: boolean + _isBundled?: boolean + _sourceRunningStatus?: NodeRunningStatus + _targetRunningStatus?: NodeRunningStatus + _waitingRun?: boolean + isInIteration?: boolean + iteration_id?: string + isInLoop?: boolean + loop_id?: string + sourceType: BlockEnum + targetType: BlockEnum +} + +export type Node = ReactFlowNode> +export type SelectedNode = Pick +export type NodeProps = { id: string; data: CommonNodeType } +export type NodePanelProps = { + id: string + data: CommonNodeType + panelProps: PanelProps +} +export type Edge = ReactFlowEdge + +export type WorkflowDataUpdater = { + nodes: Node[] + edges: Edge[] + viewport: Viewport +} + +export type ValueSelector = string[] // [nodeId, key | obj key path] + +export type Variable = { + variable: string + label?: string | { + nodeType: BlockEnum + nodeName: string + variable: string + } + value_selector: ValueSelector + value_type?: VarType + variable_type?: VarKindType + value?: string + options?: string[] + required?: boolean + isParagraph?: boolean +} + +export type EnvironmentVariable = { + id: string + name: string + value: any + value_type: 'string' | 'number' | 'secret' +} + +export type ConversationVariable = { + id: string + name: string + value_type: ChatVarType + value: any + description: string +} + +export type GlobalVariable = { + name: string + value_type: 'string' | 'number' + description: string +} + +export type VariableWithValue = { + key: string + value: string +} + +export enum InputVarType { + textInput = 'text-input', + paragraph = 'paragraph', + select = 'select', + number = 'number', + url = 'url', + files = 'files', + json = 'json', // obj, array + contexts = 'contexts', // knowledge retrieval + iterator = 'iterator', // iteration input + singleFile = 'file', + multiFiles = 'file-list', + loop = 'loop', // loop input +} + +export type InputVar = { + type: InputVarType + label: string | { + nodeType: BlockEnum + nodeName: string + variable: string + isChatVar?: boolean + } + variable: string + max_length?: number + default?: string + required: boolean + hint?: string + options?: string[] + value_selector?: ValueSelector + getVarValueFromDependent?: boolean + hide?: boolean + isFileItem?: boolean +} & Partial + +export type ModelConfig = { + provider: string + name: string + mode: string + completion_params: Record +} + +export enum PromptRole { + system = 'system', + user = 'user', + assistant = 'assistant', +} + +export enum EditionType { + basic = 'basic', + jinja2 = 'jinja2', +} + +export type PromptItem = { + id?: string + role?: PromptRole + text: string + edition_type?: EditionType + jinja2_text?: string +} + +export enum MemoryRole { + user = 'user', + assistant = 'assistant', +} + +export type RolePrefix = { + user: string + assistant: string +} + +export type Memory = { + role_prefix?: RolePrefix + window: { + enabled: boolean + size: number | string | null + } + query_prompt_template: string +} + +export enum VarType { + string = 'string', + number = 'number', + secret = 'secret', + boolean = 'boolean', + object = 'object', + file = 'file', + array = 'array', + arrayString = 'array[string]', + arrayNumber = 'array[number]', + arrayObject = 'array[object]', + arrayFile = 'array[file]', + any = 'any', + arrayAny = 'array[any]', +} + +export enum ValueType { + variable = 'variable', + constant = 'constant', +} + +export type Var = { + variable: string + type: VarType + children?: Var[] | StructuredOutput // if type is obj, has the children struct + isParagraph?: boolean + isSelect?: boolean + options?: string[] + required?: boolean + des?: string + isException?: boolean + isLoopVariable?: boolean + nodeId?: string +} + +export type NodeOutPutVar = { + nodeId: string + title: string + vars: Var[] + isStartNode?: boolean + isLoop?: boolean +} + +export type Block = { + classification?: string + type: BlockEnum + title: string + description?: string +} + +export type NodeDefault = { + defaultValue: Partial + defaultRunInputData?: Record + getAvailablePrevNodes: (isChatMode: boolean) => BlockEnum[] + getAvailableNextNodes: (isChatMode: boolean) => BlockEnum[] + checkValid: (payload: T, t: any, moreDataForCheckValid?: any) => { isValid: boolean; errorMessage?: string } +} + +export type OnSelectBlock = (type: BlockEnum, toolDefaultValue?: ToolDefaultValue) => void + +export enum WorkflowRunningStatus { + Waiting = 'waiting', + Running = 'running', + Succeeded = 'succeeded', + Failed = 'failed', + Stopped = 'stopped', +} + +export enum WorkflowVersion { + Draft = 'draft', + Latest = 'latest', +} + +export enum NodeRunningStatus { + NotStart = 'not-start', + Waiting = 'waiting', + Running = 'running', + Succeeded = 'succeeded', + Failed = 'failed', + Exception = 'exception', + Retry = 'retry', + Stopped = 'stopped', +} + +export type OnNodeAdd = ( + newNodePayload: { + nodeType: BlockEnum + sourceHandle?: string + targetHandle?: string + toolDefaultValue?: ToolDefaultValue + }, + oldNodesPayload: { + prevNodeId?: string + prevNodeSourceHandle?: string + nextNodeId?: string + nextNodeTargetHandle?: string + } +) => void + +export type CheckValidRes = { + isValid: boolean + errorMessage?: string +} + +export type RunFile = { + type: string + transfer_method: TransferMethod[] + url?: string + upload_file_id?: string + related_id?: string +} + +export type WorkflowRunningData = { + task_id?: string + message_id?: string + conversation_id?: string + result: { + workflow_id?: string + inputs?: string + process_data?: string + outputs?: string + status: string + error?: string + elapsed_time?: number + total_tokens?: number + created_at?: number + created_by?: string + finished_at?: number + steps?: number + showSteps?: boolean + total_steps?: number + files?: FileResponse[] + exceptions_count?: number + } + tracing?: NodeTracing[] +} + +export type HistoryWorkflowData = { + id: string + status: string + conversation_id?: string + finished_at?: number +} + +export enum ChangeType { + changeVarName = 'changeVarName', + remove = 'remove', +} + +export type MoreInfo = { + type: ChangeType + payload?: { + beforeKey: string + afterKey?: string + } +} + +export type ToolWithProvider = Collection & { + tools: Tool[] +} + +export enum SupportUploadFileTypes { + image = 'image', + document = 'document', + audio = 'audio', + video = 'video', + custom = 'custom', +} + +export type UploadFileSetting = { + allowed_file_upload_methods: TransferMethod[] + allowed_file_types: SupportUploadFileTypes[] + allowed_file_extensions?: string[] + max_length: number + number_limits?: number +} + +export type VisionSetting = { + variable_selector: ValueSelector + detail: Resolution +} + +export enum WorkflowVersionFilterOptions { + all = 'all', + onlyYours = 'onlyYours', +} + +export enum VersionHistoryContextMenuOptions { + restore = 'restore', + edit = 'edit', + delete = 'delete', +} diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts index 987cc07dc1..df0bb904fd 100644 --- a/web/i18n/en-US/workflow.ts +++ b/web/i18n/en-US/workflow.ts @@ -1,950 +1,950 @@ -const translation = { - common: { - undo: 'Undo', - redo: 'Redo', - editing: 'Editing', - autoSaved: 'Auto-Saved', - unpublished: 'Unpublished', - published: 'Published', - publish: 'Publish', - update: 'Update', - publishUpdate: 'Publish Update', - run: 'Run', - running: 'Running', - inRunMode: 'In Run Mode', - inPreview: 'In Preview', - inPreviewMode: 'In Preview Mode', - preview: 'Preview', - viewRunHistory: 'View run history', - runHistory: 'Run History', - goBackToEdit: 'Go back to editor', - conversationLog: 'Conversation Log', - features: 'Features', - featuresDescription: 'Enhance web app user experience', - ImageUploadLegacyTip: 'You can now create file type variables in the start form. We will no longer support the image upload feature in the future. ', - fileUploadTip: 'Image upload features have been upgraded to file upload. ', - featuresDocLink: 'Learn more', - debugAndPreview: 'Preview', - restart: 'Restart', - currentDraft: 'Current Draft', - currentDraftUnpublished: 'Current Draft Unpublished', - latestPublished: 'Latest Published', - publishedAt: 'Published', - restore: 'Restore', - versionHistory: 'Version History', - exitVersions: 'Exit Versions', - runApp: 'Run App', - batchRunApp: 'Batch Run App', - openInExplore: 'Open in Explore', - accessAPIReference: 'Access API Reference', - embedIntoSite: 'Embed Into Site', - addTitle: 'Add title...', - addDescription: 'Add description...', - noVar: 'No variable', - searchVar: 'Search variable', - variableNamePlaceholder: 'Variable name', - setVarValuePlaceholder: 'Set variable', - needConnectTip: 'This step is not connected to anything', - maxTreeDepth: 'Maximum limit of {{depth}} nodes per branch', - needEndNode: 'The End node must be added', - needAnswerNode: 'The Answer node must be added', - workflowProcess: 'Workflow Process', - notRunning: 'Not running yet', - previewPlaceholder: 'Enter content in the box below to start debugging the Chatbot', - effectVarConfirm: { - title: 'Remove Variable', - content: 'The variable is used in other nodes. Do you still want to remove it?', - }, - insertVarTip: 'Press the \'/\' key to insert quickly', - processData: 'Process Data', - input: 'Input', - output: 'Output', - jinjaEditorPlaceholder: 'Type \'/\' or \'{\' to insert variable', - viewOnly: 'View Only', - showRunHistory: 'Show Run History', - enableJinja: 'Enable Jinja template support', - learnMore: 'Learn More', - copy: 'Copy', - duplicate: 'Duplicate', - addBlock: 'Add Node', - pasteHere: 'Paste Here', - pointerMode: 'Pointer Mode', - handMode: 'Hand Mode', - exportImage: 'Export Image', - exportPNG: 'Export as PNG', - exportJPEG: 'Export as JPEG', - exportSVG: 'Export as SVG', - model: 'Model', - workflowAsTool: 'Workflow as Tool', - configureRequired: 'Configure Required', - configure: 'Configure', - manageInTools: 'Manage in Tools', - workflowAsToolTip: 'Tool reconfiguration is required after the workflow update.', - viewDetailInTracingPanel: 'View details', - syncingData: 'Syncing data, just a few seconds.', - importDSL: 'Import DSL', - importDSLTip: 'Current draft will be overwritten.\nExport workflow as backup before importing.', - backupCurrentDraft: 'Backup Current Draft', - chooseDSL: 'Choose DSL file', - overwriteAndImport: 'Overwrite and Import', - importFailure: 'Import Failed', - importWarning: 'Caution', - importWarningDetails: 'DSL version difference may affect certain features', - importSuccess: 'Import Successfully', - parallelRun: 'Parallel Run', - parallelTip: { - click: { - title: 'Click', - desc: ' to add', - }, - drag: { - title: 'Drag', - desc: ' to connect', - }, - limit: 'Parallelism is limited to {{num}} branches.', - depthLimit: 'Parallel nesting layer limit of {{num}} layers', - }, - disconnect: 'Disconnect', - jumpToNode: 'Jump to this node', - addParallelNode: 'Add Parallel Node', - parallel: 'PARALLEL', - branch: 'BRANCH', - onFailure: 'On Failure', - addFailureBranch: 'Add Fail Branch', - loadMore: 'Load More', - noHistory: 'No History', - }, - env: { - envPanelTitle: 'Environment Variables', - envDescription: 'Environment variables can be used to store private information and credentials. They are read-only and can be separated from the DSL file during export.', - envPanelButton: 'Add Variable', - modal: { - title: 'Add Environment Variable', - editTitle: 'Edit Environment Variable', - type: 'Type', - name: 'Name', - namePlaceholder: 'env name', - value: 'Value', - valuePlaceholder: 'env value', - secretTip: 'Used to define sensitive information or data, with DSL settings configured for leak prevention.', - }, - export: { - title: 'Export Secret environment variables?', - checkbox: 'Export secret values', - ignore: 'Export DSL', - export: 'Export DSL with secret values ', - }, - }, - chatVariable: { - panelTitle: 'Conversation Variables', - panelDescription: 'Conversation Variables are used to store interactive information that LLM needs to remember, including conversation history, uploaded files, user preferences. They are read-write. ', - docLink: 'Visit our docs to learn more.', - button: 'Add Variable', - modal: { - title: 'Add Conversation Variable', - editTitle: 'Edit Conversation Variable', - name: 'Name', - namePlaceholder: 'Variable name', - type: 'Type', - value: 'Default Value', - valuePlaceholder: 'Default value, leave blank to not set', - description: 'Description', - descriptionPlaceholder: 'Describe the variable', - editInJSON: 'Edit in JSON', - oneByOne: 'Add one by one', - editInForm: 'Edit in Form', - arrayValue: 'Value', - addArrayValue: 'Add Value', - objectKey: 'Key', - objectType: 'Type', - objectValue: 'Default Value', - }, - storedContent: 'Stored content', - updatedAt: 'Updated at ', - }, - changeHistory: { - title: 'Change History', - placeholder: 'You haven\'t changed anything yet', - clearHistory: 'Clear History', - hint: 'Hint', - hintText: 'Your editing actions are tracked in a change history, which is stored on your device for the duration of this session. This history will be cleared when you leave the editor.', - stepBackward_one: '{{count}} step backward', - stepBackward_other: '{{count}} steps backward', - stepForward_one: '{{count}} step forward', - stepForward_other: '{{count}} steps forward', - sessionStart: 'Session Start', - currentState: 'Current State', - nodeTitleChange: 'Node title changed', - nodeDescriptionChange: 'Node description changed', - nodeDragStop: 'Node moved', - nodeChange: 'Node changed', - nodeConnect: 'Node connected', - nodePaste: 'Node pasted', - nodeDelete: 'Node deleted', - nodeAdd: 'Node added', - nodeResize: 'Node resized', - noteAdd: 'Note added', - noteChange: 'Note changed', - noteDelete: 'Note deleted', - edgeDelete: 'Node disconnected', - }, - errorMsg: { - fieldRequired: '{{field}} is required', - rerankModelRequired: 'A configured Rerank Model is required', - authRequired: 'Authorization is required', - invalidJson: '{{field}} is invalid JSON', - fields: { - variable: 'Variable Name', - variableValue: 'Variable Value', - code: 'Code', - model: 'Model', - rerankModel: 'A configured Rerank Model', - visionVariable: 'Vision Variable', - }, - invalidVariable: 'Invalid variable', - noValidTool: '{{field}} no valid tool selected', - toolParameterRequired: '{{field}}: parameter [{{param}}] is required', - }, - singleRun: { - testRun: 'Test Run ', - startRun: 'Start Run', - running: 'Running', - testRunIteration: 'Test Run Iteration', - back: 'Back', - iteration: 'Iteration', - loop: 'Loop', - }, - tabs: { - 'searchBlock': 'Search node', - 'blocks': 'Nodes', - 'searchTool': 'Search tool', - 'tools': 'Tools', - 'allTool': 'All', - 'plugin': 'Plugin', - 'customTool': 'Custom', - 'workflowTool': 'Workflow', - 'question-understand': 'Question Understand', - 'logic': 'Logic', - 'transform': 'Transform', - 'utilities': 'Utilities', - 'noResult': 'No match found', - 'agent': 'Agent Strategy', - }, - blocks: { - 'start': 'Start', - 'end': 'End', - 'answer': 'Answer', - 'llm': 'LLM', - 'knowledge-retrieval': 'Knowledge Retrieval', - 'question-classifier': 'Question Classifier', - 'if-else': 'IF/ELSE', - 'code': 'Code', - 'template-transform': 'Template', - 'http-request': 'HTTP Request', - 'variable-assigner': 'Variable Aggregator', - 'variable-aggregator': 'Variable Aggregator', - 'assigner': 'Variable Assigner', - 'iteration-start': 'Iteration Start', - 'iteration': 'Iteration', - 'parameter-extractor': 'Parameter Extractor', - 'document-extractor': 'Doc Extractor', - 'list-operator': 'List Operator', - 'agent': 'Agent', - 'loop-start': 'Loop Start', - 'loop': 'Loop', - 'loop-end': 'Exit Loop', - }, - blocksAbout: { - 'start': 'Define the initial parameters for launching a workflow', - 'end': 'Define the end and result type of a workflow', - 'answer': 'Define the reply content of a chat conversation', - 'llm': 'Invoking large language models to answer questions or process natural language', - 'knowledge-retrieval': 'Allows you to query text content related to user questions from the Knowledge', - 'question-classifier': 'Define the classification conditions of user questions, LLM can define how the conversation progresses based on the classification description', - 'if-else': 'Allows you to split the workflow into two branches based on if/else conditions', - 'code': 'Execute a piece of Python or NodeJS code to implement custom logic', - 'template-transform': 'Convert data to string using Jinja template syntax', - 'http-request': 'Allow server requests to be sent over the HTTP protocol', - 'variable-assigner': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', - 'assigner': 'The variable assignment node is used for assigning values to writable variables(like conversation variables).', - 'variable-aggregator': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', - 'iteration': 'Perform multiple steps on a list object until all results are outputted.', - 'loop': 'Execute a loop of logic until the termination condition is met or the maximum loop count is reached.', - 'loop-end': 'Equivalent to "break". This node has no configuration items. When the loop body reaches this node, the loop terminates.', - 'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.', - 'document-extractor': 'Used to parse uploaded documents into text content that is easily understandable by LLM.', - 'list-operator': 'Used to filter or sort array content.', - 'agent': 'Invoking large language models to answer questions or process natural language', - }, - operator: { - zoomIn: 'Zoom In', - zoomOut: 'Zoom Out', - zoomTo50: 'Zoom to 50%', - zoomTo100: 'Zoom to 100%', - zoomToFit: 'Zoom to Fit', - }, - variableReference: { - noAvailableVars: 'No available variables', - noVarsForOperation: 'There are no variables available for assignment with the selected operation.', - noAssignedVars: 'No available assigned variables', - assignedVarsDescription: 'Assigned variables must be writable variables, such as ', - conversationVars: 'conversation variables', - }, - panel: { - userInputField: 'User Input Field', - changeBlock: 'Change Node', - helpLink: 'Help Link', - about: 'About', - createdBy: 'Created By ', - nextStep: 'Next Step', - addNextStep: 'Add the next step in this workflow', - selectNextStep: 'Select Next Step', - runThisStep: 'Run this step', - moveToThisNode: 'Move to this node', - checklist: 'Checklist', - checklistTip: 'Make sure all issues are resolved before publishing', - checklistResolved: 'All issues are resolved', - organizeBlocks: 'Organize nodes', - change: 'Change', - optional: '(optional)', - maximize: 'Maximize Canvas', - minimize: 'Exit Full Screen', - }, - nodes: { - common: { - outputVars: 'Output Variables', - insertVarTip: 'Insert Variable', - memory: { - memory: 'Memory', - memoryTip: 'Chat memory settings', - windowSize: 'Window Size', - conversationRoleName: 'Conversation Role Name', - user: 'User prefix', - assistant: 'Assistant prefix', - }, - memories: { - title: 'Memories', - tip: 'Chat memory', - builtIn: 'Built-in', - }, - errorHandle: { - title: 'Error Handling', - tip: 'Exception handling strategy, triggered when a node encounters an exception.', - none: { - title: 'None', - desc: 'The node will stop running if an exception occurs and is not handled', - }, - defaultValue: { - title: 'Default Value', - desc: 'When an error occurs, specify a static output content.', - tip: 'On error, will return below value.', - inLog: 'Node exception, outputting according to default values.', - output: 'Output Default Value', - }, - failBranch: { - title: 'Fail Branch', - desc: 'When an error occurs, it will execute the exception branch', - customize: 'Go to the canvas to customize the fail branch logic.', - customizeTip: 'When the fail branch is activated, exceptions thrown by nodes will not terminate the process. Instead, it will automatically execute the predefined fail branch, allowing you to flexibly provide error messages, reports, fixes, or skip actions.', - inLog: 'Node exception, will automatically execute the fail branch. The node output will return an error type and error message and pass them to downstream.', - }, - partialSucceeded: { - tip: 'There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.', - }, - }, - retry: { - retry: 'Retry', - retryOnFailure: 'retry on failure', - maxRetries: 'max retries', - retryInterval: 'retry interval', - retryTimes: 'Retry {{times}} times on failure', - retrying: 'Retrying...', - retrySuccessful: 'Retry successful', - retryFailed: 'Retry failed', - retryFailedTimes: '{{times}} retries failed', - times: 'times', - ms: 'ms', - retries: '{{num}} Retries', - }, - }, - start: { - required: 'required', - inputField: 'Input Field', - builtInVar: 'Built-in Variables', - outputVars: { - query: 'User input', - memories: { - des: 'Conversation history', - type: 'message type', - content: 'message content', - }, - files: 'File list', - }, - noVarTip: 'Set inputs that can be used in the Workflow', - }, - end: { - outputs: 'Outputs', - output: { - type: 'output type', - variable: 'output variable', - }, - type: { - 'none': 'None', - 'plain-text': 'Plain Text', - 'structured': 'Structured', - }, - }, - answer: { - answer: 'Answer', - outputVars: 'Output Variables', - }, - llm: { - model: 'model', - variables: 'variables', - context: 'context', - contextTooltip: 'You can import Knowledge as context', - notSetContextInPromptTip: 'To enable the context feature, please fill in the context variable in PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Give high level instructions for the conversation', - user: 'Provide instructions, queries, or any text-based input to the model', - assistant: 'The model’s responses based on the user messages', - }, - addMessage: 'Add Message', - vision: 'vision', - files: 'Files', - resolution: { - name: 'Resolution', - high: 'High', - low: 'Low', - }, - outputVars: { - output: 'Generate content', - usage: 'Model Usage Information', - }, - singleRun: { - variable: 'Variable', - }, - sysQueryInUser: 'sys.query in user message is required', - jsonSchema: { - title: 'Structured Output Schema', - instruction: 'Instruction', - promptTooltip: 'Convert the text description into a standardized JSON Schema structure.', - promptPlaceholder: 'Describe your JSON Schema...', - generate: 'Generate', - import: 'Import from JSON', - generateJsonSchema: 'Generate JSON Schema', - generationTip: 'You can use natural language to quickly create a JSON Schema.', - generating: 'Generating JSON Schema...', - generatedResult: 'Generated Result', - resultTip: 'Here is the generated result. If you\'re not satisfied, you can go back and modify your prompt.', - back: 'Back', - regenerate: 'Regenerate', - apply: 'Apply', - doc: 'Learn more about structured output', - resetDefaults: 'Reset', - required: 'required', - addField: 'Add Field', - addChildField: 'Add Child Field', - showAdvancedOptions: 'Show advanced options', - stringValidations: 'String Validations', - fieldNamePlaceholder: 'Field Name', - descriptionPlaceholder: 'Add description', - warningTips: { - saveSchema: 'Please finish editing the current field before saving the schema', - }, - }, - }, - knowledgeRetrieval: { - queryVariable: 'Query Variable', - knowledge: 'Knowledge', - outputVars: { - output: 'Retrieval segmented data', - content: 'Segmented content', - title: 'Segmented title', - icon: 'Segmented icon', - url: 'Segmented URL', - metadata: 'Other metadata', - }, - metadata: { - title: 'Metadata Filtering', - tip: 'Metadata filtering is the process of using metadata attributes (such as tags, categories, or access permissions) to refine and control the retrieval of relevant information within a system.', - options: { - disabled: { - title: 'Disabled', - subTitle: 'Not enabling metadata filtering', - }, - automatic: { - title: 'Automatic', - subTitle: 'Automatically generate metadata filtering conditions based on user query', - desc: 'Automatically generate metadata filtering conditions based on Query Variable', - }, - manual: { - title: 'Manual', - subTitle: 'Manually add metadata filtering conditions', - }, - }, - panel: { - title: 'Metadata Filter Conditions', - conditions: 'Conditions', - add: 'Add Condition', - search: 'Search metadata', - placeholder: 'Enter value', - datePlaceholder: 'Choose a time...', - select: 'Select variable...', - }, - }, - }, - http: { - inputVars: 'Input Variables', - api: 'API', - apiPlaceholder: 'Enter URL, type ‘/’ insert variable', - extractListPlaceholder: 'Enter list item index, type ‘/’ insert variable', - notStartWithHttp: 'API should start with http:// or https://', - key: 'Key', - type: 'Type', - value: 'Value', - bulkEdit: 'Bulk Edit', - keyValueEdit: 'Key-Value Edit', - headers: 'Headers', - params: 'Params', - body: 'Body', - binaryFileVariable: 'Binary File Variable', - outputVars: { - body: 'Response Content', - statusCode: 'Response Status Code', - headers: 'Response Header List JSON', - files: 'Files List', - }, - authorization: { - 'authorization': 'Authorization', - 'authorizationType': 'Authorization Type', - 'no-auth': 'None', - 'api-key': 'API-Key', - 'auth-type': 'Auth Type', - 'basic': 'Basic', - 'bearer': 'Bearer', - 'custom': 'Custom', - 'api-key-title': 'API Key', - 'header': 'Header', - }, - insertVarPlaceholder: 'type \'/\' to insert variable', - timeout: { - title: 'Timeout', - connectLabel: 'Connection Timeout', - connectPlaceholder: 'Enter connection timeout in seconds', - readLabel: 'Read Timeout', - readPlaceholder: 'Enter read timeout in seconds', - writeLabel: 'Write Timeout', - writePlaceholder: 'Enter write timeout in seconds', - }, - curl: { - title: 'Import from cURL', - placeholder: 'Paste cURL string here', - }, - }, - code: { - inputVars: 'Input Variables', - outputVars: 'Output Variables', - advancedDependencies: 'Advanced Dependencies', - advancedDependenciesTip: 'Add some preloaded dependencies that take more time to consume or are not default built-in here', - searchDependencies: 'Search Dependencies', - syncFunctionSignature: 'Sync function signature to code', - }, - templateTransform: { - inputVars: 'Input Variables', - code: 'Code', - codeSupportTip: 'Only supports Jinja2', - outputVars: { - output: 'Transformed content', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: 'Used to define the logic that should be executed when the if condition is not met.', - and: 'and', - or: 'or', - operator: 'Operator', - notSetVariable: 'Please set variable first', - comparisonOperator: { - 'contains': 'contains', - 'not contains': 'not contains', - 'start with': 'start with', - 'end with': 'end with', - 'is': 'is', - 'is not': 'is not', - 'empty': 'is empty', - 'not empty': 'is not empty', - 'null': 'is null', - 'not null': 'is not null', - 'in': 'in', - 'not in': 'not in', - 'all of': 'all of', - 'exists': 'exists', - 'not exists': 'not exists', - 'before': 'before', - 'after': 'after', - }, - optionName: { - image: 'Image', - doc: 'Doc', - audio: 'Audio', - video: 'Video', - localUpload: 'Local Upload', - url: 'URL', - }, - enterValue: 'Enter value', - addCondition: 'Add Condition', - conditionNotSetup: 'Condition NOT setup', - selectVariable: 'Select variable...', - addSubVariable: 'Sub Variable', - select: 'Select', - }, - variableAssigner: { - title: 'Assign variables', - outputType: 'Output Type', - varNotSet: 'Variable not set', - noVarTip: 'Add the variables to be assigned', - type: { - string: 'String', - number: 'Number', - object: 'Object', - array: 'Array', - }, - aggregationGroup: 'Aggregation Group', - aggregationGroupTip: 'Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.', - addGroup: 'Add Group', - outputVars: { - varDescribe: '{{groupName}} output', - }, - setAssignVariable: 'Set assign variable', - }, - assigner: { - 'assignedVariable': 'Assigned Variable', - 'varNotSet': 'Variable NOT Set', - 'variables': 'Variables', - 'noVarTip': 'Click the "+" button to add variables', - 'writeMode': 'Write Mode', - 'writeModeTip': 'Append mode: Available for array variables only.', - 'over-write': 'Overwrite', - 'append': 'Append', - 'plus': 'Plus', - 'clear': 'Clear', - 'setVariable': 'Set Variable', - 'selectAssignedVariable': 'Select assigned variable...', - 'setParameter': 'Set parameter...', - 'operations': { - 'title': 'Operation', - 'over-write': 'Overwrite', - 'overwrite': 'Overwrite', - 'set': 'Set', - 'clear': 'Clear', - 'extend': 'Extend', - 'append': 'Append', - 'remove-first': 'Remove First', - 'remove-last': 'Remove Last', - '+=': '+=', - '-=': '-=', - '*=': '*=', - '/=': '/=', - }, - 'variable': 'Variable', - 'noAssignedVars': 'No available assigned variables', - 'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.', - }, - tool: { - authorize: 'Authorize', - inputVars: 'Input Variables', - outputVars: { - text: 'tool generated content', - files: { - title: 'tool generated files', - type: 'Support type. Now only support image', - transfer_method: 'Transfer method.Value is remote_url or local_file', - url: 'Image url', - upload_file_id: 'Upload file id', - }, - json: 'tool generated json', - }, - }, - questionClassifiers: { - model: 'model', - inputVars: 'Input Variables', - outputVars: { - className: 'Class Name', - }, - class: 'Class', - classNamePlaceholder: 'Write your class name', - advancedSetting: 'Advanced Setting', - topicName: 'Topic Name', - topicPlaceholder: 'Write your topic name', - addClass: 'Add Class', - instruction: 'Instruction', - instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.', - instructionPlaceholder: 'Write your instruction', - }, - parameterExtractor: { - inputVar: 'Input Variable', - extractParameters: 'Extract Parameters', - importFromTool: 'Import from tools', - addExtractParameter: 'Add Extract Parameter', - addExtractParameterContent: { - name: 'Name', - namePlaceholder: 'Extract Parameter Name', - type: 'Type', - typePlaceholder: 'Extract Parameter Type', - description: 'Description', - descriptionPlaceholder: 'Extract Parameter Description', - required: 'Required', - requiredContent: 'Required is only used as a reference for model inference, and not for mandatory validation of parameter output.', - }, - extractParametersNotSet: 'Extract Parameters not setup', - instruction: 'Instruction', - instructionTip: 'Input additional instructions to help the parameter extractor understand how to extract parameters.', - advancedSetting: 'Advanced Setting', - reasoningMode: 'Reasoning Mode', - reasoningModeTip: 'You can choose the appropriate reasoning mode based on the model\'s ability to respond to instructions for function calling or prompts.', - isSuccess: 'Is Success.On success the value is 1, on failure the value is 0.', - errorReason: 'Error Reason', - }, - iteration: { - deleteTitle: 'Delete Iteration Node?', - deleteDesc: 'Deleting the iteration node will delete all child nodes', - input: 'Input', - output: 'Output Variables', - iteration_one: '{{count}} Iteration', - iteration_other: '{{count}} Iterations', - currentIteration: 'Current Iteration', - comma: ', ', - error_one: '{{count}} Error', - error_other: '{{count}} Errors', - parallelMode: 'Parallel Mode', - parallelModeUpper: 'PARALLEL MODE', - parallelModeEnableTitle: 'Parallel Mode Enabled', - parallelModeEnableDesc: 'In parallel mode, tasks within iterations support parallel execution. You can configure this in the properties panel on the right.', - parallelPanelDesc: 'In parallel mode, tasks in the iteration support parallel execution.', - MaxParallelismTitle: 'Maximum parallelism', - MaxParallelismDesc: 'The maximum parallelism is used to control the number of tasks executed simultaneously in a single iteration.', - errorResponseMethod: 'Error response method', - ErrorMethod: { - operationTerminated: 'Terminated', - continueOnError: 'Continue on Error', - removeAbnormalOutput: 'Remove Abnormal Output', - }, - answerNodeWarningDesc: 'Parallel mode warning: Answer nodes, conversation variable assignments, and persistent read/write operations within iterations may cause exceptions.', - }, - loop: { - deleteTitle: 'Delete Loop Node?', - deleteDesc: 'Deleting the loop node will remove all child nodes', - input: 'Input', - output: 'Output Variable', - loop_one: '{{count}} Loop', - loop_other: '{{count}} Loops', - currentLoop: 'Current Loop', - comma: ', ', - error_one: '{{count}} Error', - error_other: '{{count}} Errors', - breakCondition: 'Loop Termination Condition', - breakConditionTip: 'Only variables within loops with termination conditions and conversation variables can be referenced.', - loopMaxCount: 'Maximum Loop Count', - loopMaxCountError: 'Please enter a valid maximum loop count, ranging from 1 to {{maxCount}}', - errorResponseMethod: 'Error Response Method', - ErrorMethod: { - operationTerminated: 'Terminated', - continueOnError: 'Continue on Error', - removeAbnormalOutput: 'Remove Abnormal Output', - }, - loopVariables: 'Loop Variables', - initialLoopVariables: 'Initial Loop Variables', - finalLoopVariables: 'Final Loop Variables', - setLoopVariables: 'Set variables within the loop scope', - variableName: 'Variable Name', - inputMode: 'Input Mode', - exitConditionTip: 'A loop node needs at least one exit condition', - loopNode: 'Loop Node', - currentLoopCount: 'Current loop count: {{count}}', - totalLoopCount: 'Total loop count: {{count}}', - }, - note: { - addNote: 'Add Note', - editor: { - placeholder: 'Write your note...', - small: 'Small', - medium: 'Medium', - large: 'Large', - bold: 'Bold', - italic: 'Italic', - strikethrough: 'Strikethrough', - link: 'Link', - openLink: 'Open', - unlink: 'Unlink', - enterUrl: 'Enter URL...', - invalidUrl: 'Invalid URL', - bulletList: 'Bullet List', - showAuthor: 'Show Author', - }, - }, - docExtractor: { - inputVar: 'Input Variable', - outputVars: { - text: 'Extracted text', - }, - supportFileTypes: 'Support file types: {{types}}.', - learnMore: 'Learn more', - }, - listFilter: { - inputVar: 'Input Variable', - filterCondition: 'Filter Condition', - filterConditionKey: 'Filter Condition Key', - extractsCondition: 'Extract the N item', - filterConditionComparisonOperator: 'Filter Condition Comparison Operator', - filterConditionComparisonValue: 'Filter Condition value', - selectVariableKeyPlaceholder: 'Select sub variable key', - limit: 'Top N', - orderBy: 'Order by', - asc: 'ASC', - desc: 'DESC', - outputVars: { - result: 'Filter result', - first_record: 'First record', - last_record: 'Last record', - }, - }, - agent: { - strategy: { - label: 'Agentic Strategy', - tooltip: 'Different Agentic strategies determine how the system plans and executes multi-step tool calls', - shortLabel: 'Strategy', - configureTip: 'Please configure agentic strategy.', - configureTipDesc: 'After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ', - selectTip: 'Select agentic strategy', - searchPlaceholder: 'Search agentic strategy', - }, - learnMore: 'Learn more', - pluginNotInstalled: 'This plugin is not installed', - pluginNotInstalledDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', - linkToPlugin: 'Link to Plugins', - pluginInstaller: { - install: 'Install', - installing: 'Installing', - }, - modelNotInMarketplace: { - title: 'Model not installed', - desc: 'This model is installed from Local or GitHub repository. Please use after installation.', - manageInPlugins: 'Manage in Plugins', - }, - modelNotSupport: { - title: 'Unsupported Model', - desc: 'The installed plugin version does not provide this model.', - descForVersionSwitch: 'The installed plugin version does not provide this model. Click to switch version.', - }, - configureModel: 'Configure Model', - notAuthorized: 'Not Authorized', - model: 'model', - toolbox: 'toolbox', - strategyNotSet: 'Agentic strategy Not Set', - tools: 'Tools', - maxIterations: 'Max Iterations', - modelNotSelected: 'Model not selected', - modelNotInstallTooltip: 'This model is not installed', - toolNotInstallTooltip: '{{tool}} is not installed', - toolNotAuthorizedTooltip: '{{tool}} Not Authorized', - strategyNotInstallTooltip: '{{strategy}} is not installed', - unsupportedStrategy: 'Unsupported strategy', - pluginNotFoundDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', - strategyNotFoundDesc: 'The installed plugin version does not provide this strategy.', - strategyNotFoundDescAndSwitchVersion: 'The installed plugin version does not provide this strategy. Click to switch version.', - modelSelectorTooltips: { - deprecated: 'This model is deprecated', - }, - outputVars: { - text: 'agent generated content', - files: { - title: 'agent generated files', - type: 'Support type. Now only support image', - transfer_method: 'Transfer method.Value is remote_url or local_file', - url: 'Image url', - upload_file_id: 'Upload file id', - }, - json: 'agent generated json', - }, - checkList: { - strategyNotSelected: 'Strategy not selected', - }, - installPlugin: { - title: 'Install Plugin', - desc: 'About to install the following plugin', - changelog: 'Change log', - install: 'Install', - cancel: 'Cancel', - }, - }, - }, - tracing: { - stopBy: 'Stop by {{user}}', - }, - versionHistory: { - title: 'Versions', - currentDraft: 'Current Draft', - latest: 'Latest', - filter: { - all: 'All', - onlyYours: 'Only yours', - onlyShowNamedVersions: 'Only show named versions', - reset: 'Reset Filter', - empty: 'No matching version history found', - }, - defaultName: 'Untitled Version', - nameThisVersion: 'Name this version', - editVersionInfo: 'Edit version info', - editField: { - title: 'Title', - releaseNotes: 'Release Notes', - titleLengthLimit: 'Title can\'t exceed {{limit}} characters', - releaseNotesLengthLimit: 'Release notes can\'t exceed {{limit}} characters', - }, - releaseNotesPlaceholder: 'Describe what changed', - restorationTip: 'After version restoration, the current draft will be overwritten.', - deletionTip: 'Deletion is irreversible, please confirm.', - action: { - restoreSuccess: 'Version restored', - restoreFailure: 'Failed to restore version', - deleteSuccess: 'Version deleted', - deleteFailure: 'Failed to delete version', - updateSuccess: 'Version updated', - updateFailure: 'Failed to update version', - }, - }, - debug: { - settingsTab: 'Settings', - lastRunTab: 'Last Run', - noData: { - description: 'The results of the last run will be displayed here', - runThisNode: 'Run this node', - }, - variableInspect: { - title: 'Variable Inspect', - emptyTip: 'After stepping through a node on the canvas or running a node step by step, you can view the current value of the node variable in Variable Inspect', - emptyLink: 'Learn more', - clearAll: 'Reset all', - clearNode: 'Clear cached variable', - resetConversationVar: 'Reset conversation variable to default value', - view: 'View log', - edited: 'Edited', - reset: 'Reset to last run value', - trigger: { - normal: 'Variable Inspect', - running: 'Caching running status', - stop: 'Stop run', - cached: 'View cached variables', - clear: 'Clear', - }, - envNode: 'Environment', - chatNode: 'Conversation', - systemNode: 'System', - }, - }, -} - -export default translation +const translation = { + common: { + undo: 'Undo', + redo: 'Redo', + editing: 'Editing', + autoSaved: 'Auto-Saved', + unpublished: 'Unpublished', + published: 'Published', + publish: 'Publish', + update: 'Update', + publishUpdate: 'Publish Update', + run: 'Run', + running: 'Running', + inRunMode: 'In Run Mode', + inPreview: 'In Preview', + inPreviewMode: 'In Preview Mode', + preview: 'Preview', + viewRunHistory: 'View run history', + runHistory: 'Run History', + goBackToEdit: 'Go back to editor', + conversationLog: 'Conversation Log', + features: 'Features', + featuresDescription: 'Enhance web app user experience', + ImageUploadLegacyTip: 'You can now create file type variables in the start form. We will no longer support the image upload feature in the future. ', + fileUploadTip: 'Image upload features have been upgraded to file upload. ', + featuresDocLink: 'Learn more', + debugAndPreview: 'Preview', + restart: 'Restart', + currentDraft: 'Current Draft', + currentDraftUnpublished: 'Current Draft Unpublished', + latestPublished: 'Latest Published', + publishedAt: 'Published', + restore: 'Restore', + versionHistory: 'Version History', + exitVersions: 'Exit Versions', + runApp: 'Run App', + batchRunApp: 'Batch Run App', + openInExplore: 'Open in Explore', + accessAPIReference: 'Access API Reference', + embedIntoSite: 'Embed Into Site', + addTitle: 'Add title...', + addDescription: 'Add description...', + noVar: 'No variable', + searchVar: 'Search variable', + variableNamePlaceholder: 'Variable name', + setVarValuePlaceholder: 'Set variable', + needConnectTip: 'This step is not connected to anything', + maxTreeDepth: 'Maximum limit of {{depth}} nodes per branch', + needEndNode: 'The End node must be added', + needAnswerNode: 'The Answer node must be added', + workflowProcess: 'Workflow Process', + notRunning: 'Not running yet', + previewPlaceholder: 'Enter content in the box below to start debugging the Chatbot', + effectVarConfirm: { + title: 'Remove Variable', + content: 'The variable is used in other nodes. Do you still want to remove it?', + }, + insertVarTip: 'Press the \'/\' key to insert quickly', + processData: 'Process Data', + input: 'Input', + output: 'Output', + jinjaEditorPlaceholder: 'Type \'/\' or \'{\' to insert variable', + viewOnly: 'View Only', + showRunHistory: 'Show Run History', + enableJinja: 'Enable Jinja template support', + learnMore: 'Learn More', + copy: 'Copy', + duplicate: 'Duplicate', + addBlock: 'Add Node', + pasteHere: 'Paste Here', + pointerMode: 'Pointer Mode', + handMode: 'Hand Mode', + exportImage: 'Export Image', + exportPNG: 'Export as PNG', + exportJPEG: 'Export as JPEG', + exportSVG: 'Export as SVG', + model: 'Model', + workflowAsTool: 'Workflow as Tool', + configureRequired: 'Configure Required', + configure: 'Configure', + manageInTools: 'Manage in Tools', + workflowAsToolTip: 'Tool reconfiguration is required after the workflow update.', + viewDetailInTracingPanel: 'View details', + syncingData: 'Syncing data, just a few seconds.', + importDSL: 'Import DSL', + importDSLTip: 'Current draft will be overwritten.\nExport workflow as backup before importing.', + backupCurrentDraft: 'Backup Current Draft', + chooseDSL: 'Choose DSL file', + overwriteAndImport: 'Overwrite and Import', + importFailure: 'Import Failed', + importWarning: 'Caution', + importWarningDetails: 'DSL version difference may affect certain features', + importSuccess: 'Import Successfully', + parallelRun: 'Parallel Run', + parallelTip: { + click: { + title: 'Click', + desc: ' to add', + }, + drag: { + title: 'Drag', + desc: ' to connect', + }, + limit: 'Parallelism is limited to {{num}} branches.', + depthLimit: 'Parallel nesting layer limit of {{num}} layers', + }, + disconnect: 'Disconnect', + jumpToNode: 'Jump to this node', + addParallelNode: 'Add Parallel Node', + parallel: 'PARALLEL', + branch: 'BRANCH', + onFailure: 'On Failure', + addFailureBranch: 'Add Fail Branch', + loadMore: 'Load More', + noHistory: 'No History', + }, + env: { + envPanelTitle: 'Environment Variables', + envDescription: 'Environment variables can be used to store private information and credentials. They are read-only and can be separated from the DSL file during export.', + envPanelButton: 'Add Variable', + modal: { + title: 'Add Environment Variable', + editTitle: 'Edit Environment Variable', + type: 'Type', + name: 'Name', + namePlaceholder: 'env name', + value: 'Value', + valuePlaceholder: 'env value', + secretTip: 'Used to define sensitive information or data, with DSL settings configured for leak prevention.', + }, + export: { + title: 'Export Secret environment variables?', + checkbox: 'Export secret values', + ignore: 'Export DSL', + export: 'Export DSL with secret values ', + }, + }, + chatVariable: { + panelTitle: 'Conversation Variables', + panelDescription: 'Conversation Variables are used to store interactive information that LLM needs to remember, including conversation history, uploaded files, user preferences. They are read-write. ', + docLink: 'Visit our docs to learn more.', + button: 'Add Variable', + modal: { + title: 'Add Conversation Variable', + editTitle: 'Edit Conversation Variable', + name: 'Name', + namePlaceholder: 'Variable name', + type: 'Type', + value: 'Default Value', + valuePlaceholder: 'Default value, leave blank to not set', + description: 'Description', + descriptionPlaceholder: 'Describe the variable', + editInJSON: 'Edit in JSON', + oneByOne: 'Add one by one', + editInForm: 'Edit in Form', + arrayValue: 'Value', + addArrayValue: 'Add Value', + objectKey: 'Key', + objectType: 'Type', + objectValue: 'Default Value', + }, + storedContent: 'Stored content', + updatedAt: 'Updated at ', + }, + changeHistory: { + title: 'Change History', + placeholder: 'You haven\'t changed anything yet', + clearHistory: 'Clear History', + hint: 'Hint', + hintText: 'Your editing actions are tracked in a change history, which is stored on your device for the duration of this session. This history will be cleared when you leave the editor.', + stepBackward_one: '{{count}} step backward', + stepBackward_other: '{{count}} steps backward', + stepForward_one: '{{count}} step forward', + stepForward_other: '{{count}} steps forward', + sessionStart: 'Session Start', + currentState: 'Current State', + nodeTitleChange: 'Node title changed', + nodeDescriptionChange: 'Node description changed', + nodeDragStop: 'Node moved', + nodeChange: 'Node changed', + nodeConnect: 'Node connected', + nodePaste: 'Node pasted', + nodeDelete: 'Node deleted', + nodeAdd: 'Node added', + nodeResize: 'Node resized', + noteAdd: 'Note added', + noteChange: 'Note changed', + noteDelete: 'Note deleted', + edgeDelete: 'Node disconnected', + }, + errorMsg: { + fieldRequired: '{{field}} is required', + rerankModelRequired: 'A configured Rerank Model is required', + authRequired: 'Authorization is required', + invalidJson: '{{field}} is invalid JSON', + fields: { + variable: 'Variable Name', + variableValue: 'Variable Value', + code: 'Code', + model: 'Model', + rerankModel: 'A configured Rerank Model', + visionVariable: 'Vision Variable', + }, + invalidVariable: 'Invalid variable', + noValidTool: '{{field}} no valid tool selected', + toolParameterRequired: '{{field}}: parameter [{{param}}] is required', + }, + singleRun: { + testRun: 'Test Run ', + startRun: 'Start Run', + running: 'Running', + testRunIteration: 'Test Run Iteration', + back: 'Back', + iteration: 'Iteration', + loop: 'Loop', + }, + tabs: { + 'searchBlock': 'Search node', + 'blocks': 'Nodes', + 'searchTool': 'Search tool', + 'tools': 'Tools', + 'allTool': 'All', + 'plugin': 'Plugin', + 'customTool': 'Custom', + 'workflowTool': 'Workflow', + 'question-understand': 'Question Understand', + 'logic': 'Logic', + 'transform': 'Transform', + 'utilities': 'Utilities', + 'noResult': 'No match found', + 'agent': 'Agent Strategy', + }, + blocks: { + 'start': 'Start', + 'end': 'End', + 'answer': 'Answer', + 'llm': 'LLM', + 'knowledge-retrieval': 'Knowledge Retrieval', + 'question-classifier': 'Question Classifier', + 'if-else': 'IF/ELSE', + 'code': 'Code', + 'template-transform': 'Template', + 'http-request': 'HTTP Request', + 'variable-assigner': 'Variable Aggregator', + 'variable-aggregator': 'Variable Aggregator', + 'assigner': 'Variable Assigner', + 'iteration-start': 'Iteration Start', + 'iteration': 'Iteration', + 'parameter-extractor': 'Parameter Extractor', + 'document-extractor': 'Doc Extractor', + 'list-operator': 'List Operator', + 'agent': 'Agent', + 'loop-start': 'Loop Start', + 'loop': 'Loop', + 'loop-end': 'Exit Loop', + }, + blocksAbout: { + 'start': 'Define the initial parameters for launching a workflow', + 'end': 'Define the end and result type of a workflow', + 'answer': 'Define the reply content of a chat conversation', + 'llm': 'Invoking large language models to answer questions or process natural language', + 'knowledge-retrieval': 'Allows you to query text content related to user questions from the Knowledge', + 'question-classifier': 'Define the classification conditions of user questions, LLM can define how the conversation progresses based on the classification description', + 'if-else': 'Allows you to split the workflow into two branches based on if/else conditions', + 'code': 'Execute a piece of Python or NodeJS code to implement custom logic', + 'template-transform': 'Convert data to string using Jinja template syntax', + 'http-request': 'Allow server requests to be sent over the HTTP protocol', + 'variable-assigner': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', + 'assigner': 'The variable assignment node is used for assigning values to writable variables(like conversation variables).', + 'variable-aggregator': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', + 'iteration': 'Perform multiple steps on a list object until all results are outputted.', + 'loop': 'Execute a loop of logic until the termination condition is met or the maximum loop count is reached.', + 'loop-end': 'Equivalent to "break". This node has no configuration items. When the loop body reaches this node, the loop terminates.', + 'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.', + 'document-extractor': 'Used to parse uploaded documents into text content that is easily understandable by LLM.', + 'list-operator': 'Used to filter or sort array content.', + 'agent': 'Invoking large language models to answer questions or process natural language', + }, + operator: { + zoomIn: 'Zoom In', + zoomOut: 'Zoom Out', + zoomTo50: 'Zoom to 50%', + zoomTo100: 'Zoom to 100%', + zoomToFit: 'Zoom to Fit', + }, + variableReference: { + noAvailableVars: 'No available variables', + noVarsForOperation: 'There are no variables available for assignment with the selected operation.', + noAssignedVars: 'No available assigned variables', + assignedVarsDescription: 'Assigned variables must be writable variables, such as ', + conversationVars: 'conversation variables', + }, + panel: { + userInputField: 'User Input Field', + changeBlock: 'Change Node', + helpLink: 'Help Link', + about: 'About', + createdBy: 'Created By ', + nextStep: 'Next Step', + addNextStep: 'Add the next step in this workflow', + selectNextStep: 'Select Next Step', + runThisStep: 'Run this step', + moveToThisNode: 'Move to this node', + checklist: 'Checklist', + checklistTip: 'Make sure all issues are resolved before publishing', + checklistResolved: 'All issues are resolved', + organizeBlocks: 'Organize nodes', + change: 'Change', + optional: '(optional)', + maximize: 'Maximize Canvas', + minimize: 'Exit Full Screen', + }, + nodes: { + common: { + outputVars: 'Output Variables', + insertVarTip: 'Insert Variable', + memory: { + memory: 'Memory', + memoryTip: 'Chat memory settings', + windowSize: 'Window Size', + conversationRoleName: 'Conversation Role Name', + user: 'User prefix', + assistant: 'Assistant prefix', + }, + memories: { + title: 'Memories', + tip: 'Chat memory', + builtIn: 'Built-in', + }, + errorHandle: { + title: 'Error Handling', + tip: 'Exception handling strategy, triggered when a node encounters an exception.', + none: { + title: 'None', + desc: 'The node will stop running if an exception occurs and is not handled', + }, + defaultValue: { + title: 'Default Value', + desc: 'When an error occurs, specify a static output content.', + tip: 'On error, will return below value.', + inLog: 'Node exception, outputting according to default values.', + output: 'Output Default Value', + }, + failBranch: { + title: 'Fail Branch', + desc: 'When an error occurs, it will execute the exception branch', + customize: 'Go to the canvas to customize the fail branch logic.', + customizeTip: 'When the fail branch is activated, exceptions thrown by nodes will not terminate the process. Instead, it will automatically execute the predefined fail branch, allowing you to flexibly provide error messages, reports, fixes, or skip actions.', + inLog: 'Node exception, will automatically execute the fail branch. The node output will return an error type and error message and pass them to downstream.', + }, + partialSucceeded: { + tip: 'There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.', + }, + }, + retry: { + retry: 'Retry', + retryOnFailure: 'retry on failure', + maxRetries: 'max retries', + retryInterval: 'retry interval', + retryTimes: 'Retry {{times}} times on failure', + retrying: 'Retrying...', + retrySuccessful: 'Retry successful', + retryFailed: 'Retry failed', + retryFailedTimes: '{{times}} retries failed', + times: 'times', + ms: 'ms', + retries: '{{num}} Retries', + }, + }, + start: { + required: 'required', + inputField: 'Input Field', + builtInVar: 'Built-in Variables', + outputVars: { + query: 'User input', + memories: { + des: 'Conversation history', + type: 'message type', + content: 'message content', + }, + files: 'File list', + }, + noVarTip: 'Set inputs that can be used in the Workflow', + }, + end: { + outputs: 'Outputs', + output: { + type: 'output type', + variable: 'output variable', + }, + type: { + 'none': 'None', + 'plain-text': 'Plain Text', + 'structured': 'Structured', + }, + }, + answer: { + answer: 'Answer', + outputVars: 'Output Variables', + }, + llm: { + model: 'model', + variables: 'variables', + context: 'context', + contextTooltip: 'You can import Knowledge as context', + notSetContextInPromptTip: 'To enable the context feature, please fill in the context variable in PROMPT.', + prompt: 'prompt', + roleDescription: { + system: 'Give high level instructions for the conversation', + user: 'Provide instructions, queries, or any text-based input to the model', + assistant: 'The model’s responses based on the user messages', + }, + addMessage: 'Add Message', + vision: 'vision', + files: 'Files', + resolution: { + name: 'Resolution', + high: 'High', + low: 'Low', + }, + outputVars: { + output: 'Generate content', + usage: 'Model Usage Information', + }, + singleRun: { + variable: 'Variable', + }, + sysQueryInUser: 'sys.query in user message is required', + jsonSchema: { + title: 'Structured Output Schema', + instruction: 'Instruction', + promptTooltip: 'Convert the text description into a standardized JSON Schema structure.', + promptPlaceholder: 'Describe your JSON Schema...', + generate: 'Generate', + import: 'Import from JSON', + generateJsonSchema: 'Generate JSON Schema', + generationTip: 'You can use natural language to quickly create a JSON Schema.', + generating: 'Generating JSON Schema...', + generatedResult: 'Generated Result', + resultTip: 'Here is the generated result. If you\'re not satisfied, you can go back and modify your prompt.', + back: 'Back', + regenerate: 'Regenerate', + apply: 'Apply', + doc: 'Learn more about structured output', + resetDefaults: 'Reset', + required: 'required', + addField: 'Add Field', + addChildField: 'Add Child Field', + showAdvancedOptions: 'Show advanced options', + stringValidations: 'String Validations', + fieldNamePlaceholder: 'Field Name', + descriptionPlaceholder: 'Add description', + warningTips: { + saveSchema: 'Please finish editing the current field before saving the schema', + }, + }, + }, + knowledgeRetrieval: { + queryVariable: 'Query Variable', + knowledge: 'Knowledge', + outputVars: { + output: 'Retrieval segmented data', + content: 'Segmented content', + title: 'Segmented title', + icon: 'Segmented icon', + url: 'Segmented URL', + metadata: 'Other metadata', + }, + metadata: { + title: 'Metadata Filtering', + tip: 'Metadata filtering is the process of using metadata attributes (such as tags, categories, or access permissions) to refine and control the retrieval of relevant information within a system.', + options: { + disabled: { + title: 'Disabled', + subTitle: 'Not enabling metadata filtering', + }, + automatic: { + title: 'Automatic', + subTitle: 'Automatically generate metadata filtering conditions based on user query', + desc: 'Automatically generate metadata filtering conditions based on Query Variable', + }, + manual: { + title: 'Manual', + subTitle: 'Manually add metadata filtering conditions', + }, + }, + panel: { + title: 'Metadata Filter Conditions', + conditions: 'Conditions', + add: 'Add Condition', + search: 'Search metadata', + placeholder: 'Enter value', + datePlaceholder: 'Choose a time...', + select: 'Select variable...', + }, + }, + }, + http: { + inputVars: 'Input Variables', + api: 'API', + apiPlaceholder: 'Enter URL, type ‘/’ insert variable', + extractListPlaceholder: 'Enter list item index, type ‘/’ insert variable', + notStartWithHttp: 'API should start with http:// or https://', + key: 'Key', + type: 'Type', + value: 'Value', + bulkEdit: 'Bulk Edit', + keyValueEdit: 'Key-Value Edit', + headers: 'Headers', + params: 'Params', + body: 'Body', + binaryFileVariable: 'Binary File Variable', + outputVars: { + body: 'Response Content', + statusCode: 'Response Status Code', + headers: 'Response Header List JSON', + files: 'Files List', + }, + authorization: { + 'authorization': 'Authorization', + 'authorizationType': 'Authorization Type', + 'no-auth': 'None', + 'api-key': 'API-Key', + 'auth-type': 'Auth Type', + 'basic': 'Basic', + 'bearer': 'Bearer', + 'custom': 'Custom', + 'api-key-title': 'API Key', + 'header': 'Header', + }, + insertVarPlaceholder: 'type \'/\' to insert variable', + timeout: { + title: 'Timeout', + connectLabel: 'Connection Timeout', + connectPlaceholder: 'Enter connection timeout in seconds', + readLabel: 'Read Timeout', + readPlaceholder: 'Enter read timeout in seconds', + writeLabel: 'Write Timeout', + writePlaceholder: 'Enter write timeout in seconds', + }, + curl: { + title: 'Import from cURL', + placeholder: 'Paste cURL string here', + }, + }, + code: { + inputVars: 'Input Variables', + outputVars: 'Output Variables', + advancedDependencies: 'Advanced Dependencies', + advancedDependenciesTip: 'Add some preloaded dependencies that take more time to consume or are not default built-in here', + searchDependencies: 'Search Dependencies', + syncFunctionSignature: 'Sync function signature to code', + }, + templateTransform: { + inputVars: 'Input Variables', + code: 'Code', + codeSupportTip: 'Only supports Jinja2', + outputVars: { + output: 'Transformed content', + }, + }, + ifElse: { + if: 'If', + else: 'Else', + elseDescription: 'Used to define the logic that should be executed when the if condition is not met.', + and: 'and', + or: 'or', + operator: 'Operator', + notSetVariable: 'Please set variable first', + comparisonOperator: { + 'contains': 'contains', + 'not contains': 'not contains', + 'start with': 'start with', + 'end with': 'end with', + 'is': 'is', + 'is not': 'is not', + 'empty': 'is empty', + 'not empty': 'is not empty', + 'null': 'is null', + 'not null': 'is not null', + 'in': 'in', + 'not in': 'not in', + 'all of': 'all of', + 'exists': 'exists', + 'not exists': 'not exists', + 'before': 'before', + 'after': 'after', + }, + optionName: { + image: 'Image', + doc: 'Doc', + audio: 'Audio', + video: 'Video', + localUpload: 'Local Upload', + url: 'URL', + }, + enterValue: 'Enter value', + addCondition: 'Add Condition', + conditionNotSetup: 'Condition NOT setup', + selectVariable: 'Select variable...', + addSubVariable: 'Sub Variable', + select: 'Select', + }, + variableAssigner: { + title: 'Assign variables', + outputType: 'Output Type', + varNotSet: 'Variable not set', + noVarTip: 'Add the variables to be assigned', + type: { + string: 'String', + number: 'Number', + object: 'Object', + array: 'Array', + }, + aggregationGroup: 'Aggregation Group', + aggregationGroupTip: 'Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.', + addGroup: 'Add Group', + outputVars: { + varDescribe: '{{groupName}} output', + }, + setAssignVariable: 'Set assign variable', + }, + assigner: { + 'assignedVariable': 'Assigned Variable', + 'varNotSet': 'Variable NOT Set', + 'variables': 'Variables', + 'noVarTip': 'Click the "+" button to add variables', + 'writeMode': 'Write Mode', + 'writeModeTip': 'Append mode: Available for array variables only.', + 'over-write': 'Overwrite', + 'append': 'Append', + 'plus': 'Plus', + 'clear': 'Clear', + 'setVariable': 'Set Variable', + 'selectAssignedVariable': 'Select assigned variable...', + 'setParameter': 'Set parameter...', + 'operations': { + 'title': 'Operation', + 'over-write': 'Overwrite', + 'overwrite': 'Overwrite', + 'set': 'Set', + 'clear': 'Clear', + 'extend': 'Extend', + 'append': 'Append', + 'remove-first': 'Remove First', + 'remove-last': 'Remove Last', + '+=': '+=', + '-=': '-=', + '*=': '*=', + '/=': '/=', + }, + 'variable': 'Variable', + 'noAssignedVars': 'No available assigned variables', + 'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.', + }, + tool: { + authorize: 'Authorize', + inputVars: 'Input Variables', + outputVars: { + text: 'tool generated content', + files: { + title: 'tool generated files', + type: 'Support type. Now only support image', + transfer_method: 'Transfer method.Value is remote_url or local_file', + url: 'Image url', + upload_file_id: 'Upload file id', + }, + json: 'tool generated json', + }, + }, + questionClassifiers: { + model: 'model', + inputVars: 'Input Variables', + outputVars: { + className: 'Class Name', + }, + class: 'Class', + classNamePlaceholder: 'Write your class name', + advancedSetting: 'Advanced Setting', + topicName: 'Topic Name', + topicPlaceholder: 'Write your topic name', + addClass: 'Add Class', + instruction: 'Instruction', + instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.', + instructionPlaceholder: 'Write your instruction', + }, + parameterExtractor: { + inputVar: 'Input Variable', + extractParameters: 'Extract Parameters', + importFromTool: 'Import from tools', + addExtractParameter: 'Add Extract Parameter', + addExtractParameterContent: { + name: 'Name', + namePlaceholder: 'Extract Parameter Name', + type: 'Type', + typePlaceholder: 'Extract Parameter Type', + description: 'Description', + descriptionPlaceholder: 'Extract Parameter Description', + required: 'Required', + requiredContent: 'Required is only used as a reference for model inference, and not for mandatory validation of parameter output.', + }, + extractParametersNotSet: 'Extract Parameters not setup', + instruction: 'Instruction', + instructionTip: 'Input additional instructions to help the parameter extractor understand how to extract parameters.', + advancedSetting: 'Advanced Setting', + reasoningMode: 'Reasoning Mode', + reasoningModeTip: 'You can choose the appropriate reasoning mode based on the model\'s ability to respond to instructions for function calling or prompts.', + isSuccess: 'Is Success.On success the value is 1, on failure the value is 0.', + errorReason: 'Error Reason', + }, + iteration: { + deleteTitle: 'Delete Iteration Node?', + deleteDesc: 'Deleting the iteration node will delete all child nodes', + input: 'Input', + output: 'Output Variables', + iteration_one: '{{count}} Iteration', + iteration_other: '{{count}} Iterations', + currentIteration: 'Current Iteration', + comma: ', ', + error_one: '{{count}} Error', + error_other: '{{count}} Errors', + parallelMode: 'Parallel Mode', + parallelModeUpper: 'PARALLEL MODE', + parallelModeEnableTitle: 'Parallel Mode Enabled', + parallelModeEnableDesc: 'In parallel mode, tasks within iterations support parallel execution. You can configure this in the properties panel on the right.', + parallelPanelDesc: 'In parallel mode, tasks in the iteration support parallel execution.', + MaxParallelismTitle: 'Maximum parallelism', + MaxParallelismDesc: 'The maximum parallelism is used to control the number of tasks executed simultaneously in a single iteration.', + errorResponseMethod: 'Error response method', + ErrorMethod: { + operationTerminated: 'Terminated', + continueOnError: 'Continue on Error', + removeAbnormalOutput: 'Remove Abnormal Output', + }, + answerNodeWarningDesc: 'Parallel mode warning: Answer nodes, conversation variable assignments, and persistent read/write operations within iterations may cause exceptions.', + }, + loop: { + deleteTitle: 'Delete Loop Node?', + deleteDesc: 'Deleting the loop node will remove all child nodes', + input: 'Input', + output: 'Output Variable', + loop_one: '{{count}} Loop', + loop_other: '{{count}} Loops', + currentLoop: 'Current Loop', + comma: ', ', + error_one: '{{count}} Error', + error_other: '{{count}} Errors', + breakCondition: 'Loop Termination Condition', + breakConditionTip: 'Only variables within loops with termination conditions and conversation variables can be referenced.', + loopMaxCount: 'Maximum Loop Count', + loopMaxCountError: 'Please enter a valid maximum loop count, ranging from 1 to {{maxCount}}', + errorResponseMethod: 'Error Response Method', + ErrorMethod: { + operationTerminated: 'Terminated', + continueOnError: 'Continue on Error', + removeAbnormalOutput: 'Remove Abnormal Output', + }, + loopVariables: 'Loop Variables', + initialLoopVariables: 'Initial Loop Variables', + finalLoopVariables: 'Final Loop Variables', + setLoopVariables: 'Set variables within the loop scope', + variableName: 'Variable Name', + inputMode: 'Input Mode', + exitConditionTip: 'A loop node needs at least one exit condition', + loopNode: 'Loop Node', + currentLoopCount: 'Current loop count: {{count}}', + totalLoopCount: 'Total loop count: {{count}}', + }, + note: { + addNote: 'Add Note', + editor: { + placeholder: 'Write your note...', + small: 'Small', + medium: 'Medium', + large: 'Large', + bold: 'Bold', + italic: 'Italic', + strikethrough: 'Strikethrough', + link: 'Link', + openLink: 'Open', + unlink: 'Unlink', + enterUrl: 'Enter URL...', + invalidUrl: 'Invalid URL', + bulletList: 'Bullet List', + showAuthor: 'Show Author', + }, + }, + docExtractor: { + inputVar: 'Input Variable', + outputVars: { + text: 'Extracted text', + }, + supportFileTypes: 'Support file types: {{types}}.', + learnMore: 'Learn more', + }, + listFilter: { + inputVar: 'Input Variable', + filterCondition: 'Filter Condition', + filterConditionKey: 'Filter Condition Key', + extractsCondition: 'Extract the N item', + filterConditionComparisonOperator: 'Filter Condition Comparison Operator', + filterConditionComparisonValue: 'Filter Condition value', + selectVariableKeyPlaceholder: 'Select sub variable key', + limit: 'Top N', + orderBy: 'Order by', + asc: 'ASC', + desc: 'DESC', + outputVars: { + result: 'Filter result', + first_record: 'First record', + last_record: 'Last record', + }, + }, + agent: { + strategy: { + label: 'Agentic Strategy', + tooltip: 'Different Agentic strategies determine how the system plans and executes multi-step tool calls', + shortLabel: 'Strategy', + configureTip: 'Please configure agentic strategy.', + configureTipDesc: 'After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ', + selectTip: 'Select agentic strategy', + searchPlaceholder: 'Search agentic strategy', + }, + learnMore: 'Learn more', + pluginNotInstalled: 'This plugin is not installed', + pluginNotInstalledDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', + linkToPlugin: 'Link to Plugins', + pluginInstaller: { + install: 'Install', + installing: 'Installing', + }, + modelNotInMarketplace: { + title: 'Model not installed', + desc: 'This model is installed from Local or GitHub repository. Please use after installation.', + manageInPlugins: 'Manage in Plugins', + }, + modelNotSupport: { + title: 'Unsupported Model', + desc: 'The installed plugin version does not provide this model.', + descForVersionSwitch: 'The installed plugin version does not provide this model. Click to switch version.', + }, + configureModel: 'Configure Model', + notAuthorized: 'Not Authorized', + model: 'model', + toolbox: 'toolbox', + strategyNotSet: 'Agentic strategy Not Set', + tools: 'Tools', + maxIterations: 'Max Iterations', + modelNotSelected: 'Model not selected', + modelNotInstallTooltip: 'This model is not installed', + toolNotInstallTooltip: '{{tool}} is not installed', + toolNotAuthorizedTooltip: '{{tool}} Not Authorized', + strategyNotInstallTooltip: '{{strategy}} is not installed', + unsupportedStrategy: 'Unsupported strategy', + pluginNotFoundDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', + strategyNotFoundDesc: 'The installed plugin version does not provide this strategy.', + strategyNotFoundDescAndSwitchVersion: 'The installed plugin version does not provide this strategy. Click to switch version.', + modelSelectorTooltips: { + deprecated: 'This model is deprecated', + }, + outputVars: { + text: 'agent generated content', + files: { + title: 'agent generated files', + type: 'Support type. Now only support image', + transfer_method: 'Transfer method.Value is remote_url or local_file', + url: 'Image url', + upload_file_id: 'Upload file id', + }, + json: 'agent generated json', + }, + checkList: { + strategyNotSelected: 'Strategy not selected', + }, + installPlugin: { + title: 'Install Plugin', + desc: 'About to install the following plugin', + changelog: 'Change log', + install: 'Install', + cancel: 'Cancel', + }, + }, + }, + tracing: { + stopBy: 'Stop by {{user}}', + }, + versionHistory: { + title: 'Versions', + currentDraft: 'Current Draft', + latest: 'Latest', + filter: { + all: 'All', + onlyYours: 'Only yours', + onlyShowNamedVersions: 'Only show named versions', + reset: 'Reset Filter', + empty: 'No matching version history found', + }, + defaultName: 'Untitled Version', + nameThisVersion: 'Name this version', + editVersionInfo: 'Edit version info', + editField: { + title: 'Title', + releaseNotes: 'Release Notes', + titleLengthLimit: 'Title can\'t exceed {{limit}} characters', + releaseNotesLengthLimit: 'Release notes can\'t exceed {{limit}} characters', + }, + releaseNotesPlaceholder: 'Describe what changed', + restorationTip: 'After version restoration, the current draft will be overwritten.', + deletionTip: 'Deletion is irreversible, please confirm.', + action: { + restoreSuccess: 'Version restored', + restoreFailure: 'Failed to restore version', + deleteSuccess: 'Version deleted', + deleteFailure: 'Failed to delete version', + updateSuccess: 'Version updated', + updateFailure: 'Failed to update version', + }, + }, + debug: { + settingsTab: 'Settings', + lastRunTab: 'Last Run', + noData: { + description: 'The results of the last run will be displayed here', + runThisNode: 'Run this node', + }, + variableInspect: { + title: 'Variable Inspect', + emptyTip: 'After stepping through a node on the canvas or running a node step by step, you can view the current value of the node variable in Variable Inspect', + emptyLink: 'Learn more', + clearAll: 'Reset all', + clearNode: 'Clear cached variable', + resetConversationVar: 'Reset conversation variable to default value', + view: 'View log', + edited: 'Edited', + reset: 'Reset to last run value', + trigger: { + normal: 'Variable Inspect', + running: 'Caching running status', + stop: 'Stop run', + cached: 'View cached variables', + clear: 'Clear', + }, + envNode: 'Environment', + chatNode: 'Conversation', + systemNode: 'System', + }, + }, +} + +export default translation diff --git a/web/i18n/ja-JP/workflow.ts b/web/i18n/ja-JP/workflow.ts index af669dfec0..3c959669bf 100644 --- a/web/i18n/ja-JP/workflow.ts +++ b/web/i18n/ja-JP/workflow.ts @@ -1,953 +1,953 @@ -const translation = { - common: { - undo: '元に戻す', - redo: 'やり直し', - editing: '編集中', - autoSaved: '自動保存済み', - unpublished: '未公開', - published: '公開済み', - publish: '公開する', - update: '更新', - publishUpdate: '更新を公開', - run: '実行', - running: '実行中', - inRunMode: '実行モード中', - inPreview: 'プレビュー中', - inPreviewMode: 'プレビューモード中', - preview: 'プレビュー', - viewRunHistory: '実行履歴を表示', - runHistory: '実行履歴', - goBackToEdit: '編集に戻る', - conversationLog: '会話ログ', - features: '機能', - featuresDescription: 'Web アプリの操作性を向上させる機能', - ImageUploadLegacyTip: '開始フォームでファイル型変数が作成可能になりました。画像アップロード機能は今後サポート終了となります。', - fileUploadTip: '画像アップロード機能がファイルアップロードに拡張されました', - featuresDocLink: '詳細を見る', - debugAndPreview: 'プレビュー', - restart: '再起動', - currentDraft: '現在の下書き', - currentDraftUnpublished: '現在の下書き(未公開)', - latestPublished: '最新公開版', - publishedAt: '公開日時', - restore: '復元', - versionHistory: 'バージョン履歴', - exitVersions: 'バージョン履歴を閉じる', - runApp: 'アプリを実行', - batchRunApp: 'アプリを一括実行', - openInExplore: '探索ページで開く', - accessAPIReference: 'API リファレンス', - embedIntoSite: 'サイトに埋め込む', - addTitle: 'タイトルを追加...', - addDescription: '説明を追加...', - noVar: '変数がありません', - searchVar: '変数を検索', - variableNamePlaceholder: '変数名を入力', - setVarValuePlaceholder: '変数値を設定', - needConnectTip: '接続されていないステップがあります', - maxTreeDepth: '1 ブランチあたりの最大ノード数:{{depth}}', - needEndNode: '終了ブロックを追加する必要があります', - needAnswerNode: '回答ブロックを追加する必要があります', - workflowProcess: 'ワークフロー処理', - notRunning: 'まだ実行されていません', - previewPlaceholder: '入力欄にテキストを入力してチャットボットのデバッグを開始', - effectVarConfirm: { - title: '変数の削除', - content: '他のノードで変数が使用されています。それでも削除しますか?', - }, - insertVarTip: '"/"キーで変数を挿入', - processData: 'データ処理', - input: '入力', - output: '出力', - jinjaEditorPlaceholder: '「/」または「{」で変数挿入', - viewOnly: '閲覧のみ', - showRunHistory: '実行履歴を表示', - enableJinja: 'Jinja テンプレートを有効化', - learnMore: '詳細を見る', - copy: 'コピー', - duplicate: '複製', - addBlock: 'ブロックを追加', - pasteHere: 'ここに貼り付け', - pointerMode: 'ポインターモード', - handMode: 'ハンドモード', - exportImage: '画像を出力', - exportPNG: 'PNG で出力', - exportJPEG: 'JPEG で出力', - exportSVG: 'SVG で出力', - model: 'モデル', - workflowAsTool: 'ワークフローをツールとして公開する', - configureRequired: '設定が必要', - configure: '設定', - manageInTools: 'ツールページで管理', - workflowAsToolTip: 'ワークフロー更新後はツールの再設定が必要です', - viewDetailInTracingPanel: '詳細を表示', - syncingData: 'データ同期中。。。', - importDSL: 'DSL をインポート', - importDSLTip: '現在の下書きは上書きされます。インポート前にワークフローをエクスポートしてバックアップしてください', - backupCurrentDraft: '現在の下書きをバックアップ', - chooseDSL: 'DSL(yml) ファイルを選択', - overwriteAndImport: '上書きしてインポート', - importFailure: 'インポート失敗', - importWarning: '注意事項', - importWarningDetails: 'DSL バージョンの違いにより機能に影響が出る可能性があります', - importSuccess: 'インポート成功', - parallelRun: '並列実行', - parallelTip: { - click: { - title: 'クリック', - desc: 'で追加', - }, - drag: { - title: 'ドラッグ', - desc: 'で接続', - }, - limit: '並列処理可能ブランチ数:{{num}}', - depthLimit: '並列ネスト最大階層数:{{num}}', - }, - disconnect: '接続解除', - jumpToNode: 'このノードに移動', - addParallelNode: '並列ノードを追加', - parallel: '並列', - branch: 'ブランチ', - onFailure: '失敗時', - addFailureBranch: '失敗ブランチを追加', - loadMore: 'さらに読み込む', - noHistory: '履歴がありません', - }, - env: { - envPanelTitle: '環境変数', - envDescription: '環境変数は、個人情報や認証情報を格納するために使用することができます。これらは読み取り専用であり、DSL ファイルからエクスポートする際には分離されます。', - envPanelButton: '環境変数を追加', - modal: { - title: '環境変数を追加', - editTitle: '環境変数を編集', - type: 'タイプ', - name: '変数名', - namePlaceholder: '変数名を入力', - value: '値', - valuePlaceholder: '変数値を入力', - secretTip: 'この変数は機密情報やデータを定義するために使用されます。DSL をエクスポートするときに漏洩防止メカニズムを設定されます。', - }, - export: { - title: 'シークレット環境変数をエクスポートしますか?', - checkbox: 'シークレット値を含む', - ignore: 'DSL をエクスポート', - export: 'シークレット値付きでエクスポート', - }, - }, - chatVariable: { - panelTitle: '会話変数', - panelDescription: '対話情報を保存・管理(会話履歴/ファイル/ユーザー設定など)。書き換えができます。', - docLink: '詳細ドキュメント', - button: '変数を追加', - modal: { - title: '会話変数を追加', - editTitle: '会話変数を編集', - name: '変数名', - namePlaceholder: '変数名を入力', - type: 'タイプ', - value: 'デフォルト値', - valuePlaceholder: 'デフォルト値、設定しない場合は空白にしてください', - description: '説明', - descriptionPlaceholder: '変数の説明を入力', - editInJSON: 'JSON で編集', - oneByOne: '個別追加', - editInForm: 'フォームで編集', - arrayValue: '値', - addArrayValue: '値を追加', - objectKey: 'キー', - objectType: 'タイプ', - objectValue: 'デフォルト値', - }, - storedContent: '保存内容', - updatedAt: '最終更新:', - }, - changeHistory: { - title: '変更履歴', - placeholder: 'まだ何も変更されていません', - clearHistory: '履歴をクリア', - hint: 'ヒント', - hintText: 'エディターでの編集操作は、エディターを離れるまで、お使いのデバイスに記録されます。この履歴は、エディターを離れると消去されます。', - stepBackward_one: '{{count}} ステップ戻る', - stepBackward_other: '{{count}} ステップ戻る', - stepForward_one: '{{count}} ステップ進む', - stepForward_other: '{{count}} ステップ進む', - sessionStart: 'セッション開始', - currentState: '現在の状態', - nodeTitleChange: 'ブロックのタイトルが変更されました', - nodeDescriptionChange: 'ブロックの説明が変更されました', - nodeDragStop: 'ブロックが移動されました', - nodeChange: 'ブロックが変更されました', - nodeConnect: 'ブロックが接続されました', - nodePaste: 'ブロックが貼り付けられました', - nodeDelete: 'ブロックが削除されました', - nodeAdd: 'ブロックが追加されました', - nodeResize: 'ブロックのサイズが変更されました', - noteAdd: '注釈が追加されました', - noteChange: '注釈が変更されました', - noteDelete: '注釈が削除されました', - edgeDelete: 'ブロックの接続が解除されました', - }, - errorMsg: { - fieldRequired: '{{field}} は必須です', - rerankModelRequired: 'Rerank モデルが設定されていません', - authRequired: '認証が必要です', - invalidJson: '{{field}} は無効な JSON です', - fields: { - variable: '変数名', - variableValue: '変数値', - code: 'コード', - model: 'モデル', - rerankModel: 'Rerank モデル', - visionVariable: 'ビジョン変数', - }, - invalidVariable: '無効な変数です', - noValidTool: '{{field}} に利用可能なツールがありません', - toolParameterRequired: '{{field}}: パラメータ [{{param}}] は必須です', - }, - singleRun: { - testRun: 'テスト実行', - startRun: '実行開始', - running: '実行中', - testRunIteration: 'テスト実行(イテレーション)', - testRunLoop: 'テスト実行(ループ)', - back: '戻る', - iteration: 'イテレーション', - loop: 'ループ', - }, - tabs: { - 'searchBlock': 'ブロック検索', - 'blocks': 'ブロック', - 'searchTool': 'ツール検索', - 'tools': 'ツール', - 'allTool': 'すべて', - 'customTool': 'カスタム', - 'workflowTool': 'ワークフロー', - 'question-understand': '問題理解', - 'logic': 'ロジック', - 'transform': '変換', - 'utilities': 'ツール', - 'noResult': '該当なし', - 'plugin': 'プラグイン', - 'agent': 'エージェント戦略', - }, - blocks: { - 'start': '開始', - 'end': '終了', - 'answer': '回答', - 'llm': 'LLM', - 'knowledge-retrieval': '知識検索', - 'question-classifier': '質問分類器', - 'if-else': 'IF/ELSE', - 'code': 'コード実行', - 'template-transform': 'テンプレート', - 'http-request': 'HTTP リクエスト', - 'variable-assigner': '変数代入器', - 'variable-aggregator': '変数集約器', - 'assigner': '変数代入', - 'iteration-start': 'イテレーション開始', - 'iteration': 'イテレーション', - 'parameter-extractor': 'パラメータ抽出', - 'document-extractor': 'テキスト抽出', - 'list-operator': 'リスト処理', - 'agent': 'エージェント', - 'loop-start': 'ループ開始', - 'loop': 'ループ', - 'loop-end': 'ループ完了', - }, - blocksAbout: { - 'start': 'ワークフロー開始時の初期パラメータを定義します。', - 'end': 'ワークフローの終了条件と結果のタイプを定義します。', - 'answer': 'チャットダイアログの返答内容を定義します。', - 'llm': '大規模言語モデルを呼び出して質問回答や自然言語処理を実行します。', - 'knowledge-retrieval': 'ナレッジベースからユーザー質問に関連するテキストを検索します。', - 'question-classifier': '質問の分類条件を定義し、LLM が分類に基づいて対話フローを制御します。', - 'if-else': 'if/else 条件でワークフローを 2 つの分岐に分割します。', - 'code': 'Python/NodeJS コードを実行してカスタムロジックを実装します。', - 'template-transform': 'Jinja テンプレート構文でデータを文字列に変換します。', - 'http-request': 'HTTP リクエストを送信できます。', - 'variable-assigner': '複数分岐の変数を集約し、下流ノードの設定を統一します。', - 'assigner': '書き込み可能な変数(例:会話変数)への値の割り当てを行います。', - 'variable-aggregator': '複数分岐の変数を集約し、下流ノードの設定を統一します。', - 'iteration': 'リスト要素に対して反復処理を実行し全結果を出力します。', - 'loop': '終了条件達成まで、または最大反復回数までロジックを繰り返します。', - 'loop-end': '「break」相当の機能です。このノードに設定項目はなく、ループ処理中にこのノードに到達すると即時終了します。', - 'parameter-extractor': '自然言語から構造化パラメータを抽出し、後続処理で利用します。', - 'document-extractor': 'アップロード文書を LLM 処理用に最適化されたテキストに変換します。', - 'list-operator': '配列のフィルタリングやソート処理を行います。', - 'agent': '大規模言語モデルを活用した質問応答や自然言語処理を実行します。', - }, - operator: { - zoomIn: '拡大', - zoomOut: '縮小', - zoomTo50: '50% サイズ', - zoomTo100: '等倍表示', - zoomToFit: '画面に合わせる', - }, - variableReference: { - noAvailableVars: '利用可能な変数がありません', - noVarsForOperation: 'この操作に割り当て可能な変数が存在しません。', - noAssignedVars: '割り当て可能な変数がありません', - assignedVarsDescription: '書き込み可能な変数(例:', - conversationVars: '会話変数', - }, - panel: { - userInputField: 'ユーザー入力欄', - changeBlock: 'ノード変更', - helpLink: 'ヘルプリンク', - about: '詳細', - createdBy: '作成者', - nextStep: '次のステップ', - addNextStep: 'このワークフローで次ノードを追加', - selectNextStep: '次ノード選択', - runThisStep: 'このステップ実行', - checklist: 'チェックリスト', - checklistTip: '公開前に全ての項目を確認してください', - checklistResolved: '全てのチェックが完了しました', - organizeBlocks: 'ノード整理', - change: '変更', - optional: '(任意)', - moveToThisNode: 'このノードに移動する', - maximize: 'キャンバスを最大化する', - minimize: '全画面を終了する', - }, - nodes: { - common: { - outputVars: '出力変数', - insertVarTip: '変数を挿入', - memory: { - memory: 'メモリ', - memoryTip: 'チャットメモリ設定', - windowSize: 'メモリウィンドウサイズ', - conversationRoleName: '会話ロール名', - user: 'ユーザー接頭辞', - assistant: 'アシスタント接頭辞', - }, - memories: { - title: 'メモリ', - tip: 'チャットの記憶管理', - builtIn: '組み込み', - }, - errorHandle: { - title: '例外処理', - tip: 'ノード例外発生時の処理ポリシーを設定', - none: { - title: '処理なし', - desc: '例外発生時に処理を停止', - }, - defaultValue: { - title: 'デフォルト値', - desc: '例外発生時のデフォルト出力', - tip: '例外発生時に返される値:', - inLog: 'ノード例外 - デフォルト値を出力', - output: 'デフォルト値出力', - }, - failBranch: { - title: '例外分岐', - desc: '例外発生時に分岐を実行', - customize: '失敗分岐ロジックをカスタマイズ', - customizeTip: '例外発生時、失敗分岐でエラー処理を柔軟に設定可能(エラーログ表示/修復処理/操作スキップ等)', - inLog: 'ノード例外 - 失敗分岐を実行。エラー情報を下流に伝播', - }, - partialSucceeded: { - tip: '{{num}}個のノードで異常発生。ログはトレース画面で確認可能', - }, - }, - retry: { - retry: '再試行', - retryOnFailure: '失敗時再試行', - maxRetries: '最大試行回数', - retryInterval: '再試行間隔', - retryTimes: '失敗時 {{times}}回再試行', - retrying: '再試行中...', - retrySuccessful: '再試行成功', - retryFailed: '再試行失敗', - retryFailedTimes: '{{times}}回再試行失敗', - times: '回', - ms: 'ミリ秒', - retries: '再試行回数:{{num}}', - }, - }, - start: { - required: '必須', - inputField: '入力フィールド', - builtInVar: '組み込み変数', - outputVars: { - query: 'ユーザー入力', - memories: { - des: '会話履歴', - type: 'メッセージ種別', - content: 'メッセージ内容', - }, - files: 'ファイル一覧', - }, - noVarTip: '入力設定はワークフロー内で利用可能', - }, - end: { - outputs: '出力設定', - output: { - type: '出力形式', - variable: '出力変数', - }, - type: { - 'none': 'なし', - 'plain-text': 'プレーンテキスト', - 'structured': '構造化', - }, - }, - answer: { - answer: '応答', - outputVars: '出力変数', - }, - llm: { - model: 'AI モデル', - variables: '変数', - context: 'コンテキスト', - contextTooltip: 'ナレッジベースをコンテキストとして利用', - notSetContextInPromptTip: 'コンテキスト利用時はプロンプトに変数を明記してください', - prompt: 'プロンプト', - addMessage: 'メッセージ追加', - roleDescription: { - system: '対話の基本動作を定義', - user: '指示/質問を入力', - assistant: 'ユーザー入力への応答', - }, - vision: 'ビジョン', - files: 'ファイル', - resolution: { - name: '解像度', - high: '高', - low: '低', - }, - outputVars: { - output: '生成内容', - usage: 'モデル使用量', - }, - singleRun: { - variable: '変数', - }, - sysQueryInUser: 'ユーザーメッセージに sys.query を含めてください', - jsonSchema: { - title: '構造化データスキーマ', - instruction: '指示', - promptTooltip: 'テキスト説明から標準 JSON スキーマを自動生成できます。', - promptPlaceholder: 'JSON スキーマを入力...', - generate: '生成', - import: 'JSON インポート', - generateJsonSchema: 'スキーマ生成', - generationTip: '自然言語で簡単に JSON スキーマを作成可能です。', - generating: 'JSON スキーマを生成中...', - generatedResult: '生成結果', - resultTip: 'こちらが生成された結果です。ご満足いただけない場合は、前の画面に戻ってプロンプトを修正できます。', - back: '前に戻る', - regenerate: '再生成する', - apply: '適用', - doc: '構造化出力の詳細を見る', - resetDefaults: '初期化', - required: '必須項目', - addField: 'フィールドを追加', - addChildField: 'サブフィールドを追加', - showAdvancedOptions: '詳細設定', - stringValidations: '文字列検証', - fieldNamePlaceholder: 'フィールド名', - descriptionPlaceholder: '説明を入力', - warningTips: { - saveSchema: '編集中のフィールドを確定してから保存してください。', - }, - }, - }, - knowledgeRetrieval: { - queryVariable: '検索変数', - knowledge: 'ナレッジベース', - outputVars: { - output: '検索結果セグメント', - content: 'セグメント内容', - title: 'セグメントタイトル', - icon: 'セグメントアイコン', - url: 'セグメント URL', - metadata: 'メタデータ', - }, - metadata: { - title: 'メタデータフィルタ', - tip: 'タグ/カテゴリ等の属性で検索を絞り込み', - options: { - disabled: { - title: '無効', - subTitle: 'フィルタリング不使用', - }, - automatic: { - title: '自動生成', - subTitle: '検索履歴からフィルタ条件を自動生成', - desc: 'Query Variable(検索変数)に基づきフィルタ条件を自動生成', - }, - manual: { - title: '手動設定', - subTitle: 'メタデータの条件を手動で追加', - }, - }, - panel: { - title: 'メタデータのフィルタ条件', - conditions: '条件一覧', - add: '条件追加', - search: 'メタデータ検索', - placeholder: '値を入力', - datePlaceholder: '日付選択...', - select: '変数選択...', - }, - }, - }, - http: { - inputVars: '入力変数', - api: 'API', - apiPlaceholder: 'URL を入力(変数使用時は"/"を入力)', - extractListPlaceholder: 'リスト番号を入力(変数使用時は"/"を入力)', - notStartWithHttp: 'API は http:// または https:// で始まってください', - key: 'キー', - type: 'タイプ', - value: '値', - bulkEdit: '一括編集', - keyValueEdit: 'キーバリュー編集', - headers: 'ヘッダー', - params: 'パラメータ', - body: 'ボディ', - binaryFileVariable: 'バイナリファイル変数', - outputVars: { - body: 'レスポンスコンテンツ', - statusCode: 'レスポンスステータスコード', - headers: 'レスポンスヘッダ(JSON)', - files: 'ファイル一覧', - }, - authorization: { - 'authorization': '認証', - 'authorizationType': '認証タイプ', - 'no-auth': 'なし', - 'api-key': 'API キー', - 'auth-type': 'API 認証タイプ', - 'basic': 'ベーシック', - 'bearer': 'Bearer', - 'custom': 'カスタム', - 'api-key-title': 'API キー', - 'header': 'ヘッダー', - }, - insertVarPlaceholder: '変数を挿入するには\'/\'を入力してください', - timeout: { - title: 'タイムアウト設定', - connectLabel: '接続タイムアウト', - connectPlaceholder: '接続タイムアウト(秒)', - readLabel: '読み取りタイムアウト', - readPlaceholder: '読み取りタイムアウト(秒)', - writeLabel: '書き込みタイムアウト', - writePlaceholder: '書き込みタイムアウト(秒)', - }, - curl: { - title: 'cURL からインポート', - placeholder: 'ここに cURL 文字列を貼り付けます', - }, - }, - code: { - inputVars: '入力変数', - outputVars: '出力変数', - advancedDependencies: '高度な依存関係', - advancedDependenciesTip: '消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します', - searchDependencies: '依存関係を検索', - syncFunctionSignature: 'コードの関数署名を同期', - }, - templateTransform: { - inputVars: '入力変数', - code: 'コード', - codeSupportTip: 'Jinja2 のみをサポートしています', - outputVars: { - output: '変換されたコンテンツ', - }, - }, - ifElse: { - if: 'もし', - else: 'それ以外', - elseDescription: 'IF 条件が満たされない場合に実行するロジックを定義します。', - and: 'かつ', - or: 'または', - operator: '演算子', - notSetVariable: 'まず変数を設定してください', - comparisonOperator: { - 'contains': '含む', - 'not contains': '含まない', - 'start with': 'で始まる', - 'end with': 'で終わる', - 'is': 'である', - 'is not': 'でない', - 'empty': '空', - 'not empty': '空でない', - 'null': 'null', - 'not null': 'null でない', - 'regex match': '正規表現マッチ', - 'in': '含まれている', - 'not in': '含まれていない', - 'all of': 'すべての', - 'exists': '存在します', - 'not exists': '存在しません', - 'before': '前に', - 'after': '後', - }, - enterValue: '値を入力', - addCondition: '条件を追加', - conditionNotSetup: '条件が設定されていません', - selectVariable: '変数を選択...', - optionName: { - audio: '音声', - localUpload: 'ローカルアップロード', - image: '画像', - video: '映像', - doc: 'ドキュメント', - url: 'URL', - }, - select: '選ぶ', - addSubVariable: 'サブ変数', - }, - variableAssigner: { - title: '変数を代入する', - outputType: '出力タイプ', - outputVarType: '出力変数のタイプ', - varNotSet: '変数が設定されていません', - noVarTip: '代入された変数を追加してください', - type: { - string: '文字列', - number: '数値', - object: 'オブジェクト', - array: '配列', - }, - aggregationGroup: 'グループ', - aggregationGroupTip: 'この機能を有効にすると、変数集約器は複数のセットの変数を集約できます。', - addGroup: 'グループを追加', - outputVars: { - varDescribe: '{{groupName}} 出力', - }, - setAssignVariable: '代入された変数を設定', - }, - assigner: { - 'assignedVariable': '代入された変数', - 'writeMode': '書き込みモード', - 'writeModeTip': '代入された変数が配列の場合,末尾に追記モードを追加する。', - 'over-write': '上書き', - 'append': '追記', - 'plus': 'プラス', - 'clear': 'クリア', - 'setVariable': '変数を設定する', - 'variable': '変数', - 'operations': { - 'title': '操作', - 'set': 'セット', - 'clear': 'クリア', - 'overwrite': '上書き', - 'append': '追加', - '-=': '-=', - '/=': '/=', - '+=': '+=', - 'over-write': '上書き', - 'extend': '延ばす', - '*=': '*=', - 'remove-last': '最後を削除する', - 'remove-first': '最初を削除する', - }, - 'setParameter': 'パラメータを設定...', - 'selectAssignedVariable': '代入変数を選択...', - 'varNotSet': '変数が設定されていません', - 'variables': '変数', - 'noVarTip': '「+」ボタンをクリックして変数を追加します', - 'noAssignedVars': '使用可能な代入変数がありません', - 'assignedVarsDescription': '代入される変数は、会話変数などの書き込み可能な変数である必要があります。', - }, - tool: { - inputVars: '入力変数', - outputVars: { - text: 'ツールが生成したコンテンツ', - files: { - title: 'ツールが生成したファイル', - type: 'サポートタイプ。現在は画像のみサポートされています', - transfer_method: '転送方法。値は remote_url または local_file です', - url: '画像 URL', - upload_file_id: 'アップロードファイル ID', - }, - json: 'ツールで生成された JSON', - }, - authorize: '認証する', - }, - questionClassifiers: { - model: 'モデル', - inputVars: '入力変数', - outputVars: { - className: 'クラス名', - }, - class: 'クラス', - classNamePlaceholder: 'クラス名を入力してください', - advancedSetting: '高度な設定', - topicName: 'トピック名', - topicPlaceholder: 'トピック名を入力してください', - addClass: 'クラスを追加', - instruction: '指示', - instructionTip: '質問分類器が質問をどのように分類するかをよりよく理解するための追加の指示を入力します。', - instructionPlaceholder: '指示を入力してください', - }, - parameterExtractor: { - inputVar: '入力変数', - extractParameters: 'パラメーターを抽出', - importFromTool: 'ツールからインポート', - addExtractParameter: '抽出パラメーターを追加', - addExtractParameterContent: { - name: '名前', - namePlaceholder: '抽出パラメーター名', - type: 'タイプ', - typePlaceholder: '抽出パラメータータイプ', - description: '説明', - descriptionPlaceholder: '抽出パラメーターの説明', - required: '必須', - requiredContent: '必須はモデル推論の参考としてのみ使用され、パラメーター出力の必須検証には使用されません。', - }, - extractParametersNotSet: '抽出パラメーターが設定されていません', - instruction: '指示', - instructionTip: 'パラメーター抽出器がパラメーターを抽出する方法を理解するのに役立つ追加の指示を入力します。', - advancedSetting: '高度な設定', - reasoningMode: '推論モード', - reasoningModeTip: '関数呼び出しやプロンプトの指示に応答するモデルの能力に基づいて、適切な推論モードを選択できます。', - isSuccess: '成功。成功した場合の値は 1、失敗した場合の値は 0 です。', - errorReason: 'エラーの理由', - }, - iteration: { - deleteTitle: 'イテレーションノードを削除しますか?', - deleteDesc: 'イテレーションノードを削除すると、すべての子ノードが削除されます', - input: '入力', - output: '出力変数', - iteration_one: '{{count}} イテレーション', - iteration_other: '{{count}} イテレーション', - currentIteration: '現在のイテレーション', - ErrorMethod: { - operationTerminated: '終了', - continueOnError: 'エラー時に続行', - removeAbnormalOutput: 'アブノーマルアウトプットの削除', - }, - comma: ',', - error_other: '{{カウント}}エラー', - error_one: '{{カウント}}エラー', - parallelModeUpper: 'パラレルモード', - parallelMode: 'パラレルモード', - MaxParallelismTitle: '最大並列処理', - errorResponseMethod: 'エラー応答方式', - parallelPanelDesc: '並列モードでは、イテレーションのタスクは並列実行をサポートします。', - parallelModeEnableDesc: '並列モードでは、イテレーション内のタスクは並列実行をサポートします。これは、右側のプロパティパネルで構成できます。', - parallelModeEnableTitle: 'パラレルモード有効', - MaxParallelismDesc: '最大並列処理は、1 回の反復で同時に実行されるタスクの数を制御するために使用されます。', - answerNodeWarningDesc: '並列モードの警告:応答ノード、会話変数の割り当て、およびイテレーション内の永続的な読み取り/書き込み操作により、例外が発生する可能性があります。', - }, - loop: { - deleteTitle: 'ループノードを削除しますか?', - deleteDesc: 'ループノードを削除すると、全ての子ノードが削除されます。', - input: '入力', - output: '出力変数', - loop_one: '{{count}}回', - loop_other: '{{count}}回', - currentLoop: '現在のループ', - breakCondition: 'ループ終了条件', - breakConditionTip: 'ループ内の変数やセッション変数を参照し、終了条件を設定できます。', - loopMaxCount: '最大ループ回数', - loopMaxCountError: '最大ループ回数は 1 から{{maxCount}}の範囲で正しく入力してください。', - errorResponseMethod: 'エラー対応方法', - ErrorMethod: { - operationTerminated: 'エラー時に処理を終了', - continueOnError: 'エラーを無視して継続', - removeAbnormalOutput: '異常出力を除外', - }, - loopVariables: 'ループ変数', - initialLoopVariables: '初期ループ変数', - finalLoopVariables: '最終ループ変数', - setLoopVariables: 'ループスコープ内で変数を設定', - variableName: '変数名', - inputMode: '入力モード', - exitConditionTip: 'ループノードには少なくとも 1 つの終了条件が必要です', - loopNode: 'ループノード', - currentLoopCount: '現在のループ回数:{{count}}', - totalLoopCount: '総ループ回数:{{count}}', - error_other: '{{count}} エラー', - error_one: '{{count}} エラー', - comma: ',', - }, - note: { - addNote: 'コメントを追加', - editor: { - placeholder: 'メモを書く...', - small: '小', - medium: '中', - large: '大', - bold: '太字', - italic: '斜体', - strikethrough: '打ち消し線', - link: 'リンク', - openLink: '開く', - unlink: 'リンクをキャンセル', - enterUrl: 'リンク入力中...', - invalidUrl: 'リンク無効', - bulletList: 'リスト', - showAuthor: '著者を表示する', - }, - }, - docExtractor: { - outputVars: { - text: '抽出されたテキスト', - }, - inputVar: '入力変数', - learnMore: '詳細はこちら', - supportFileTypes: 'サポートするファイルタイプ:{{types}}。', - }, - listFilter: { - outputVars: { - last_record: '最後のレコード', - first_record: '最初のレコード', - result: 'フィルター結果', - }, - limit: 'トップ N', - asc: 'ASC', - filterCondition: 'フィルター条件', - filterConditionKey: 'フィルター条件キー', - orderBy: '並べる順番', - filterConditionComparisonValue: 'フィルター条件の値', - selectVariableKeyPlaceholder: 'サブ変数キーを選択する', - filterConditionComparisonOperator: 'フィルター条件を比較オペレーター', - inputVar: '入力変数', - desc: 'DESC', - extractsCondition: 'N 個のアイテムを抽出します', - }, - agent: { - strategy: { - label: 'エージェンティック戦略', - configureTipDesc: 'エージェント戦略を設定した後、このノードは残りの設定を自動的に読み込みます。この戦略は、マルチステップツール推論のメカニズムに影響を与えます。', - searchPlaceholder: 'エージェンティック戦略を検索する', - configureTip: 'エージェンティック戦略を設定してください。', - shortLabel: '戦略', - tooltip: '異なるエージェンティック戦略が、システムがマルチステップのツール呼び出しを計画し実行する方法を決定します。', - selectTip: 'エージェンシー戦略を選択する', - }, - pluginInstaller: { - install: 'インストール', - installing: 'インストール中', - }, - modelNotInMarketplace: { - manageInPlugins: 'プラグインを管理する', - title: 'モデルがインストールされていません', - desc: 'このモデルはローカルまたは GitHub リポジトリからインストールされます。インストール後にご利用ください。', - }, - modelNotSupport: { - title: 'サポートされていないモデル', - descForVersionSwitch: 'インストールされたプラグインのバージョンはこのモデルを提供していません。バージョンを切り替えるにはクリックしてください。', - desc: 'インストールされたプラグインのバージョンは、このモデルを提供していません。', - }, - modelSelectorTooltips: { - deprecated: 'このモデルは廃止されました', - }, - outputVars: { - files: { - url: '画像の URL', - type: 'サポートタイプ。現在はサポート画像のみ', - upload_file_id: 'ファイル ID をアップロード', - transfer_method: '転送方法。値は remote_url または local_file です。', - title: 'エージェント生成ファイル', - }, - text: 'エージェント生成コンテンツ', - json: 'エージェント生成の JSON', - }, - checkList: { - strategyNotSelected: '戦略が選択されていません', - }, - installPlugin: { - install: 'インストール', - changelog: '変更ログ', - cancel: 'キャンセル', - desc: '次のプラグインをインストールしようとしています', - title: 'プラグインをインストールする', - }, - strategyNotSet: 'エージェンティック戦略は設定されていません', - strategyNotInstallTooltip: '{{strategy}}はインストールされていません', - modelNotSelected: 'モデルが選択されていません', - toolNotAuthorizedTooltip: '{{tool}} 認可されていません', - toolNotInstallTooltip: '{{tool}}はインストールされていません', - tools: '道具', - learnMore: 'もっと学ぶ', - configureModel: 'モデルを設定する', - model: 'モデル', - linkToPlugin: 'プラグインへのリンク', - notAuthorized: '権限がありません', - modelNotInstallTooltip: 'このモデルはインストールされていません', - maxIterations: '最大反復回数', - toolbox: 'ツールボックス', - pluginNotInstalled: 'このプラグインはインストールされていません', - strategyNotFoundDescAndSwitchVersion: 'インストールされたプラグインのバージョンはこの戦略を提供していません。バージョンを切り替えるにはクリックしてください。', - pluginNotInstalledDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', - unsupportedStrategy: 'サポートされていない戦略', - pluginNotFoundDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', - strategyNotFoundDesc: 'インストールされたプラグインのバージョンは、この戦略を提供していません。', - }, - }, - tracing: { - stopBy: '{{user}}によって停止', - }, - versionHistory: { - title: 'バージョン', - currentDraft: '現在の下書き', - latest: '最新版', - filter: { - all: 'すべて', - onlyYours: '自分のみ', - onlyShowNamedVersions: '名前付きバージョンのみ', - reset: 'リセット', - empty: '該当するバージョンがありません', - }, - defaultName: '名称未設定', - nameThisVersion: 'バージョン名を付ける', - editVersionInfo: 'バージョン情報を編集', - editField: { - title: 'タイトル', - releaseNotes: 'リリースノート', - titleLengthLimit: 'タイトルは{{limit}}文字以内で入力してください', - releaseNotesLengthLimit: 'リリースノートは{{limit}}文字以内で入力してください', - }, - releaseNotesPlaceholder: '変更内容を入力してください', - restorationTip: 'バージョンを復元すると、現在の下書きが上書きされます', - deletionTip: '削除したデータは復元できません。よろしいですか?', - action: { - restoreSuccess: '復元が完了しました', - restoreFailure: '復元に失敗しました', - deleteSuccess: '削除が完了しました', - deleteFailure: '削除に失敗しました', - updateSuccess: '更新が完了しました', - updateFailure: '更新に失敗しました', - }, - }, - debug: { - noData: { - runThisNode: 'このノードを実行してください', - description: '最後の実行の結果がここに表示されます', - }, - variableInspect: { - trigger: { - clear: 'クリア', - running: 'キャッシング実行状況', - cached: 'キャッシュされた変数を表示', - stop: '走るのを止めて', - normal: '変数検査', - }, - clearAll: 'すべてリセット', - emptyLink: 'もっと学ぶ', - systemNode: 'システム', - view: 'ログを表示', - resetConversationVar: '会話の変数をデフォルト値にリセットする', - chatNode: '会話', - reset: '最後の実行値にリセットする', - clearNode: 'キャッシュされた変数をクリアする', - edited: '編集された', - title: '変数検査', - envNode: '環境', - emptyTip: 'キャンバス上でノードをステップ実行するか、ノードを一歩ずつ実行した後、変数インスペクトでノード変数の現在の値を確認できます。', - }, - settingsTab: '設定', - lastRunTab: '最後の実行', - }, -} - -export default translation +const translation = { + common: { + undo: '元に戻す', + redo: 'やり直し', + editing: '編集中', + autoSaved: '自動保存済み', + unpublished: '未公開', + published: '公開済み', + publish: '公開する', + update: '更新', + publishUpdate: '更新を公開', + run: '実行', + running: '実行中', + inRunMode: '実行モード中', + inPreview: 'プレビュー中', + inPreviewMode: 'プレビューモード中', + preview: 'プレビュー', + viewRunHistory: '実行履歴を表示', + runHistory: '実行履歴', + goBackToEdit: '編集に戻る', + conversationLog: '会話ログ', + features: '機能', + featuresDescription: 'Web アプリの操作性を向上させる機能', + ImageUploadLegacyTip: '開始フォームでファイル型変数が作成可能になりました。画像アップロード機能は今後サポート終了となります。', + fileUploadTip: '画像アップロード機能がファイルアップロードに拡張されました', + featuresDocLink: '詳細を見る', + debugAndPreview: 'プレビュー', + restart: '再起動', + currentDraft: '現在の下書き', + currentDraftUnpublished: '現在の下書き(未公開)', + latestPublished: '最新公開版', + publishedAt: '公開日時', + restore: '復元', + versionHistory: 'バージョン履歴', + exitVersions: 'バージョン履歴を閉じる', + runApp: 'アプリを実行', + batchRunApp: 'アプリを一括実行', + openInExplore: '探索ページで開く', + accessAPIReference: 'API リファレンス', + embedIntoSite: 'サイトに埋め込む', + addTitle: 'タイトルを追加...', + addDescription: '説明を追加...', + noVar: '変数がありません', + searchVar: '変数を検索', + variableNamePlaceholder: '変数名を入力', + setVarValuePlaceholder: '変数値を設定', + needConnectTip: '接続されていないステップがあります', + maxTreeDepth: '1 ブランチあたりの最大ノード数:{{depth}}', + needEndNode: '終了ブロックを追加する必要があります', + needAnswerNode: '回答ブロックを追加する必要があります', + workflowProcess: 'ワークフロー処理', + notRunning: 'まだ実行されていません', + previewPlaceholder: '入力欄にテキストを入力してチャットボットのデバッグを開始', + effectVarConfirm: { + title: '変数の削除', + content: '他のノードで変数が使用されています。それでも削除しますか?', + }, + insertVarTip: '"/"キーで変数を挿入', + processData: 'データ処理', + input: '入力', + output: '出力', + jinjaEditorPlaceholder: '「/」または「{」で変数挿入', + viewOnly: '閲覧のみ', + showRunHistory: '実行履歴を表示', + enableJinja: 'Jinja テンプレートを有効化', + learnMore: '詳細を見る', + copy: 'コピー', + duplicate: '複製', + addBlock: 'ブロックを追加', + pasteHere: 'ここに貼り付け', + pointerMode: 'ポインターモード', + handMode: 'ハンドモード', + exportImage: '画像を出力', + exportPNG: 'PNG で出力', + exportJPEG: 'JPEG で出力', + exportSVG: 'SVG で出力', + model: 'モデル', + workflowAsTool: 'ワークフローをツールとして公開する', + configureRequired: '設定が必要', + configure: '設定', + manageInTools: 'ツールページで管理', + workflowAsToolTip: 'ワークフロー更新後はツールの再設定が必要です', + viewDetailInTracingPanel: '詳細を表示', + syncingData: 'データ同期中。。。', + importDSL: 'DSL をインポート', + importDSLTip: '現在の下書きは上書きされます。インポート前にワークフローをエクスポートしてバックアップしてください', + backupCurrentDraft: '現在の下書きをバックアップ', + chooseDSL: 'DSL(yml) ファイルを選択', + overwriteAndImport: '上書きしてインポート', + importFailure: 'インポート失敗', + importWarning: '注意事項', + importWarningDetails: 'DSL バージョンの違いにより機能に影響が出る可能性があります', + importSuccess: 'インポート成功', + parallelRun: '並列実行', + parallelTip: { + click: { + title: 'クリック', + desc: 'で追加', + }, + drag: { + title: 'ドラッグ', + desc: 'で接続', + }, + limit: '並列処理可能ブランチ数:{{num}}', + depthLimit: '並列ネスト最大階層数:{{num}}', + }, + disconnect: '接続解除', + jumpToNode: 'このノードに移動', + addParallelNode: '並列ノードを追加', + parallel: '並列', + branch: 'ブランチ', + onFailure: '失敗時', + addFailureBranch: '失敗ブランチを追加', + loadMore: 'さらに読み込む', + noHistory: '履歴がありません', + }, + env: { + envPanelTitle: '環境変数', + envDescription: '環境変数は、個人情報や認証情報を格納するために使用することができます。これらは読み取り専用であり、DSL ファイルからエクスポートする際には分離されます。', + envPanelButton: '環境変数を追加', + modal: { + title: '環境変数を追加', + editTitle: '環境変数を編集', + type: 'タイプ', + name: '変数名', + namePlaceholder: '変数名を入力', + value: '値', + valuePlaceholder: '変数値を入力', + secretTip: 'この変数は機密情報やデータを定義するために使用されます。DSL をエクスポートするときに漏洩防止メカニズムを設定されます。', + }, + export: { + title: 'シークレット環境変数をエクスポートしますか?', + checkbox: 'シークレット値を含む', + ignore: 'DSL をエクスポート', + export: 'シークレット値付きでエクスポート', + }, + }, + chatVariable: { + panelTitle: '会話変数', + panelDescription: '対話情報を保存・管理(会話履歴/ファイル/ユーザー設定など)。書き換えができます。', + docLink: '詳細ドキュメント', + button: '変数を追加', + modal: { + title: '会話変数を追加', + editTitle: '会話変数を編集', + name: '変数名', + namePlaceholder: '変数名を入力', + type: 'タイプ', + value: 'デフォルト値', + valuePlaceholder: 'デフォルト値、設定しない場合は空白にしてください', + description: '説明', + descriptionPlaceholder: '変数の説明を入力', + editInJSON: 'JSON で編集', + oneByOne: '個別追加', + editInForm: 'フォームで編集', + arrayValue: '値', + addArrayValue: '値を追加', + objectKey: 'キー', + objectType: 'タイプ', + objectValue: 'デフォルト値', + }, + storedContent: '保存内容', + updatedAt: '最終更新:', + }, + changeHistory: { + title: '変更履歴', + placeholder: 'まだ何も変更されていません', + clearHistory: '履歴をクリア', + hint: 'ヒント', + hintText: 'エディターでの編集操作は、エディターを離れるまで、お使いのデバイスに記録されます。この履歴は、エディターを離れると消去されます。', + stepBackward_one: '{{count}} ステップ戻る', + stepBackward_other: '{{count}} ステップ戻る', + stepForward_one: '{{count}} ステップ進む', + stepForward_other: '{{count}} ステップ進む', + sessionStart: 'セッション開始', + currentState: '現在の状態', + nodeTitleChange: 'ブロックのタイトルが変更されました', + nodeDescriptionChange: 'ブロックの説明が変更されました', + nodeDragStop: 'ブロックが移動されました', + nodeChange: 'ブロックが変更されました', + nodeConnect: 'ブロックが接続されました', + nodePaste: 'ブロックが貼り付けられました', + nodeDelete: 'ブロックが削除されました', + nodeAdd: 'ブロックが追加されました', + nodeResize: 'ブロックのサイズが変更されました', + noteAdd: '注釈が追加されました', + noteChange: '注釈が変更されました', + noteDelete: '注釈が削除されました', + edgeDelete: 'ブロックの接続が解除されました', + }, + errorMsg: { + fieldRequired: '{{field}} は必須です', + rerankModelRequired: 'Rerank モデルが設定されていません', + authRequired: '認証が必要です', + invalidJson: '{{field}} は無効な JSON です', + fields: { + variable: '変数名', + variableValue: '変数値', + code: 'コード', + model: 'モデル', + rerankModel: 'Rerank モデル', + visionVariable: 'ビジョン変数', + }, + invalidVariable: '無効な変数です', + noValidTool: '{{field}} に利用可能なツールがありません', + toolParameterRequired: '{{field}}: パラメータ [{{param}}] は必須です', + }, + singleRun: { + testRun: 'テスト実行', + startRun: '実行開始', + running: '実行中', + testRunIteration: 'テスト実行(イテレーション)', + testRunLoop: 'テスト実行(ループ)', + back: '戻る', + iteration: 'イテレーション', + loop: 'ループ', + }, + tabs: { + 'searchBlock': 'ブロック検索', + 'blocks': 'ブロック', + 'searchTool': 'ツール検索', + 'tools': 'ツール', + 'allTool': 'すべて', + 'customTool': 'カスタム', + 'workflowTool': 'ワークフロー', + 'question-understand': '問題理解', + 'logic': 'ロジック', + 'transform': '変換', + 'utilities': 'ツール', + 'noResult': '該当なし', + 'plugin': 'プラグイン', + 'agent': 'エージェント戦略', + }, + blocks: { + 'start': '開始', + 'end': '終了', + 'answer': '回答', + 'llm': 'LLM', + 'knowledge-retrieval': '知識検索', + 'question-classifier': '質問分類器', + 'if-else': 'IF/ELSE', + 'code': 'コード実行', + 'template-transform': 'テンプレート', + 'http-request': 'HTTP リクエスト', + 'variable-assigner': '変数代入器', + 'variable-aggregator': '変数集約器', + 'assigner': '変数代入', + 'iteration-start': 'イテレーション開始', + 'iteration': 'イテレーション', + 'parameter-extractor': 'パラメータ抽出', + 'document-extractor': 'テキスト抽出', + 'list-operator': 'リスト処理', + 'agent': 'エージェント', + 'loop-start': 'ループ開始', + 'loop': 'ループ', + 'loop-end': 'ループ完了', + }, + blocksAbout: { + 'start': 'ワークフロー開始時の初期パラメータを定義します。', + 'end': 'ワークフローの終了条件と結果のタイプを定義します。', + 'answer': 'チャットダイアログの返答内容を定義します。', + 'llm': '大規模言語モデルを呼び出して質問回答や自然言語処理を実行します。', + 'knowledge-retrieval': 'ナレッジベースからユーザー質問に関連するテキストを検索します。', + 'question-classifier': '質問の分類条件を定義し、LLM が分類に基づいて対話フローを制御します。', + 'if-else': 'if/else 条件でワークフローを 2 つの分岐に分割します。', + 'code': 'Python/NodeJS コードを実行してカスタムロジックを実装します。', + 'template-transform': 'Jinja テンプレート構文でデータを文字列に変換します。', + 'http-request': 'HTTP リクエストを送信できます。', + 'variable-assigner': '複数分岐の変数を集約し、下流ノードの設定を統一します。', + 'assigner': '書き込み可能な変数(例:会話変数)への値の割り当てを行います。', + 'variable-aggregator': '複数分岐の変数を集約し、下流ノードの設定を統一します。', + 'iteration': 'リスト要素に対して反復処理を実行し全結果を出力します。', + 'loop': '終了条件達成まで、または最大反復回数までロジックを繰り返します。', + 'loop-end': '「break」相当の機能です。このノードに設定項目はなく、ループ処理中にこのノードに到達すると即時終了します。', + 'parameter-extractor': '自然言語から構造化パラメータを抽出し、後続処理で利用します。', + 'document-extractor': 'アップロード文書を LLM 処理用に最適化されたテキストに変換します。', + 'list-operator': '配列のフィルタリングやソート処理を行います。', + 'agent': '大規模言語モデルを活用した質問応答や自然言語処理を実行します。', + }, + operator: { + zoomIn: '拡大', + zoomOut: '縮小', + zoomTo50: '50% サイズ', + zoomTo100: '等倍表示', + zoomToFit: '画面に合わせる', + }, + variableReference: { + noAvailableVars: '利用可能な変数がありません', + noVarsForOperation: 'この操作に割り当て可能な変数が存在しません。', + noAssignedVars: '割り当て可能な変数がありません', + assignedVarsDescription: '書き込み可能な変数(例:', + conversationVars: '会話変数', + }, + panel: { + userInputField: 'ユーザー入力欄', + changeBlock: 'ノード変更', + helpLink: 'ヘルプリンク', + about: '詳細', + createdBy: '作成者', + nextStep: '次のステップ', + addNextStep: 'このワークフローで次ノードを追加', + selectNextStep: '次ノード選択', + runThisStep: 'このステップ実行', + checklist: 'チェックリスト', + checklistTip: '公開前に全ての項目を確認してください', + checklistResolved: '全てのチェックが完了しました', + organizeBlocks: 'ノード整理', + change: '変更', + optional: '(任意)', + moveToThisNode: 'このノードに移動する', + maximize: 'キャンバスを最大化する', + minimize: '全画面を終了する', + }, + nodes: { + common: { + outputVars: '出力変数', + insertVarTip: '変数を挿入', + memory: { + memory: 'メモリ', + memoryTip: 'チャットメモリ設定', + windowSize: 'メモリウィンドウサイズ', + conversationRoleName: '会話ロール名', + user: 'ユーザー接頭辞', + assistant: 'アシスタント接頭辞', + }, + memories: { + title: 'メモリ', + tip: 'チャットの記憶管理', + builtIn: '組み込み', + }, + errorHandle: { + title: '例外処理', + tip: 'ノード例外発生時の処理ポリシーを設定', + none: { + title: '処理なし', + desc: '例外発生時に処理を停止', + }, + defaultValue: { + title: 'デフォルト値', + desc: '例外発生時のデフォルト出力', + tip: '例外発生時に返される値:', + inLog: 'ノード例外 - デフォルト値を出力', + output: 'デフォルト値出力', + }, + failBranch: { + title: '例外分岐', + desc: '例外発生時に分岐を実行', + customize: '失敗分岐ロジックをカスタマイズ', + customizeTip: '例外発生時、失敗分岐でエラー処理を柔軟に設定可能(エラーログ表示/修復処理/操作スキップ等)', + inLog: 'ノード例外 - 失敗分岐を実行。エラー情報を下流に伝播', + }, + partialSucceeded: { + tip: '{{num}}個のノードで異常発生。ログはトレース画面で確認可能', + }, + }, + retry: { + retry: '再試行', + retryOnFailure: '失敗時再試行', + maxRetries: '最大試行回数', + retryInterval: '再試行間隔', + retryTimes: '失敗時 {{times}}回再試行', + retrying: '再試行中...', + retrySuccessful: '再試行成功', + retryFailed: '再試行失敗', + retryFailedTimes: '{{times}}回再試行失敗', + times: '回', + ms: 'ミリ秒', + retries: '再試行回数:{{num}}', + }, + }, + start: { + required: '必須', + inputField: '入力フィールド', + builtInVar: '組み込み変数', + outputVars: { + query: 'ユーザー入力', + memories: { + des: '会話履歴', + type: 'メッセージ種別', + content: 'メッセージ内容', + }, + files: 'ファイル一覧', + }, + noVarTip: '入力設定はワークフロー内で利用可能', + }, + end: { + outputs: '出力設定', + output: { + type: '出力形式', + variable: '出力変数', + }, + type: { + 'none': 'なし', + 'plain-text': 'プレーンテキスト', + 'structured': '構造化', + }, + }, + answer: { + answer: '応答', + outputVars: '出力変数', + }, + llm: { + model: 'AI モデル', + variables: '変数', + context: 'コンテキスト', + contextTooltip: 'ナレッジベースをコンテキストとして利用', + notSetContextInPromptTip: 'コンテキスト利用時はプロンプトに変数を明記してください', + prompt: 'プロンプト', + addMessage: 'メッセージ追加', + roleDescription: { + system: '対話の基本動作を定義', + user: '指示/質問を入力', + assistant: 'ユーザー入力への応答', + }, + vision: 'ビジョン', + files: 'ファイル', + resolution: { + name: '解像度', + high: '高', + low: '低', + }, + outputVars: { + output: '生成内容', + usage: 'モデル使用量', + }, + singleRun: { + variable: '変数', + }, + sysQueryInUser: 'ユーザーメッセージに sys.query を含めてください', + jsonSchema: { + title: '構造化データスキーマ', + instruction: '指示', + promptTooltip: 'テキスト説明から標準 JSON スキーマを自動生成できます。', + promptPlaceholder: 'JSON スキーマを入力...', + generate: '生成', + import: 'JSON インポート', + generateJsonSchema: 'スキーマ生成', + generationTip: '自然言語で簡単に JSON スキーマを作成可能です。', + generating: 'JSON スキーマを生成中...', + generatedResult: '生成結果', + resultTip: 'こちらが生成された結果です。ご満足いただけない場合は、前の画面に戻ってプロンプトを修正できます。', + back: '前に戻る', + regenerate: '再生成する', + apply: '適用', + doc: '構造化出力の詳細を見る', + resetDefaults: '初期化', + required: '必須項目', + addField: 'フィールドを追加', + addChildField: 'サブフィールドを追加', + showAdvancedOptions: '詳細設定', + stringValidations: '文字列検証', + fieldNamePlaceholder: 'フィールド名', + descriptionPlaceholder: '説明を入力', + warningTips: { + saveSchema: '編集中のフィールドを確定してから保存してください。', + }, + }, + }, + knowledgeRetrieval: { + queryVariable: '検索変数', + knowledge: 'ナレッジベース', + outputVars: { + output: '検索結果セグメント', + content: 'セグメント内容', + title: 'セグメントタイトル', + icon: 'セグメントアイコン', + url: 'セグメント URL', + metadata: 'メタデータ', + }, + metadata: { + title: 'メタデータフィルタ', + tip: 'タグ/カテゴリ等の属性で検索を絞り込み', + options: { + disabled: { + title: '無効', + subTitle: 'フィルタリング不使用', + }, + automatic: { + title: '自動生成', + subTitle: '検索履歴からフィルタ条件を自動生成', + desc: 'Query Variable(検索変数)に基づきフィルタ条件を自動生成', + }, + manual: { + title: '手動設定', + subTitle: 'メタデータの条件を手動で追加', + }, + }, + panel: { + title: 'メタデータのフィルタ条件', + conditions: '条件一覧', + add: '条件追加', + search: 'メタデータ検索', + placeholder: '値を入力', + datePlaceholder: '日付選択...', + select: '変数選択...', + }, + }, + }, + http: { + inputVars: '入力変数', + api: 'API', + apiPlaceholder: 'URL を入力(変数使用時は"/"を入力)', + extractListPlaceholder: 'リスト番号を入力(変数使用時は"/"を入力)', + notStartWithHttp: 'API は http:// または https:// で始まってください', + key: 'キー', + type: 'タイプ', + value: '値', + bulkEdit: '一括編集', + keyValueEdit: 'キーバリュー編集', + headers: 'ヘッダー', + params: 'パラメータ', + body: 'ボディ', + binaryFileVariable: 'バイナリファイル変数', + outputVars: { + body: 'レスポンスコンテンツ', + statusCode: 'レスポンスステータスコード', + headers: 'レスポンスヘッダ(JSON)', + files: 'ファイル一覧', + }, + authorization: { + 'authorization': '認証', + 'authorizationType': '認証タイプ', + 'no-auth': 'なし', + 'api-key': 'API キー', + 'auth-type': 'API 認証タイプ', + 'basic': 'ベーシック', + 'bearer': 'Bearer', + 'custom': 'カスタム', + 'api-key-title': 'API キー', + 'header': 'ヘッダー', + }, + insertVarPlaceholder: '変数を挿入するには\'/\'を入力してください', + timeout: { + title: 'タイムアウト設定', + connectLabel: '接続タイムアウト', + connectPlaceholder: '接続タイムアウト(秒)', + readLabel: '読み取りタイムアウト', + readPlaceholder: '読み取りタイムアウト(秒)', + writeLabel: '書き込みタイムアウト', + writePlaceholder: '書き込みタイムアウト(秒)', + }, + curl: { + title: 'cURL からインポート', + placeholder: 'ここに cURL 文字列を貼り付けます', + }, + }, + code: { + inputVars: '入力変数', + outputVars: '出力変数', + advancedDependencies: '高度な依存関係', + advancedDependenciesTip: '消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します', + searchDependencies: '依存関係を検索', + syncFunctionSignature: 'コードの関数署名を同期', + }, + templateTransform: { + inputVars: '入力変数', + code: 'コード', + codeSupportTip: 'Jinja2 のみをサポートしています', + outputVars: { + output: '変換されたコンテンツ', + }, + }, + ifElse: { + if: 'もし', + else: 'それ以外', + elseDescription: 'IF 条件が満たされない場合に実行するロジックを定義します。', + and: 'かつ', + or: 'または', + operator: '演算子', + notSetVariable: 'まず変数を設定してください', + comparisonOperator: { + 'contains': '含む', + 'not contains': '含まない', + 'start with': 'で始まる', + 'end with': 'で終わる', + 'is': 'である', + 'is not': 'でない', + 'empty': '空', + 'not empty': '空でない', + 'null': 'null', + 'not null': 'null でない', + 'regex match': '正規表現マッチ', + 'in': '含まれている', + 'not in': '含まれていない', + 'all of': 'すべての', + 'exists': '存在します', + 'not exists': '存在しません', + 'before': '前に', + 'after': '後', + }, + enterValue: '値を入力', + addCondition: '条件を追加', + conditionNotSetup: '条件が設定されていません', + selectVariable: '変数を選択...', + optionName: { + audio: '音声', + localUpload: 'ローカルアップロード', + image: '画像', + video: '映像', + doc: 'ドキュメント', + url: 'URL', + }, + select: '選ぶ', + addSubVariable: 'サブ変数', + }, + variableAssigner: { + title: '変数を代入する', + outputType: '出力タイプ', + outputVarType: '出力変数のタイプ', + varNotSet: '変数が設定されていません', + noVarTip: '代入された変数を追加してください', + type: { + string: '文字列', + number: '数値', + object: 'オブジェクト', + array: '配列', + }, + aggregationGroup: 'グループ', + aggregationGroupTip: 'この機能を有効にすると、変数集約器は複数のセットの変数を集約できます。', + addGroup: 'グループを追加', + outputVars: { + varDescribe: '{{groupName}} 出力', + }, + setAssignVariable: '代入された変数を設定', + }, + assigner: { + 'assignedVariable': '代入された変数', + 'writeMode': '書き込みモード', + 'writeModeTip': '代入された変数が配列の場合,末尾に追記モードを追加する。', + 'over-write': '上書き', + 'append': '追記', + 'plus': 'プラス', + 'clear': 'クリア', + 'setVariable': '変数を設定する', + 'variable': '変数', + 'operations': { + 'title': '操作', + 'set': 'セット', + 'clear': 'クリア', + 'overwrite': '上書き', + 'append': '追加', + '-=': '-=', + '/=': '/=', + '+=': '+=', + 'over-write': '上書き', + 'extend': '延ばす', + '*=': '*=', + 'remove-last': '最後を削除する', + 'remove-first': '最初を削除する', + }, + 'setParameter': 'パラメータを設定...', + 'selectAssignedVariable': '代入変数を選択...', + 'varNotSet': '変数が設定されていません', + 'variables': '変数', + 'noVarTip': '「+」ボタンをクリックして変数を追加します', + 'noAssignedVars': '使用可能な代入変数がありません', + 'assignedVarsDescription': '代入される変数は、会話変数などの書き込み可能な変数である必要があります。', + }, + tool: { + inputVars: '入力変数', + outputVars: { + text: 'ツールが生成したコンテンツ', + files: { + title: 'ツールが生成したファイル', + type: 'サポートタイプ。現在は画像のみサポートされています', + transfer_method: '転送方法。値は remote_url または local_file です', + url: '画像 URL', + upload_file_id: 'アップロードファイル ID', + }, + json: 'ツールで生成された JSON', + }, + authorize: '認証する', + }, + questionClassifiers: { + model: 'モデル', + inputVars: '入力変数', + outputVars: { + className: 'クラス名', + }, + class: 'クラス', + classNamePlaceholder: 'クラス名を入力してください', + advancedSetting: '高度な設定', + topicName: 'トピック名', + topicPlaceholder: 'トピック名を入力してください', + addClass: 'クラスを追加', + instruction: '指示', + instructionTip: '質問分類器が質問をどのように分類するかをよりよく理解するための追加の指示を入力します。', + instructionPlaceholder: '指示を入力してください', + }, + parameterExtractor: { + inputVar: '入力変数', + extractParameters: 'パラメーターを抽出', + importFromTool: 'ツールからインポート', + addExtractParameter: '抽出パラメーターを追加', + addExtractParameterContent: { + name: '名前', + namePlaceholder: '抽出パラメーター名', + type: 'タイプ', + typePlaceholder: '抽出パラメータータイプ', + description: '説明', + descriptionPlaceholder: '抽出パラメーターの説明', + required: '必須', + requiredContent: '必須はモデル推論の参考としてのみ使用され、パラメーター出力の必須検証には使用されません。', + }, + extractParametersNotSet: '抽出パラメーターが設定されていません', + instruction: '指示', + instructionTip: 'パラメーター抽出器がパラメーターを抽出する方法を理解するのに役立つ追加の指示を入力します。', + advancedSetting: '高度な設定', + reasoningMode: '推論モード', + reasoningModeTip: '関数呼び出しやプロンプトの指示に応答するモデルの能力に基づいて、適切な推論モードを選択できます。', + isSuccess: '成功。成功した場合の値は 1、失敗した場合の値は 0 です。', + errorReason: 'エラーの理由', + }, + iteration: { + deleteTitle: 'イテレーションノードを削除しますか?', + deleteDesc: 'イテレーションノードを削除すると、すべての子ノードが削除されます', + input: '入力', + output: '出力変数', + iteration_one: '{{count}} イテレーション', + iteration_other: '{{count}} イテレーション', + currentIteration: '現在のイテレーション', + ErrorMethod: { + operationTerminated: '終了', + continueOnError: 'エラー時に続行', + removeAbnormalOutput: 'アブノーマルアウトプットの削除', + }, + comma: ',', + error_other: '{{カウント}}エラー', + error_one: '{{カウント}}エラー', + parallelModeUpper: 'パラレルモード', + parallelMode: 'パラレルモード', + MaxParallelismTitle: '最大並列処理', + errorResponseMethod: 'エラー応答方式', + parallelPanelDesc: '並列モードでは、イテレーションのタスクは並列実行をサポートします。', + parallelModeEnableDesc: '並列モードでは、イテレーション内のタスクは並列実行をサポートします。これは、右側のプロパティパネルで構成できます。', + parallelModeEnableTitle: 'パラレルモード有効', + MaxParallelismDesc: '最大並列処理は、1 回の反復で同時に実行されるタスクの数を制御するために使用されます。', + answerNodeWarningDesc: '並列モードの警告:応答ノード、会話変数の割り当て、およびイテレーション内の永続的な読み取り/書き込み操作により、例外が発生する可能性があります。', + }, + loop: { + deleteTitle: 'ループノードを削除しますか?', + deleteDesc: 'ループノードを削除すると、全ての子ノードが削除されます。', + input: '入力', + output: '出力変数', + loop_one: '{{count}}回', + loop_other: '{{count}}回', + currentLoop: '現在のループ', + breakCondition: 'ループ終了条件', + breakConditionTip: 'ループ内の変数やセッション変数を参照し、終了条件を設定できます。', + loopMaxCount: '最大ループ回数', + loopMaxCountError: '最大ループ回数は 1 から{{maxCount}}の範囲で正しく入力してください。', + errorResponseMethod: 'エラー対応方法', + ErrorMethod: { + operationTerminated: 'エラー時に処理を終了', + continueOnError: 'エラーを無視して継続', + removeAbnormalOutput: '異常出力を除外', + }, + loopVariables: 'ループ変数', + initialLoopVariables: '初期ループ変数', + finalLoopVariables: '最終ループ変数', + setLoopVariables: 'ループスコープ内で変数を設定', + variableName: '変数名', + inputMode: '入力モード', + exitConditionTip: 'ループノードには少なくとも 1 つの終了条件が必要です', + loopNode: 'ループノード', + currentLoopCount: '現在のループ回数:{{count}}', + totalLoopCount: '総ループ回数:{{count}}', + error_other: '{{count}} エラー', + error_one: '{{count}} エラー', + comma: ',', + }, + note: { + addNote: 'コメントを追加', + editor: { + placeholder: 'メモを書く...', + small: '小', + medium: '中', + large: '大', + bold: '太字', + italic: '斜体', + strikethrough: '打ち消し線', + link: 'リンク', + openLink: '開く', + unlink: 'リンクをキャンセル', + enterUrl: 'リンク入力中...', + invalidUrl: 'リンク無効', + bulletList: 'リスト', + showAuthor: '著者を表示する', + }, + }, + docExtractor: { + outputVars: { + text: '抽出されたテキスト', + }, + inputVar: '入力変数', + learnMore: '詳細はこちら', + supportFileTypes: 'サポートするファイルタイプ:{{types}}。', + }, + listFilter: { + outputVars: { + last_record: '最後のレコード', + first_record: '最初のレコード', + result: 'フィルター結果', + }, + limit: 'トップ N', + asc: 'ASC', + filterCondition: 'フィルター条件', + filterConditionKey: 'フィルター条件キー', + orderBy: '並べる順番', + filterConditionComparisonValue: 'フィルター条件の値', + selectVariableKeyPlaceholder: 'サブ変数キーを選択する', + filterConditionComparisonOperator: 'フィルター条件を比較オペレーター', + inputVar: '入力変数', + desc: 'DESC', + extractsCondition: 'N 個のアイテムを抽出します', + }, + agent: { + strategy: { + label: 'エージェンティック戦略', + configureTipDesc: 'エージェント戦略を設定した後、このノードは残りの設定を自動的に読み込みます。この戦略は、マルチステップツール推論のメカニズムに影響を与えます。', + searchPlaceholder: 'エージェンティック戦略を検索する', + configureTip: 'エージェンティック戦略を設定してください。', + shortLabel: '戦略', + tooltip: '異なるエージェンティック戦略が、システムがマルチステップのツール呼び出しを計画し実行する方法を決定します。', + selectTip: 'エージェンシー戦略を選択する', + }, + pluginInstaller: { + install: 'インストール', + installing: 'インストール中', + }, + modelNotInMarketplace: { + manageInPlugins: 'プラグインを管理する', + title: 'モデルがインストールされていません', + desc: 'このモデルはローカルまたは GitHub リポジトリからインストールされます。インストール後にご利用ください。', + }, + modelNotSupport: { + title: 'サポートされていないモデル', + descForVersionSwitch: 'インストールされたプラグインのバージョンはこのモデルを提供していません。バージョンを切り替えるにはクリックしてください。', + desc: 'インストールされたプラグインのバージョンは、このモデルを提供していません。', + }, + modelSelectorTooltips: { + deprecated: 'このモデルは廃止されました', + }, + outputVars: { + files: { + url: '画像の URL', + type: 'サポートタイプ。現在はサポート画像のみ', + upload_file_id: 'ファイル ID をアップロード', + transfer_method: '転送方法。値は remote_url または local_file です。', + title: 'エージェント生成ファイル', + }, + text: 'エージェント生成コンテンツ', + json: 'エージェント生成の JSON', + }, + checkList: { + strategyNotSelected: '戦略が選択されていません', + }, + installPlugin: { + install: 'インストール', + changelog: '変更ログ', + cancel: 'キャンセル', + desc: '次のプラグインをインストールしようとしています', + title: 'プラグインをインストールする', + }, + strategyNotSet: 'エージェンティック戦略は設定されていません', + strategyNotInstallTooltip: '{{strategy}}はインストールされていません', + modelNotSelected: 'モデルが選択されていません', + toolNotAuthorizedTooltip: '{{tool}} 認可されていません', + toolNotInstallTooltip: '{{tool}}はインストールされていません', + tools: '道具', + learnMore: 'もっと学ぶ', + configureModel: 'モデルを設定する', + model: 'モデル', + linkToPlugin: 'プラグインへのリンク', + notAuthorized: '権限がありません', + modelNotInstallTooltip: 'このモデルはインストールされていません', + maxIterations: '最大反復回数', + toolbox: 'ツールボックス', + pluginNotInstalled: 'このプラグインはインストールされていません', + strategyNotFoundDescAndSwitchVersion: 'インストールされたプラグインのバージョンはこの戦略を提供していません。バージョンを切り替えるにはクリックしてください。', + pluginNotInstalledDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', + unsupportedStrategy: 'サポートされていない戦略', + pluginNotFoundDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', + strategyNotFoundDesc: 'インストールされたプラグインのバージョンは、この戦略を提供していません。', + }, + }, + tracing: { + stopBy: '{{user}}によって停止', + }, + versionHistory: { + title: 'バージョン', + currentDraft: '現在の下書き', + latest: '最新版', + filter: { + all: 'すべて', + onlyYours: '自分のみ', + onlyShowNamedVersions: '名前付きバージョンのみ', + reset: 'リセット', + empty: '該当するバージョンがありません', + }, + defaultName: '名称未設定', + nameThisVersion: 'バージョン名を付ける', + editVersionInfo: 'バージョン情報を編集', + editField: { + title: 'タイトル', + releaseNotes: 'リリースノート', + titleLengthLimit: 'タイトルは{{limit}}文字以内で入力してください', + releaseNotesLengthLimit: 'リリースノートは{{limit}}文字以内で入力してください', + }, + releaseNotesPlaceholder: '変更内容を入力してください', + restorationTip: 'バージョンを復元すると、現在の下書きが上書きされます', + deletionTip: '削除したデータは復元できません。よろしいですか?', + action: { + restoreSuccess: '復元が完了しました', + restoreFailure: '復元に失敗しました', + deleteSuccess: '削除が完了しました', + deleteFailure: '削除に失敗しました', + updateSuccess: '更新が完了しました', + updateFailure: '更新に失敗しました', + }, + }, + debug: { + noData: { + runThisNode: 'このノードを実行してください', + description: '最後の実行の結果がここに表示されます', + }, + variableInspect: { + trigger: { + clear: 'クリア', + running: 'キャッシング実行状況', + cached: 'キャッシュされた変数を表示', + stop: '走るのを止めて', + normal: '変数検査', + }, + clearAll: 'すべてリセット', + emptyLink: 'もっと学ぶ', + systemNode: 'システム', + view: 'ログを表示', + resetConversationVar: '会話の変数をデフォルト値にリセットする', + chatNode: '会話', + reset: '最後の実行値にリセットする', + clearNode: 'キャッシュされた変数をクリアする', + edited: '編集された', + title: '変数検査', + envNode: '環境', + emptyTip: 'キャンバス上でノードをステップ実行するか、ノードを一歩ずつ実行した後、変数インスペクトでノード変数の現在の値を確認できます。', + }, + settingsTab: '設定', + lastRunTab: '最後の実行', + }, +} + +export default translation diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts index dbadffcfad..aa9dcae261 100644 --- a/web/i18n/zh-Hans/workflow.ts +++ b/web/i18n/zh-Hans/workflow.ts @@ -1,951 +1,951 @@ -const translation = { - common: { - undo: '撤销', - redo: '重做', - editing: '编辑中', - autoSaved: '自动保存', - unpublished: '未发布', - published: '已发布', - publish: '发布', - update: '更新', - publishUpdate: '发布更新', - run: '运行', - running: '运行中', - inRunMode: '在运行模式中', - inPreview: '预览中', - inPreviewMode: '预览中', - preview: '预览', - viewRunHistory: '查看运行历史', - runHistory: '运行历史', - goBackToEdit: '返回编辑模式', - conversationLog: '对话记录', - features: '功能', - featuresDescription: '增强 web app 用户体验', - ImageUploadLegacyTip: '现在可以在 start 表单中创建文件类型变量。未来我们将不继续支持图片上传功能。', - fileUploadTip: '图片上传功能已扩展为文件上传。', - featuresDocLink: '了解更多', - debugAndPreview: '预览', - restart: '重新开始', - currentDraft: '当前草稿', - currentDraftUnpublished: '当前草稿未发布', - latestPublished: '最新发布', - publishedAt: '发布于', - restore: '恢复', - versionHistory: '版本历史', - exitVersions: '退出版本历史', - runApp: '运行', - batchRunApp: '批量运行', - accessAPIReference: '访问 API', - embedIntoSite: '嵌入网站', - addTitle: '添加标题...', - addDescription: '添加描述...', - noVar: '没有变量', - variableNamePlaceholder: '变量名', - searchVar: '搜索变量', - setVarValuePlaceholder: '设置变量值', - needConnectTip: '此节点尚未连接到其他节点', - maxTreeDepth: '每个分支最大限制 {{depth}} 个节点', - needEndNode: '必须添加结束节点', - needAnswerNode: '必须添加直接回复节点', - workflowProcess: '工作流', - notRunning: '尚未运行', - previewPlaceholder: '在下面的框中输入内容开始调试聊天机器人', - effectVarConfirm: { - title: '移除变量', - content: '该变量在其他节点中使用。您是否仍要删除它?', - }, - insertVarTip: '按 \'/\' 键快速插入', - processData: '数据处理', - input: '输入', - output: '输出', - jinjaEditorPlaceholder: '输入“/”或“{”插入变量', - viewOnly: '只读', - showRunHistory: '显示运行历史', - enableJinja: '开启支持 Jinja 模板', - learnMore: '了解更多', - copy: '拷贝', - duplicate: '复制', - addBlock: '添加节点', - pasteHere: '粘贴到这里', - pointerMode: '指针模式', - handMode: '手模式', - exportImage: '导出图片', - exportPNG: '导出为 PNG', - exportJPEG: '导出为 JPEG', - exportSVG: '导出为 SVG', - model: '模型', - workflowAsTool: '发布为工具', - configureRequired: '需要进行配置', - configure: '配置', - manageInTools: '访问工具页', - workflowAsToolTip: '工作流更新后需要重新配置工具参数', - viewDetailInTracingPanel: '查看详细信息', - syncingData: '同步数据中,只需几秒钟。', - importDSL: '导入 DSL', - importDSLTip: '当前草稿将被覆盖。在导入之前请导出工作流作为备份。', - backupCurrentDraft: '备份当前草稿', - chooseDSL: '选择 DSL(yml) 文件', - overwriteAndImport: '覆盖并导入', - importFailure: '导入失败', - importWarning: '注意', - importWarningDetails: 'DSL 版本差异可能影响部分功能表现', - importSuccess: '导入成功', - parallelRun: '并行运行', - parallelTip: { - click: { - title: '点击', - desc: '添加节点', - }, - drag: { - title: '拖拽', - desc: '连接节点', - }, - limit: '并行分支限制为 {{num}} 个', - depthLimit: '并行嵌套层数限制 {{num}} 层', - }, - disconnect: '断开连接', - jumpToNode: '跳转到节点', - addParallelNode: '添加并行节点', - parallel: '并行', - branch: '分支', - onFailure: '异常时', - addFailureBranch: '添加异常分支', - openInExplore: '在“探索”中打开', - loadMore: '加载更多', - noHistory: '没有历史版本', - }, - env: { - envPanelTitle: '环境变量', - envDescription: '环境变量是一种存储敏感信息的方法,如 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。', - envPanelButton: '添加环境变量', - modal: { - title: '添加环境变量', - editTitle: '编辑环境变量', - type: '类型', - name: '名称', - namePlaceholder: '变量名', - value: '值', - valuePlaceholder: '变量值', - secretTip: '用于定义敏感信息或数据,导出 DSL 时设置了防泄露机制。', - }, - export: { - title: '导出 Secret 类型环境变量?', - checkbox: '导出 secret 值', - ignore: '导出 DSL', - export: '导出包含 Secret 值的 DSL', - }, - }, - chatVariable: { - panelTitle: '会话变量', - panelDescription: '会话变量用于存储 LLM 需要的上下文信息,如用户偏好、对话历史等。它是可读写的。', - docLink: '查看文档了解更多。', - button: '添加变量', - modal: { - title: '添加会话变量', - editTitle: '编辑会话变量', - name: '名称', - namePlaceholder: '变量名', - type: '类型', - value: '默认值', - valuePlaceholder: '默认值,可以为空', - description: '描述', - descriptionPlaceholder: '变量的描述', - editInJSON: '在 JSON 中编辑', - oneByOne: '逐个添加', - editInForm: '在表单中编辑', - arrayValue: '值', - addArrayValue: '添加值', - objectKey: '属性', - objectType: '类型', - objectValue: '默认值', - }, - storedContent: '存储内容', - updatedAt: '更新时间 ', - }, - changeHistory: { - title: '变更历史', - placeholder: '尚未更改任何内容', - clearHistory: '清除历史记录', - hint: '提示', - hintText: '您的编辑操作将被跟踪并存储在您的设备上,直到您离开编辑器。此历史记录将在您离开编辑器时被清除。', - stepBackward_one: '{{count}} 步后退', - stepBackward_other: '{{count}} 步后退', - stepForward_one: '{{count}} 步前进', - stepForward_other: '{{count}} 步前进', - sessionStart: '会话开始', - currentState: '当前状态', - nodeTitleChange: '块标题已更改', - nodeDescriptionChange: '块描述已更改', - nodeDragStop: '块已移动', - nodeChange: '块已更改', - nodeConnect: '块已连接', - nodePaste: '块已粘贴', - nodeDelete: '块已删除', - nodeAdd: '块已添加', - nodeResize: '块已调整大小', - noteAdd: '注释已添加', - noteChange: '注释已更改', - noteDelete: '注释已删除', - edgeDelete: '块已断开连接', - }, - errorMsg: { - fieldRequired: '{{field}} 不能为空', - rerankModelRequired: '未配置 Rerank 模型', - authRequired: '请先授权', - invalidJson: '{{field}} 是非法的 JSON', - fields: { - variable: '变量名', - variableValue: '变量值', - code: '代码', - model: '模型', - rerankModel: 'Rerank 模型', - visionVariable: '视觉变量', - }, - invalidVariable: '无效的变量', - noValidTool: '{{field}} 无可用工具', - toolParameterRequired: '{{field}}: 参数 [{{param}}] 不能为空', - }, - singleRun: { - testRun: '测试运行 ', - startRun: '开始运行', - running: '运行中', - testRunIteration: '测试运行迭代', - testRunLoop: '测试运行循环', - back: '返回', - iteration: '迭代', - loop: '循环', - }, - tabs: { - 'searchBlock': '搜索节点', - 'blocks': '节点', - 'searchTool': '搜索工具', - 'tools': '工具', - 'allTool': '全部', - 'plugin': '插件', - 'customTool': '自定义', - 'workflowTool': '工作流', - 'question-understand': '问题理解', - 'logic': '逻辑', - 'transform': '转换', - 'utilities': '工具', - 'noResult': '未找到匹配项', - 'agent': 'Agent 策略', - }, - blocks: { - 'start': '开始', - 'end': '结束', - 'answer': '直接回复', - 'llm': 'LLM', - 'knowledge-retrieval': '知识检索', - 'question-classifier': '问题分类器', - 'if-else': '条件分支', - 'code': '代码执行', - 'template-transform': '模板转换', - 'http-request': 'HTTP 请求', - 'variable-assigner': '变量赋值器', - 'variable-aggregator': '变量聚合器', - 'assigner': '变量赋值', - 'iteration-start': '迭代开始', - 'iteration': '迭代', - 'parameter-extractor': '参数提取器', - 'document-extractor': '文档提取器', - 'list-operator': '列表操作', - 'agent': 'Agent', - 'loop-start': '循环开始', - 'loop': '循环', - 'loop-end': '退出循环', - }, - blocksAbout: { - 'start': '定义一个 workflow 流程启动的初始参数', - 'end': '定义一个 workflow 流程的结束和结果类型', - 'answer': '定义一个聊天对话的回复内容', - 'llm': '调用大语言模型回答问题或者对自然语言进行处理', - 'knowledge-retrieval': '允许你从知识库中查询与用户问题相关的文本内容', - 'question-classifier': '定义用户问题的分类条件,LLM 能够根据分类描述定义对话的进展方式', - 'if-else': '允许你根据 if/else 条件将 workflow 拆分成两个分支', - 'code': '执行一段 Python 或 NodeJS 代码实现自定义逻辑', - 'template-transform': '使用 Jinja 模板语法将数据转换为字符串', - 'http-request': '允许通过 HTTP 协议发送服务器请求', - 'variable-assigner': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', - 'assigner': '变量赋值节点用于向可写入变量(例如会话变量)进行变量赋值。', - 'variable-aggregator': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', - 'iteration': '对列表对象执行多次步骤直至输出所有结果。', - 'loop': '循环执行一段逻辑直到满足结束条件或者到达循环次数上限。', - 'loop-end': '相当于“break”此节点没有配置项,当循环体内运行到此节点后循环终止。', - 'parameter-extractor': '利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。', - 'document-extractor': '用于将用户上传的文档解析为 LLM 便于理解的文本内容。', - 'list-operator': '用于过滤或排序数组内容。', - 'agent': '调用大型语言模型回答问题或处理自然语言', - }, - operator: { - zoomIn: '放大', - zoomOut: '缩小', - zoomTo50: '缩放到 50%', - zoomTo100: '放大到 100%', - zoomToFit: '自适应视图', - }, - variableReference: { - noAvailableVars: '没有可用变量', - noVarsForOperation: '当前选择的操作没有可用的变量进行赋值。', - noAssignedVars: '没有可用的赋值变量', - assignedVarsDescription: '赋值变量必须是可写入的变量,例如:', - conversationVars: '会话变量', - }, - panel: { - userInputField: '用户输入字段', - changeBlock: '更改节点', - helpLink: '帮助链接', - about: '关于', - createdBy: '作者', - nextStep: '下一步', - addNextStep: '添加此工作流程中的下一个节点', - selectNextStep: '选择下一个节点', - runThisStep: '运行此步骤', - checklist: '检查清单', - checklistTip: '发布前确保所有问题均已解决', - checklistResolved: '所有问题均已解决', - organizeBlocks: '整理节点', - change: '更改', - optional: '(选填)', - moveToThisNode: '定位至此节点', - maximize: '最大化画布', - minimize: '退出最大化', - }, - nodes: { - common: { - outputVars: '输出变量', - insertVarTip: '插入变量', - memory: { - memory: '记忆', - memoryTip: '聊天记忆设置', - windowSize: '记忆窗口', - conversationRoleName: '对话角色名', - user: '用户前缀', - assistant: '助手前缀', - }, - memories: { - title: '记忆', - tip: '聊天记忆', - builtIn: '内置', - }, - errorHandle: { - title: '异常处理', - tip: '配置异常处理策略,当节点发生异常时触发。', - none: { - title: '无', - desc: '当发生异常且未处理时,节点将停止运行', - }, - defaultValue: { - title: '默认值', - desc: '当发生异常时,指定默认输出内容。', - tip: '当发生异常时,将返回以下值。', - inLog: '节点异常,根据默认值输出。', - output: '输出默认值', - }, - failBranch: { - title: '异常分支', - desc: '当发生异常时,将执行异常分支', - customize: '在画布自定义失败分支逻辑。', - customizeTip: '当节点发生异常时,将自动执行失败分支。失败分支允许您灵活地提供错误消息、报告、修复或跳过操作。', - inLog: '节点异常,将自动执行失败分支。节点输出将返回错误类型和错误信息,并传递给下游。', - }, - partialSucceeded: { - tip: '流程中有 {{num}} 个节点运行异常,请前往追踪查看日志。', - }, - }, - retry: { - retry: '重试', - retryOnFailure: '失败时重试', - maxRetries: '最大重试次数', - retryInterval: '重试间隔', - retryTimes: '失败时重试 {{times}} 次', - retrying: '重试中...', - retrySuccessful: '重试成功', - retryFailed: '重试失败', - retryFailedTimes: '{{times}} 次重试失败', - times: '次', - ms: '毫秒', - retries: '{{num}} 重试次数', - }, - }, - start: { - required: '必填', - inputField: '输入字段', - builtInVar: '内置变量', - outputVars: { - query: '用户输入', - memories: { - des: '会话历史', - type: '消息类型', - content: '消息内容', - }, - files: '文件列表', - }, - noVarTip: '设置的输入可在工作流程中使用', - }, - end: { - outputs: '输出', - output: { - type: '输出类型', - variable: '输出变量', - }, - type: { - 'none': '无', - 'plain-text': '纯文本', - 'structured': '结构化', - }, - }, - answer: { - answer: '回复', - outputVars: '输出变量', - }, - llm: { - model: '模型', - variables: '变量', - context: '上下文', - contextTooltip: '您可以导入知识库作为上下文', - notSetContextInPromptTip: '要启用上下文功能,请在提示中填写上下文变量。', - prompt: '提示词', - addMessage: '添加消息', - roleDescription: { - system: '为对话提供高层指导', - user: '向模型提供指令、查询或任何基于文本的输入', - assistant: '基于用户消息的模型回复', - }, - vision: '视觉', - files: '文件', - resolution: { - name: '分辨率', - high: '高', - low: '低', - }, - outputVars: { - output: '生成内容', - usage: '模型用量信息', - }, - singleRun: { - variable: '变量', - }, - sysQueryInUser: 'user message 中必须包含 sys.query', - jsonSchema: { - title: '结构化输出 Schema', - instruction: '指令', - promptTooltip: '将文本描述转换为标准化的 JSON Schema 结构', - promptPlaceholder: '描述你的 JSON Schema...', - generate: '生成', - import: '从 JSON 导入', - generateJsonSchema: '生成 JSON Schema', - generationTip: '可以使用自然语言快速创建 JSON Schema。', - generating: '正在为您生成 JSON Schema...', - generatedResult: '生成结果', - resultTip: '以下是生成的结果。如果你对这个结果不满意,可以返回并修改你的提示词。', - back: '返回', - regenerate: '重新生成', - apply: '应用', - doc: '了解有关结构化输出的更多信息', - resetDefaults: '清空配置', - required: '必填', - addField: '添加字段', - addChildField: '添加子字段', - showAdvancedOptions: '显示高级选项', - stringValidations: '字符串验证', - fieldNamePlaceholder: '字段名', - descriptionPlaceholder: '添加描述', - warningTips: { - saveSchema: '请先完成当前字段的编辑', - }, - }, - }, - knowledgeRetrieval: { - queryVariable: '查询变量', - knowledge: '知识库', - outputVars: { - output: '召回的分段', - content: '分段内容', - title: '分段标题', - icon: '分段图标', - url: '分段链接', - metadata: '其他元数据', - }, - metadata: { - title: '元数据过滤', - tip: '元数据过滤是使用元数据属性(例如标签、类别或访问权限)来细化和控制系统内相关信息的检索过程。', - options: { - disabled: { - title: '禁用', - subTitle: '禁用元数据过滤', - }, - automatic: { - title: '自动', - subTitle: '根据用户查询自动生成元数据过滤条件', - desc: '根据 Query Variable 自动生成元数据过滤条件', - }, - manual: { - title: '手动', - subTitle: '手动添加元数据过滤条件', - }, - }, - panel: { - title: '元数据过滤条件', - conditions: '条件', - add: '添加条件', - search: '搜索元数据', - placeholder: '输入值', - datePlaceholder: '选择日期...', - select: '选择变量...', - }, - }, - }, - http: { - inputVars: '输入变量', - api: 'API', - apiPlaceholder: '输入 URL,输入变量时请键入‘/’', - extractListPlaceholder: '输入提取列表编号,输入变量时请键入‘/’', - notStartWithHttp: 'API 应该以 http:// 或 https:// 开头', - key: '键', - type: '类型', - value: '值', - bulkEdit: '批量编辑', - keyValueEdit: '键值编辑', - headers: 'Headers', - params: 'Params', - body: 'Body', - binaryFileVariable: 'Binary 文件变量', - outputVars: { - body: '响应内容', - statusCode: '响应状态码', - headers: '响应头列表 JSON', - files: '文件列表', - }, - authorization: { - 'authorization': '鉴权', - 'authorizationType': '鉴权类型', - 'no-auth': '无', - 'api-key': 'API-Key', - 'auth-type': 'API 鉴权类型', - 'basic': '基础', - 'bearer': 'Bearer', - 'custom': '自定义', - 'api-key-title': 'API Key', - 'header': 'Header', - }, - insertVarPlaceholder: '键入 \'/\' 键快速插入变量', - timeout: { - title: '超时设置', - connectLabel: '连接超时', - connectPlaceholder: '输入连接超时(以秒为单位)', - readLabel: '读取超时', - readPlaceholder: '输入读取超时(以秒为单位)', - writeLabel: '写入超时', - writePlaceholder: '输入写入超时(以秒为单位)', - }, - curl: { - title: '导入 cURL', - placeholder: '粘贴 cURL 字符串', - }, - }, - code: { - inputVars: '输入变量', - outputVars: '输出变量', - advancedDependencies: '高级依赖', - advancedDependenciesTip: '在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包', - searchDependencies: '搜索依赖', - syncFunctionSignature: '同步函数签名至代码', - }, - templateTransform: { - inputVars: '输入变量', - code: '代码', - codeSupportTip: '只支持 Jinja2', - outputVars: { - output: '转换后内容', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: '用于定义当 if 条件不满足时应执行的逻辑。', - and: 'and', - or: 'or', - operator: '操作符', - notSetVariable: '请先设置变量', - comparisonOperator: { - 'contains': '包含', - 'not contains': '不包含', - 'start with': '开始是', - 'end with': '结束是', - 'is': '是', - 'is not': '不是', - 'empty': '为空', - 'not empty': '不为空', - 'null': '空', - 'not null': '不为空', - 'in': '是', - 'not in': '不是', - 'all of': '全部是', - 'exists': '存在', - 'not exists': '不存在', - 'before': '早于', - 'after': '晚于', - }, - optionName: { - image: '图片', - doc: '文档', - audio: '音频', - video: '视频', - localUpload: '本地上传', - url: 'URL', - }, - enterValue: '输入值', - addCondition: '添加条件', - conditionNotSetup: '条件未设置', - selectVariable: '选择变量', - addSubVariable: '添加子变量', - select: '选择', - }, - variableAssigner: { - title: '变量赋值', - outputType: '输出类型', - varNotSet: '未设置变量', - noVarTip: '添加需要赋值的变量', - type: { - string: 'String', - number: 'Number', - object: 'Object', - array: 'Array', - }, - aggregationGroup: '聚合分组', - aggregationGroupTip: '开启该功能后,变量聚合器内可以同时聚合多组变量', - addGroup: '添加分组', - outputVars: { - varDescribe: '{{groupName}}的输出变量', - }, - setAssignVariable: '设置赋值变量', - }, - assigner: { - 'assignedVariable': '赋值的变量', - 'varNotSet': '未设置变量', - 'noVarTip': '点击 "+" 按钮添加变量', - 'writeMode': '写入模式', - 'writeModeTip': '使用追加模式时,赋值的变量必须是数组类型。', - 'over-write': '覆盖', - 'append': '追加', - 'plus': '加', - 'clear': '清空', - 'setVariable': '设置变量', - 'selectAssignedVariable': '选择要赋值的变量...', - 'setParameter': '设置参数...', - 'operations': { - 'title': '操作', - 'over-write': '覆盖', - 'overwrite': '覆盖', - 'set': '设置', - 'clear': '清空', - 'extend': '扩展', - 'append': '追加', - 'remove-first': '移除首项', - 'remove-last': '移除末项', - '+=': '+=', - '-=': '-=', - '*=': '*=', - '/=': '/=', - }, - 'variable': '变量', - 'variables': '变量', - 'noAssignedVars': '没有可用的赋值变量', - 'assignedVarsDescription': '赋值变量必须是可写入的变量,例如会话变量。', - }, - tool: { - authorize: '授权', - inputVars: '输入变量', - outputVars: { - text: '工具生成的内容', - files: { - title: '工具生成的文件', - type: '支持类型。现在只支持图片', - transfer_method: '传输方式。值为 remote_url 或 local_file', - url: '图片链接', - upload_file_id: '上传文件 ID', - }, - json: '工具生成的 json', - }, - }, - questionClassifiers: { - model: '模型', - inputVars: '输入变量', - outputVars: { - className: '分类名称', - }, - class: '分类', - classNamePlaceholder: '输入你的分类名称', - advancedSetting: '高级设置', - topicName: '主题内容', - topicPlaceholder: '在这里输入你的主题内容', - addClass: '添加分类', - instruction: '指令', - instructionTip: '你可以输入额外的附加指令,帮助问题分类器更好的理解如何分类', - instructionPlaceholder: '在这里输入你的指令', - }, - parameterExtractor: { - inputVar: '输入变量', - extractParameters: '提取参数', - importFromTool: '从工具导入', - addExtractParameter: '添加提取参数', - addExtractParameterContent: { - name: '名称', - namePlaceholder: '提取参数名称', - type: '类型', - typePlaceholder: '提取参数类型', - description: '描述', - descriptionPlaceholder: '提取参数描述', - required: '必填', - requiredContent: '必填仅作为模型推理的参考,不用于参数输出的强制验证。', - }, - extractParametersNotSet: '提取参数未设置', - instruction: '指令', - instructionTip: '你可以输入额外的附加指令,帮助参数提取器理解如何提取参数', - advancedSetting: '高级设置', - reasoningMode: '推理模式', - reasoningModeTip: '你可以根据模型对于 Function calling 或 Prompt 的指令响应能力选择合适的推理模式', - isSuccess: '是否成功。成功时值为 1,失败时值为 0。', - errorReason: '错误原因', - }, - iteration: { - deleteTitle: '删除迭代节点?', - deleteDesc: '删除迭代节点将删除所有子节点', - input: '输入', - output: '输出变量', - iteration_one: '{{count}}个迭代', - iteration_other: '{{count}}个迭代', - currentIteration: '当前迭代', - comma: ',', - error_one: '{{count}}个失败', - error_other: '{{count}}个失败', - parallelMode: '并行模式', - parallelModeUpper: '并行模式', - parallelModeEnableTitle: '并行模式启用', - parallelModeEnableDesc: '启用并行模式时迭代内的任务支持并行执行。你可以在右侧的属性面板中进行配置。', - parallelPanelDesc: '在并行模式下,迭代中的任务支持并行执行。', - MaxParallelismTitle: '最大并行度', - MaxParallelismDesc: '最大并行度用于控制单次迭代中同时执行的任务数量。', - errorResponseMethod: '错误响应方法', - ErrorMethod: { - operationTerminated: '错误时终止', - continueOnError: '忽略错误并继续', - removeAbnormalOutput: '移除错误输出', - }, - answerNodeWarningDesc: '并行模式警告:在迭代中,回答节点、会话变量赋值和工具持久读/写操作可能会导致异常。', - }, - loop: { - deleteTitle: '删除循环节点?', - deleteDesc: '删除循环节点将删除所有子节点', - input: '输入', - output: '输出变量', - loop_one: '{{count}} 个循环', - loop_other: '{{count}} 个循环', - currentLoop: '当前循环', - comma: ',', - error_one: '{{count}}个失败', - error_other: '{{count}}个失败', - breakCondition: '循环终止条件', - breakConditionTip: '支持引用终止条件循环内的变量和会话变量。', - loopMaxCount: '最大循环次数', - loopMaxCountError: '请输入正确的 最大循环次数,范围为 1 到 {{maxCount}}', - errorResponseMethod: '错误响应方法', - ErrorMethod: { - operationTerminated: '错误时终止', - continueOnError: '忽略错误并继续', - removeAbnormalOutput: '移除错误输出', - }, - loopVariables: '循环变量', - initialLoopVariables: '初始循环变量', - finalLoopVariables: '最终循环变量', - setLoopVariables: '在循环范围内设置变量', - variableName: '变量名', - inputMode: '输入模式', - exitConditionTip: '循环节点至少需要一个退出条件', - loopNode: '循环节点', - currentLoopCount: '当前循环次数:{{count}}', - totalLoopCount: '总循环次数:{{count}}', - }, - note: { - addNote: '添加注释', - editor: { - placeholder: '输入注释...', - small: '小', - medium: '中', - large: '大', - bold: '加粗', - italic: '斜体', - strikethrough: '删除线', - link: '链接', - openLink: '打开', - unlink: '取消链接', - enterUrl: '输入链接...', - invalidUrl: '无效的链接', - bulletList: '列表', - showAuthor: '显示作者', - }, - }, - docExtractor: { - inputVar: '输入变量', - outputVars: { - text: '提取的文本', - }, - supportFileTypes: '支持的文件类型:{{types}}。', - learnMore: '了解更多', - }, - listFilter: { - inputVar: '输入变量', - filterCondition: '过滤条件', - filterConditionKey: '过滤条件的 Key', - filterConditionComparisonOperator: '过滤条件比较操作符', - filterConditionComparisonValue: '过滤条件比较值', - selectVariableKeyPlaceholder: '选择子变量的 Key', - extractsCondition: '取第 N 项', - limit: '取前 N 项', - orderBy: '排序', - asc: '升序', - desc: '降序', - outputVars: { - result: '过滤结果', - first_record: '第一条记录', - last_record: '最后一条记录', - }, - }, - agent: { - strategy: { - label: 'Agent 策略', - tooltip: '不同的 Agent 策略决定了系统如何规划和执行多步工具调用', - shortLabel: '策略', - configureTip: '请配置 Agent 策略。', - configureTipDesc: '配置完成后,此节点将自动加载剩余配置。策略将影响多步工具推理的机制。', - selectTip: '选择 Agent 策略', - searchPlaceholder: '搜索 Agent 策略', - }, - learnMore: '了解更多', - pluginNotInstalled: '插件未安装', - pluginNotInstalledDesc: '此插件是从 GitHub 安装的。请转到插件重新安装', - linkToPlugin: '转到插件', - pluginInstaller: { - install: '安装', - installing: '安装中', - }, - modelNotInMarketplace: { - title: '模型未安装', - desc: '此模型安装自本地或 GitHub 仓库。请安装后使用。', - manageInPlugins: '在插件中管理', - }, - modelNotSupport: { - title: '不支持的模型', - desc: '已安装的插件版本不提供此模型。', - descForVersionSwitch: '已安装的插件版本不提供此模型。点击切换版本。', - }, - model: '模型', - toolbox: '工具箱', - strategyNotSet: '代理策略未设置', - configureModel: '配置模型', - notAuthorized: '未授权', - tools: '工具', - maxIterations: '最大迭代次数', - modelNotInstallTooltip: '此模型未安装', - modelNotSelected: '未选择模型', - toolNotInstallTooltip: '{{tool}} 未安装', - toolNotAuthorizedTooltip: '{{tool}} 未授权', - strategyNotInstallTooltip: '{{strategy}} 未安装', - unsupportedStrategy: '不支持的策略', - strategyNotFoundDesc: '安装的插件版本不提供此策略。', - pluginNotFoundDesc: '此插件安装自 GitHub。请转到插件重新安装。', - strategyNotFoundDescAndSwitchVersion: '安装的插件版本不提供此策略。点击切换版本。', - modelSelectorTooltips: { - deprecated: '此模型已弃用', - }, - outputVars: { - text: 'agent 生成的内容', - files: { - title: 'agent 生成的文件', - type: '支持类型。现在只支持图片', - transfer_method: '传输方式。值为 remote_url 或 local_file', - url: '图片链接', - upload_file_id: '上传文件 ID', - }, - json: 'agent 生成的 json', - }, - checkList: { - strategyNotSelected: '未选择策略', - }, - installPlugin: { - title: '安装插件', - desc: '即将安装以下插件', - changelog: '更新日志', - install: '安装', - cancel: '取消', - }, - }, - }, - tracing: { - stopBy: '由{{user}}终止', - }, - versionHistory: { - title: '版本', - currentDraft: '当前草稿', - latest: '最新', - filter: { - all: '全部', - onlyYours: '仅你的', - onlyShowNamedVersions: '只显示已命名版本', - reset: '重置', - empty: '没有匹配的版本', - }, - defaultName: '未命名', - nameThisVersion: '命名', - editVersionInfo: '编辑信息', - editField: { - title: '标题', - releaseNotes: '发布说明', - titleLengthLimit: '标题不能超过{{limit}}个字符', - releaseNotesLengthLimit: '发布说明不能超过{{limit}}个字符', - }, - releaseNotesPlaceholder: '请描述变更', - restorationTip: '版本回滚后,当前草稿将被覆盖。', - deletionTip: '删除不可逆,请确认。', - action: { - restoreSuccess: '回滚成功', - restoreFailure: '回滚失败', - deleteSuccess: '版本已删除', - deleteFailure: '删除失败', - updateSuccess: '版本信息已更新', - updateFailure: '更新失败', - }, - }, - debug: { - settingsTab: '设置', - lastRunTab: '上次运行', - noData: { - description: '上次运行的结果将显示在这里', - runThisNode: '运行此节点', - }, - variableInspect: { - title: '变量检查', - emptyTip: '在画布上逐步浏览节点或逐步运行节点后,您可以在变量检查中查看节点变量的当前值', - emptyLink: '了解更多', - clearAll: '重置所有', - clearNode: '清除缓存', - resetConversationVar: '重置会话变量为默认值', - view: '查看记录', - edited: '已编辑', - reset: '还原至上一次运行', - trigger: { - normal: '变量检查', - running: '缓存中', - stop: '停止运行', - cached: '查看缓存', - clear: '清除', - }, - envNode: '环境变量', - chatNode: '会话变量', - systemNode: '系统变量', - }, - }, -} - -export default translation +const translation = { + common: { + undo: '撤销', + redo: '重做', + editing: '编辑中', + autoSaved: '自动保存', + unpublished: '未发布', + published: '已发布', + publish: '发布', + update: '更新', + publishUpdate: '发布更新', + run: '运行', + running: '运行中', + inRunMode: '在运行模式中', + inPreview: '预览中', + inPreviewMode: '预览中', + preview: '预览', + viewRunHistory: '查看运行历史', + runHistory: '运行历史', + goBackToEdit: '返回编辑模式', + conversationLog: '对话记录', + features: '功能', + featuresDescription: '增强 web app 用户体验', + ImageUploadLegacyTip: '现在可以在 start 表单中创建文件类型变量。未来我们将不继续支持图片上传功能。', + fileUploadTip: '图片上传功能已扩展为文件上传。', + featuresDocLink: '了解更多', + debugAndPreview: '预览', + restart: '重新开始', + currentDraft: '当前草稿', + currentDraftUnpublished: '当前草稿未发布', + latestPublished: '最新发布', + publishedAt: '发布于', + restore: '恢复', + versionHistory: '版本历史', + exitVersions: '退出版本历史', + runApp: '运行', + batchRunApp: '批量运行', + accessAPIReference: '访问 API', + embedIntoSite: '嵌入网站', + addTitle: '添加标题...', + addDescription: '添加描述...', + noVar: '没有变量', + variableNamePlaceholder: '变量名', + searchVar: '搜索变量', + setVarValuePlaceholder: '设置变量值', + needConnectTip: '此节点尚未连接到其他节点', + maxTreeDepth: '每个分支最大限制 {{depth}} 个节点', + needEndNode: '必须添加结束节点', + needAnswerNode: '必须添加直接回复节点', + workflowProcess: '工作流', + notRunning: '尚未运行', + previewPlaceholder: '在下面的框中输入内容开始调试聊天机器人', + effectVarConfirm: { + title: '移除变量', + content: '该变量在其他节点中使用。您是否仍要删除它?', + }, + insertVarTip: '按 \'/\' 键快速插入', + processData: '数据处理', + input: '输入', + output: '输出', + jinjaEditorPlaceholder: '输入“/”或“{”插入变量', + viewOnly: '只读', + showRunHistory: '显示运行历史', + enableJinja: '开启支持 Jinja 模板', + learnMore: '了解更多', + copy: '拷贝', + duplicate: '复制', + addBlock: '添加节点', + pasteHere: '粘贴到这里', + pointerMode: '指针模式', + handMode: '手模式', + exportImage: '导出图片', + exportPNG: '导出为 PNG', + exportJPEG: '导出为 JPEG', + exportSVG: '导出为 SVG', + model: '模型', + workflowAsTool: '发布为工具', + configureRequired: '需要进行配置', + configure: '配置', + manageInTools: '访问工具页', + workflowAsToolTip: '工作流更新后需要重新配置工具参数', + viewDetailInTracingPanel: '查看详细信息', + syncingData: '同步数据中,只需几秒钟。', + importDSL: '导入 DSL', + importDSLTip: '当前草稿将被覆盖。在导入之前请导出工作流作为备份。', + backupCurrentDraft: '备份当前草稿', + chooseDSL: '选择 DSL(yml) 文件', + overwriteAndImport: '覆盖并导入', + importFailure: '导入失败', + importWarning: '注意', + importWarningDetails: 'DSL 版本差异可能影响部分功能表现', + importSuccess: '导入成功', + parallelRun: '并行运行', + parallelTip: { + click: { + title: '点击', + desc: '添加节点', + }, + drag: { + title: '拖拽', + desc: '连接节点', + }, + limit: '并行分支限制为 {{num}} 个', + depthLimit: '并行嵌套层数限制 {{num}} 层', + }, + disconnect: '断开连接', + jumpToNode: '跳转到节点', + addParallelNode: '添加并行节点', + parallel: '并行', + branch: '分支', + onFailure: '异常时', + addFailureBranch: '添加异常分支', + openInExplore: '在“探索”中打开', + loadMore: '加载更多', + noHistory: '没有历史版本', + }, + env: { + envPanelTitle: '环境变量', + envDescription: '环境变量是一种存储敏感信息的方法,如 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。', + envPanelButton: '添加环境变量', + modal: { + title: '添加环境变量', + editTitle: '编辑环境变量', + type: '类型', + name: '名称', + namePlaceholder: '变量名', + value: '值', + valuePlaceholder: '变量值', + secretTip: '用于定义敏感信息或数据,导出 DSL 时设置了防泄露机制。', + }, + export: { + title: '导出 Secret 类型环境变量?', + checkbox: '导出 secret 值', + ignore: '导出 DSL', + export: '导出包含 Secret 值的 DSL', + }, + }, + chatVariable: { + panelTitle: '会话变量', + panelDescription: '会话变量用于存储 LLM 需要的上下文信息,如用户偏好、对话历史等。它是可读写的。', + docLink: '查看文档了解更多。', + button: '添加变量', + modal: { + title: '添加会话变量', + editTitle: '编辑会话变量', + name: '名称', + namePlaceholder: '变量名', + type: '类型', + value: '默认值', + valuePlaceholder: '默认值,可以为空', + description: '描述', + descriptionPlaceholder: '变量的描述', + editInJSON: '在 JSON 中编辑', + oneByOne: '逐个添加', + editInForm: '在表单中编辑', + arrayValue: '值', + addArrayValue: '添加值', + objectKey: '属性', + objectType: '类型', + objectValue: '默认值', + }, + storedContent: '存储内容', + updatedAt: '更新时间 ', + }, + changeHistory: { + title: '变更历史', + placeholder: '尚未更改任何内容', + clearHistory: '清除历史记录', + hint: '提示', + hintText: '您的编辑操作将被跟踪并存储在您的设备上,直到您离开编辑器。此历史记录将在您离开编辑器时被清除。', + stepBackward_one: '{{count}} 步后退', + stepBackward_other: '{{count}} 步后退', + stepForward_one: '{{count}} 步前进', + stepForward_other: '{{count}} 步前进', + sessionStart: '会话开始', + currentState: '当前状态', + nodeTitleChange: '块标题已更改', + nodeDescriptionChange: '块描述已更改', + nodeDragStop: '块已移动', + nodeChange: '块已更改', + nodeConnect: '块已连接', + nodePaste: '块已粘贴', + nodeDelete: '块已删除', + nodeAdd: '块已添加', + nodeResize: '块已调整大小', + noteAdd: '注释已添加', + noteChange: '注释已更改', + noteDelete: '注释已删除', + edgeDelete: '块已断开连接', + }, + errorMsg: { + fieldRequired: '{{field}} 不能为空', + rerankModelRequired: '未配置 Rerank 模型', + authRequired: '请先授权', + invalidJson: '{{field}} 是非法的 JSON', + fields: { + variable: '变量名', + variableValue: '变量值', + code: '代码', + model: '模型', + rerankModel: 'Rerank 模型', + visionVariable: '视觉变量', + }, + invalidVariable: '无效的变量', + noValidTool: '{{field}} 无可用工具', + toolParameterRequired: '{{field}}: 参数 [{{param}}] 不能为空', + }, + singleRun: { + testRun: '测试运行 ', + startRun: '开始运行', + running: '运行中', + testRunIteration: '测试运行迭代', + testRunLoop: '测试运行循环', + back: '返回', + iteration: '迭代', + loop: '循环', + }, + tabs: { + 'searchBlock': '搜索节点', + 'blocks': '节点', + 'searchTool': '搜索工具', + 'tools': '工具', + 'allTool': '全部', + 'plugin': '插件', + 'customTool': '自定义', + 'workflowTool': '工作流', + 'question-understand': '问题理解', + 'logic': '逻辑', + 'transform': '转换', + 'utilities': '工具', + 'noResult': '未找到匹配项', + 'agent': 'Agent 策略', + }, + blocks: { + 'start': '开始', + 'end': '结束', + 'answer': '直接回复', + 'llm': 'LLM', + 'knowledge-retrieval': '知识检索', + 'question-classifier': '问题分类器', + 'if-else': '条件分支', + 'code': '代码执行', + 'template-transform': '模板转换', + 'http-request': 'HTTP 请求', + 'variable-assigner': '变量赋值器', + 'variable-aggregator': '变量聚合器', + 'assigner': '变量赋值', + 'iteration-start': '迭代开始', + 'iteration': '迭代', + 'parameter-extractor': '参数提取器', + 'document-extractor': '文档提取器', + 'list-operator': '列表操作', + 'agent': 'Agent', + 'loop-start': '循环开始', + 'loop': '循环', + 'loop-end': '退出循环', + }, + blocksAbout: { + 'start': '定义一个 workflow 流程启动的初始参数', + 'end': '定义一个 workflow 流程的结束和结果类型', + 'answer': '定义一个聊天对话的回复内容', + 'llm': '调用大语言模型回答问题或者对自然语言进行处理', + 'knowledge-retrieval': '允许你从知识库中查询与用户问题相关的文本内容', + 'question-classifier': '定义用户问题的分类条件,LLM 能够根据分类描述定义对话的进展方式', + 'if-else': '允许你根据 if/else 条件将 workflow 拆分成两个分支', + 'code': '执行一段 Python 或 NodeJS 代码实现自定义逻辑', + 'template-transform': '使用 Jinja 模板语法将数据转换为字符串', + 'http-request': '允许通过 HTTP 协议发送服务器请求', + 'variable-assigner': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', + 'assigner': '变量赋值节点用于向可写入变量(例如会话变量)进行变量赋值。', + 'variable-aggregator': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', + 'iteration': '对列表对象执行多次步骤直至输出所有结果。', + 'loop': '循环执行一段逻辑直到满足结束条件或者到达循环次数上限。', + 'loop-end': '相当于“break”此节点没有配置项,当循环体内运行到此节点后循环终止。', + 'parameter-extractor': '利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。', + 'document-extractor': '用于将用户上传的文档解析为 LLM 便于理解的文本内容。', + 'list-operator': '用于过滤或排序数组内容。', + 'agent': '调用大型语言模型回答问题或处理自然语言', + }, + operator: { + zoomIn: '放大', + zoomOut: '缩小', + zoomTo50: '缩放到 50%', + zoomTo100: '放大到 100%', + zoomToFit: '自适应视图', + }, + variableReference: { + noAvailableVars: '没有可用变量', + noVarsForOperation: '当前选择的操作没有可用的变量进行赋值。', + noAssignedVars: '没有可用的赋值变量', + assignedVarsDescription: '赋值变量必须是可写入的变量,例如:', + conversationVars: '会话变量', + }, + panel: { + userInputField: '用户输入字段', + changeBlock: '更改节点', + helpLink: '帮助链接', + about: '关于', + createdBy: '作者', + nextStep: '下一步', + addNextStep: '添加此工作流程中的下一个节点', + selectNextStep: '选择下一个节点', + runThisStep: '运行此步骤', + checklist: '检查清单', + checklistTip: '发布前确保所有问题均已解决', + checklistResolved: '所有问题均已解决', + organizeBlocks: '整理节点', + change: '更改', + optional: '(选填)', + moveToThisNode: '定位至此节点', + maximize: '最大化画布', + minimize: '退出最大化', + }, + nodes: { + common: { + outputVars: '输出变量', + insertVarTip: '插入变量', + memory: { + memory: '记忆', + memoryTip: '聊天记忆设置', + windowSize: '记忆窗口', + conversationRoleName: '对话角色名', + user: '用户前缀', + assistant: '助手前缀', + }, + memories: { + title: '记忆', + tip: '聊天记忆', + builtIn: '内置', + }, + errorHandle: { + title: '异常处理', + tip: '配置异常处理策略,当节点发生异常时触发。', + none: { + title: '无', + desc: '当发生异常且未处理时,节点将停止运行', + }, + defaultValue: { + title: '默认值', + desc: '当发生异常时,指定默认输出内容。', + tip: '当发生异常时,将返回以下值。', + inLog: '节点异常,根据默认值输出。', + output: '输出默认值', + }, + failBranch: { + title: '异常分支', + desc: '当发生异常时,将执行异常分支', + customize: '在画布自定义失败分支逻辑。', + customizeTip: '当节点发生异常时,将自动执行失败分支。失败分支允许您灵活地提供错误消息、报告、修复或跳过操作。', + inLog: '节点异常,将自动执行失败分支。节点输出将返回错误类型和错误信息,并传递给下游。', + }, + partialSucceeded: { + tip: '流程中有 {{num}} 个节点运行异常,请前往追踪查看日志。', + }, + }, + retry: { + retry: '重试', + retryOnFailure: '失败时重试', + maxRetries: '最大重试次数', + retryInterval: '重试间隔', + retryTimes: '失败时重试 {{times}} 次', + retrying: '重试中...', + retrySuccessful: '重试成功', + retryFailed: '重试失败', + retryFailedTimes: '{{times}} 次重试失败', + times: '次', + ms: '毫秒', + retries: '{{num}} 重试次数', + }, + }, + start: { + required: '必填', + inputField: '输入字段', + builtInVar: '内置变量', + outputVars: { + query: '用户输入', + memories: { + des: '会话历史', + type: '消息类型', + content: '消息内容', + }, + files: '文件列表', + }, + noVarTip: '设置的输入可在工作流程中使用', + }, + end: { + outputs: '输出', + output: { + type: '输出类型', + variable: '输出变量', + }, + type: { + 'none': '无', + 'plain-text': '纯文本', + 'structured': '结构化', + }, + }, + answer: { + answer: '回复', + outputVars: '输出变量', + }, + llm: { + model: '模型', + variables: '变量', + context: '上下文', + contextTooltip: '您可以导入知识库作为上下文', + notSetContextInPromptTip: '要启用上下文功能,请在提示中填写上下文变量。', + prompt: '提示词', + addMessage: '添加消息', + roleDescription: { + system: '为对话提供高层指导', + user: '向模型提供指令、查询或任何基于文本的输入', + assistant: '基于用户消息的模型回复', + }, + vision: '视觉', + files: '文件', + resolution: { + name: '分辨率', + high: '高', + low: '低', + }, + outputVars: { + output: '生成内容', + usage: '模型用量信息', + }, + singleRun: { + variable: '变量', + }, + sysQueryInUser: 'user message 中必须包含 sys.query', + jsonSchema: { + title: '结构化输出 Schema', + instruction: '指令', + promptTooltip: '将文本描述转换为标准化的 JSON Schema 结构', + promptPlaceholder: '描述你的 JSON Schema...', + generate: '生成', + import: '从 JSON 导入', + generateJsonSchema: '生成 JSON Schema', + generationTip: '可以使用自然语言快速创建 JSON Schema。', + generating: '正在为您生成 JSON Schema...', + generatedResult: '生成结果', + resultTip: '以下是生成的结果。如果你对这个结果不满意,可以返回并修改你的提示词。', + back: '返回', + regenerate: '重新生成', + apply: '应用', + doc: '了解有关结构化输出的更多信息', + resetDefaults: '清空配置', + required: '必填', + addField: '添加字段', + addChildField: '添加子字段', + showAdvancedOptions: '显示高级选项', + stringValidations: '字符串验证', + fieldNamePlaceholder: '字段名', + descriptionPlaceholder: '添加描述', + warningTips: { + saveSchema: '请先完成当前字段的编辑', + }, + }, + }, + knowledgeRetrieval: { + queryVariable: '查询变量', + knowledge: '知识库', + outputVars: { + output: '召回的分段', + content: '分段内容', + title: '分段标题', + icon: '分段图标', + url: '分段链接', + metadata: '其他元数据', + }, + metadata: { + title: '元数据过滤', + tip: '元数据过滤是使用元数据属性(例如标签、类别或访问权限)来细化和控制系统内相关信息的检索过程。', + options: { + disabled: { + title: '禁用', + subTitle: '禁用元数据过滤', + }, + automatic: { + title: '自动', + subTitle: '根据用户查询自动生成元数据过滤条件', + desc: '根据 Query Variable 自动生成元数据过滤条件', + }, + manual: { + title: '手动', + subTitle: '手动添加元数据过滤条件', + }, + }, + panel: { + title: '元数据过滤条件', + conditions: '条件', + add: '添加条件', + search: '搜索元数据', + placeholder: '输入值', + datePlaceholder: '选择日期...', + select: '选择变量...', + }, + }, + }, + http: { + inputVars: '输入变量', + api: 'API', + apiPlaceholder: '输入 URL,输入变量时请键入‘/’', + extractListPlaceholder: '输入提取列表编号,输入变量时请键入‘/’', + notStartWithHttp: 'API 应该以 http:// 或 https:// 开头', + key: '键', + type: '类型', + value: '值', + bulkEdit: '批量编辑', + keyValueEdit: '键值编辑', + headers: 'Headers', + params: 'Params', + body: 'Body', + binaryFileVariable: 'Binary 文件变量', + outputVars: { + body: '响应内容', + statusCode: '响应状态码', + headers: '响应头列表 JSON', + files: '文件列表', + }, + authorization: { + 'authorization': '鉴权', + 'authorizationType': '鉴权类型', + 'no-auth': '无', + 'api-key': 'API-Key', + 'auth-type': 'API 鉴权类型', + 'basic': '基础', + 'bearer': 'Bearer', + 'custom': '自定义', + 'api-key-title': 'API Key', + 'header': 'Header', + }, + insertVarPlaceholder: '键入 \'/\' 键快速插入变量', + timeout: { + title: '超时设置', + connectLabel: '连接超时', + connectPlaceholder: '输入连接超时(以秒为单位)', + readLabel: '读取超时', + readPlaceholder: '输入读取超时(以秒为单位)', + writeLabel: '写入超时', + writePlaceholder: '输入写入超时(以秒为单位)', + }, + curl: { + title: '导入 cURL', + placeholder: '粘贴 cURL 字符串', + }, + }, + code: { + inputVars: '输入变量', + outputVars: '输出变量', + advancedDependencies: '高级依赖', + advancedDependenciesTip: '在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包', + searchDependencies: '搜索依赖', + syncFunctionSignature: '同步函数签名至代码', + }, + templateTransform: { + inputVars: '输入变量', + code: '代码', + codeSupportTip: '只支持 Jinja2', + outputVars: { + output: '转换后内容', + }, + }, + ifElse: { + if: 'If', + else: 'Else', + elseDescription: '用于定义当 if 条件不满足时应执行的逻辑。', + and: 'and', + or: 'or', + operator: '操作符', + notSetVariable: '请先设置变量', + comparisonOperator: { + 'contains': '包含', + 'not contains': '不包含', + 'start with': '开始是', + 'end with': '结束是', + 'is': '是', + 'is not': '不是', + 'empty': '为空', + 'not empty': '不为空', + 'null': '空', + 'not null': '不为空', + 'in': '是', + 'not in': '不是', + 'all of': '全部是', + 'exists': '存在', + 'not exists': '不存在', + 'before': '早于', + 'after': '晚于', + }, + optionName: { + image: '图片', + doc: '文档', + audio: '音频', + video: '视频', + localUpload: '本地上传', + url: 'URL', + }, + enterValue: '输入值', + addCondition: '添加条件', + conditionNotSetup: '条件未设置', + selectVariable: '选择变量', + addSubVariable: '添加子变量', + select: '选择', + }, + variableAssigner: { + title: '变量赋值', + outputType: '输出类型', + varNotSet: '未设置变量', + noVarTip: '添加需要赋值的变量', + type: { + string: 'String', + number: 'Number', + object: 'Object', + array: 'Array', + }, + aggregationGroup: '聚合分组', + aggregationGroupTip: '开启该功能后,变量聚合器内可以同时聚合多组变量', + addGroup: '添加分组', + outputVars: { + varDescribe: '{{groupName}}的输出变量', + }, + setAssignVariable: '设置赋值变量', + }, + assigner: { + 'assignedVariable': '赋值的变量', + 'varNotSet': '未设置变量', + 'noVarTip': '点击 "+" 按钮添加变量', + 'writeMode': '写入模式', + 'writeModeTip': '使用追加模式时,赋值的变量必须是数组类型。', + 'over-write': '覆盖', + 'append': '追加', + 'plus': '加', + 'clear': '清空', + 'setVariable': '设置变量', + 'selectAssignedVariable': '选择要赋值的变量...', + 'setParameter': '设置参数...', + 'operations': { + 'title': '操作', + 'over-write': '覆盖', + 'overwrite': '覆盖', + 'set': '设置', + 'clear': '清空', + 'extend': '扩展', + 'append': '追加', + 'remove-first': '移除首项', + 'remove-last': '移除末项', + '+=': '+=', + '-=': '-=', + '*=': '*=', + '/=': '/=', + }, + 'variable': '变量', + 'variables': '变量', + 'noAssignedVars': '没有可用的赋值变量', + 'assignedVarsDescription': '赋值变量必须是可写入的变量,例如会话变量。', + }, + tool: { + authorize: '授权', + inputVars: '输入变量', + outputVars: { + text: '工具生成的内容', + files: { + title: '工具生成的文件', + type: '支持类型。现在只支持图片', + transfer_method: '传输方式。值为 remote_url 或 local_file', + url: '图片链接', + upload_file_id: '上传文件 ID', + }, + json: '工具生成的 json', + }, + }, + questionClassifiers: { + model: '模型', + inputVars: '输入变量', + outputVars: { + className: '分类名称', + }, + class: '分类', + classNamePlaceholder: '输入你的分类名称', + advancedSetting: '高级设置', + topicName: '主题内容', + topicPlaceholder: '在这里输入你的主题内容', + addClass: '添加分类', + instruction: '指令', + instructionTip: '你可以输入额外的附加指令,帮助问题分类器更好的理解如何分类', + instructionPlaceholder: '在这里输入你的指令', + }, + parameterExtractor: { + inputVar: '输入变量', + extractParameters: '提取参数', + importFromTool: '从工具导入', + addExtractParameter: '添加提取参数', + addExtractParameterContent: { + name: '名称', + namePlaceholder: '提取参数名称', + type: '类型', + typePlaceholder: '提取参数类型', + description: '描述', + descriptionPlaceholder: '提取参数描述', + required: '必填', + requiredContent: '必填仅作为模型推理的参考,不用于参数输出的强制验证。', + }, + extractParametersNotSet: '提取参数未设置', + instruction: '指令', + instructionTip: '你可以输入额外的附加指令,帮助参数提取器理解如何提取参数', + advancedSetting: '高级设置', + reasoningMode: '推理模式', + reasoningModeTip: '你可以根据模型对于 Function calling 或 Prompt 的指令响应能力选择合适的推理模式', + isSuccess: '是否成功。成功时值为 1,失败时值为 0。', + errorReason: '错误原因', + }, + iteration: { + deleteTitle: '删除迭代节点?', + deleteDesc: '删除迭代节点将删除所有子节点', + input: '输入', + output: '输出变量', + iteration_one: '{{count}}个迭代', + iteration_other: '{{count}}个迭代', + currentIteration: '当前迭代', + comma: ',', + error_one: '{{count}}个失败', + error_other: '{{count}}个失败', + parallelMode: '并行模式', + parallelModeUpper: '并行模式', + parallelModeEnableTitle: '并行模式启用', + parallelModeEnableDesc: '启用并行模式时迭代内的任务支持并行执行。你可以在右侧的属性面板中进行配置。', + parallelPanelDesc: '在并行模式下,迭代中的任务支持并行执行。', + MaxParallelismTitle: '最大并行度', + MaxParallelismDesc: '最大并行度用于控制单次迭代中同时执行的任务数量。', + errorResponseMethod: '错误响应方法', + ErrorMethod: { + operationTerminated: '错误时终止', + continueOnError: '忽略错误并继续', + removeAbnormalOutput: '移除错误输出', + }, + answerNodeWarningDesc: '并行模式警告:在迭代中,回答节点、会话变量赋值和工具持久读/写操作可能会导致异常。', + }, + loop: { + deleteTitle: '删除循环节点?', + deleteDesc: '删除循环节点将删除所有子节点', + input: '输入', + output: '输出变量', + loop_one: '{{count}} 个循环', + loop_other: '{{count}} 个循环', + currentLoop: '当前循环', + comma: ',', + error_one: '{{count}}个失败', + error_other: '{{count}}个失败', + breakCondition: '循环终止条件', + breakConditionTip: '支持引用终止条件循环内的变量和会话变量。', + loopMaxCount: '最大循环次数', + loopMaxCountError: '请输入正确的 最大循环次数,范围为 1 到 {{maxCount}}', + errorResponseMethod: '错误响应方法', + ErrorMethod: { + operationTerminated: '错误时终止', + continueOnError: '忽略错误并继续', + removeAbnormalOutput: '移除错误输出', + }, + loopVariables: '循环变量', + initialLoopVariables: '初始循环变量', + finalLoopVariables: '最终循环变量', + setLoopVariables: '在循环范围内设置变量', + variableName: '变量名', + inputMode: '输入模式', + exitConditionTip: '循环节点至少需要一个退出条件', + loopNode: '循环节点', + currentLoopCount: '当前循环次数:{{count}}', + totalLoopCount: '总循环次数:{{count}}', + }, + note: { + addNote: '添加注释', + editor: { + placeholder: '输入注释...', + small: '小', + medium: '中', + large: '大', + bold: '加粗', + italic: '斜体', + strikethrough: '删除线', + link: '链接', + openLink: '打开', + unlink: '取消链接', + enterUrl: '输入链接...', + invalidUrl: '无效的链接', + bulletList: '列表', + showAuthor: '显示作者', + }, + }, + docExtractor: { + inputVar: '输入变量', + outputVars: { + text: '提取的文本', + }, + supportFileTypes: '支持的文件类型:{{types}}。', + learnMore: '了解更多', + }, + listFilter: { + inputVar: '输入变量', + filterCondition: '过滤条件', + filterConditionKey: '过滤条件的 Key', + filterConditionComparisonOperator: '过滤条件比较操作符', + filterConditionComparisonValue: '过滤条件比较值', + selectVariableKeyPlaceholder: '选择子变量的 Key', + extractsCondition: '取第 N 项', + limit: '取前 N 项', + orderBy: '排序', + asc: '升序', + desc: '降序', + outputVars: { + result: '过滤结果', + first_record: '第一条记录', + last_record: '最后一条记录', + }, + }, + agent: { + strategy: { + label: 'Agent 策略', + tooltip: '不同的 Agent 策略决定了系统如何规划和执行多步工具调用', + shortLabel: '策略', + configureTip: '请配置 Agent 策略。', + configureTipDesc: '配置完成后,此节点将自动加载剩余配置。策略将影响多步工具推理的机制。', + selectTip: '选择 Agent 策略', + searchPlaceholder: '搜索 Agent 策略', + }, + learnMore: '了解更多', + pluginNotInstalled: '插件未安装', + pluginNotInstalledDesc: '此插件是从 GitHub 安装的。请转到插件重新安装', + linkToPlugin: '转到插件', + pluginInstaller: { + install: '安装', + installing: '安装中', + }, + modelNotInMarketplace: { + title: '模型未安装', + desc: '此模型安装自本地或 GitHub 仓库。请安装后使用。', + manageInPlugins: '在插件中管理', + }, + modelNotSupport: { + title: '不支持的模型', + desc: '已安装的插件版本不提供此模型。', + descForVersionSwitch: '已安装的插件版本不提供此模型。点击切换版本。', + }, + model: '模型', + toolbox: '工具箱', + strategyNotSet: '代理策略未设置', + configureModel: '配置模型', + notAuthorized: '未授权', + tools: '工具', + maxIterations: '最大迭代次数', + modelNotInstallTooltip: '此模型未安装', + modelNotSelected: '未选择模型', + toolNotInstallTooltip: '{{tool}} 未安装', + toolNotAuthorizedTooltip: '{{tool}} 未授权', + strategyNotInstallTooltip: '{{strategy}} 未安装', + unsupportedStrategy: '不支持的策略', + strategyNotFoundDesc: '安装的插件版本不提供此策略。', + pluginNotFoundDesc: '此插件安装自 GitHub。请转到插件重新安装。', + strategyNotFoundDescAndSwitchVersion: '安装的插件版本不提供此策略。点击切换版本。', + modelSelectorTooltips: { + deprecated: '此模型已弃用', + }, + outputVars: { + text: 'agent 生成的内容', + files: { + title: 'agent 生成的文件', + type: '支持类型。现在只支持图片', + transfer_method: '传输方式。值为 remote_url 或 local_file', + url: '图片链接', + upload_file_id: '上传文件 ID', + }, + json: 'agent 生成的 json', + }, + checkList: { + strategyNotSelected: '未选择策略', + }, + installPlugin: { + title: '安装插件', + desc: '即将安装以下插件', + changelog: '更新日志', + install: '安装', + cancel: '取消', + }, + }, + }, + tracing: { + stopBy: '由{{user}}终止', + }, + versionHistory: { + title: '版本', + currentDraft: '当前草稿', + latest: '最新', + filter: { + all: '全部', + onlyYours: '仅你的', + onlyShowNamedVersions: '只显示已命名版本', + reset: '重置', + empty: '没有匹配的版本', + }, + defaultName: '未命名', + nameThisVersion: '命名', + editVersionInfo: '编辑信息', + editField: { + title: '标题', + releaseNotes: '发布说明', + titleLengthLimit: '标题不能超过{{limit}}个字符', + releaseNotesLengthLimit: '发布说明不能超过{{limit}}个字符', + }, + releaseNotesPlaceholder: '请描述变更', + restorationTip: '版本回滚后,当前草稿将被覆盖。', + deletionTip: '删除不可逆,请确认。', + action: { + restoreSuccess: '回滚成功', + restoreFailure: '回滚失败', + deleteSuccess: '版本已删除', + deleteFailure: '删除失败', + updateSuccess: '版本信息已更新', + updateFailure: '更新失败', + }, + }, + debug: { + settingsTab: '设置', + lastRunTab: '上次运行', + noData: { + description: '上次运行的结果将显示在这里', + runThisNode: '运行此节点', + }, + variableInspect: { + title: '变量检查', + emptyTip: '在画布上逐步浏览节点或逐步运行节点后,您可以在变量检查中查看节点变量的当前值', + emptyLink: '了解更多', + clearAll: '重置所有', + clearNode: '清除缓存', + resetConversationVar: '重置会话变量为默认值', + view: '查看记录', + edited: '已编辑', + reset: '还原至上一次运行', + trigger: { + normal: '变量检查', + running: '缓存中', + stop: '停止运行', + cached: '查看缓存', + clear: '清除', + }, + envNode: '环境变量', + chatNode: '会话变量', + systemNode: '系统变量', + }, + }, +} + +export default translation