nanobot/webui/src/i18n/locales/en/common.json

660 lines
24 KiB
JSON

{
"app": {
"brand": "nanobot",
"loading": {
"connecting": "Connecting to nanobot…",
"boot": "Loading nanobot…"
},
"error": {
"title": "Couldn't reach nanobot",
"gatewayHint": "Make sure the gateway is running (`nanobot gateway`) and that this page is open on the same machine."
},
"auth": {
"title": "Authentication required",
"hint": "Enter the secret configured as tokenIssueSecret in your gateway config.",
"placeholder": "Password",
"submit": "Connect",
"invalid": "Invalid password. Try again."
},
"account": {
"section": "Account",
"logoutHint": "Disconnect this browser from the gateway.",
"logout": "Sign out"
},
"system": {
"section": "System",
"restartHint": "Restart nanobot to apply runtime changes.",
"restart": "Restart nanobot",
"restarting": "Restarting..."
},
"restart": {
"completed": "Restart completed in {{seconds}}s."
},
"documentTitle": {
"base": "nanobot",
"chat": "{{title}} · nanobot"
},
"meta": {
"description": "nanobot web UI — chat with your nanobot workspace."
}
},
"sidebar": {
"navigation": "Sidebar navigation",
"globalActions": "Global actions",
"collapse": "Collapse sidebar",
"toggleTheme": "Toggle theme",
"home": "Home",
"newChat": "New chat",
"searchAria": "Search",
"viewOptions": "View",
"compactList": "Compact list",
"showPreviews": "Show previews",
"showTimestamps": "Show time",
"sortLabel": "Sort",
"sortUpdated": "Recently updated",
"sortCreated": "Recently created",
"sortTitle": "Title A-Z",
"searchPlaceholder": "Search",
"searchResults": "Results",
"noSearchResults": "No matching chats.",
"recent": "Recent",
"refreshSessions": "Refresh sessions",
"settings": "Settings",
"language": {
"label": "Language",
"ariaLabel": "Change language"
}
},
"settings": {
"backToChat": "Back to chat",
"sidebar": {
"title": "Settings",
"ariaLabel": "Settings sections"
},
"nav": {
"general": "General",
"byok": "BYOK",
"overview": "Overview",
"appearance": "Appearance",
"models": "Models",
"providers": "Providers",
"image": "Image",
"web": "Web",
"cliApps": "CLI Apps",
"mcp": "MCP",
"runtime": "Runtime",
"advanced": "Advanced"
},
"sections": {
"interface": "Interface",
"ai": "AI",
"system": "System",
"status": "Status",
"localPreferences": "Local preferences",
"presets": "Presets",
"imageGeneration": "Image generation",
"imageDefaults": "Defaults",
"webSearch": "Web search",
"webBehavior": "Behavior",
"cliApps": "CLI Apps",
"mcp": "MCP",
"identity": "Identity",
"safety": "Safety",
"capabilities": "Capabilities",
"integrations": "Integrations"
},
"models": {
"selectModel": "Select model",
"addConfiguration": "Add configuration",
"newConfiguration": "New model configuration",
"newConfigurationHelp": "Save a provider and model as a one-click option.",
"configurationName": "Name",
"configurationNamePlaceholder": "Fast writing"
},
"rows": {
"theme": "Theme",
"language": "Language",
"provider": "Provider",
"model": "Model",
"restart": "Restart nanobot",
"configPath": "Config path",
"activePreset": "Active preset",
"gateway": "Gateway",
"restartState": "Restart state",
"pendingChanges": "Pending changes",
"currentModel": "Current model",
"selectedPreset": "Selected preset",
"presetModel": "Preset model",
"density": "Density",
"activityMode": "Activity detail",
"codeWrap": "Code wrapping",
"brandLogos": "Brand logos",
"maxResults": "Max results",
"timeout": "Timeout",
"jinaReader": "Jina reader",
"imageGeneration": "Image generation",
"imageProvider": "Image provider",
"imageProviderStatus": "Provider status",
"imageProviderBase": "Provider base",
"imageModel": "Image model",
"defaultAspectRatio": "Default aspect",
"defaultImageSize": "Default size",
"maxImagesPerTurn": "Max images per turn",
"imageSaveDir": "Save directory",
"botName": "Bot name",
"botIcon": "Bot icon",
"timezone": "Timezone",
"toolHintMaxLength": "Tool hint length",
"workspacePath": "Workspace path",
"heartbeat": "Heartbeat",
"dream": "Dream",
"unifiedSession": "Unified session",
"restrictWorkspace": "Restrict to workspace",
"execTool": "Exec tool",
"execSandbox": "Exec sandbox",
"ssrfWhitelist": "SSRF whitelist",
"mcpServers": "MCP servers",
"pathAppend": "PATH append",
"cliAppsCatalog": "Catalog",
"cliAppsFilter": "Filter",
"configurationDocs": "Configuration docs"
},
"help": {
"theme": "Switch between light and dark appearance.",
"language": "Choose the language used by the WebUI.",
"provider": "Select the provider that should serve new model requests.",
"model": "Set the default model name used by nanobot.",
"configPath": "The gateway configuration file currently in use.",
"currentModel": "Choose the model nanobot uses for new replies.",
"selectedModelProvider": "Set by the selected model.",
"selectedModelValue": "Set by the selected model.",
"selectedPreset": "Named presets are read-only here; edit them in config.json.",
"presetModel": "Switch to Default to edit model and provider from the WebUI.",
"density": "Stored only in this browser.",
"activityMode": "Choose how much agent activity chrome to show by default.",
"codeWrap": "Keep long code lines readable on smaller screens.",
"brandLogos": "Show third-party provider and CLI logos in Settings.",
"maxResults": "Results returned by each web_search call.",
"timeout": "Seconds before a search provider request times out.",
"jinaReader": "Use Jina Reader for web_fetch when available.",
"imageGeneration": "Expose generate_image in chats when a configured image provider is available.",
"imageProvider": "Choose the registry provider used by generate_image.",
"imageProviderStatus": "Image generation reuses provider credentials from Providers.",
"imageModel": "Model name sent to the selected image provider.",
"defaultAspectRatio": "Used when the prompt does not choose an aspect ratio.",
"defaultImageSize": "Size hint sent to providers that support it.",
"maxImagesPerTurn": "Upper bound for one generate_image request.",
"botName": "Shown in runtime surfaces that use the configured bot identity.",
"botIcon": "Short emoji or text shown beside the bot name.",
"timezone": "IANA timezone used by runtime context and schedules.",
"toolHintMaxLength": "Maximum characters shown in tool progress hints.",
"cliAppsCatalog": "Install only the app-specific CLI adapters nanobot can run locally; desktop apps stay untouched.",
"cliAppsFilter": "Search by app, category, or capability.",
"advancedReadOnly": "Advanced safety controls are read-only in WebUI. Edit config.json intentionally when needed."
},
"timezone": {
"select": "Select timezone",
"search": "Search timezone",
"empty": "No matching timezones."
},
"cliApps": {
"allCategories": "All categories",
"availableCount": "{{count}} apps",
"installedCount": "{{count}} CLIs installed",
"summary": "{{installed}} of {{total}} CLIs installed",
"filterAll": "All",
"filterInstalled": "Installed CLIs",
"filterNotInstalled": "Not installed",
"searchPlaceholder": "Search CLIs",
"loading": "Loading CLI Apps...",
"empty": "No CLI Apps match this filter.",
"statusInstalled": "CLI installed",
"statusMissing": "Missing",
"statusAvailable": "Available",
"statusUnsupported": "Unsupported",
"statusNotInstalled": "CLI not installed",
"requires": "Requires",
"test": "Test CLI",
"update": "Update CLI",
"uninstall": "Uninstall CLI",
"install": "Install CLI",
"readyTitle": "@{{name}} is ready",
"readyStatus": "Ready",
"readyTry": "Try @{{name}}",
"readyCopied": "Copied",
"readyPrompt": "Use @{{name}} to inspect what this CLI can do.",
"openChat": "Open chat",
"unsupported": "Unsupported",
"unavailable": "Unavailable",
"noDescription": "No description available."
},
"mcp": {
"allCategories": "All categories",
"summary": "{{installed}} of {{total}} presets enabled",
"filterAll": "All",
"filterInstalled": "Enabled",
"filterNotInstalled": "Not enabled",
"searchPlaceholder": "Search MCP presets",
"moreOptions": "More MCP options",
"moreOptionsSubtitle": "Add a custom server or import mcp.json.",
"customTitle": "Custom MCP",
"customSubtitle": "Add any stdio, HTTP, or SSE MCP server.",
"customAction": "Custom",
"importAction": "Import",
"serverName": "Server name",
"serverUrl": "URL",
"transport": "Transport",
"command": "Command",
"args": "Args JSON",
"headers": "Headers JSON",
"env": "Env JSON",
"timeout": "Tool timeout",
"advancedOptions": "Advanced options",
"hideAdvanced": "Hide advanced",
"saveCustom": "Save MCP",
"configImport": "Import mcp.json",
"importConfig": "Import",
"restartRequired": "Restart nanobot to connect updated MCP tools.",
"toolsFound": "{{count}} tools",
"loading": "Loading MCP presets...",
"empty": "No MCP presets match this filter.",
"openDocs": "Open docs",
"test": "Test",
"remove": "Remove",
"enable": "Enable",
"enabled": "Enabled",
"setup": "Connect",
"configure": "Connect",
"connectTitle": "Connect {{name}}",
"connectHint": "Add the key from your account settings.",
"saveAndEnable": "Save and enable",
"updateSetup": "Update setup",
"configured": "configured",
"keepExisting": "Leave blank to keep existing",
"statusConfigured": "Configured",
"statusMissingCredentials": "Needs key",
"statusMissingDependency": "Needs dependency",
"statusComingSoon": "Coming soon",
"statusNotInstalled": "Not enabled",
"toolScope": "Tools",
"allTools": "All",
"noTools": "None",
"testForTools": "Run Test to inspect and choose individual tools."
},
"values": {
"light": "Light",
"dark": "Dark",
"notAvailable": "Not available",
"enabled": "Enabled",
"disabled": "Disabled",
"restartPending": "Restart pending",
"ready": "Ready",
"comfortable": "Comfortable",
"compact": "Compact",
"auto": "Auto",
"expanded": "Expanded",
"on": "On",
"off": "Off",
"configured": "Configured",
"notConfigured": "Not configured"
},
"status": {
"loading": "Loading settings...",
"loadError": "Could not load settings",
"unsaved": "Unsaved changes.",
"upToDate": "Up to date.",
"savedRestart": "Saved. Restart nanobot to apply.",
"restartAfterSaving": "Save changes, then restart when ready.",
"savedRestartApply": "Saved. Restart when ready.",
"imageProviderRestart": "Image provider changes saved. Restart when ready."
},
"actions": {
"save": "Save",
"saving": "Saving",
"edit": "Edit",
"cancel": "Cancel",
"openDocs": "Open docs"
},
"byok": {
"description": "Bring your own provider keys. Nanobot reads these values from the current config and only configured providers can be selected in General.",
"configured": "Configured",
"notConfigured": "Not configured",
"configuredSection": "Configured",
"notConfiguredSection": "Not configured",
"showMore": "Show {{count}} more",
"showLess": "Show fewer",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Enter API key",
"apiKeyConfiguredPlaceholder": "Leave blank to keep the current key",
"configuredKeyHint": "Configured key",
"apiBasePlaceholder": "Use provider default",
"apiKeyRequired": "API key is required to configure this provider.",
"showApiKey": "Show API key",
"hideApiKey": "Hide API key",
"noConfiguredProviders": "No configured providers",
"configureFirst": "Configure a provider in BYOK first.",
"openByok": "Open BYOK",
"tabs": {
"ariaLabel": "BYOK credential type",
"llm": "LLM",
"webSearch": "Web Search"
},
"webSearch": {
"provider": "Search provider",
"providerHelp": "Choose the backend used by the web search tool.",
"selectProvider": "Select provider",
"credentials": "Credentials",
"noCredentialRequired": "No key required",
"noCredentialHelp": "DuckDuckGo works without a saved API key.",
"apiKeyHelp": "Stored in config and masked after saving.",
"baseUrl": "Base URL",
"baseUrlHelp": "SearXNG needs the URL of your own instance.",
"baseUrlPlaceholder": "https://search.example.com",
"apiKeyRequired": "API key is required for this search provider.",
"baseUrlRequired": "Base URL is required for SearXNG.",
"missingCredential": "Add the required credential before saving.",
"saveHint": "Changes apply to new web search requests."
}
},
"overview": {
"model": "Current model",
"providers": "Providers",
"configuredCount": "{{count}} configured",
"totalProviders": "{{count}} available",
"webSearch": "Web search",
"imageGeneration": "Image generation",
"workspace": "Workspace"
},
"providers": {
"searchPlaceholder": "Search providers",
"noMatches": "No providers match this search.",
"saveProvider": "Save provider"
},
"legal": {
"thirdPartyBrands": "Product names, logos, and brands are property of their respective owners. Use is for identification only and does not imply endorsement."
},
"image": {
"selectProvider": "Select provider",
"selectAspect": "Select aspect",
"selectSize": "Select size",
"configureProvider": "Configure provider",
"missingCredential": "Configure this provider before enabling image generation."
}
},
"chat": {
"fallbackTitle": "Chat {{id}}",
"loading": "Loading…",
"noSessions": "No sessions yet.",
"showMore": "Show {{count}} more",
"actions": "Chat actions for {{title}}",
"activity": {
"running": "Agent running",
"complete": "Agent finished"
},
"pin": "Pin",
"unpin": "Unpin",
"rename": "Rename",
"renameTitle": "Rename chat",
"renameDescription": "Choose a local sidebar name for this chat.",
"renamePlaceholder": "Chat name",
"renameSave": "Save",
"archive": "Archive",
"unarchive": "Unarchive",
"showArchived": "Show archived",
"hideArchived": "Hide archived",
"delete": "Delete",
"newChat": "New chat",
"groups": {
"pinned": "Pinned",
"all": "Chats",
"today": "Today",
"yesterday": "Yesterday",
"earlier": "Earlier",
"archived": "Archived"
}
},
"deleteConfirm": {
"title": "Delete this chat?",
"description": "This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete"
},
"connection": {
"idle": "Idle",
"connecting": "Connecting…",
"open": "Connected",
"reconnecting": "Reconnecting…",
"closed": "Disconnected",
"error": "Connection error"
},
"thread": {
"loadingConversation": "Loading conversation…",
"empty": {
"greeting": "What can I do for you?",
"quickActions": {
"plan": {
"title": "Create a project plan",
"prompt": "Create a concise project plan for what I should build next."
},
"analyze": {
"title": "Analyze this data",
"prompt": "Help me analyze this data and call out the most important patterns."
},
"brainstorm": {
"title": "Brainstorm ideas",
"prompt": "Brainstorm a few practical ideas and tradeoffs for this problem."
},
"code": {
"title": "Write code",
"prompt": "Help me write the code for this task, starting with the smallest useful change."
},
"summarize": {
"title": "Summarize this document",
"prompt": "Summarize this document and list the key takeaways."
},
"more": {
"title": "More",
"prompt": "Show me a few useful ways you can help in this workspace."
}
},
"imageQuickActions": {
"icon": {
"title": "Design an app icon",
"prompt": "Generate a clean 1:1 app icon for nanobot: friendly robot, simple vector style, soft blue and white palette, no text."
},
"sticker": {
"title": "Make a sticker",
"prompt": "Generate a cute sticker-style image of a tiny robot assistant, transparent-looking background, expressive and playful."
},
"poster": {
"title": "Create a poster",
"prompt": "Generate a polished poster concept for a personal AI assistant, modern composition, strong visual hierarchy, suitable for a landing page."
},
"product": {
"title": "Product mockup",
"prompt": "Generate a clean product mockup image for a conversational AI web app, minimal interface, premium lighting, realistic device frame."
},
"portrait": {
"title": "Stylized portrait",
"prompt": "Generate a stylized portrait of a friendly AI companion, soft lighting, detailed but approachable, modern illustration style."
},
"edit": {
"title": "Edit an image",
"prompt": "Help me edit an image. Ask me to upload or reference the image first, then generate the edited result."
}
}
},
"header": {
"toggleSidebar": "Toggle sidebar",
"newChat": "Start a new chat",
"toggleTheme": "Toggle theme from header",
"settings": "Open settings"
},
"composer": {
"placeholderThread": "Type your message…",
"placeholderHero": "Ask anything...",
"placeholderOpening": "Opening a new chat…",
"placeholderStreaming": "Model is responding…",
"inputAria": "Message input",
"sendHint": "Enter to send · Shift+Enter for newline",
"runRuntimeTitle": "Running · {{elapsed}}",
"goalStateStrip": "Goal · {{label}}",
"goalStateFallback": "Goal",
"goalStateExpandAria": "Show full goal",
"goalStateSheetTitle": "Goal",
"goalStateCloseAria": "Close goal",
"send": "Send message",
"stop": "Stop response",
"attachImage": "Attach image",
"imageMode": {
"label": "Image Generation",
"toggle": "Toggle image generation mode",
"placeholder": "Describe or edit an image…",
"aspectAria": "Image aspect ratio",
"aspectLabel": "Image aspect",
"aspect": {
"auto": "Auto",
"1_1": "Square 1:1",
"3_4": "Portrait 3:4",
"9_16": "Story 9:16",
"4_3": "Landscape 4:3",
"16_9": "Wide 16:9"
}
},
"tools": {
"search": "Search",
"reason": "Reason",
"deepResearch": "Deep research",
"voice": "Voice input"
},
"slash": {
"ariaLabel": "Slash commands",
"label": "commands",
"navigateHint": "↑↓ Navigate",
"selectHint": "Enter/Tab Select",
"closeHint": "Esc Close",
"commands": {
"new": {
"title": "New chat",
"description": "Stop the current task and start a fresh conversation."
},
"stop": {
"title": "Stop current task",
"description": "Cancel the active agent turn for this chat."
},
"restart": {
"title": "Restart nanobot",
"description": "Restart the bot process in place."
},
"status": {
"title": "Show status",
"description": "Display runtime, provider, and channel status."
},
"history": {
"title": "Show conversation history",
"description": "Print the last N persisted conversation messages."
},
"dream": {
"title": "Run Dream",
"description": "Manually trigger memory consolidation."
},
"dream_log": {
"title": "Show Dream log",
"description": "Show what the last Dream consolidation changed."
},
"dream_restore": {
"title": "Restore memory",
"description": "Revert memory to a previous Dream snapshot."
},
"goal": {
"title": "Long-running goal",
"description": "Tell the agent to treat this as a sustained multi-step goal."
},
"help": {
"title": "Show help",
"description": "List available slash commands."
}
}
},
"mentions": {
"ariaLabel": "Apps and MCP",
"label": "Plugins",
"cliGroup": "CLI Apps",
"mcpGroup": "MCP servers",
"cliBadge": "CLI",
"mcpBadge": "MCP",
"cliDescription": "Use @{{name}} as a local CLI app",
"mcpDescription": "Use @{{name}} as an MCP server"
},
"encoding": "Encoding…",
"remove": "Remove attachment",
"normalizedSizeHint": "{{orig}} → {{current}} (auto)",
"imageRejected": {
"unsupported_type": "Unsupported file type",
"too_many_images": "Max {{max}} images per message",
"magic_mismatch": "File doesn't look like a real image",
"decode_failed": "Couldn't decode this image",
"too_large": "Image is too large — try a smaller one",
"io": "Couldn't read this file"
}
},
"scrollToBottom": "Scroll to bottom",
"loadEarlier": "Load earlier messages"
},
"message": {
"streaming": "streaming",
"assistantTyping": "Assistant is typing",
"toolSingle": "Using a tool",
"toolMany": "Used {{count}} tools",
"toolSummary": "{{count}} tool",
"toolSummaryMany": "{{count}} tools",
"reasoningTools": "Reasoning · {{count}} tools",
"reasoningToolsSingular": "Reasoning · 1 tool",
"reasoning": "Thinking",
"reasoningStreaming": "Thinking…",
"reasoningSummary": "Reasoning",
"agentActivitySummary": "{{reasoning}} steps · {{tools}} tool calls",
"agentActivityToolsOnly": "{{tools}} tool calls",
"agentActivityLiveSummary": "Working… · {{reasoning}} steps · {{tools}} tool calls",
"agentActivityLiveToolsOnly": "Working… · {{tools}} tool calls",
"activityThinkingFor": "Thinking for {{duration}}",
"activityThoughtFor": "Thought for {{duration}}",
"cliActivityRunningOne": "Using @{{name}}",
"cliActivityRanOne": "Used @{{name}}",
"cliActivityFailedOne": "Failed @{{name}}",
"cliActivityRunningMany": "Using {{count}} CLI apps",
"cliActivityRanMany": "Used {{count}} CLI apps",
"cliActivityFailedMany": "{{count}} CLI apps failed",
"cliRunRunning": "Using",
"cliRunRan": "Used",
"cliRunFailed": "Failed",
"imageAttachment": "Image attachment",
"copyReply": "Copy reply",
"copiedReply": "Copied reply",
"turnLatencyTitle": "Response time (end-to-end)"
},
"lightbox": {
"title": "Image preview",
"open": "View image",
"prev": "Previous image",
"next": "Next image",
"close": "Close image preview"
},
"code": {
"fallbackLanguage": "code",
"copyAria": "Copy code",
"copy": "Copy",
"copied": "Copied"
},
"common": {
"dismiss": "Dismiss"
},
"errors": {
"messageTooBig": {
"title": "Message too large",
"body": "The server rejected your last message because it exceeded the size limit. Remove some images or try smaller files, then send again."
}
}
}