Files
Memoh/packages/web/src/i18n/locales/en.json
T
BBQ bf0eeb0e80 feat(search): add 8 new search providers (#135)
* feat(search): add Sogou search provider

* fix(search): use new endpoint and API version for sogou

* feat(search): add Serper, SearXNG, Jina, Exa, Bocha, DuckDuckGo search providers

Add six new search provider integrations:
- Serper: Google search via Serper API
- SearXNG: Self-hosted meta search engine
- Jina: Jina AI search API
- Exa: Exa neural search API
- Bocha: Bocha AI web search
- DuckDuckGo: DuckDuckGo HTML search (no API key required)

Each provider includes backend implementation, config schema,
i18n entries, and Vue settings component.

* feat(search): add Yandex search provider

Add Yandex search provider with XML response parsing and
configurable search type (RU/TR/COM).

---------

Co-authored-by: Menci <mencici@msn.com>
2026-02-27 00:00:44 +08:00

552 lines
20 KiB
JSON

{
"common": {
"confirm": "Confirm",
"cancel": "Cancel",
"back": "Back",
"save": "Save",
"add": "Add",
"edit": "Edit",
"delete": "Delete",
"search": "Search",
"loading": "Loading...",
"operation": "Actions",
"enable": "Enable",
"optional": "optional",
"import": "Import",
"export": "Export",
"copy": "Copy",
"copied": "Copied to clipboard",
"tabAddSingle": "Add single",
"tabImportJson": "Import JSON",
"copyAsJson": "Copy as JSON",
"fillForm": "Fill form",
"batchSelected": "{count} selected",
"batchDelete": "Batch delete",
"batchDeleteConfirm": "Delete {count} selected item(s)?",
"batchExport": "Batch export",
"cancelSelection": "Cancel selection",
"name": "Name",
"namePlaceholder": "Enter name",
"type": "Type",
"typePlaceholder": "Select type",
"refresh": "Refresh",
"status": "Status",
"loadFailed": "Failed to load",
"saveFailed": "Failed to save",
"createdAt": "Created at",
"none": "None"
},
"auth": {
"welcome": "Welcome Back",
"username": "Username",
"password": "Password",
"login": "Sign In",
"register": "Sign Up",
"forgotPassword": "Forgot password?",
"logout": "Sign Out",
"logoutConfirm": "Are you sure you want to sign out?",
"loginFailed": "Login failed",
"invalidCredentials": "Invalid username or password",
"retryHint": "Please check and try again"
},
"sidebar": {
"chat": "Chat",
"bots": "Bots",
"models": "Models",
"searchProvider": "Search Providers",
"settings": "Settings",
"home": "Home",
"mcp": "MCP",
"platform": "Platform"
},
"breadcrumb": {
"main": "Home"
},
"settings": {
"display": "General",
"user": "User",
"backToChat": "Back to Chat",
"userProfile": "Profile",
"userID": "User ID",
"displayName": "Display Name",
"avatarUrl": "Avatar URL",
"saveProfile": "Save Profile",
"profileUpdated": "Profile updated",
"profileUpdateFailed": "Failed to update profile",
"changePassword": "Change Password",
"currentPassword": "Current Password",
"newPassword": "New Password",
"confirmPassword": "Confirm New Password",
"updatePassword": "Update Password",
"passwordRequired": "Current password and new password are required",
"passwordNotMatch": "The new passwords do not match",
"passwordUpdated": "Password updated",
"passwordUpdateFailed": "Failed to update password",
"changeEmail": "Change Email",
"emailRequired": "Email is required",
"emailUpdated": "Email updated",
"emailUpdateFailed": "Failed to update email",
"linkedChannels": "Linked Platform Accounts",
"noLinkedChannels": "No linked platform accounts yet",
"bindCode": "Bind Code",
"platform": "Platform",
"platformAny": "Any platform",
"bindCodeTTL": "TTL (seconds)",
"generateBindCode": "Generate Bind Code",
"bindCodeGenerated": "Bind Code generated",
"bindCodeGenerateFailed": "Failed to generate bind code",
"bindCodeValue": "Bind Code",
"bindCodeExpiresAt": "Expires At",
"copyBindCode": "Copy",
"bindCodeCopied": "Bind code copied",
"bindCodeCopyFailed": "Failed to copy bind code",
"loadUserFailed": "Failed to load user data",
"language": "Language",
"languagePlaceholder": "Select language",
"theme": "Theme",
"themePlaceholder": "Select theme",
"themeLight": "Light",
"themeDark": "Dark",
"langZh": "中文",
"langEn": "English"
},
"chat": {
"greeting": "Hi! How can I help you today?",
"selectBot": "Select a Bot",
"selectBotHint": "Choose a bot from the sidebar to start chatting",
"thinking": "Thinking…",
"thinkingInProgress": "Thinking…",
"thinkingDone": "Thinking complete",
"currentBot": "Current Bot",
"inputPlaceholder": "Type your question…",
"readonlyHint": "This chat is read-only",
"readonlyPlaceholder": "This chat is read-only. Sending messages is disabled.",
"send": "Send",
"startChat": "Start Chat",
"noBot": "No bots available, please create a bot first",
"newChat": "New Chat",
"history": "History",
"historyParticipant": "Chats",
"historyObserved": "Observed Chats",
"readonly": "Read-only",
"toolDone": "Done",
"toolRunning": "Running",
"toolInput": "Input",
"toolResult": "Result",
"unknownUser": "{platform} User"
},
"models": {
"title": "Models",
"searchPlaceholder": "Search providers…",
"addModel": "Add Model",
"editModel": "Edit Model",
"deleteModelConfirm": "Are you sure you want to delete this model?",
"emptyTitle": "No Models",
"emptyDescription": "Click the button above to add a model for this provider",
"clientType": "Client Type",
"clientTypePlaceholder": "Select client type",
"model": "Model ID",
"modelPlaceholder": "e.g. gpt-4o",
"displayName": "Display Name",
"displayNamePlaceholder": "Custom display name",
"dimensions": "Dimensions",
"dimensionsPlaceholder": "e.g. 1536",
"multimodal": "Multimodal",
"inputModalities": "Input Modalities",
"supportsReasoning": "Supports Reasoning",
"modality": {
"text": "Text",
"image": "Image",
"audio": "Audio",
"video": "Video",
"file": "File"
}
},
"provider": {
"add": "Add Provider",
"addBtn": "Add",
"apiKey": "API Key",
"apiKeyPlaceholder": "Enter API key",
"url": "Base URL",
"urlPlaceholder": "Enter base URL",
"deleteConfirm": "Are you sure you want to delete this provider?",
"saveChanges": "Save Changes",
"emptyTitle": "No Providers",
"emptyDescription": "Add a model provider first to configure models",
"testConnection": "Test Connection",
"reachable": "Reachable",
"unreachable": "Unreachable",
"supported": "Supported",
"authError": "Auth Error",
"unsupported": "Unsupported",
"error": "Error",
"embedding": "Embedding",
"testFailed": "Test failed"
},
"searchProvider": {
"title": "Search Providers",
"add": "Add Search Provider",
"empty": "No search providers",
"provider": "Provider Type",
"selectHint": "Select or create a search provider",
"unsupportedProvider": "This provider does not have a settings panel yet",
"saveSuccess": "Search provider saved",
"deleteSuccess": "Search provider deleted",
"deleteFailed": "Failed to delete search provider",
"searchPlaceholder": "Search providers...",
"emptyTitle": "No Search Providers",
"emptyDescription": "Add a search provider to configure web search",
"deleteConfirm": "Are you sure you want to delete this search provider? This action cannot be undone.",
"providerNames": {
"brave": "Brave",
"bing": "Bing",
"google": "Google",
"tavily": "Tavily",
"sogou": "Sogou",
"serper": "Serper",
"searxng": "SearXNG",
"jina": "Jina",
"exa": "Exa",
"bocha": "Bocha",
"duckduckgo": "DuckDuckGo",
"yandex": "Yandex"
}
},
"mcp": {
"addTitle": "Add MCP",
"addDescription": "Configure MCP server connection",
"command": "Command",
"commandPlaceholder": "Enter start command",
"arguments": "Arguments",
"argumentsPlaceholder": "Enter arguments",
"cwd": "Working Directory",
"cwdPlaceholder": "Enter working directory path",
"env": "Environment",
"envPlaceholder": "Format: KEY:VALUE",
"active": "Enabled",
"types": {
"stdio": "Stdio (Local)",
"remote": "Remote (HTTP/SSE)"
},
"table": {
"command": "Command",
"cwd": "Working Directory",
"arguments": "Arguments",
"env": "Environment"
},
"empty": "No MCP servers configured yet.",
"deleteConfirm": "Are you sure you want to delete this MCP server?",
"loadFailed": "Failed to load MCP servers",
"saveFailed": "Failed to save MCP server",
"createSuccess": "MCP server created",
"updateSuccess": "MCP server updated",
"deleteSuccess": "MCP server deleted",
"deleteFailed": "Failed to delete MCP server",
"importHint": "Paste a standard mcpServers JSON configuration. Existing servers with the same name will be updated.",
"importSuccess": "MCP servers imported",
"importFailed": "Failed to import MCP servers",
"exportFailed": "Failed to export MCP servers"
},
"home": {
"title": "Home"
},
"bots": {
"title": "Bots",
"searchPlaceholder": "Search bots…",
"createBot": "New Bot",
"editBot": "Edit Bot",
"deleteConfirm": "Are you sure you want to delete this bot?",
"renameSuccess": "Bot name updated",
"renameFailed": "Failed to update bot name",
"deleteSuccess": "Bot deleted",
"emptyTitle": "No Bots",
"emptyDescription": "Click the button above to create your first bot",
"displayName": "Name",
"displayNamePlaceholder": "Give your bot a name",
"avatarUrl": "Avatar URL",
"avatarUrlPlaceholder": "Enter avatar image URL",
"editAvatar": "Edit Avatar",
"editAvatarDescription": "Set the image URL for the bot avatar.",
"avatarUpdateSuccess": "Avatar updated",
"avatarUpdateFailed": "Failed to update avatar",
"typePlaceholder": "Select bot type",
"types": {
"personal": "Personal",
"public": "Public"
},
"active": "Active",
"inactive": "Inactive",
"lifecycle": {
"creating": "Creating",
"deleting": "Deleting",
"createFailed": "Create failed",
"deleteFailed": "Delete failed"
},
"checks": {
"title": "Runtime Checks",
"subtitle": "View current health status and issue details.",
"ok": "No issues",
"hasIssue": "Has issues",
"issueCount": "{count} issues",
"empty": "No check items",
"loadFailed": "Failed to load runtime checks",
"actions": {},
"titles": {
"containerInit": "Container initialization",
"containerRecord": "Container record",
"containerTask": "Container task",
"containerDataPath": "Container data path",
"botDelete": "Bot deletion",
"mcpConnection": "MCP connection",
"channelConnection": "Channel connection"
},
"keys": {
"containerInit": "Container initialization",
"containerRecord": "Container record",
"containerTask": "Container task",
"containerDataPath": "Container data path",
"botDelete": "Bot deletion"
},
"status": {
"ok": "OK",
"warn": "WARN",
"error": "ERROR",
"unknown": "UNKNOWN"
}
},
"tabs": {
"overview": "Overview",
"memory": "Memory",
"channels": "Platforms",
"container": "Container",
"mcp": "MCP",
"subagents": "Subagents",
"heartbeat": "Heartbeat",
"history": "History",
"skills": "Skills",
"settings": "Settings"
},
"container": {
"title": "Container Management",
"subtitle": "Manage the runtime container attached to this bot.",
"botNotReady": "This bot is in lifecycle transition. Container actions are temporarily disabled.",
"empty": "No container found for this bot. Create one to enable runtime tooling.",
"deleteConfirm": "Are you sure you want to delete this container?",
"taskRunning": "Running",
"taskStopped": "Stopped",
"taskCompleted": "Completed",
"statusCreated": "Created",
"statusRunning": "Running",
"statusStopped": "Stopped",
"statusExited": "Exited",
"statusUnknown": "Unknown",
"loadFailed": "Failed to load container information",
"actionFailed": "Container action failed",
"createSuccess": "Container created",
"startSuccess": "Container started",
"stopSuccess": "Container stopped",
"deleteSuccess": "Container deleted",
"snapshotSuccess": "Snapshot created",
"snapshotEmpty": "No snapshots found",
"snapshotLoadFailed": "Failed to load snapshots",
"snapshotNamePlaceholder": "Snapshot name (optional)",
"fields": {
"id": "Container ID",
"status": "Container Status",
"task": "Task",
"namespace": "Namespace",
"image": "Image",
"hostPath": "Host Path",
"containerPath": "Container Path",
"createdAt": "Created At",
"updatedAt": "Updated At"
},
"snapshotColumns": {
"name": "Name",
"kind": "Kind",
"parent": "Parent",
"createdAt": "Created At"
},
"actions": {
"create": "Create Container",
"start": "Start",
"stop": "Stop",
"delete": "Delete",
"snapshot": "Create Snapshot"
}
},
"settings": {
"chatModel": "Chat Model",
"memoryModel": "Memory Model",
"embeddingModel": "Embedding Model",
"searchProvider": "Search Provider",
"searchProviderPlaceholder": "Select search provider",
"maxContextLoadTime": "Max Context Load Time",
"maxContextTokens": "Max Context Tokens",
"language": "Language",
"reasoningEnabled": "Enable Reasoning",
"reasoningEffort": "Reasoning Effort",
"reasoningEffortLow": "Low",
"reasoningEffortMedium": "Medium",
"reasoningEffortHigh": "High",
"heartbeatEnabled": "Enable Heartbeat",
"heartbeatDescription": "Periodically trigger agent to check for items that need attention",
"heartbeatInterval": "Heartbeat Interval (minutes)",
"heartbeatModel": "Heartbeat Model",
"heartbeatModelDescription": "Select a model for heartbeat checks. Defaults to the bot's chat model if not set.",
"heartbeatModelPlaceholder": "Use chat model (default)",
"allowGuest": "Allow Guest Access",
"allowGuestPersonalHint": "Personal bots do not support guest access. Use a public bot instead.",
"searchModel": "Search models…",
"noModel": "No models available",
"saveSuccess": "Settings saved",
"save": "Save Settings",
"dangerZone": "Danger Zone",
"deleteBotDescription": "Deleting this bot cannot be undone. Proceed with caution.",
"deleteBot": "Delete Bot"
},
"channels": {
"title": "Platforms",
"addChannel": "Add Platform",
"selectType": "Select platform type",
"configured": "Configured",
"notConfigured": "Not configured",
"emptyTitle": "No Platforms",
"emptyDescription": "Click below to add an access platform for this bot",
"credentials": "Credentials",
"saveSuccess": "Platform configuration saved",
"saveFailed": "Failed to save platform configuration",
"requiredField": "{field} is required",
"save": "Save Platform Configuration",
"statusActive": "Active",
"statusInactive": "Inactive",
"actionEnable": "Enable",
"actionDisable": "Disable",
"saveOnly": "Save only",
"saveAndEnable": "Save and enable",
"copyFailed": "Copy failed",
"deleteConfirm": "Are you sure you want to remove this platform?",
"deleteSuccess": "Platform removed",
"deleteFailed": "Failed to remove platform",
"webhookCallback": "WebHook Callback URL",
"webhookCallbackHint": "Use this URL as the event subscription request URL in Feishu/Lark.",
"webhookCallbackPending": "Save this platform configuration to generate the callback URL.",
"noAvailableTypes": "All platform types have been configured",
"types": {
"feishu": "Feishu",
"telegram": "Telegram",
"web": "Web",
"local": "Local"
},
"typesShort": {
"feishu": "FS",
"telegram": "TG",
"web": "Web",
"local": "CLI"
}
},
"memory": {
"title": "Here lie the memories.",
"files": "Memory Files",
"empty": "No memory entries found.",
"searchPlaceholder": "Search memory...",
"newMemory": "New Memory",
"compact": "Compact Memory",
"compactConfirm": "Are you sure you want to compact the memory? This will merge similar content using AI and may reduce the number of entries.",
"compactRatio": "Compression Ratio",
"compactRatioLight": "Light (0.8)",
"compactRatioMedium": "Medium (0.5)",
"compactRatioAggressive": "Aggressive (0.3)",
"compactRatioLightDesc": "Keep most details, mostly deduplicate.",
"compactRatioMediumDesc": "Merge similar facts, balanced compression.",
"compactRatioAggressiveDesc": "Heavily consolidate, keep core facts only.",
"compactDecayDate": "Target memories before this date",
"compactSuccess": "Memory compacted successfully",
"compactFailed": "Memory compaction failed",
"selectConversation": "Select Conversation",
"fromConversation": "Create from Conversation",
"noConversations": "No history conversations found",
"idCopied": "ID copied to clipboard",
"deleteConfirm": "Are you sure you want to delete this memory? This cannot be undone."
},
"skills": {
"title": "Skills",
"addSkill": "New Skill",
"emptyTitle": "No Skills",
"emptyDescription": "Click above to create a new skill",
"description": "Description",
"descriptionPlaceholder": "Enter skill description",
"content": "Content",
"contentPlaceholder": "Enter skill content/prompt",
"deleteConfirm": "Are you sure you want to delete this skill?",
"deleteSuccess": "Skill deleted",
"deleteFailed": "Failed to delete skill",
"saveSuccess": "Skill saved",
"saveFailed": "Failed to save skill",
"loadFailed": "Failed to load skills"
},
"heartbeat": {
"title": "Heartbeat Logs",
"loadFailed": "Failed to load heartbeat logs",
"empty": "No heartbeat logs",
"loadMore": "Load More",
"clearLogs": "Clear Logs",
"clearConfirm": "Are you sure you want to clear all heartbeat logs? This cannot be undone.",
"clearSuccess": "Heartbeat logs cleared",
"clearFailed": "Failed to clear heartbeat logs",
"status": "Status",
"time": "Time",
"duration": "Duration",
"result": "Result",
"error": "Error",
"statusOk": "OK",
"statusAlert": "Alert",
"statusError": "Error",
"filterAll": "All",
"noResult": "—"
},
"history": {
"title": "History",
"loadFailed": "Failed to load history",
"empty": "No history messages",
"loadMore": "Load More",
"messageCount": "{count} messages",
"selectAll": "Select all",
"deleteSelectedConfirm": "Are you sure you want to delete the selected {count} message(s)? This will clear all history and cannot be undone.",
"deleteSuccess": "Messages deleted",
"deleteFailed": "Failed to delete messages",
"role": {
"user": "User",
"assistant": "Assistant",
"tool": "Tool",
"system": "System"
},
"filter": "Filter by role",
"filterAll": "All",
"expandContent": "Expand",
"collapseContent": "Collapse"
},
"subagents": {
"title": "Subagents",
"subtitle": "Manage autonomous subagents for this bot.",
"add": "Create Subagent",
"emptyTitle": "No Subagents",
"emptyDescription": "Click above to create a subagent",
"description": "Description",
"descriptionPlaceholder": "Enter subagent description",
"deleteConfirm": "Are you sure you want to delete this subagent?",
"deleteSuccess": "Subagent deleted",
"deleteFailed": "Failed to delete subagent",
"saveSuccess": "Subagent saved",
"saveFailed": "Failed to save subagent",
"loadFailed": "Failed to load subagents",
"viewContext": "View Context",
"contextTitle": "Subagent Context",
"contextEmpty": "No context messages",
"messagesCount": "{count} messages",
"usage": "Usage",
"skills": "Skills"
}
}
}