mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
bf0eeb0e80
* 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>
552 lines
20 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|