Files
LangBot/web/src/i18n/locales/en-US.ts
T
2026-05-16 00:09:57 +08:00

2205 lines
82 KiB
TypeScript

const enUS = {
sidebar: {
home: 'Home',
extensions: 'Extensions',
installedPlugins: 'Installed Plugins',
pluginMarket: 'Marketplace',
mcpServers: 'MCP Servers',
pluginPages: 'Plugin Pages',
pluginPagesTooltip: 'Visual pages provided by installed plugins',
quickStart: 'Quick Start',
},
common: {
login: 'Login',
logout: 'Logout',
accountOptions: 'Settings',
account: 'Account',
integration: 'Integration',
email: 'Email',
password: 'Password',
welcome: 'Welcome back to LangBot 👋',
continueToLogin: 'Login to continue',
loginSuccess: 'Login successful',
loginFailed: 'Login failed, please check your email and password',
loginLoadError: 'Unable to connect to server',
loginLoadErrorDesc:
'Unable to connect to the LangBot backend. Please make sure the service is running and try again.',
retry: 'Retry',
enterEmail: 'Enter email address',
enterPassword: 'Enter password',
invalidEmail: 'Please enter a valid email address',
emptyPassword: 'Please enter your password',
language: 'Language',
helpDocs: 'Get Help',
featureRequest: 'Feature Request',
starOnGitHub: 'Star on GitHub',
create: 'Create',
edit: 'Edit',
delete: 'Delete',
add: 'Add',
select: 'Select',
cancel: 'Cancel',
submit: 'Submit',
next: 'Next',
back: 'Back',
refresh: 'Refresh',
error: 'Error',
success: 'Success',
save: 'Save',
saving: 'Saving...',
confirm: 'Confirm',
confirmDelete: 'Confirm Delete',
deleteConfirmation: 'Are you sure you want to delete this?',
selectOption: 'Select an option',
selectPreset: 'Select Preset',
required: 'Required',
enable: 'Enable',
name: 'Name',
description: 'Description',
icon: 'Icon',
close: 'Close',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
addRound: 'Add Round',
copy: 'Copy',
undo: 'Undo',
redo: 'Redo',
copySuccess: 'Copy Successfully',
copyFailed: 'Copy Failed',
test: 'Test',
forgotPassword: 'Forgot Password?',
agreementNotice: 'By continuing, you agree to our',
privacyPolicy: 'Privacy Policy',
and: 'and',
dataCollectionPolicy: 'Data Collection Policy',
dataCollectionPolicyUrl: 'https://link.langbot.app/en/docs/data-policy',
loading: 'Loading...',
fieldRequired: 'This field is required',
or: 'or',
loginWithSpace: 'Login with Space',
spaceLoginRecommended:
'Recommended: Use official stable model APIs and cloud services',
loginLocal: 'Login with local account',
loginWithPassword: 'Login with password',
spaceLoginTitle: 'Login with Space',
spaceLoginDescription:
'Scan the QR code or visit the link below to authorize',
spaceLoginUserCode: 'Your code',
spaceLoginExpires: 'Code expires in {{seconds}} seconds',
spaceLoginWaiting: 'Waiting for authorization...',
spaceLoginSuccess: 'Authorization successful',
spaceLoginFailed: 'Space login failed',
spaceLoginExpired: 'Authorization code expired, please try again',
spaceLoginCancel: 'Cancel',
spaceLoginVisitLink: 'Visit link',
spaceLoginProcessing: 'Logging in with Space',
spaceLoginProcessingDescription:
'Please wait while we complete your login...',
spaceLoginSuccessDescription: 'Redirecting to LangBot...',
spaceLoginError: 'Login Failed',
spaceLoginNoCode: 'Missing authorization code',
backToLogin: 'Back to Login',
backToHome: 'Back to Home',
spaceAccountCannotChangePassword:
'Space accounts cannot change password here',
theme: 'Theme',
changePassword: 'Change Password',
currentPassword: 'Current Password',
newPassword: 'New Password',
confirmNewPassword: 'Confirm New Password',
enterCurrentPassword: 'Enter current password',
enterNewPassword: 'Enter new password',
enterConfirmPassword: 'Confirm new password',
currentPasswordRequired: 'Current password is required',
newPasswordRequired: 'New password is required',
confirmPasswordRequired: 'Confirm password is required',
passwordsDoNotMatch: 'Passwords do not match',
changePasswordSuccess: 'Password changed successfully',
changePasswordFailed:
'Failed to change password, please check your current password',
apiIntegration: 'API Integration',
apiKeys: 'API Keys',
manageApiIntegration: 'Manage API Integration',
manageApiKeys: 'Manage API Keys',
createApiKey: 'Create API Key',
apiKeyName: 'API Key Name',
apiKeyDescription: 'API Key Description',
apiKeyValue: 'API Key Value',
apiKeyCreated: 'API key created successfully',
apiKeyDeleted: 'API key deleted successfully',
apiKeyDeleteConfirm: 'Are you sure you want to delete this API key?',
apiKeyNameRequired: 'API key name is required',
copyApiKey: 'Copy API Key',
apiKeyCopied: 'API key copied to clipboard',
noApiKeys: 'No API keys configured',
apiKeyHint:
'API keys allow external systems to access LangBot Service APIs',
webhooks: 'Webhooks',
createWebhook: 'Create Webhook',
webhookName: 'Webhook Name',
webhookUrl: 'Webhook URL',
webhookDescription: 'Webhook Description',
webhookEnabled: 'Enabled',
webhookCreated: 'Webhook created successfully',
webhookDeleted: 'Webhook deleted successfully',
webhookDeleteConfirm: 'Are you sure you want to delete this webhook?',
webhookNameRequired: 'Webhook name is required',
webhookUrlRequired: 'Webhook URL is required',
noWebhooks: 'No webhooks configured',
webhookHint:
'Webhooks allow LangBot to push person and group message events to external systems',
actions: 'Actions',
apiKeyCreatedMessage:
'Please copy this API key, if the button is invalid, please copy manually.',
none: 'None',
more: 'More ({{count}})',
less: 'Less',
noItems: 'No items',
data: 'Data',
result: 'Result',
body: 'Body',
headers: 'Headers',
query: 'Query',
method: 'Method',
},
notFound: {
title: 'Page not found',
description: 'The page you are looking for does not exist.',
back: 'Back',
home: 'Home',
help: 'Get Help',
},
models: {
title: 'Models',
description: 'Configure and manage models that can be used in pipelines',
createModel: 'Create Model',
editModel: 'Edit Model',
getModelListError: 'Failed to get model list: ',
modelName: 'Model Name',
modelProvider: 'Model Provider',
modelBaseURL: 'Base URL',
modelAbilities: 'Model Abilities',
saveSuccess: 'Saved successfully',
saveError: 'Save failed: ',
createSuccess: 'Created successfully',
createError: 'Creation failed: ',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
deleteConfirmation: 'Are you sure you want to delete this model?',
modelNameRequired: 'Model name cannot be empty',
modelProviderRequired: 'Model provider cannot be empty',
requestURLRequired: 'Request URL cannot be empty',
apiKeyRequired: 'API Key cannot be empty',
keyNameRequired: 'Key name cannot be empty',
mustBeValidNumber: 'Must be a valid number',
mustBeTrueOrFalse: 'Must be true or false',
requestURL: 'Request URL',
scanURL: 'Scan Models URL',
scanURLPlaceholder: 'Leave empty to use Request URL + /models',
scanURLDescription:
'Fill in the actual model-list endpoint when model scanning does not use the same address as model invocation.',
apiKey: 'API Key',
abilities: 'Abilities',
selectModelAbilities: 'Select model abilities',
visionAbility: 'Vision Ability',
functionCallAbility: 'Function Call',
extraParameters: 'Extra Parameters',
addParameter: 'Add Parameter',
keyName: 'Key Name',
type: 'Type',
value: 'Value',
string: 'String',
number: 'Number',
boolean: 'Boolean',
object: 'Object',
objectJsonPlaceholder: '{ "type": "disabled" }',
invalidJsonObject: 'Value must be a valid JSON object',
selectModelProvider: 'Select Model Provider',
modelProviderDescription:
'Please fill in the model name provided by the provider',
modelManufacturer: 'Model Manufacturer',
aggregationPlatform: 'Aggregation Platform',
selfDeployed: 'Self-deployed',
builtin: 'Built-in',
selectModel: 'Select Model',
testSuccess: 'Test successful',
testError: 'Test failed, please check your model configuration',
llmModels: 'LLM Models',
localProvider: 'Local',
localProviderDescription: 'Models configured and managed locally',
spaceProviderDescription: 'Models synced from your Space account',
spaceDisabledForLocalAccount: 'Login with Space to use cloud models',
syncModels: 'Sync',
syncSuccess: 'Sync complete: {{created}} created, {{updated}} updated',
syncError: 'Sync failed: ',
spaceModelReadOnly: 'Space models are read-only',
noSpaceModels: 'No Space models. Click Sync to fetch models from Space.',
noLocalModels: 'No local models. Click Create to add a model.',
providerCount: '{{count}} providers',
// New keys for provider-based structure
addModel: 'Add Model',
manualAdd: 'Manual',
scanAdd: 'Scan',
scanModels: 'Scan Models',
scanModelsHint:
'Read available models from the current provider, then select which ones to add.',
scannedModels: 'Scanned Models',
scanDebug: 'Debug Info',
searchScannedModels: 'Search scanned models',
noScannedModels: 'No scan results yet. Click the button above to scan.',
noScannedModelsMatch: 'No matching models',
addSelectedModels: 'Add Selected',
addSelectedModelsSuccess: '{{count}} model(s) added',
selectAll: 'Select All',
alreadyAdded: 'Already added',
addLLMModel: 'Add LLM Model',
addEmbeddingModel: 'Add Embedding Model',
provider: 'Provider',
existingProvider: 'Existing Provider',
newProvider: 'New Provider',
selectProvider: 'Select Provider',
requester: 'Provider Type',
selectRequester: 'Select Provider Type',
langbotModelsDescription: 'Cloud models powered by LangBot Space',
credits: 'Credits',
loginWithSpace: 'Login with Space',
loginToUseModels: 'Login with Space to use cloud models',
noModels: 'No models configured',
langbotModels: 'LangBot Models',
spaceTrialTooltip:
'Free trial credits available! Login with Space to access cloud models with zero configuration.',
unlockModels: 'Login to use',
editProvider: 'Edit Provider',
addProvider: 'Add Provider',
addProviderHint: 'Add providers to use models from other sources',
addProviderHintSimple: 'Add providers to use models',
noProviders: 'No providers yet',
providerName: 'Provider Name',
providerNameRequired: 'Provider name is required',
requesterRequired: 'Provider type is required',
providerSaved: 'Provider saved',
providerCreated: 'Provider created',
providerSaveError: 'Failed to save provider: ',
providerDeleted: 'Provider deleted',
providerDeleteError: 'Failed to delete provider: ',
deleteProviderConfirmation:
'Are you sure you want to delete this provider?',
loadError: 'Failed to load data',
chat: 'Chat',
embedding: 'Embedding',
rerank: 'Rerank',
rerankUrlTooltip:
'Full URL override for rerank endpoint (e.g. https://dashscope.aliyuncs.com/compatible-api/v1/reranks)',
rerankPathTooltip: 'Path appended to base URL (default: rerank)',
modelsCount: '{{count}} model(s)',
expandModels: 'Expand',
collapseModels: 'Collapse',
fallback: {
primary: 'Primary Model',
fallbackList: 'Fallback Models',
addFallback: 'Add Fallback Model',
},
},
bots: {
title: 'Bots',
description:
'Create and manage bots, which are the entry points for LangBot to connect with various platforms',
createBot: 'Create Bot',
selectFromSidebar: 'Select a bot from the sidebar',
editBot: 'Edit Bot',
getBotListError: 'Failed to get bot list: ',
botName: 'Bot Name',
botDescription: 'Bot Description',
botNameRequired: 'Bot name cannot be empty',
botDescriptionRequired: 'Bot description cannot be empty',
adapterRequired: 'Adapter cannot be empty',
defaultDescription: 'A bot',
getBotConfigError: 'Failed to get bot configuration: ',
saveSuccess: 'Saved successfully',
saveError: 'Save failed: ',
createSuccess:
'Created successfully. Please enable or modify the bound pipeline',
createError: 'Creation failed: ',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
deleteConfirmation: 'Are you sure you want to delete this bot?',
platformAdapter: 'Platform/Adapter Selection',
selectAdapter: 'Select Adapter',
adapterConfig: 'Adapter Configuration',
viewAdapterDocs: 'View Docs',
bindPipeline: 'Bind Pipeline',
selectPipeline: 'Select Pipeline',
selectBot: 'Select Bot',
botLogTitle: 'Bot Log',
enableAutoRefresh: 'Enable Auto Refresh',
session: 'Session',
yesterday: 'Yesterday',
earlier: 'Earlier',
dateFormat: '{{month}}/{{day}}',
setBotEnableError: 'Failed to set bot enable status',
log: 'Log',
configuration: 'Configuration',
logs: 'Logs',
basicInfo: 'Basic Information',
basicInfoDescription: 'Set the bot name and description',
routingConnection: 'Routing & Connection',
routingConnectionDescription:
'Bind the pipeline that processes messages for this bot',
routingRules: 'Conditional Routing Rules',
routingRulesDescription:
'Rules are evaluated in order; first match routes to its pipeline. Fallback to the default pipeline above if none match.',
addRoutingRule: 'Add Rule',
ruleTypeLauncherType: 'Session Type',
ruleTypeLauncherId: 'Session ID',
ruleTypeMessageContent: 'Message Content',
operatorEq: 'Equals',
operatorNeq: 'Not Equals',
operatorContains: 'Contains',
operatorNotContains: 'Not Contains',
operatorStartsWith: 'Starts With',
operatorRegex: 'Regex',
operatorHas: 'Has',
operatorNotHas: 'Does not have',
ruleTypeMessageHasElement: 'Message Element',
ruleValueElementPlaceholder: 'Select element type',
elementImage: 'Image',
elementVoice: 'Voice',
elementFile: 'File',
elementForward: 'Forward',
elementFace: 'Emoji',
elementAt: '@Mention',
elementAtAll: '@All',
elementQuote: 'Quote',
ruleValuePlaceholder: 'Match value',
ruleValueLauncherIdPlaceholder: 'Group or user ID',
ruleValueMessagePlaceholder: 'Message text',
ruleValuePrefixPlaceholder: 'e.g. !draw',
ruleValueRegexpPlaceholder: 'e.g. ^/help',
pipelineDiscard: 'Discard Message',
sessionTypePerson: 'Private Chat',
sessionTypeGroup: 'Group Chat',
// Unified binding (replacing routing rules)
bindTarget: 'Bind Target',
bindTargetDescription:
'Select the Pipeline or Workflow to process messages for this bot',
bindingType: 'Binding Type',
selectBinding: 'Select binding target',
selectWorkflow: 'Select Workflow',
noPipelinesFound: 'No pipelines available',
noWorkflowsFound: 'No workflows available',
pipelineBindingHelp:
'Pipeline is the traditional message processing method using predefined stages.',
workflowBindingHelp:
'Workflow provides visual node orchestration for more flexible message processing.',
adapterConfigDescription: 'Configure the selected platform adapter',
dangerZone: 'Danger Zone',
dangerZoneDescription: 'Irreversible and destructive actions',
deleteBotAction: 'Delete this bot',
deleteBotHint:
'Once deleted, all associated configuration will be permanently removed.',
webhookUrl: 'Webhook Callback URL',
webhookUrlCopied: 'Webhook URL copied',
webhookUrlHint:
'Click the input to select all, then press Ctrl+C (Mac: Cmd+C) to copy, or click the button',
webhookUrlHintEither:
'Use either of the two URLs above in your platform configuration',
webhookSaasHint:
'Webhook requires a publicly accessible domain. LangBot Cloud provides a ready-to-use public endpoint for your bot.',
webhookSaasLink: 'Learn more about LangBot Cloud',
adapterCategory: {
popular: 'Popular',
china: 'China',
global: 'Global',
protocol: 'Protocol',
},
logLevel: 'Log Level',
allLevels: 'All Levels',
selectLevel: 'Select Level',
levelsSelected: 'levels selected',
viewDetailedLogs: 'View Detailed Logs',
viewDetails: 'Details',
collapse: 'Collapse',
imagesAttached: 'image(s) attached',
noLogs: 'No logs yet',
sessionMonitor: {
title: 'Sessions',
sessions: 'Sessions',
noSessions: 'No sessions found',
selectSession: 'Select a session to view messages',
noMessages: 'No messages in this session',
messages: 'messages',
messageCount: '{{count}} messages',
loading: 'Loading...',
loadingSessions: 'Loading sessions...',
loadingMessages: 'Loading messages...',
user: 'User',
variables: 'Variables',
platform: 'Platform',
lastActive: 'Last active',
refresh: 'Refresh',
active: 'Active',
inactive: 'Inactive',
discarded: 'Discarded',
userMessage: 'User',
botMessage: 'Assistant',
},
},
plugins: {
title: 'Extensions',
description:
'Install and configure plugins to extend functionality, please select them in the pipeline configuration',
createPlugin: 'Create Plugin',
editPlugin: 'Edit Plugin',
installed: 'Installed',
marketplace: 'Marketplace',
arrange: 'Sort Plugins',
install: 'Install',
installPlugin: 'Install Plugin',
onlySupportGithub: 'Currently only supports installation from GitHub',
enterGithubLink: 'Enter GitHub link of the plugin',
installing: 'Installing plugin...',
installSuccess: 'Plugin installed successfully',
installFailed: 'Plugin installation failed:',
searchPlugin: 'Search plugins',
sortBy: 'Sort by',
mostStars: 'Most stars',
recentlyAdded: 'Recently added',
recentlyUpdated: 'Recently updated',
noMatchingPlugins: 'No matching plugins found',
loading: 'Loading...',
getPluginListError: 'Failed to get plugin list:',
noPluginInstalled: 'No plugins installed',
pluginConfig: 'Plugin Configuration',
pluginSort: 'Plugin Sort',
pluginSortDescription:
'Plugin order affects the processing order within the same event, please drag the plugin card to sort',
pluginSortSuccess: 'Plugin sort successful',
pluginSortError: 'Plugin sort failed: ',
pluginNoConfig: 'The plugin has no configuration items.',
systemDisabled: 'Plugin System Disabled',
systemDisabledDesc:
'Plugin system is not enabled, please modify the configuration according to the documentation',
connectionError: 'Plugin System Connection Error',
connectionErrorDesc:
'Please check the plugin system configuration or contact the administrator.',
errorDetails: 'Error Details',
loadingStatus: 'Checking plugin system status...',
failedToGetStatus: 'Failed to get plugin system status',
pluginSystemNotReady:
'Plugin system is not ready, cannot perform this operation',
debugInfo: 'Debug Info',
debugInfoTitle: 'Plugin Debug Information',
debugUrl: 'Debug URL',
debugKey: 'Debug Key',
noDebugKey: '(Not Set)',
debugKeyDisabled:
'Debug key is not set, plugin debugging does not require authentication',
failedToGetDebugInfo: 'Failed to get debug information',
copiedToClipboard: 'Copied to clipboard',
deleting: 'Deleting...',
deletePlugin: 'Delete Plugin',
cancel: 'Cancel',
saveConfig: 'Save Config',
saving: 'Saving...',
confirmDeletePlugin:
'Are you sure you want to delete the plugin ({{author}}/{{name}})?',
deleteDataCheckbox:
'Also delete plugin configuration and persistence storage',
confirmDelete: 'Confirm Delete',
deleteError: 'Delete failed: ',
close: 'Close',
deleteConfirm: 'Delete Confirmation',
deleteSuccess: 'Delete successful',
modifyFailed: 'Modify failed: ',
componentName: {
Tool: 'Tool',
EventListener: 'Event Listener',
Command: 'Command',
KnowledgeEngine: 'Knowledge Engine',
Parser: 'Parser',
Page: 'Page',
},
uploadLocal: 'Upload Local',
debugging: 'Debugging',
uploadLocalPlugin: 'Upload Local Plugin',
dragToUpload: 'Drag plugin file here to upload',
unsupportedFileType:
'Unsupported file type, only .lbpkg and .zip files are supported',
uploadingPlugin: 'Uploading plugin...',
uploadSuccess: 'Upload successful',
uploadFailed: 'Upload failed',
selectFileToUpload: 'Select plugin file to upload',
askConfirm: 'Are you sure to install plugin "{{name}}" ({{version}})?',
fromGithub: 'From GitHub',
fromLocal: 'From Local',
fromMarketplace: 'From Marketplace',
componentsList: 'Components: ',
noComponents: 'No components',
delete: 'Delete Plugin',
update: 'Update Plugin',
new: 'New',
updateConfirm: 'Update Confirmation',
confirmUpdatePlugin:
'Are you sure you want to update the plugin ({{author}}/{{name}})?',
confirmUpdate: 'Confirm Update',
updating: 'Updating...',
updateSuccess: 'Plugin updated successfully',
updateError: 'Update failed: ',
saveConfigSuccessNormal: 'Configuration saved successfully',
saveConfigError: 'Configuration save failed: ',
config: 'Configuration',
readme: 'Documentation',
viewSource: 'View Source',
loadingReadme: 'Loading documentation...',
noReadme: 'This plugin does not provide README documentation',
fileUpload: {
tooLarge: 'File size exceeds 10MB limit',
success: 'File uploaded successfully',
failed: 'File upload failed',
uploading: 'Uploading...',
chooseFile: 'Choose File',
addFile: 'Add File',
},
installFromGithub: 'From GitHub',
enterRepoUrl: 'Enter GitHub repository URL',
repoUrlPlaceholder: 'e.g., https://github.com/owner/repo',
fetchingReleases: 'Fetching releases...',
selectRelease: 'Select Release',
noReleasesFound: 'No releases found',
fetchReleasesError: 'Failed to fetch releases: ',
selectAsset: 'Select file to install',
noAssetsFound: 'No .lbpkg files available in this release',
fetchAssetsError: 'Failed to fetch assets: ',
backToReleases: 'Back to releases',
backToRepoUrl: 'Back to repository URL',
backToAssets: 'Back to assets',
releaseTag: 'Tag: {{tag}}',
releaseName: 'Name: {{name}}',
publishedAt: 'Published at: {{date}}',
prerelease: 'Pre-release',
assetSize: 'Size: {{size}}',
confirmInstall: 'Confirm Install',
installFromGithubDesc: 'Install plugin from GitHub Release',
goToMarketplace: 'Go to Marketplace',
installProgress: {
title: 'Installing {{name}}',
titleGeneric: 'Plugin Installation',
overallProgress: 'Overall Progress',
downloading: 'Downloading Plugin',
installingDeps: 'Installing Dependencies',
initializing: 'Initializing Settings',
launching: 'Launching Plugin',
completed: 'Completed',
failed: 'Failed',
downloadSize: 'Package size: {{size}}',
depsInfo: '{{count}} dependencies to install',
depsProgress:
'{{installed}}/{{total}} installed · {{remaining}} remaining',
installComplete: 'Plugin installed successfully',
dismiss: 'Dismiss',
background: 'Run in Background',
taskQueue: 'Install Tasks',
clearCompleted: 'Clear Completed',
noTasks: 'No install tasks',
},
},
market: {
searchPlaceholder: 'Search plugins...',
searchResults: 'Found {{count}} plugins',
totalPlugins: 'Total {{count}} plugins',
noPlugins: 'No plugins available',
noResults: 'No relevant plugins found',
loadingMore: 'Loading more...',
loading: 'Loading...',
allLoaded: 'All plugins displayed',
install: 'Install',
installConfirm:
'Are you sure you want to install plugin "{{name}}" ({{version}})?',
downloadComplete: 'Plugin "{{name}}" download completed',
installFailed: 'Installation failed, please try again later',
loadFailed: 'Failed to get plugin list, please try again later',
noDescription: 'No description available',
notFound: 'Plugin information not found',
sortBy: 'Sort by',
sort: {
recentlyAdded: 'Recently Added',
recentlyUpdated: 'Recently Updated',
mostDownloads: 'Most Downloads',
leastDownloads: 'Least Downloads',
},
downloads: 'downloads',
download: 'Download',
repository: 'Repository',
downloadFailed: 'Download failed',
noReadme: 'This plugin does not provide README documentation',
description: 'Description',
tagLabel: 'Tags',
submissionTitle: 'You have a plugin submission under review: {{name}}',
submissionPending: 'Your plugin submission is under review: {{name}}',
submissionApproved: 'Your plugin submission has been approved: {{name}}',
submissionRejected: 'Your plugin submission has been rejected: {{name}}',
clickToRevoke: 'Revoke',
revokeSuccess: 'Revoke success',
revokeFailed: 'Revoke failed',
submissionDetails: 'Plugin Submission Details',
markAsRead: 'Mark as Read',
markAsReadSuccess: 'Marked as read',
markAsReadFailed: 'Mark as read failed',
filterByComponent: 'Component',
allComponents: 'All Components',
requestPlugin: 'Request Plugin',
viewDetails: 'View Details',
deprecated: 'Deprecated',
deprecatedTooltip:
'Please install the corresponding Knowledge Engine plugin.',
tags: {
filterByTags: 'Filter by Tags',
selected: 'selected',
selectTags: 'Select Tags',
clearAll: 'Clear All',
noTags: 'No tags available',
},
},
mcp: {
title: 'MCP',
createServer: 'Add MCP Server',
editServer: 'Edit MCP Server',
deleteServer: 'Delete MCP Server',
confirmDeleteServer: 'Are you sure you want to delete this MCP server?',
confirmDeleteTitle: 'Delete MCP Server',
getServerListError: 'Failed to get MCP server list: ',
serverName: 'Server Name',
serverMode: 'Connection Mode',
selectMode: 'Select Mode',
stdio: 'Stdio Mode',
sse: 'SSE Mode',
http: 'HTTP Mode',
noServerInstalled: 'No MCP servers configured',
serverNameRequired: 'Server name cannot be empty',
commandRequired: 'Command cannot be empty',
urlRequired: 'URL cannot be empty',
timeoutMustBePositive: 'Timeout must be a positive number',
command: 'Command',
args: 'Arguments',
env: 'Environment Variables',
url: 'URL',
headers: 'Headers',
timeout: 'Timeout',
addArgument: 'Add Argument',
addEnvVar: 'Add Environment Variable',
addHeader: 'Add Header',
keyName: 'Key Name',
value: 'Value',
testing: 'Testing...',
connecting: 'Connecting...',
testSuccess: 'Test successful',
testFailed: 'Test failed: ',
testError: 'Test error',
refreshSuccess: 'Refresh successful',
refreshFailed: 'Refresh failed: ',
connectionSuccess: 'Connection successful',
connectionFailed: 'Connection failed, please check URL',
connectionFailedStatus: 'Connection Failed',
toolsFound: 'tools',
unknownError: 'Unknown error',
noToolsFound: 'No tools found',
parseResultFailed: 'Failed to parse test result',
noResultReturned: 'Test returned no result',
getTaskFailed: 'Failed to get task status',
noTaskId: 'No task ID obtained',
deleteSuccess: 'Deleted successfully',
deleteFailed: 'Delete failed: ',
deleteError: 'Delete failed: ',
saveSuccess: 'Saved successfully',
saveError: 'Save failed: ',
createSuccess: 'Created successfully',
createFailed: 'Creation failed: ',
createError: 'Creation failed: ',
loadFailed: 'Load failed',
modifyFailed: 'Modify failed: ',
toolCount: 'Tools: {{count}}',
statusConnected: 'Connected',
statusDisconnected: 'Disconnected',
statusError: 'Connection Error',
statusDisabled: 'Disabled',
loading: 'Loading...',
starCount: 'Stars: {{count}}',
install: 'Install',
installFromGithub: 'Install MCP Server from GitHub',
add: 'Add',
name: 'Name',
nameRequired: 'Name cannot be empty',
sseTimeout: 'SSE Timeout',
sseTimeoutDescription: 'Timeout for establishing SSE connection',
extraParametersDescription:
'Additional parameters for configuring specific MCP server behavior',
timeoutMustBeNumber: 'Timeout must be a number',
timeoutNonNegative: 'Timeout cannot be negative',
sseTimeoutMustBeNumber: 'SSE timeout must be a number',
sseTimeoutNonNegative: 'SSE timeout cannot be negative',
updateSuccess: 'Updated successfully',
updateFailed: 'Update failed: ',
selectFromSidebar: 'Select an MCP server from the sidebar',
dangerZone: 'Danger Zone',
dangerZoneDescription:
'Irreversible and destructive actions for this MCP server.',
deleteMCPAction: 'Delete this MCP server',
deleteMCPHint:
'Once deleted, this MCP server configuration cannot be recovered.',
},
pipelines: {
title: 'Pipelines',
description:
'Pipelines define the processing flow for message events, used to bind to bots',
createPipeline: 'Create Pipeline',
selectFromSidebar: 'Select a pipeline from the sidebar',
editPipeline: 'Edit Pipeline',
chat: 'Chat',
configuration: 'Configuration',
debugChat: 'Debug Chat',
getPipelineListError: 'Failed to get pipeline list: ',
daysAgo: 'days ago',
today: 'Today',
updateTime: 'Updated ',
defaultBadge: 'Default',
sortBy: 'Sort by',
newestCreated: 'Newest Created',
earliestCreated: 'Earliest Created',
recentlyEdited: 'Recently Edited',
earliestEdited: 'Earliest Edited',
basicInfo: 'Basic Information',
basicInfoDescription: 'Set the pipeline name, icon and description',
aiCapabilities: 'AI',
triggerConditions: 'Trigger',
safetyControls: 'Safety',
outputProcessing: 'Output',
nameRequired: 'Name cannot be empty',
descriptionRequired: 'Description cannot be empty',
createSuccess: 'Created successfully. Please edit pipeline parameters',
createError: 'Creation failed: ',
saveSuccess: 'Saved successfully',
saveError: 'Save failed: ',
copySuffix: ' Copy',
deleteConfirmation:
'Are you sure you want to delete this pipeline? Bots bound to this pipeline will not work.',
defaultPipelineCannotDelete: 'Default pipeline cannot be deleted',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
copyConfirmTitle: 'Confirm Copy',
copyConfirmation:
'Are you sure you want to copy this pipeline? This will create a new pipeline with all configurations.',
unsavedChanges: 'You have unsaved changes',
dangerZone: 'Danger Zone',
dangerZoneDescription: 'Irreversible and destructive actions',
deletePipelineAction: 'Delete this pipeline',
deletePipelineHint:
'Once deleted, bots bound to this pipeline will stop working.',
copyPipelineAction: 'Copy this pipeline',
copyPipelineHint:
'Create a new pipeline with all configurations duplicated.',
extensions: {
title: 'Extensions',
loadError: 'Failed to load plugins',
saveSuccess: 'Saved successfully',
saveError: 'Save failed',
noPluginsAvailable: 'No plugins available',
disabled: 'Disabled',
noPluginsSelected: 'No plugins selected',
addPlugin: 'Add Plugin',
selectPlugins: 'Select Plugins',
pluginsTitle: 'Plugins',
mcpServersTitle: 'MCP Servers',
noMCPServersSelected: 'No MCP servers selected',
addMCPServer: 'Add MCP Server',
selectMCPServers: 'Select MCP Servers',
toolCount: '{{count}} tools',
noPluginsInstalled: 'No installed plugins',
noMCPServersConfigured: 'No configured MCP servers',
selectAll: 'Select All',
enableAllPlugins: 'Enable All Plugins',
enableAllMCPServers: 'Enable All MCP Servers',
allPluginsEnabled: 'All plugins enabled',
allMCPServersEnabled: 'All MCP servers enabled',
},
debugDialog: {
title: 'Pipeline Chat',
selectPipeline: 'Select Pipeline',
sessionType: 'Session Type',
privateChat: 'Private Chat',
groupChat: 'Group Chat',
send: 'Send',
reset: 'Reset Conversation',
inputPlaceholder: 'Send {{type}} message...',
noMessages: 'No messages',
userMessage: 'User',
botMessage: 'Bot',
sendFailed: 'Send failed',
resetSuccess: 'Conversation reset successfully',
resetFailed: 'Reset failed',
loadMessagesFailed: 'Failed to load messages',
loadPipelinesFailed: 'Failed to load pipelines',
atTips: 'Mention the bot',
streaming: 'Streaming',
streamOutput: 'Stream',
connected: 'WebSocket connected',
disconnected: 'WebSocket disconnected',
connectionError: 'WebSocket connection error',
connectionFailed: 'WebSocket connection failed',
notConnected: 'WebSocket not connected, please try again later',
imageUploadFailed: 'Image upload failed',
reply: 'Reply',
replyTo: 'Reply to',
showMarkdown: 'Show Markdown',
showRaw: 'Show Raw',
allMembers: 'All Members',
file: 'File',
voice: 'Voice',
uploadImage: 'Upload Image',
uploading: 'Uploading...',
},
monitoring: {
title: 'Dashboard',
description:
'View execution logs and errors for this pipeline (last 24 hours)',
detailedLogs: 'Detailed Logs',
},
},
knowledge: {
title: 'Knowledge',
createKnowledgeBase: 'Create Knowledge Base',
selectFromSidebar: 'Select a knowledge base from the sidebar',
editKnowledgeBase: 'Edit Knowledge Base',
selectKnowledgeBase: 'Select Knowledge Base',
selectKnowledgeBases: 'Select Knowledge Bases',
addKnowledgeBase: 'Add Knowledge Base',
noKnowledgeBaseSelected: 'No knowledge bases selected',
empty: 'Empty',
editDocument: 'Documents',
description: 'Configuring knowledge bases for improved LLM responses',
metadata: 'Metadata',
documents: 'Documents',
kbNameRequired: 'Knowledge base name cannot be empty',
kbDescriptionRequired: 'Knowledge base description cannot be empty',
embeddingModelUUIDRequired: 'Embedding model cannot be empty',
daysAgo: 'days ago',
today: 'Today',
kbName: 'Knowledge Base Name',
kbDescription: 'Knowledge Base Description',
topK: 'Top K',
topKRequired: 'Top K cannot be empty',
topKMax: 'Top K maximum value is 30',
topKdescription:
'Used to specify the number of relevant documents to retrieve, ranging from 1 to 30.',
defaultDescription: 'A knowledge base',
embeddingModelUUID: 'Embedding Model',
selectEmbeddingModel: 'Select Embedding Model',
embeddingModelDescription:
'Used to vectorize the text, you can configure it in the Models page',
updateTime: 'Updated ',
cannotChangeEmbeddingModel:
'Knowledge base created cannot be modified embedding model',
updateKnowledgeBaseSuccess: 'Knowledge base updated successfully',
updateKnowledgeBaseFailed: 'Knowledge base update failed: ',
documentsTab: {
name: 'Name',
status: 'Status',
noResults: 'No documents',
dragAndDrop: 'Drag and drop files here or click to upload',
uploading: 'Uploading...',
supportedFormats:
'Supports PDF, Word, TXT, Markdown, HTML, ZIP and other document formats',
uploadSuccess: 'File uploaded successfully!',
uploadError: 'File upload failed: ',
uploadingFile: 'Uploading file...',
fileSizeExceeded:
'File size exceeds 10MB limit. Please split into smaller files.',
actions: 'Actions',
delete: 'Delete File',
fileDeleteSuccess: 'File deleted successfully',
fileDeleteFailed: 'File deletion failed: ',
processing: 'Processing',
completed: 'Completed',
failed: 'Failed',
selectParser: 'Select Parser',
builtInParser: 'Provided by Knowledge engine',
noParserAvailable:
'No parser supports this file type. Please install a parser plugin that can handle this format.',
installParserHint: 'Browse parser plugins in Marketplace →',
confirmUpload: 'Upload',
cancelUpload: 'Cancel',
},
deleteKnowledgeBaseConfirmation:
'Are you sure you want to delete this knowledge base? All documents in this knowledge base will be deleted.',
retrieve: 'Retrieve Test',
retrieveTest: 'Retrieve Test',
query: 'Query',
queryPlaceholder: 'Enter query text...',
distance: 'Distance',
content: 'Content',
fileName: 'File Name',
noResults: 'No results',
retrieveError: 'Retrieve failed: ',
unknownEngine: 'Unknown Engine',
knowledgeEngine: 'Knowledge Engine',
knowledgeEngineRequired: 'Knowledge engine is required',
selectKnowledgeEngine: 'Select Knowledge Engine',
builtInEngine: 'Built-in Engine',
cannotChangeKnowledgeEngine:
'Knowledge engine cannot be changed after creation',
basicInfo: 'Basic Information',
basicInfoDescription: 'Set the knowledge base name, icon and description',
engineSettings: 'Engine Settings',
engineSettingsDescription:
'Configuration for the selected knowledge engine',
engineSettingsReadonly: 'read-only in edit mode',
retrievalSettings: 'Retrieval Settings',
retrievalSettingsDescription:
'Configure how documents are retrieved from this knowledge base',
dangerZone: 'Danger Zone',
dangerZoneDescription: 'Irreversible and destructive actions',
deleteKbAction: 'Delete this knowledge base',
deleteKbHint:
'Once deleted, all documents and data in this knowledge base will be permanently removed.',
noEnginesAvailable: 'No knowledge base engines available',
installEngineHint: 'Please install a "Knowledge Engine" plugin first',
createKnowledgeBaseFailed: 'Failed to create knowledge base: ',
loadKnowledgeBaseFailed: 'Failed to load knowledge base: ',
deleteKnowledgeBaseFailed: 'Failed to delete knowledge base: ',
getKnowledgeBaseListError: 'Failed to get knowledge base list: ',
embeddingModel: 'Embedding Model',
embeddingModelRequired: 'Embedding model is required for this engine',
addExternal: 'Add External Knowledge Base',
createExternalSuccess: 'External knowledge base created successfully',
updateExternalSuccess: 'External knowledge base updated successfully',
deleteExternalSuccess: 'External knowledge base deleted successfully',
retriever: 'Retriever',
selectRetriever: 'Select a retriever...',
retrieverConfiguration: 'Retriever Configuration',
retrieverInstallInfo: 'You can install Knowledge Retriever plugins from',
retrieverMarketLink: 'here',
migration: {
title: 'Knowledge Base Migration',
description:
'The new version has refactored the knowledge base into a plugin-based architecture, unifying built-in and external knowledge bases as "Knowledge Engine" plugins. Migration of legacy knowledge base data is required. Your old data has been automatically backed up in the database.',
detected:
'Found {{total}} knowledge base(s) to migrate ({{internal}} internal, {{external}} external).',
startWithInstall: 'Auto-install Plugin & Migrate',
startDataOnly: 'Migrate Data Only',
dataOnlyHint:
'"Migrate Data Only" is for offline/intranet environments. Please install the corresponding plugin manually after migration.',
dismiss: 'Discard Original Data',
running: 'Migrating knowledge bases, please wait...',
success: 'Knowledge base migration completed',
error: 'Knowledge base migration failed: ',
dismissError: 'Operation failed',
retry: 'Retry',
},
},
register: {
title: 'Initialize LangBot 👋',
description: 'This is your first time starting LangBot',
adminAccountNote:
'The account you use here will be set as the administrator account',
register: 'Register',
initWithSpace: 'Initialize with Space',
spaceRecommended:
'Recommended: Use official stable model APIs and cloud services',
spaceInfoTip1:
'Space provides unified account authentication services without uploading any of your sensitive information.',
spaceInfoTip2:
'Logging in with a Space account gives you access to LangBot Models and other cloud services, including free model call credits to help you get started quickly.',
spaceInfoTip3:
'Your login method does not affect other features. You can configure and use models from other sources at any time.',
registerLocal: 'Register local account',
registerWithPassword: 'Register with email and password',
initSuccess: 'Initialization successful, please login',
initFailed: 'Initialization failed: ',
},
resetPassword: {
title: 'Reset Password 🔐',
description:
'Enter your recovery key and new password to reset your account password',
recoveryKey: 'Recovery Key',
recoveryKeyDescription:
'Stored in `system.recovery_key` of config file `data/config.yaml`',
newPassword: 'New Password',
enterRecoveryKey: 'Enter recovery key',
enterNewPassword: 'Enter new password',
recoveryKeyRequired: 'Recovery key cannot be empty',
newPasswordRequired: 'New password cannot be empty',
resetPassword: 'Reset Password',
resetting: 'Resetting...',
resetSuccess: 'Password reset successfully, please login',
resetFailed:
'Password reset failed, please check your email and recovery key',
backToLogin: 'Back to Login',
},
embedding: {
description: 'Manage Embedding models for text vectorization',
createModel: 'Create Embedding Model',
editModel: 'Edit Embedding Model',
getModelListError: 'Failed to get Embedding model list: ',
embeddingModels: 'Embedding',
extraParametersDescription:
'Will be attached to the request body, such as encoding_format, dimensions, etc.',
},
llm: {
description: 'Manage LLM models for conversation generation',
llmModels: 'LLM',
extraParametersDescription:
'Will be attached to the request body, such as max_tokens, temperature, top_p, etc.',
},
version: {
newVersionAvailable: 'New Version Available',
viewUpdateGuide: 'View Update Guide',
noReleaseNotes: 'No release notes available',
},
account: {
settings: 'Account Settings',
setPassword: 'Set Password',
passwordSetSuccess: 'Password set successfully',
passwordStatus: 'Local Password',
passwordSet: 'Set',
passwordNotSet: 'Not Set',
passwordSetDescription:
'Password is set, you can login with email and password',
spaceStatus: 'Space Account',
spaceBound: 'Bound',
spaceNotBound: 'Not Bound',
spaceBoundDescription:
'Space account bound, official model APIs and cloud services available',
bindSpace: 'Bind Space Account',
bindSpaceDescription: 'Bind to use official model APIs and cloud services',
bindSpaceButton: 'Bind',
bindSpaceConfirmTitle: 'Confirm Binding',
bindSpaceConfirmDescription:
'You are about to bind your local instance to a Space account',
bindSpaceWarning:
'After binding, your login email will be changed from {{localEmail}} to the Space account email.',
bindSpaceSuccess: 'Space account bound successfully',
bindSpaceFailed: 'Failed to bind Space account',
bindSpaceInvalidState:
'Invalid bind request. Please try again from account settings.',
setPasswordHint: 'Set a password to login with email and password',
spaceEmailMismatch:
'Space login email does not match the local account email',
},
monitoring: {
title: 'Dashboard',
description: 'Monitor bot activities, LLM calls, and system performance',
overview: 'Overview',
totalMessages: 'Total Messages',
llmCallsCount: 'LLM Calls',
modelCallsCount: 'Model Calls',
successRate: 'Success Rate',
activeSessions: 'Active Sessions',
last24Hours: 'Last 24 hours',
filters: {
title: 'Filters',
bot: 'Bot',
pipeline: 'Pipeline',
allBots: 'All Bots',
selectBot: 'Select Bot',
allPipelines: 'All Pipelines',
selectPipeline: 'Select Pipeline',
loading: 'Loading...',
timeRange: 'Time Range',
customRange: 'Custom Range',
from: 'From',
to: 'To',
apply: 'Apply',
reset: 'Reset Filters',
lastHour: 'Last 1 hour',
last6Hours: 'Last 6 hours',
last24Hours: 'Last 24 hours',
last7Days: 'Last 7 days',
last30Days: 'Last 30 days',
},
tabs: {
messages: 'Message Records',
llmCalls: 'LLM Calls',
embeddingCalls: 'Embedding Calls',
modelCalls: 'Model Calls',
feedback: 'User Feedback',
sessions: 'Session Analysis',
errors: 'Error Logs',
},
messageList: {
timestamp: 'Timestamp',
bot: 'Bot',
pipeline: 'Pipeline',
message: 'Message',
sessionId: 'Session ID',
status: 'Status',
actions: 'Actions',
viewDetails: 'View Details',
copyId: 'Copy ID',
noMessages: 'No messages found',
noMessagesDescription: 'Try adjusting your filters or check back later',
loading: 'Loading messages...',
loadMore: 'Load More',
autoRefresh: 'Auto Refresh',
platform: 'Role',
user: 'User',
level: 'Level',
runner: 'Runner',
viewConversation: 'View Conversation',
},
llmCalls: {
title: 'LLM Calls',
model: 'Model',
tokens: 'Tokens',
duration: 'Duration',
cost: 'Cost',
noData: 'No LLM calls found',
inputTokens: 'Input Tokens',
outputTokens: 'Output Tokens',
totalTokens: 'Total Tokens',
avgDuration: 'Avg Duration',
calls: 'Calls',
},
embeddingCalls: {
title: 'Embedding Calls',
model: 'Model',
tokens: 'Tokens',
duration: 'Duration',
noData: 'No embedding calls found',
promptTokens: 'Prompt Tokens',
totalTokens: 'Total Tokens',
inputCount: 'Input Count',
knowledgeBase: 'Knowledge Base',
queryText: 'Query',
},
modelCalls: {
title: 'Model Calls',
llmModel: 'LLM',
embeddingModel: 'Embedding',
embeddingCall: 'Embedding',
retrieveCall: 'Retrieve',
noData: 'No model calls found',
},
sessions: {
sessionId: 'Session ID',
messageCount: 'Messages',
duration: 'Duration',
lastActivity: 'Last Activity',
noSessions: 'No sessions found',
startTime: 'Start Time',
messageStats: 'Message Statistics',
totalMessages: 'Total Messages',
successMessages: 'Successful',
errorMessages: 'Failed',
llmStats: 'LLM Statistics',
noData: 'Session not found',
},
errors: {
title: 'Errors',
errorType: 'Error Type',
errorMessage: 'Error Message',
occurredAt: 'Occurred At',
noErrors: 'No errors found',
stackTrace: 'Stack Trace',
},
feedback: {
title: 'User Feedback',
totalFeedback: 'Total Feedback',
totalLikes: 'Likes',
totalDislikes: 'Dislikes',
satisfactionRate: 'Satisfaction Rate',
like: 'Like',
dislike: 'Dislike',
noFeedback: 'No feedback yet',
noFeedbackDescription: 'User feedback will appear here',
feedbackList: 'Feedback List',
feedbackContent: 'Feedback Content',
contextInfo: 'Context Info',
userId: 'User ID',
messageId: 'Message ID',
streamId: 'Related Query ID',
inaccurateReasons: 'Inaccurate Reasons',
platform: 'Platform',
exportFeedback: 'Export Feedback',
},
queries: {
title: 'Queries',
},
messageDetails: {
noData: 'No LLM calls or errors for this query',
},
queryVariables: {
title: 'Query Variables',
},
trafficChart: {
title: 'Traffic Overview',
messages: 'Messages',
llmCalls: 'LLM Calls',
noData: 'No traffic data available',
},
viewMonitoring: 'View Monitoring',
refreshData: 'Refresh Data',
exportData: 'Export Data',
export: {
title: 'Export Data',
exporting: 'Exporting...',
messages: 'Messages',
llmCalls: 'LLM Calls',
embeddingCalls: 'Embedding Calls',
errors: 'Error Logs',
sessions: 'Sessions',
feedback: 'User Feedback',
},
},
storageAnalysis: {
title: 'Storage Analysis',
description: 'Inspect storage usage and cleanup candidates',
openDialog: 'View Analysis',
dialogTitle: 'Storage Analysis',
generatedAt: 'Generated at {{time}}',
loading: 'Loading...',
refresh: 'Refresh',
totalSize: 'Total size',
binaryStorage: 'Binary storage',
uploadCleanup: 'Expired uploads',
logCleanup: 'Expired logs',
sections: 'Storage sections',
monitoringTables: 'Monitoring tables',
runtimeTasks: 'Runtime tasks',
cleanupPolicy: 'Cleanup policy',
uploadRetention: 'Upload retention',
logRetention: 'Log retention',
databaseType: 'Database type',
days: 'days',
missing: 'Missing',
expiredUploads: 'Expired uploads',
expiredLogs: 'Expired logs',
noExpiredUploads: 'No expired uploaded files',
noExpiredLogs: 'No expired log files',
sectionNames: {
database: 'Database',
logs: 'Logs',
storage: 'Uploaded files',
vector_store: 'Vector store',
plugins: 'Plugins',
mcp: 'MCP',
temp: 'Temporary files',
},
},
limitation: {
maxBotsReached:
'Maximum number of bots ({{max}}) reached. Please remove an existing bot before creating a new one.',
maxPipelinesReached:
'Maximum number of pipelines ({{max}}) reached. Please remove an existing pipeline before creating a new one.',
maxExtensionsReached:
'Maximum number of extensions ({{max}}) reached. Please remove an existing MCP server or plugin before adding a new one.',
},
wizard: {
sidebarDescription: 'Create a bot with guided steps',
loading: 'Loading wizard...',
loadError: 'Failed to load wizard data',
skip: 'Skip',
skipConfirmMessage:
'You can re-enter the Quick Start wizard from the account menu later, or create a bot manually.',
skipConfirmOk: 'OK',
prev: 'Previous',
next: 'Next',
finish: 'Create & Deploy',
confirmCreateBot: 'Confirm, Create Bot',
createSuccess: 'Pipeline created and linked to bot successfully!',
botCreateSuccess: 'Bot created successfully!',
botSaveSuccess: 'Bot configuration saved and enabled!',
createError: 'Failed to create resources',
spaceAuthError: 'Failed to initiate Space authorization',
skipSaveError: 'Failed to save skip status. Please try again.',
completeSaveError: 'Failed to save completion status. Please try again.',
step: {
platform: 'Platform',
botConfig: 'Bot Setup',
aiEngine: 'AI Engine',
done: 'Done',
},
platform: {
title: 'Select a Platform',
description: 'Choose the messaging platform your bot will connect to.',
},
botConfig: {
title: 'Configure Your Bot',
description: 'Set up your bot and verify it works before continuing.',
saveBot: 'Save & Enable Bot',
resaveBot: 'Re-save Configuration',
botSaved:
'Bot configuration saved and enabled. Check the logs to verify the connection.',
logsTitle: 'Bot Logs',
logsDescription:
'Monitor bot activity to verify the platform connection is working.',
},
aiEngine: {
title: 'Select an AI Engine',
description:
"Choose the AI engine that will power your bot's intelligence.",
},
spaceBanner: {
message:
'Connect to LangBot Space for free trial model credits and zero-config instant setup!',
action: 'Authorize with Space',
},
config: {
botInfo: 'Bot Information',
botNamePlaceholder: 'Enter bot name',
botDescPlaceholder: 'Enter bot description (optional)',
platformConfig: '{{platform}} Configuration',
aiConfig: '{{engine}} Configuration',
},
done: {
title: 'All Set!',
description:
'Your bot has been created and connected to the AI pipeline. You can now manage it from the workbench.',
backToWorkbench: 'Back to Workbench',
},
},
workflows: {
title: 'Workflows',
description:
'Create and manage visual workflows for complex message processing logic',
createWorkflow: 'Create Workflow',
selectFromSidebar: 'Select a workflow from the sidebar',
editWorkflow: 'Edit Workflow',
newWorkflow: 'New Workflow',
getWorkflowListError: 'Failed to get workflow list: ',
workflowName: 'Workflow Name',
workflowDescription: 'Workflow Description',
workflowNameRequired: 'Workflow name is required',
defaultDescription: 'A workflow',
getWorkflowError: 'Failed to get workflow: ',
loadError: 'Failed to load workflow',
saveSuccess: 'Saved successfully',
saveError: 'Failed to save: ',
createSuccess: 'Workflow created successfully',
createError: 'Failed to create: ',
deleteSuccess: 'Deleted successfully',
deleteError: 'Failed to delete: ',
deleteConfirmation: 'Are you sure you want to delete this workflow?',
copySuccess: 'Copied successfully',
copyError: 'Failed to copy: ',
export: 'Export',
import: 'Import',
exportSuccess: 'Workflow exported',
importSuccess: 'Workflow imported',
importError: 'Import failed: Invalid file format',
publish: 'Publish',
publishSuccess: 'Published successfully',
publishError: 'Failed to publish',
configuration: 'Configuration',
executions: 'Executions',
editor: 'Editor',
debugChat: 'Debug Chat',
basicInfo: 'Basic Info',
basicInfoDesc: 'Set workflow name, icon and description',
basicInfoDescription: 'Set workflow name and description',
dangerZone: 'Danger Zone',
dangerZoneDesc: 'Irreversible operations',
dangerZoneDescription: 'Irreversible operations',
deleteWorkflowAction: 'Delete this workflow',
deleteWorkflowHint:
'Once deleted, all associated configurations will be permanently removed and cannot be recovered.',
deleteWorkflow: 'Delete Workflow',
deleteConfirm: 'Confirm Delete',
deleteConfirmDesc:
'Are you sure you want to delete workflow "{{name}}"? This action cannot be undone.',
// Form component
name: 'Name',
namePlaceholder: 'Enter workflow name',
descriptionPlaceholder: 'Enter workflow description (optional)',
enabled: 'Enabled',
enabledDesc: 'When enabled, the workflow can be triggered for execution',
loading: 'Loading...',
info: 'Workflow Info',
uuid: 'UUID',
version: 'Version',
createdAt: 'Created At',
updatedAt: 'Updated At',
// Executions tab
totalExecutions: '{{count}} execution(s) total',
statistics: 'Monitoring Logs',
monitoringDescription: 'View run history and errors for this workflow (last 24 hours)',
monitoringTotalMessages: 'Total Messages',
monitoringErrorLogs: 'Error Logs',
successfulCount: '{{count}} successful',
successRate: 'Success Rate',
averageDuration: 'Avg. Duration',
perExecution: 'per execution',
failedExecutions: 'Failed',
lastExecution: 'Last run',
filterByStatus: 'Filter by status',
allStatuses: 'All statuses',
manualTrigger: 'Manual Trigger',
executionId: 'Execution ID',
status: 'Status',
triggerType: 'Trigger Type',
startedAt: 'Started At',
duration: 'Duration',
noExecutions: 'No executions yet',
executionDetails: 'Execution Details',
error: 'Error',
nodeExecutions: 'Node Executions',
result: 'Result',
'status.pending': 'Pending',
'status.running': 'Running',
'status.completed': 'Completed',
'status.failed': 'Failed',
'status.cancelled': 'Cancelled',
// Editor component translations
nodePalette: 'Node Palette',
properties: 'Properties',
zoomIn: 'Zoom In',
zoomOut: 'Zoom Out',
fitView: 'Fit View',
unsavedChanges: 'Unsaved changes',
paste: 'Paste',
deleted: 'Deleted',
nothingToCopy: 'No nodes selected to copy',
nothingToPaste: 'Clipboard is empty',
copied: 'Copied {{count}} node(s)',
pasted: 'Pasted {{count}} node(s)',
nodesSelected: '{{count}} node(s) selected',
edgesSelected: '{{count}} edge(s) selected',
// Node palette
searchNodes: 'Search nodes...',
loadingNodeTypes: 'Loading node types...',
noNodesFound: 'No matching nodes found',
clearSearch: 'Clear search',
dragToAdd: 'Drag nodes to add to canvas',
// Property panel
selectNodeOrEdge: 'Select a node or edge',
selectNodeOrEdgeHint:
'Click on a node or edge in the canvas to view and edit its properties',
edgeProperties: 'Edge Properties',
nodeProperties: 'Node Properties',
condition: 'Condition',
hasCondition: 'Set',
conditionPlaceholder:
'Enter condition expression, e.g. output.success == true',
conditionHelp:
'When condition is empty, this edge will always be executed. Use {{variable}} to reference context variables.',
deleteEdge: 'Delete Edge',
deleteEdgeConfirm: 'Confirm Delete Edge',
deleteEdgeConfirmDesc: 'This edge will be permanently removed.',
nodeLabel: 'Node Label',
nodeLabelPlaceholder: 'Enter node display name',
nodeId: 'Node ID',
inputOutputVariables: 'Input/Output Variables',
inputs: 'Inputs',
outputs: 'Outputs',
availableVariables: 'Available Variables',
globalVariables: 'Global Variables',
messageContent: 'Message Content',
messageSender: 'Sender',
platform: 'Platform',
sessionId: 'Session ID',
timestamp: 'Timestamp',
nodeConfig: 'Node Configuration',
noConfigOptions: 'No configuration options for this node type',
deleteNode: 'Delete Node',
deleteNodeConfirm: 'Confirm Delete Node',
deleteNodeConfirmDesc:
'This node and all its connections will be permanently removed.',
// Node inputs/outputs i18n (for port labels)
nodeInputs: {
// Common inputs
input: 'Input',
message: 'Message',
text: 'Text',
query: 'Query',
data: 'Data',
condition: 'Condition',
value: 'Value',
// Trigger inputs
content: 'Content',
context: 'Context',
body: 'Request Body',
variables: 'Variables',
items: 'Items',
arguments: 'Arguments',
// AI/Process inputs
question: 'Question',
parameters: 'Parameters',
key: 'Key',
payload: 'Payload',
input_value: 'Input Value',
conversation_id: 'Conversation ID',
// Control inputs
case_1: 'Case 1',
case_2: 'Case 2',
branch_1: 'Branch 1',
branch_2: 'Branch 2',
// Action inputs
notification_id: 'Notification ID',
// Integration inputs
key_template: 'Key Template',
hash_field: 'Hash Field',
server_name: 'Server Name',
tool_name: 'Tool Name',
arguments_template: 'Arguments Template',
scope: 'Scope',
},
// Data type labels
'type.string': 'String',
'type.object': 'Object',
'type.array': 'Array',
'type.boolean': 'Boolean',
'type.number': 'Number',
'type.any': 'Any',
'type.datetime': 'DateTime',
nodes: {
trigger: 'Triggers',
triggerDescription: 'Starting nodes for workflows',
messageTrigger: 'Message Trigger',
messageTriggerDescription: 'Triggered when a message is received',
scheduleTrigger: 'Schedule Trigger',
scheduleTriggerDescription: 'Triggered on a schedule',
cronTrigger: 'Cron Trigger',
cronTriggerDescription: 'Trigger workflow on a scheduled time',
webhookTrigger: 'Webhook Trigger',
webhookTriggerDescription: 'Triggered via HTTP request',
eventTrigger: 'Event Trigger',
eventTriggerDescription: 'Triggered on system events',
process: 'AI/Process',
processDescription: 'Data processing nodes',
aiProcess: 'AI Processing',
aiProcessDescription: 'Process messages using AI models',
llmCall: 'LLM Call',
llmCallDescription:
'Invoke large language model for conversation or generation',
codeProcess: 'Code Processing',
codeProcessDescription: 'Execute custom code',
codeExecutor: 'Code Executor',
codeExecutorDescription: 'Execute Python/JavaScript code',
templateProcess: 'Template Processing',
templateProcessDescription: 'Format output using templates',
httpRequest: 'HTTP Request',
httpRequestDescription: 'Send HTTP requests',
dataTransform: 'Data Transform',
dataTransformDescription: 'Transform data format',
questionClassifier: 'Question Classifier',
questionClassifierDescription:
'Classify user questions into predefined categories using LLM',
parameterExtractor: 'Parameter Extractor',
parameterExtractorDescription:
'Extract structured parameters from text using LLM',
knowledgeRetrieval: 'Knowledge Retrieval',
knowledgeRetrievalDescription:
'Retrieve relevant content from knowledge base',
textTemplate: 'Text Template',
textTemplateDescription:
'Generate text using templates with variable interpolation',
jsonTransform: 'JSON Transform',
jsonTransformDescription: 'Transform JSON data using expressions',
dataAggregator: 'Data Aggregator',
dataAggregatorDescription: 'Aggregate data from multiple sources',
textSplitter: 'Text Splitter',
textSplitterDescription: 'Split text into smaller chunks',
variableAssignment: 'Variable Assignment',
variableAssignmentDescription: 'Assign values to workflow variables',
control: 'Control Flow',
controlDescription: 'Flow control nodes',
condition: 'Condition Branch',
conditionDescription: 'Branch based on conditions',
switch: 'Switch',
switchDescription: 'Multi-way branching',
loop: 'Loop',
loopDescription: 'Repeat execution',
iterator: 'Iterator',
iteratorDescription: 'Iterate over array elements',
parallel: 'Parallel',
parallelDescription: 'Execute multiple branches in parallel',
wait: 'Wait',
waitDescription: 'Wait for specified time',
delay: 'Delay',
delayDescription: 'Wait for a specified time',
merge: 'Merge',
mergeDescription: 'Merge multiple branches',
variableAggregator: 'Variable Aggregator',
variableAggregatorDescription:
'Aggregate variable outputs from multiple branches',
action: 'Actions',
actionDescription: 'Action execution nodes',
sendMessage: 'Send Message',
sendMessageDescription: 'Send message to platform',
replyMessage: 'Reply Message',
replyMessageDescription:
'Reply to the message that triggered the workflow',
storeData: 'Store Data',
storeDataDescription: 'Store data to database',
callPipeline: 'Call Pipeline',
callPipelineDescription: 'Call an existing Pipeline',
setVariable: 'Set Variable',
setVariableDescription: 'Set context variable',
openingStatement: 'Opening Statement',
openingStatementDescription:
'Provide conversation opener and suggested questions',
end: 'End',
endDescription: 'Mark the end of workflow execution',
log: 'Log',
logDescription: 'Record log information',
integration: 'Integration',
integrationDescription: 'Third-party platform integration nodes',
difyWorkflow: 'Dify Workflow',
difyWorkflowDescription: 'Call Dify platform workflow',
difyKnowledgeQuery: 'Dify Knowledge Query',
difyKnowledgeQueryDescription: 'Query Dify knowledge base',
n8nWorkflow: 'N8n Workflow',
n8nWorkflowDescription: 'Call n8n workflow',
langflowFlow: 'Langflow Flow',
langflowFlowDescription: 'Call Langflow flow',
cozeBot: 'Coze Bot',
cozeBotDescription: 'Call Coze Bot',
// Data & Tools integration nodes
databaseQuery: 'Database Query',
databaseQueryDescription: 'Execute database queries',
redisOperation: 'Redis Operation',
redisOperationDescription: 'Perform Redis cache operations',
mcpTool: 'MCP Tool',
mcpToolDescription: 'Invoke an MCP tool',
memoryStore: 'Memory Store',
memoryStoreDescription: 'Store and retrieve data from workflow memory',
},
executionHistory: {
title: 'Execution History',
noExecutions: 'No executions yet',
status: 'Status',
startTime: 'Start Time',
duration: 'Duration',
running: 'Running',
completed: 'Completed',
failed: 'Failed',
cancelled: 'Cancelled',
viewDetails: 'View Details',
cancel: 'Cancel Execution',
retry: 'Retry',
nodeResults: 'Node Execution Results',
},
versions: {
title: 'Version History',
current: 'Current Version',
rollback: 'Rollback to this version',
rollbackConfirm:
'Are you sure you want to rollback to this version? Current changes will be lost.',
rollbackSuccess: 'Rollback successful',
rollbackError: 'Failed to rollback: ',
},
// Debug and monitoring
debug: {
title: 'Debug',
mode: 'Debug Mode',
panel: 'Debug Panel',
start: 'Start Debug',
pause: 'Pause',
resume: 'Resume',
step: 'Step',
stop: 'Stop',
context: 'Debug Context',
messageContent: 'Simulated Message',
messageContentPlaceholder: 'Enter the message content to simulate',
senderId: 'Sender ID',
senderIdPlaceholder: 'Sender unique identifier',
senderName: 'Sender Name',
senderNamePlaceholder: 'Sender display name',
platform: 'Platform',
platformPlaceholder: 'e.g. qq, wechat, telegram',
conversationId: 'Conversation ID',
conversationIdPlaceholder: 'Conversation unique identifier',
isGroup: 'Group Chat',
customVariables: 'Custom Variables',
customVariablesDesc: 'Add custom variables for debugging',
variableKey: 'Variable Name',
variableValue: 'Variable Value',
addVariable: 'Add Variable',
variables: 'Watched Variables',
watchedVariables: 'Watched Variables',
noWatchedVariables: 'No watched variables',
addWatchVariable: 'Add Watch',
nodeStates: 'Node States',
nodeOutputs: 'Node Outputs',
noNodeOutputs: 'No node outputs yet',
toggleBreakpoint: 'Toggle Breakpoint',
clearBreakpoints: 'Clear All Breakpoints',
breakpointSet: 'Breakpoint set',
breakpointRemoved: 'Breakpoint removed',
logs: 'Debug Logs',
noLogs: 'No logs yet',
clearLogs: 'Clear Logs',
autoScroll: 'Auto Scroll',
logEntries: 'log entries',
resetContext: 'Reset Context',
// Debug execution messages
starting: 'Starting debug execution...',
started: 'Debug execution started (ID: {{id}})',
startError: 'Failed to start debug',
completed: 'Debug execution completed',
unknownError: 'Unknown error',
paused: 'Execution paused',
pauseError: 'Failed to pause',
resumed: 'Execution resumed',
resumeError: 'Failed to resume',
steppedTo: 'Stepped to node: {{node}}',
stepError: 'Failed to step',
stopped: 'Debug stopped',
stopError: 'Failed to stop',
},
debugMode: 'Debug Mode',
debugPanel: 'Debug Panel',
startDebug: 'Start Debug',
pauseDebug: 'Pause',
resumeDebug: 'Resume',
stepDebug: 'Step',
stopDebug: 'Stop',
debugContext: 'Debug Context',
simulatedMessage: 'Simulated Message',
simulatedMessagePlaceholder: 'Enter the message content to simulate',
senderId: 'Sender ID',
senderIdPlaceholder: 'Sender unique identifier',
senderName: 'Sender Name',
senderNamePlaceholder: 'Sender display name',
conversationId: 'Conversation ID',
conversationIdPlaceholder: 'Conversation unique identifier',
isGroup: 'Group Chat',
customVariables: 'Custom Variables',
addVariable: 'Add Variable',
variableName: 'Variable Name',
variableValue: 'Variable Value',
watchedVariables: 'Watched Variables',
addWatchVariable: 'Add Watch',
nodeStates: 'Node States',
breakpoints: 'Breakpoints',
toggleBreakpoint: 'Toggle Breakpoint',
breakpointSet: 'Breakpoint set',
breakpointRemoved: 'Breakpoint removed',
debugLogs: 'Debug Logs',
noLogs: 'No logs yet',
clearLogs: 'Clear Logs',
autoScroll: 'Auto Scroll',
debugState: {
idle: 'Idle',
running: 'Running',
paused: 'Paused',
completed: 'Completed',
error: 'Error',
},
nodeStatus: {
pending: 'Pending',
running: 'Running',
completed: 'Completed',
failed: 'Failed',
skipped: 'Skipped',
},
debugDialog: {
title: 'Workflow Chat',
selectWorkflow: 'Select Workflow',
sessionType: 'Session Type',
privateChat: 'Private Chat',
groupChat: 'Group Chat',
send: 'Send',
reset: 'Reset Conversation',
inputPlaceholder: 'Send {{type}} message...',
noMessages: 'No messages',
userMessage: 'User',
botMessage: 'Bot',
sendFailed: 'Send failed',
resetSuccess: 'Conversation reset successfully',
resetFailed: 'Reset failed',
loadMessagesFailed: 'Failed to load messages',
loadWorkflowsFailed: 'Failed to load workflows',
atTips: 'Mention bot',
streaming: 'Streaming',
streamOutput: 'Stream',
connected: 'WebSocket connected',
disconnected: 'WebSocket disconnected',
connectionError: 'WebSocket connection error',
connectionFailed: 'WebSocket connection failed',
notConnected: 'WebSocket not connected, please try again later',
imageUploadFailed: 'Image upload failed',
reply: 'Reply',
replyTo: 'Reply to',
showMarkdown: 'Render',
showRaw: 'Raw',
allMembers: 'All Members',
file: 'File',
voice: 'Voice',
uploadImage: 'Upload Image',
uploading: 'Uploading...',
},
// Execution history and monitoring
filterByDate: 'Filter by Date',
allTime: 'All Time',
today: 'Today',
lastWeek: 'Last Week',
lastMonth: 'Last Month',
showingExecutions: 'Showing {{shown}} / {{total}} executions',
rerun: 'Rerun',
rerunExecution: 'Rerun Execution',
logs: 'Logs',
details: 'Details',
completedAt: 'Completed At',
noNodeExecutions: 'No node executions yet',
// Node config field labels (used by DynamicFormComponent)
nodeConfigFields: {
// trigger.py - MessageTriggerNode
conditions: 'Trigger Conditions',
keyword_filter: 'Keyword Filter',
regex_filter: 'Regex Filter',
min_length: 'Min Length',
max_length: 'Max Length',
require_mention: 'Require Mention',
respond_rules: 'Group Respond Rules',
access_control: 'Access Control',
// trigger.py - CronTriggerNode
cron: 'Cron Expression',
timezone: 'Timezone',
// trigger.py - WebhookTriggerNode
path: 'Webhook Path',
allowed_methods: 'Allowed HTTP Methods',
content_type: 'Content-Type',
auth_type: 'Authentication Type',
auth_key: 'Auth Key',
validation: 'Request Validation',
timeout: 'Timeout',
// trigger.py - EventTriggerNode
event_types: 'Event Types',
filter: 'Event Filter',
debounce_ms: 'Debounce Time',
// process.py - LLMCallNode
model: 'Model',
prompt_template: 'Prompt Template',
system_prompt: 'System Prompt',
temperature: 'Temperature',
top_p: 'Top P',
frequency_penalty: 'Frequency Penalty',
presence_penalty: 'Presence Penalty',
max_tokens: 'Max Tokens',
stop_sequences: 'Stop Sequences',
seed: 'Random Seed',
stream: 'Stream Output',
use_conversation_history: 'Use Conversation History',
// process.py - CodeExecutorNode
language: 'Programming Language',
code: 'Code',
// process.py - HTTPRequestNode
url: 'Request URL',
method: 'Request Method',
auth_config: 'Auth Configuration',
// process.py - DataTransformNode
transform_type: 'Transform Type',
template: 'Template',
expression: 'Expression',
output_type: 'Output Type',
// process.py - QuestionClassifierNode
categories: 'Categories',
instruction: 'Instruction',
// process.py - ParameterExtractorNode
parameters: 'Parameter Definitions',
// process.py - KnowledgeRetrievalNode
knowledge_bases: 'Knowledge Bases',
top_k: 'Top K Results',
score_threshold: 'Score Threshold',
search_method: 'Search Method',
enable_citations: 'Enable Citations',
// control.py - ConditionNode
condition_type: 'Condition Type',
condition_expression: 'Condition Expression',
left_value: 'Left Value',
operator: 'Comparison Operator',
right_value: 'Right Value',
// control.py - SwitchNode
cases: 'Branch Cases',
// control.py - LoopNode
max_iterations: 'Max Iterations',
break_condition: 'Break Condition',
// control.py - IteratorNode
parallel: 'Parallel Processing',
max_concurrency: 'Max Concurrency',
// control.py - ParallelNode
branches: 'Branch Configuration',
wait_all: 'Wait All',
fail_fast: 'Fail Fast',
// control.py - WaitNode
duration: 'Duration',
duration_type: 'Time Unit',
// control.py - MergeNode
merge_strategy: 'Merge Strategy',
// control.py - VariableAggregatorNode
variable_mappings: 'Variable Mappings',
aggregation_mode: 'Aggregation Mode',
// action.py - SendMessageNode
target_type: 'Target Type',
target_id: 'Target ID',
platform: 'Platform',
message_type: 'Message Type',
// action.py - ReplyMessageNode
reply_mode: 'Reply Mode',
message_template: 'Message Template',
long_text_processing: 'Long Text Processing',
force_delay: 'Force Delay',
// action.py - CallPipelineNode
pipeline_uuid: 'Pipeline',
inherit_context: 'Inherit Context',
// action.py - StoreDataNode
storage_type: 'Storage Type',
ttl: 'TTL',
key_prefix: 'Key Prefix',
// action.py - SetVariableNode
variable_name: 'Variable Name',
variable_scope: 'Variable Scope',
set_variable_operation: 'Operation Type',
// action.py - OpeningStatementNode
statement: 'Opening Statement',
suggested_questions: 'Suggested Questions',
show_suggestions: 'Show Suggestions',
// action.py - EndNode
output_format: 'Output Format',
success_message: 'Success Message',
// integration.py - DatabaseQueryNode
connection_type: 'Database Type',
connection_string: 'Connection String',
query: 'SQL Query',
query_type: 'Query Type',
// integration.py - RedisOperationNode
connection_url: 'Connection URL',
operation: 'Operation Type',
key_template: 'Key Template',
hash_field: 'Hash Field',
// integration.py - MCPToolNode
server_name: 'Server Name',
tool_name: 'Tool Name',
arguments_template: 'Arguments Template',
// integration.py - MemoryStoreNode
scope: 'Scope',
// integration.py - DifyWorkflowNode
'base-url': 'Base URL',
'api-key': 'API Key',
'app-type': 'App Type',
// integration.py - DifyKnowledgeQueryNode
dataset_id: 'Dataset ID',
// integration.py - N8nWorkflowNode
'webhook-url': 'Webhook URL',
// integration.py - LangflowFlowNode
'flow-id': 'Flow ID',
// integration.py - CozeBotNode
'bot-id': 'Bot ID',
'api-base': 'API Base URL',
},
// Node outputs i18n
nodeOutputs: {
// ===== Common Outputs =====
output: 'Output',
result: 'Result',
data: 'Data',
error: 'Error',
success: 'Success',
// ===== Trigger Nodes =====
// trigger.py - MessageTriggerNode
message: 'Message Content',
sender: 'Sender',
sender_id: 'Sender ID',
sender_name: 'Sender Name',
platform: 'Platform',
conversation_id: 'Conversation ID',
is_group: 'Is Group Chat',
context: 'Full Message Context',
event: 'Event',
// trigger.py - CronTriggerNode
timestamp: 'Trigger Time',
trigger_time: 'Trigger Time',
schedule: 'Trigger Schedule',
cron_timestamp: 'Cron Timestamp',
cron_schedule: 'Cron Schedule',
cron_context: 'Cron Context',
// trigger.py - WebhookTriggerNode
body: 'Request Body',
headers: 'Request Headers',
query: 'Query Parameters',
query_params: 'Query Parameters',
method: 'Request Method',
webhook_body: 'Webhook Body',
webhook_headers: 'Webhook Headers',
webhook_query: 'Webhook Query',
webhook_method: 'Webhook Method',
// trigger.py - EventTriggerNode
event_type: 'Event Type',
event_data: 'Event Data',
event_timestamp: 'Event Timestamp',
// process.py - LLMCallNode
response: 'Model Response',
usage: 'Token Usage Statistics',
prompt: 'Prompt/Question',
context_info: 'Context Information',
// process.py - CodeExecutorNode
console: 'Console Output',
code_input: 'Code Input',
code_output: 'Code Output',
logs: 'Logs',
// process.py - HTTPRequestNode
status_code: 'Status Code',
http_body: 'HTTP Body',
http_headers: 'HTTP Headers',
http_response: 'HTTP Response',
response_headers: 'Response Headers',
// process.py - DataTransformNode
transform_input: 'Transform Input',
transform_result: 'Transform Result',
// process.py - QuestionClassifierNode
category: 'Category Result',
confidence: 'Confidence',
all_scores: 'All Category Scores',
scores: 'Scores',
question: 'User Question',
// process.py - ParameterExtractorNode
parameters: 'Extracted Parameters',
extraction_success: 'Extraction Success',
extract_text: 'Input Text',
missing: 'Missing Parameters',
parsed: 'Parsed Result',
// process.py - KnowledgeRetrievalNode
documents: 'Retrieved Documents',
citations: 'Citation Information',
knowledge_context: 'Merged Context',
knowledge_query: 'Retrieval Query',
chunks: 'Text Chunks',
text: 'Text',
// control.py - ConditionNode
true: 'True Branch Output',
false: 'False Branch Output',
condition_input: 'Condition Input',
// control.py - SwitchNode
matched_case: 'Matched Branch Output',
default: 'Default Branch Output',
switch_input: 'Switch Input',
case_1: 'Case 1',
case_2: 'Case 2',
// control.py - LoopNode
item: 'Current Item',
index: 'Current Index',
results: 'All Iteration Results',
completed: 'Is Completed',
loop_items: 'Items to Iterate',
count: 'Count',
// control.py - IteratorNode
is_first: 'Is First',
is_last: 'Is Last',
iterator_array: 'Input Array',
iterator_item: 'Current Element',
iterator_index: 'Current Index',
// control.py - ParallelNode
errors: 'Error List',
parallel_input: 'Parallel Input',
parallel_results: 'All Branch Results',
// control.py - WaitNode
wait_input: 'Passthrough Input',
wait_output: 'Passthrough Output',
// control.py - MergeNode
merged: 'Merged Result',
merge_array: 'Array Result',
merge_input_1: 'Input 1',
merge_input_2: 'Input 2',
merge_input_3: 'Input 3',
merge_input_4: 'Input 4',
branch_1: 'Branch 1 Output',
branch_2: 'Branch 2 Output',
// control.py - VariableAggregatorNode
aggregated: 'Aggregated Variables',
aggregator_variables: 'Variable Input',
// action.py - SendMessageNode
status: 'Send Status',
message_id: 'Message ID',
target: 'Target ID',
execution_id: 'Execution ID',
notification_id: 'Notification ID',
// action.py - ReplyMessageNode
reply_message: 'Reply Content',
// action.py - CallPipelineNode
pipeline_response: 'Pipeline Response',
pipeline_result: 'Full Result',
pipeline_query: 'Query Content',
context_data: 'Context Data',
// action.py - StoreDataNode
store_status: 'Store Status',
store_key: 'Store Key',
store_value: 'Store Value',
// action.py - SetVariableNode
variable_value: 'Variable Value',
variable_result: 'Set Variable Result',
// action.py - OpeningStatementNode
statement: 'Opening Statement',
suggested_questions: 'Suggested Questions',
suggestions: 'Suggestions',
// action.py - EndNode
workflow_output: 'Workflow Output',
final_result: 'Final Result',
// integration.py - DatabaseQueryNode
query_results: 'Query Results',
row_count: 'Affected/Returned Rows',
query_success: 'Query Success',
// integration.py - RedisOperationNode
redis_result: 'Operation Result',
redis_success: 'Operation Success',
redis_key: 'Redis Key',
redis_value: 'Redis Value',
plugin_input: 'Plugin Input',
// integration.py - MCPToolNode
tool_result: 'Tool Execution Result',
tool_success: 'Tool Call Success',
mcp_arguments: 'Tool Arguments',
// integration.py - MemoryStoreNode
memory_result: 'Retrieved/Stored Value',
memory_success: 'Operation Success',
memory_value: 'Value to Store',
// integration.py - DifyWorkflowNode
answer: 'Dify Answer',
dify_success: 'Call Success',
dify_query: 'User Input/Query',
dify_conversation_id: 'Conversation ID',
// integration.py - DifyKnowledgeQueryNode
search_results: 'Search Results',
knowledge_base_query: 'Query Content',
// integration.py - N8nWorkflowNode
n8n_result: 'Workflow Execution Result',
n8n_success: 'Call Success',
n8n_payload: 'Workflow Input Data',
// integration.py - LangflowFlowNode
flow_result: 'Flow Execution Result',
flow_success: 'Call Success',
langflow_input: 'Input Content',
// integration.py - CozeBotNode
bot_answer: 'Bot Reply',
bot_success: 'Call Success',
coze_query: 'User Input/Query',
coze_conversation_id: 'Conversation ID',
bot_conversation_id: 'Conversation ID',
// ===== Additional Keys =====
embedding: 'Embedding',
dimensions: 'Dimensions',
intent: 'Intent',
entities: 'Entities',
},
},
unifiedBinding: {
bindingType: 'Binding Type',
pipeline: 'Pipeline',
workflow: 'Workflow',
pipelineDescription: 'Process messages using traditional pipeline',
workflowDescription: 'Process messages using visual workflow',
selectPipeline: 'Select Pipeline',
selectWorkflow: 'Select Workflow',
noPipelines: 'No pipelines available',
noWorkflows: 'No workflows available',
createPipeline: 'Create Pipeline',
createWorkflow: 'Create Workflow',
},
pluginPages: {
selectFromSidebar: 'Select a plugin page from the sidebar',
invalidPage: 'Invalid plugin page',
},
};
export default enUS;