mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
da2e999ce3
- Add reusable TimezoneSelect component with search and UTC offset labels - Replace plain Select with searchable TimezoneSelect in profile settings, bot settings, and browser context settings - Move bot timezone setting from header dialog into bot settings tab - Resolve timezone with bot > user > system priority for all LLM-facing time formatting (user message header, system prompt, heartbeat, tools, memory extraction) - Format tool output timestamps (history, contacts) in resolved timezone
1099 lines
45 KiB
JSON
1099 lines
45 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",
|
|
"searchTimezone": "Search timezones…",
|
|
"noTimezoneFound": "No timezone found."
|
|
},
|
|
"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",
|
|
"memoryProvider": "Memory",
|
|
"ttsProvider": "TTS Providers",
|
|
"emailProvider": "Email Providers",
|
|
"settings": "Settings",
|
|
"home": "Home",
|
|
"mcp": "MCP",
|
|
"platform": "Platform",
|
|
"usage": "Usage",
|
|
"browserContexts": "Browser"
|
|
},
|
|
"breadcrumb": {
|
|
"main": "Home"
|
|
},
|
|
"settings": {
|
|
"display": "General",
|
|
"user": "User",
|
|
"backToChat": "Back to Chat",
|
|
"userProfile": "Profile",
|
|
"userID": "User ID",
|
|
"displayName": "Display Name",
|
|
"avatarUrl": "Avatar URL",
|
|
"timezone": "Timezone",
|
|
"timezonePlaceholder": "e.g. America/New_York",
|
|
"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",
|
|
"toolWriteContent": "Content",
|
|
"toolEditChanges": "Changes",
|
|
"toolSearchResults": "{count} results",
|
|
"toolSearchResultsLabel": "Results",
|
|
"toolExecOutput": "Output",
|
|
"toolExecExit": "exit: {code}",
|
|
"toolExecError": "Error",
|
|
"toolScheduleItems": "{count} items",
|
|
"toolMemoryResults": "{count} memories",
|
|
"toolWebFetchPreview": "Preview",
|
|
"toolContactsCount": "{count} contacts",
|
|
"toolEmailCount": "{count} emails",
|
|
"toolEmailAccounts": "{count} accounts",
|
|
"toolSpawnCount": "{count} tasks",
|
|
"unknownUser": "{platform} User",
|
|
"files": "Files",
|
|
"sessions": "Sessions",
|
|
"newSession": "New Session",
|
|
"deleteSession": "Delete Session",
|
|
"deleteSessionConfirm": "Are you sure you want to delete this session?",
|
|
"renameSession": "Rename Session",
|
|
"sessionTitle": "Session",
|
|
"untitledSession": "Untitled Session",
|
|
"noSessions": "No sessions yet",
|
|
"sessionTypeHeartbeat": "Heartbeat",
|
|
"sessionTypeSchedule": "Scheduled Task",
|
|
"sessionTypeSubagent": "Subagent"
|
|
},
|
|
"models": {
|
|
"title": "Models",
|
|
"searchPlaceholder": "Search providers…",
|
|
"addModel": "Add Model",
|
|
"editModel": "Edit Model",
|
|
"deleteModelConfirm": "Are you sure you want to delete this model?",
|
|
"searchModelPlaceholder": "Search models…",
|
|
"searchNoResults": "No matching models",
|
|
"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",
|
|
"compatibilities": "Compatibilities",
|
|
"compatibility": {
|
|
"vision": "Vision",
|
|
"tool-call": "Tool Call",
|
|
"image-output": "Image Output",
|
|
"reasoning": "Reasoning"
|
|
},
|
|
"contextWindow": "Context Window",
|
|
"contextWindowPlaceholder": "e.g. 128000",
|
|
"testModel": "Test Model",
|
|
"testOk": "OK",
|
|
"testAuthError": "Auth Error",
|
|
"testError": "Error",
|
|
"testFailed": "Test failed",
|
|
"importModels": "Import Models",
|
|
"importSuccess": "Successfully imported {created} models, skipped {skipped}",
|
|
"importFailed": "Failed to import models",
|
|
"importConfirmHint": "Models will be imported from this provider's API with default compatibilities (vision, tool-call, reasoning).",
|
|
"showingCount": "Showing {count} of {total}",
|
|
"showMore": "Show More"
|
|
},
|
|
"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",
|
|
"testFailed": "Test failed",
|
|
"autoImport": "Auto Import Models",
|
|
"autoImportHint": "Automatically fetch and import models from the provider after creation",
|
|
"clientType": "Client Type",
|
|
"icon": "Icon",
|
|
"iconPlaceholder": "Icon URL or identifier (optional)",
|
|
"enable": "Enable",
|
|
"enableHint": "Only models from enabled providers appear in the available model list"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"memoryProvider": {
|
|
"title": "Memory Providers",
|
|
"add": "Add Memory Provider",
|
|
"empty": "No memory providers",
|
|
"provider": "Provider Type",
|
|
"searchPlaceholder": "Search providers...",
|
|
"emptyTitle": "No Memory Providers",
|
|
"emptyDescription": "Add a memory provider to enable long-term memory for your bots",
|
|
"saveSuccess": "Memory provider saved",
|
|
"deleteSuccess": "Memory provider deleted",
|
|
"deleteFailed": "Failed to delete memory provider",
|
|
"deleteConfirm": "Are you sure you want to delete this memory provider? Bots using it will lose memory access.",
|
|
"name": "Name",
|
|
"namePlaceholder": "Enter provider name",
|
|
"builtinMode": "Built-in Memory Mode",
|
|
"builtinModeDescription": "Choose how the built-in memory provider stores and retrieves memory for bots.",
|
|
"sparseSectionTitle": "Sparse Retrieval",
|
|
"denseSectionTitle": "Dense Retrieval",
|
|
"sparseInstallHint": "Sparse mode depends on the optional sparse service. Enable the sparse installation option when running the installer or start the sparse profile in Docker Compose.",
|
|
"denseBackend": "Dense Backend",
|
|
"denseBackendValue": "Embedding API + Qdrant",
|
|
"denseEmbeddingModel": "Dense Embedding Model",
|
|
"denseEmbeddingModelDescription": "Select the third-party embedding model used before local rerank.",
|
|
"denseQdrantHint": "Dense memory will use Qdrant as the storage backend after the backend runtime is connected.",
|
|
"qdrantCollection": "Qdrant Collection",
|
|
"sparseQdrantCollectionDescription": "Sparse mode writes to the Qdrant collection. Current/default collection: {collection}.",
|
|
"denseQdrantCollectionDescription": "Dense mode writes to the Qdrant collection. Current/default collection: {collection}.",
|
|
"collectionPoints": "Points in collection",
|
|
"collectionExists": "Collection exists",
|
|
"collectionMissing": "Collection not created yet",
|
|
"collectionHealthy": "Healthy",
|
|
"collectionUnavailable": "Unavailable",
|
|
"modeNames": {
|
|
"off": "Off",
|
|
"sparse": "Sparse",
|
|
"dense": "Dense"
|
|
},
|
|
"modeDescriptions": {
|
|
"off": "Keep the current file-based built-in memory behavior without Qdrant retrieval.",
|
|
"sparse": "Use the local OpenSearch sparse model for memory indexing and retrieval with Qdrant.",
|
|
"dense": "Use the selected embedding model API to build dense vectors and store/search them directly in Qdrant."
|
|
},
|
|
"providerNames": {
|
|
"builtin": "Built-in",
|
|
"mem0": "Mem0",
|
|
"openviking": "OpenViking"
|
|
}
|
|
},
|
|
"ttsProvider": {
|
|
"title": "TTS Providers",
|
|
"add": "Add TTS Provider",
|
|
"providerType": "Provider Type",
|
|
"searchPlaceholder": "Search TTS providers...",
|
|
"emptyTitle": "No TTS Providers",
|
|
"emptyDescription": "Add a TTS provider to enable text-to-speech for your bots",
|
|
"deleteConfirm": "Are you sure you want to delete this TTS provider? This action cannot be undone.",
|
|
"models": "Models",
|
|
"importModels": "Import Models",
|
|
"importSuccess": "Models imported successfully",
|
|
"importFailed": "Failed to import models",
|
|
"addModel": "Add Model",
|
|
"modelId": "Model ID",
|
|
"modelIdPlaceholder": "Enter model identifier (e.g. custom-voice)",
|
|
"noModels": "No models found. Click \"Import Models\" to discover available models or \"Add Model\" to create one manually.",
|
|
"noCapabilities": "No capabilities available for this model.",
|
|
"fields": {
|
|
"language": "Language",
|
|
"languagePlaceholder": "Select language...",
|
|
"voice": "Voice",
|
|
"voicePlaceholder": "Select voice...",
|
|
"format": "Output Format",
|
|
"formatPlaceholder": "Select format...",
|
|
"speed": "Speed",
|
|
"speedDescription": "Playback speed (default: {default})",
|
|
"pitch": "Pitch",
|
|
"pitchDescription": "Voice pitch adjustment in Hz (default: {default})"
|
|
},
|
|
"test": {
|
|
"title": "Test Synthesis",
|
|
"placeholder": "Enter text to synthesize...",
|
|
"generate": "Generate",
|
|
"failed": "Synthesis failed"
|
|
}
|
|
},
|
|
"emailProvider": {
|
|
"title": "Email Providers",
|
|
"add": "Add Email Provider",
|
|
"providerType": "Provider Type",
|
|
"searchPlaceholder": "Search email providers...",
|
|
"emptyTitle": "No Email Providers",
|
|
"emptyDescription": "Add an email provider to enable email for your bots",
|
|
"deleteConfirm": "Are you sure you want to delete this email provider? This action cannot be undone.",
|
|
"fields": {
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"smtp_host": "SMTP Host",
|
|
"smtp_port": "SMTP Port",
|
|
"smtp_security": "SMTP Security",
|
|
"imap_host": "IMAP Host",
|
|
"imap_port": "IMAP Port",
|
|
"imap_security": "IMAP Security",
|
|
"poll_interval_seconds": "Poll Interval (seconds)",
|
|
"domain": "Domain",
|
|
"api_key": "API Key",
|
|
"region": "Region",
|
|
"inbound_mode": "Inbound Mode",
|
|
"webhook_signing_key": "Webhook Signing Key"
|
|
},
|
|
"oauth": {
|
|
"title": "OAuth2 Authorization",
|
|
"description": "Authorize this provider to send emails on your behalf. You will be redirected to the provider's login page.",
|
|
"authorize": "Authorize",
|
|
"authorizeOpened": "Authorization page opened in a new tab",
|
|
"authorizeFailed": "Failed to start authorization",
|
|
"status": {
|
|
"checking": "Checking authorization status...",
|
|
"authorized": "Authorized as {email}",
|
|
"authorizedUnknown": "Authorized",
|
|
"expired": "Authorization expired — please re-authorize.",
|
|
"missing": "Not authorized. Authorize to enable Gmail access.",
|
|
"notConfigured": "Client ID is missing. Add it before authorizing."
|
|
},
|
|
"logout": "Log out",
|
|
"logoutSuccess": "Authorization revoked",
|
|
"logoutFailed": "Failed to revoke authorization"
|
|
}
|
|
},
|
|
"browserContext": {
|
|
"title": "Browser Contexts",
|
|
"add": "Add Browser Context",
|
|
"searchPlaceholder": "Search browser contexts...",
|
|
"emptyTitle": "No Browser Contexts",
|
|
"emptyDescription": "Add a browser context to enable browser automation for your bots",
|
|
"deleteConfirm": "Are you sure you want to delete this browser context? Bots using it will lose browser access.",
|
|
"saveSuccess": "Browser context saved",
|
|
"deleteSuccess": "Browser context deleted",
|
|
"name": "Name",
|
|
"namePlaceholder": "Enter context name",
|
|
"viewportWidth": "Viewport Width",
|
|
"viewportHeight": "Viewport Height",
|
|
"userAgent": "User Agent",
|
|
"userAgentPlaceholder": "Custom user agent string",
|
|
"deviceScaleFactor": "Device Scale Factor",
|
|
"isMobile": "Mobile Device",
|
|
"locale": "Locale",
|
|
"localePlaceholder": "e.g. en-US",
|
|
"timezoneId": "Timezone",
|
|
"timezonePlaceholder": "e.g. America/New_York",
|
|
"ignoreHTTPSErrors": "Ignore HTTPS Errors",
|
|
"core": "Browser Core",
|
|
"chromium": "Chromium",
|
|
"firefox": "Firefox",
|
|
"config": "Configuration"
|
|
},
|
|
"mcp": {
|
|
"addTitle": "Add MCP",
|
|
"addDescription": "Configure MCP server connection",
|
|
"searchPlaceholder": "Search MCP servers...",
|
|
"emptyTitle": "No MCP Servers",
|
|
"emptyDescription": "Add an MCP server to extend your bot's capabilities",
|
|
"command": "Command",
|
|
"commandPlaceholder": "Enter start command",
|
|
"arguments": "Arguments",
|
|
"argumentsPlaceholder": "Type and press Enter to add",
|
|
"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"
|
|
},
|
|
"draft": "Draft",
|
|
"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",
|
|
"probe": "Test Connection",
|
|
"probing": "Testing...",
|
|
"probeSuccess": "Connection verified",
|
|
"probeFailed": "Connection test failed",
|
|
"probeRefresh": "Refresh",
|
|
"tools": "Tools",
|
|
"toolsEmpty": "No tools discovered",
|
|
"toolsCount": "{count} tool(s) available",
|
|
"statusConnected": "Connected",
|
|
"statusError": "Error",
|
|
"statusUnknown": "Not tested",
|
|
"lastProbed": "Last tested",
|
|
"authRequired": "Authorization required",
|
|
"oauth": {
|
|
"title": "Authentication",
|
|
"status": "OAuth Status",
|
|
"notConfigured": "Not configured",
|
|
"authorized": "Authorized",
|
|
"expired": "Token expired",
|
|
"discover": "Detect OAuth",
|
|
"discovering": "Detecting...",
|
|
"authorize": "Authorize",
|
|
"authorizing": "Authorizing...",
|
|
"revoke": "Revoke",
|
|
"revokeConfirm": "Are you sure you want to revoke OAuth authorization?",
|
|
"revokeSuccess": "OAuth authorization revoked",
|
|
"revokeFailed": "Failed to revoke OAuth",
|
|
"discoverSuccess": "OAuth server detected",
|
|
"discoverFailed": "OAuth detection failed",
|
|
"authSuccess": "Authorization successful",
|
|
"authFailed": "Authorization failed",
|
|
"scopes": "Scopes",
|
|
"authServer": "Authorization Server",
|
|
"clientId": "Client ID",
|
|
"clientIdPlaceholder": "OAuth App Client ID",
|
|
"clientSecret": "Client Secret",
|
|
"clientSecretPlaceholder": "OAuth App Client Secret (if required)",
|
|
"clientIdHint": "The authorization server does not support automatic registration. Please create an OAuth App and enter its Client ID.",
|
|
"callbackUrl": "Callback URL",
|
|
"callbackUrlHint": "Set this as the callback/redirect URL in your OAuth App settings.",
|
|
"callbackMissingParams": "Missing authorization code or state parameter"
|
|
}
|
|
},
|
|
"home": {
|
|
"title": "Home"
|
|
},
|
|
"bots": {
|
|
"title": "Bots",
|
|
"searchPlaceholder": "Search bots…",
|
|
"createBot": "New Bot",
|
|
"createBotWaitHint": "Creating a bot may need to pull the base image on first use. Please wait a moment after submission.",
|
|
"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",
|
|
"timezone": "Timezone",
|
|
"timezonePlaceholder": "e.g. America/New_York",
|
|
"timezoneInherited": "Inherited from user/system",
|
|
"timezoneInheritedHint": "Leave empty to inherit the user's timezone, or fall back to the system timezone.",
|
|
"editAvatar": "Edit Avatar",
|
|
"editAvatarDescription": "Set the image URL for the bot avatar.",
|
|
"editTimezone": "Edit Timezone",
|
|
"editTimezoneDescription": "Set a timezone override for this bot.",
|
|
"avatarUpdateSuccess": "Avatar updated",
|
|
"avatarUpdateFailed": "Failed to update avatar",
|
|
"timezoneUpdateSuccess": "Timezone updated",
|
|
"timezoneUpdateFailed": "Failed to update timezone",
|
|
"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",
|
|
"heartbeat": "Heartbeat",
|
|
"compaction": "Compaction",
|
|
"schedule": "Schedule",
|
|
"history": "History",
|
|
"skills": "Skills",
|
|
"email": "Email",
|
|
"files": "Files",
|
|
"access": "Access",
|
|
"terminal": "Terminal",
|
|
"settings": "Settings"
|
|
},
|
|
"terminal": {
|
|
"title": "Terminal",
|
|
"reconnect": "Reconnect",
|
|
"newTab": "New Terminal",
|
|
"closeTab": "Close",
|
|
"defaultTabLabel": "Terminal",
|
|
"status": {
|
|
"idle": "Idle",
|
|
"connecting": "Connecting...",
|
|
"connected": "Connected",
|
|
"disconnected": "Disconnected"
|
|
}
|
|
},
|
|
"files": {
|
|
"name": "Name",
|
|
"size": "Size",
|
|
"modified": "Modified",
|
|
"empty": "This directory is empty",
|
|
"upload": "Upload",
|
|
"newFolder": "New Folder",
|
|
"download": "Download",
|
|
"rename": "Rename",
|
|
"delete": "Delete",
|
|
"save": "Save",
|
|
"unsaved": "(unsaved)",
|
|
"previewNotAvailable": "Preview not available for this file type",
|
|
"folderNamePlaceholder": "Folder name",
|
|
"newNamePlaceholder": "New name",
|
|
"confirmDelete": "Confirm Delete",
|
|
"confirmDeleteMessage": "Are you sure you want to delete \"{name}\"? This action cannot be undone.",
|
|
"loadFailed": "Failed to load directory",
|
|
"readFailed": "Failed to read file",
|
|
"saveSuccess": "File saved",
|
|
"saveFailed": "Failed to save file",
|
|
"uploadSuccess": "File uploaded",
|
|
"uploadFailed": "Failed to upload file",
|
|
"mkdirSuccess": "Folder created",
|
|
"mkdirFailed": "Failed to create folder",
|
|
"renameSuccess": "Renamed successfully",
|
|
"renameFailed": "Failed to rename",
|
|
"deleteSuccess": "Deleted successfully",
|
|
"deleteFailed": "Failed to delete"
|
|
},
|
|
"email": {
|
|
"title": "Email",
|
|
"subtitle": "Manage email provider bindings and view inbox / outbox.",
|
|
"bindings": "Bindings",
|
|
"addBinding": "Add Binding",
|
|
"inbox": "Inbox",
|
|
"outbox": "Outbox",
|
|
"emailAddress": "Email Address",
|
|
"emailPlaceholder": "user@example.com",
|
|
"noBindings": "No email bindings configured",
|
|
"noEmails": "No emails",
|
|
"canRead": "Read",
|
|
"canWrite": "Write",
|
|
"canDelete": "Delete",
|
|
"unbind": "Unbind",
|
|
"unbindConfirm": "Are you sure you want to remove this email binding?",
|
|
"bindSuccess": "Email binding added",
|
|
"unbindSuccess": "Email binding removed",
|
|
"from": "From",
|
|
"to": "To",
|
|
"subject": "Subject",
|
|
"status": "Status",
|
|
"receivedAt": "Received",
|
|
"sentAt": "Sent"
|
|
},
|
|
"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.",
|
|
"legacyWarning": "This container uses an older architecture and needs to be recreated for full compatibility. Your data will be preserved automatically.",
|
|
"legacyRecreate": "Recreate Container",
|
|
"legacyRecreateSuccess": "Container recreated successfully",
|
|
"createHint": "The container is created from the current image. If you explicitly enable restore, preserved data will be restored after creation.",
|
|
"createRestoreDataLabel": "Restore preserved data after creation",
|
|
"createRestoreDataDescription": "If a previously exported backup or legacy bind-mounted data exists, it will be restored into `/data` after the container is created.",
|
|
"createImageLabel": "Base image",
|
|
"createImageDescription": "Docker image to use as the container base (e.g. debian:bookworm-slim, alpine:latest, ubuntu:24.04). Leave empty for the default.",
|
|
"deleteConfirm": "Are you sure you want to permanently delete this container? Unpreserved data cannot be recovered.",
|
|
"deletePreserveConfirm": "Are you sure you want to export `/data` and then delete this container?",
|
|
"restoreConfirm": "Are you sure you want to restore preserved data into this container's `/data`?",
|
|
"rollbackConfirm": "Are you sure you want to roll back to this snapshot version?",
|
|
"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",
|
|
"createRestoreSuccess": "Container created and data restored",
|
|
"startSuccess": "Container started",
|
|
"stopSuccess": "Container stopped",
|
|
"deleteSuccess": "Container deleted",
|
|
"deletePreserveSuccess": "Container deleted and data preserved",
|
|
"snapshotSuccess": "Snapshot created",
|
|
"exportSuccess": "Data exported",
|
|
"importSuccess": "Data imported",
|
|
"restoreSuccess": "Preserved data restored",
|
|
"rollbackSuccess": "Snapshot rolled back",
|
|
"pullingImage": "Pulling image...",
|
|
"creatingContainer": "Creating container...",
|
|
"preservingData": "Backing up data, this may take a while for large volumes...",
|
|
"restoringData": "Restoring data, this may take a while for large volumes...",
|
|
"snapshotEmpty": "No snapshots found",
|
|
"snapshotLoadFailed": "Failed to load snapshots",
|
|
"snapshotNamePlaceholder": "Snapshot display name (optional)",
|
|
"snapshotNameHint": "This field is only for the user-visible display name. The internal snapshot name is generated automatically.",
|
|
"dataTitle": "Data Operations",
|
|
"dataSubtitle": "Independently manage import, export, and restore for the container `/data` directory.",
|
|
"deleteTitle": "Delete Container",
|
|
"deleteSubtitle": "Before deletion, explicitly choose whether `/data` should be preserved to avoid accidental data loss.",
|
|
"preservedDataAvailable": "Preserved data is available and can be restored into the current container.",
|
|
"preservedDataAvailableShort": "Available",
|
|
"preservedDataEmpty": "None",
|
|
"sourceManual": "Manual",
|
|
"sourcePreExec": "Auto before execution",
|
|
"sourceRollback": "Generated by rollback",
|
|
"fields": {
|
|
"id": "Container ID",
|
|
"status": "Container Status",
|
|
"task": "Task",
|
|
"namespace": "Namespace",
|
|
"image": "Image",
|
|
"hostPath": "Host Path",
|
|
"containerPath": "Container Path",
|
|
"preservedData": "Preserved Data",
|
|
"createdAt": "Created At",
|
|
"updatedAt": "Updated At"
|
|
},
|
|
"snapshotColumns": {
|
|
"name": "Name",
|
|
"version": "Version",
|
|
"source": "Source",
|
|
"parent": "Parent",
|
|
"createdAt": "Created At",
|
|
"actions": "Actions"
|
|
},
|
|
"actions": {
|
|
"create": "Create Container",
|
|
"start": "Start",
|
|
"stop": "Stop",
|
|
"delete": "Delete Permanently",
|
|
"deletePreserve": "Delete and Preserve Data",
|
|
"snapshot": "Create Snapshot",
|
|
"exportData": "Export Data",
|
|
"importData": "Import Data",
|
|
"restoreData": "Restore Preserved Data",
|
|
"rollback": "Rollback"
|
|
}
|
|
},
|
|
"settings": {
|
|
"chatModel": "Chat Model",
|
|
"titleModel": "Title Model",
|
|
"titleModelDescription": "Select a small model to auto-generate session titles. Leave empty to disable.",
|
|
"titleModelPlaceholder": "Disabled (no auto title)",
|
|
"searchProvider": "Search Provider",
|
|
"searchProviderPlaceholder": "Select search provider",
|
|
"memoryProvider": "Memory Provider",
|
|
"memoryProviderPlaceholder": "Select memory provider (disabled if empty)",
|
|
"memoryModePreview": "Selected built-in mode: {mode}",
|
|
"sparseStatusTitle": "Sparse Retrieval Status",
|
|
"sparseStatusHint": "Markdown files remain the only source of truth. Manual sync rebuilds Qdrant from entries under /data/memory.",
|
|
"denseStatusTitle": "Dense Retrieval Status",
|
|
"denseStatusHint": "Markdown files remain the only source of truth. Manual sync rebuilds the dense Qdrant index from entries under /data/memory.",
|
|
"mem0StatusTitle": "Mem0 Sync Status",
|
|
"mem0StatusHint": "Markdown files remain the only source of truth. Manual sync rebuilds managed Mem0 memories from entries under /data/memory.",
|
|
"indexedMemoryStatusPendingSave": "Save the selected memory provider before viewing indexed memory status or running a sync.",
|
|
"memorySyncAction": "Manual Sync",
|
|
"memorySyncSuccess": "Sync completed: {fsCount} source entries, {restoredCount} restored, {storageCount} indexed.",
|
|
"memorySyncFailed": "Manual sync failed",
|
|
"memorySourceDir": "Memory Directory",
|
|
"memoryOverviewPath": "Overview File",
|
|
"memoryMarkdownFiles": "Markdown Files",
|
|
"memorySourceEntries": "Source Entries",
|
|
"memoryIndexedEntries": "Indexed Entries",
|
|
"memoryQdrantCollection": "Qdrant Collection",
|
|
"memoryEncoderHealth": "Sparse Encoder",
|
|
"memoryDenseEmbeddingHealth": "Embedding Backend",
|
|
"memoryQdrantHealth": "Qdrant",
|
|
"memoryHealthOk": "Healthy",
|
|
"memoryHealthUnavailable": "Unavailable",
|
|
"ttsModel": "TTS Model",
|
|
"ttsModelPlaceholder": "Select TTS model",
|
|
"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)",
|
|
"compactionEnabled": "Enable Context Compaction",
|
|
"compactionDescription": "Automatically summarize older messages when context gets too large",
|
|
"compactionThreshold": "Compaction Threshold (input tokens)",
|
|
"compactionModel": "Compaction Model",
|
|
"compactionModelDescription": "Select a model for summarization. Defaults to the bot's chat model if not set.",
|
|
"compactionModelPlaceholder": "Use chat model (default)",
|
|
"browserContext": "Browser Context",
|
|
"browserContextPlaceholder": "Select browser context (disabled if empty)",
|
|
"allowGuest": "Allow Guest Access",
|
|
"allowGuestPersonalHint": "Personal bots do not support guest access. Use a public bot instead.",
|
|
"loopDetectionTitle": "Detect and auto-block output loops",
|
|
"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"
|
|
},
|
|
"access": {
|
|
"title": "Access Control",
|
|
"subtitle": "Guest chat trigger access is controlled by allow guest, whitelist, and blacklist together.",
|
|
"allowGuestDescription": "When enabled, guests may trigger chat by default. Blacklist rules still take precedence.",
|
|
"saveGuestAccess": "Save Guest Access",
|
|
"guestAccessSaved": "Guest access updated",
|
|
"guestRulesTitle": "Rule Summary",
|
|
"guestRulesDescription": "Owners and members always bypass these rules. The rules below only apply to guest chat triggers.",
|
|
"whitelistTitle": "Whitelist",
|
|
"whitelistDescription": "Whitelisted guests can still trigger chat even when guest access is not open.",
|
|
"blacklistTitle": "Blacklist",
|
|
"blacklistDescription": "Blacklisted guests are denied chat trigger even when guest access is open.",
|
|
"userSelector": "Select User",
|
|
"identitySelector": "Select Platform Identity",
|
|
"selectUser": "Search and select a user",
|
|
"selectIdentity": "Search and select a platform identity",
|
|
"searchUser": "Search users",
|
|
"searchIdentity": "Search platform identities",
|
|
"noUserCandidates": "No user candidates",
|
|
"noIdentityCandidates": "No platform identity candidates",
|
|
"userId": "User ID",
|
|
"userIdPlaceholder": "Enter user ID",
|
|
"channelIdentityId": "Channel Identity ID",
|
|
"channelIdentityIdPlaceholder": "Enter channel identity ID",
|
|
"addWhitelist": "Add to Whitelist",
|
|
"addBlacklist": "Add to Blacklist",
|
|
"clearSelection": "Clear Selection",
|
|
"whitelistEmpty": "No whitelist rules yet",
|
|
"blacklistEmpty": "No blacklist rules yet",
|
|
"validation": "Fill exactly one subject: user_id or channel_identity_id",
|
|
"validationConversationRequiresChannel": "Select a source platform before restricting by conversation or thread ID",
|
|
"validationConversationRequiresGroupOrThread": "Conversation ID restrictions are only supported for group or thread rules",
|
|
"validationThreadRequiresConversation": "Thread ID requires a conversation ID",
|
|
"validationThreadRequiresThreadType": "Thread ID restrictions require conversation type to be Thread",
|
|
"whitelistSaved": "Whitelist updated",
|
|
"blacklistSaved": "Blacklist updated",
|
|
"saveFailed": "Failed to save access rule",
|
|
"deleteSuccess": "Rule deleted",
|
|
"deleteFailed": "Failed to delete rule",
|
|
"sourceScopeTitle": "Source Scope",
|
|
"sourceScopeDescription": "Optionally restrict a rule to a platform, conversation type, or specific conversation/thread.",
|
|
"sourceChannel": "Source Platform",
|
|
"anyChannel": "Any platform",
|
|
"conversationType": "Conversation Type",
|
|
"anyConversationType": "Any conversation type",
|
|
"privateConversationType": "Private",
|
|
"groupConversationType": "Group",
|
|
"threadConversationType": "Thread",
|
|
"observedConversation": "Observed Group Or Thread",
|
|
"selectObservedConversation": "Select an observed group or thread",
|
|
"searchObservedConversation": "Search observed groups or threads",
|
|
"noObservedConversations": "No observed groups or threads",
|
|
"selectIdentityFirst": "Select a platform identity first to load observed groups or threads",
|
|
"observedConversationHint": "Use this only for group or thread rules. Private access should be controlled by conversation type alone.",
|
|
"conversationId": "Conversation ID",
|
|
"conversationIdPlaceholder": "Enter conversation ID",
|
|
"threadId": "Thread ID",
|
|
"threadIdPlaceholder": "Enter thread ID",
|
|
"clearScope": "Clear Scope",
|
|
"lastObserved": "Last seen"
|
|
},
|
|
"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.",
|
|
"showSecretField": "Show {field}",
|
|
"hideSecretField": "Hide {field}",
|
|
"feishuWebhookSecurityHint": "For security, webhook mode requires either an Encrypt Key or a Verification Token; an unprotected public callback URL should not be exposed.",
|
|
"feishuWebhookSecretRequired": "For security, configure at least one of Encrypt Key or Verification Token.",
|
|
"noAvailableTypes": "All platform types have been configured",
|
|
"weixinQr": {
|
|
"title": "QR Code Login",
|
|
"description": "Scan the QR code with WeChat to connect your account.",
|
|
"startScan": "Get QR Code",
|
|
"waitingScan": "Open WeChat and scan this QR code",
|
|
"scanned": "Scanned — confirm on your phone",
|
|
"expired": "QR code expired",
|
|
"refresh": "Refresh QR Code",
|
|
"success": "WeChat connected successfully!",
|
|
"retry": "Try Again"
|
|
},
|
|
"types": {
|
|
"feishu": "Feishu",
|
|
"discord": "Discord",
|
|
"qq": "QQ",
|
|
"matrix": "Matrix",
|
|
"telegram": "Telegram",
|
|
"weixin": "WeChat",
|
|
"web": "Web",
|
|
"local": "Local"
|
|
},
|
|
"typesShort": {
|
|
"feishu": "FS",
|
|
"discord": "DC",
|
|
"qq": "QQ",
|
|
"matrix": "MX",
|
|
"telegram": "TG",
|
|
"weixin": "WX",
|
|
"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"
|
|
},
|
|
"compaction": {
|
|
"title": "Compaction Logs",
|
|
"loadFailed": "Failed to load compaction logs",
|
|
"empty": "No compaction logs",
|
|
"loadMore": "Load More",
|
|
"clearLogs": "Clear Logs",
|
|
"clearConfirm": "Are you sure you want to clear all compaction logs? This cannot be undone.",
|
|
"clearSuccess": "Compaction logs cleared",
|
|
"clearFailed": "Failed to clear compaction logs",
|
|
"status": "Status",
|
|
"time": "Time",
|
|
"duration": "Duration",
|
|
"error": "Error",
|
|
"statusOk": "OK",
|
|
"statusPending": "Pending",
|
|
"statusError": "Error",
|
|
"filterAll": "All"
|
|
},
|
|
"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": "—"
|
|
},
|
|
"schedule": {
|
|
"title": "Scheduled Tasks",
|
|
"loadFailed": "Failed to load schedules",
|
|
"empty": "No scheduled tasks",
|
|
"name": "Name",
|
|
"pattern": "Pattern",
|
|
"enabled": "Enabled",
|
|
"calls": "Calls",
|
|
"createdAt": "Created",
|
|
"updatedAt": "Updated",
|
|
"statusEnabled": "Enabled",
|
|
"statusDisabled": "Disabled",
|
|
"unlimited": "∞"
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"usage": {
|
|
"title": "Token Usage",
|
|
"selectBot": "Select Bot",
|
|
"selectBotPlaceholder": "Choose a bot to view usage",
|
|
"timeRange": "Time Range",
|
|
"last7Days": "Last 7 Days",
|
|
"last30Days": "Last 30 Days",
|
|
"last90Days": "Last 90 Days",
|
|
"noData": "No usage data for the selected period",
|
|
"loadFailed": "Failed to load token usage",
|
|
"totalInputTokens": "Total Input Tokens",
|
|
"totalOutputTokens": "Total Output Tokens",
|
|
"avgCacheHitRate": "Avg Cache Hit Rate",
|
|
"totalReasoningTokens": "Total Reasoning Tokens",
|
|
"dailyTokens": "Daily Token Usage",
|
|
"cacheBreakdown": "Cache Breakdown",
|
|
"cacheHitRate": "Cache Hit Rate",
|
|
"chatInput": "Chat Input",
|
|
"chatOutput": "Chat Output",
|
|
"heartbeatInput": "Heartbeat Input",
|
|
"heartbeatOutput": "Heartbeat Output",
|
|
"scheduleInput": "Schedule Input",
|
|
"scheduleOutput": "Schedule Output",
|
|
"totalInput": "Total Input",
|
|
"totalOutput": "Total Output",
|
|
"cacheRead": "Cache Read",
|
|
"cacheWrite": "Cache Write",
|
|
"noCache": "No Cache",
|
|
"tokens": "Tokens",
|
|
"date": "Date",
|
|
"modelDistribution": "Model Usage Distribution",
|
|
"filterByModel": "Filter by Model",
|
|
"allModels": "All Models",
|
|
"sessionType": "Session Type",
|
|
"allTypes": "All Types",
|
|
"chat": "Chat",
|
|
"heartbeat": "Heartbeat",
|
|
"schedule": "Schedule",
|
|
"inputTokens": "Input Tokens",
|
|
"outputTokens": "Output Tokens",
|
|
"dateFrom": "From",
|
|
"dateTo": "To",
|
|
"chartPie": "Pie",
|
|
"chartBar": "Bar"
|
|
}
|
|
}
|