maintainer edit: cron is also a trigger source, so keep the new CLI-delivered source explicitly named as local trigger across backend, WebUI, docs, and tests.
1066 lines
39 KiB
JSON
1066 lines
39 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...",
|
|
"restartEngine": "Restart engine",
|
|
"restartingEngine": "Restarting engine..."
|
|
},
|
|
"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",
|
|
"collapse": "Collapse sidebar",
|
|
"newChat": "New chat",
|
|
"searchAria": "Search",
|
|
"searchPlaceholder": "Search",
|
|
"searchResults": "Results",
|
|
"noSearchResults": "No matching chats.",
|
|
"recent": "Recent",
|
|
"settings": "Settings",
|
|
"language": {
|
|
"label": "Language",
|
|
"ariaLabel": "Change language"
|
|
},
|
|
"apps": "Apps",
|
|
"automations": "Automations",
|
|
"skills": {
|
|
"title": "Skills"
|
|
}
|
|
},
|
|
"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",
|
|
"voice": "Voice",
|
|
"browser": "Web",
|
|
"cliApps": "CLI Apps",
|
|
"mcp": "MCP",
|
|
"runtime": "System",
|
|
"advanced": "Security",
|
|
"apps": "Apps",
|
|
"automations": "Automations",
|
|
"skills": "Skills"
|
|
},
|
|
"sections": {
|
|
"interface": "Interface",
|
|
"ai": "AI",
|
|
"system": "System",
|
|
"about": "About",
|
|
"status": "Status",
|
|
"localPreferences": "Local preferences",
|
|
"presets": "Presets",
|
|
"imageGeneration": "Image generation",
|
|
"imageDefaults": "Defaults",
|
|
"webSearch": "Web search",
|
|
"webBehavior": "Behavior",
|
|
"cliApps": "CLI apps",
|
|
"mcp": "MCP services",
|
|
"identity": "Identity",
|
|
"webuiSafety": "Web safety",
|
|
"capabilities": "Capabilities",
|
|
"apps": "Apps",
|
|
"nativeHost": "Native host",
|
|
"hostSafety": "App safety",
|
|
"voiceInput": "Voice input"
|
|
},
|
|
"models": {
|
|
"selectModel": "Select model",
|
|
"addConfiguration": "Add configuration",
|
|
"newConfiguration": "New model configuration",
|
|
"newConfigurationHelp": "Save a provider and model as a one-click option.",
|
|
"configurationName": "Configuration name",
|
|
"configurationNameHelp": "Rename this saved model configuration.",
|
|
"configurationNamePlaceholder": "Fast writing",
|
|
"searchModels": "Search or type model ID",
|
|
"useCustomModel": "Use",
|
|
"loadingModels": "Loading models...",
|
|
"searchCatalog": "Search provider catalog to choose a model.",
|
|
"modelsAvailable": "available",
|
|
"noModelResults": "No matching models.",
|
|
"loadFailed": "Model list unavailable.",
|
|
"unsupportedModelList": "Type a model ID manually.",
|
|
"providerNotConfigured": "Configure this provider before loading models.",
|
|
"autoProviderCustomOnly": "Auto provider mode uses custom model IDs."
|
|
},
|
|
"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 configuration",
|
|
"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",
|
|
"workspacePath": "Default workspace",
|
|
"localServiceAccess": "Local services",
|
|
"webuiDefaultAccess": "Default access",
|
|
"cliAppsCatalog": "Catalog",
|
|
"cliAppsFilter": "Filter",
|
|
"engine": "Engine",
|
|
"logs": "Logs",
|
|
"diagnostics": "Diagnostics",
|
|
"contextWindow": "Context window",
|
|
"transcription": "Transcription",
|
|
"transcriptionProvider": "Provider",
|
|
"transcriptionProviderStatus": "Provider status",
|
|
"transcriptionModel": "Model",
|
|
"transcriptionLanguage": "Language",
|
|
"voiceLimits": "Limits"
|
|
},
|
|
"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": "Used 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 wherever nanobot uses a display name.",
|
|
"botIcon": "Short emoji or text shown with the bot name.",
|
|
"timezone": "Used for schedules and time-aware replies.",
|
|
"cliAppsCatalog": "Install only the app-specific CLI adapters nanobot can run locally; native apps stay untouched.",
|
|
"cliAppsFilter": "Search by app, category, or capability.",
|
|
"localServiceAccess": "Allow Full Access shell commands to reach localhost services.",
|
|
"webuiDefaultAccess": "Used by web chats without a project-specific permission.",
|
|
"securityManagedControls": "Web fetches always protect local, private, and metadata services. Core channel safety stays in config.json.",
|
|
"logs": "Open the native engine log folder.",
|
|
"diagnostics": "Export a small runtime report for support.",
|
|
"localServiceAccessNative": "Allow Full Access shell commands to reach services on this Mac.",
|
|
"webuiDefaultAccessNative": "Used by native chats without a project-specific permission.",
|
|
"contextWindow": "Choose the default context budget for this model configuration.",
|
|
"transcription": "Transcribe microphone input before sending it. Chat channel voice messages use the same settings.",
|
|
"transcriptionProvider": "Uses the matching provider credentials from Providers.",
|
|
"transcriptionProviderStatus": "API keys stay under providers, not in transcription settings.",
|
|
"transcriptionModel": "Leave as the resolved default unless your provider needs a custom model id.",
|
|
"transcriptionLanguage": "Optional ISO-639 hint such as en, zh, ja, or ko."
|
|
},
|
|
"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."
|
|
},
|
|
"about": {
|
|
"version": "Version",
|
|
"checking": "Checking...",
|
|
"checkForUpdates": "Check for updates",
|
|
"upToDate": "You're up to date",
|
|
"updateAvailable": "Update available v{{version}}"
|
|
},
|
|
"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",
|
|
"privateEngine": "Private engine",
|
|
"unixSocket": "Unix socket",
|
|
"defaultWorkspace": "Default workspace",
|
|
"comfortable": "Comfortable",
|
|
"compact": "Compact",
|
|
"auto": "Auto",
|
|
"expanded": "Expanded",
|
|
"on": "On",
|
|
"off": "Off",
|
|
"defaultPermission": "Default Permission",
|
|
"fullAccess": "Full Access",
|
|
"configured": "Configured",
|
|
"notConfigured": "Not configured",
|
|
"pending": "Pending",
|
|
"restartingEngine": "Restarting"
|
|
},
|
|
"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.",
|
|
"hostRestartAfterSaving": "Save changes and nanobot will restart its engine.",
|
|
"hostRestartPending": "Saved. Restarting engine when ready.",
|
|
"hostApiUnavailable": "Host actions are only available inside the native app.",
|
|
"logsOpened": "Opened logs folder.",
|
|
"logsOpenFailed": "Could not open logs folder.",
|
|
"diagnosticsExported": "Diagnostics exported to {{path}}.",
|
|
"diagnosticsExportFailed": "Could not export diagnostics."
|
|
},
|
|
"actions": {
|
|
"save": "Save",
|
|
"saving": "Saving",
|
|
"edit": "Edit",
|
|
"cancel": "Cancel",
|
|
"open": "Open",
|
|
"export": "Export",
|
|
"opening": "Opening...",
|
|
"exporting": "Exporting..."
|
|
},
|
|
"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",
|
|
"voiceInput": "Voice input",
|
|
"workspace": "Workspace"
|
|
},
|
|
"usage": {
|
|
"title": "Token activity",
|
|
"shortTitle": "Token Usage",
|
|
"subtitle": "Provider-reported usage over the last 12 months.",
|
|
"empty": "Token activity will appear after new model replies.",
|
|
"totalTokens": "Total tokens",
|
|
"peakTokens": "Peak tokens",
|
|
"thirtyDayTokens": "30-day tokens",
|
|
"currentStreak": "Current streak",
|
|
"longestStreak": "Longest streak",
|
|
"daysValue": "{{count}}d",
|
|
"last30": "30 days",
|
|
"activeDays": "Active days",
|
|
"requests": "Requests",
|
|
"estimated": "estimated",
|
|
"includesEstimates": "includes estimates",
|
|
"cellTitle": "{{date}}: {{tokens}} tokens, {{requests}} requests",
|
|
"sources": {
|
|
"user": "Chat",
|
|
"api": "API",
|
|
"cron": "Automations",
|
|
"dream": "Memory",
|
|
"system": "System"
|
|
}
|
|
},
|
|
"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."
|
|
},
|
|
"apps": {
|
|
"description": "Add app CLIs and MCP services nanobot can use from chat.",
|
|
"cliLabel": "CLI",
|
|
"mcpLabel": "MCP",
|
|
"filterAll": "All",
|
|
"filterCli": "CLI apps",
|
|
"filterMcp": "MCP services",
|
|
"enabledSummary": "{{count}} enabled",
|
|
"caption": "{{cli}} CLI · {{mcp}} MCP",
|
|
"searchPlaceholder": "Search Apps",
|
|
"featured": "Featured",
|
|
"loading": "Loading Apps...",
|
|
"empty": "No apps match this filter."
|
|
},
|
|
"automations": {
|
|
"filters": {
|
|
"all": "All",
|
|
"active": "Active",
|
|
"paused": "Paused",
|
|
"failed": "Needs attention",
|
|
"system": "System"
|
|
},
|
|
"sort": {
|
|
"next": "Next run",
|
|
"last": "Last run",
|
|
"updated": "Updated",
|
|
"name": "Name"
|
|
},
|
|
"search": "Search task, message, linked chat, or schedule",
|
|
"queue": "Queue",
|
|
"loading": "Loading automations...",
|
|
"noMatches": "No automations match this view.",
|
|
"empty": "No automations yet.",
|
|
"emptyHint": "Create one from where it should run so nanobot keeps the right context.",
|
|
"oneShot": "One-time",
|
|
"systemTask": "System-managed automation",
|
|
"localTrigger": "Local trigger",
|
|
"labels": {
|
|
"schedule": "Schedule",
|
|
"next": "Next",
|
|
"origin": "Linked chat",
|
|
"created": "Created",
|
|
"updated": "Updated"
|
|
},
|
|
"runNow": "Run now",
|
|
"pause": "Pause",
|
|
"resume": "Resume",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"protected": "Protected",
|
|
"editTitle": "Edit automation",
|
|
"save": "Save",
|
|
"deleteTitle": "Delete automation",
|
|
"deleteDescription": "This removes {{name}} from the cron store. Past chat messages stay in the session.",
|
|
"cancel": "Cancel",
|
|
"status": {
|
|
"system": "System",
|
|
"running": "Running now",
|
|
"paused": "Paused",
|
|
"failed": "Failed",
|
|
"completed": "Completed",
|
|
"noSchedule": "No schedule",
|
|
"active": "Active"
|
|
},
|
|
"origin": {
|
|
"system": "System",
|
|
"unknown": "No linked chat"
|
|
},
|
|
"channels": {
|
|
"api": "API",
|
|
"cli": "CLI",
|
|
"dingtalk": "DingTalk",
|
|
"discord": "Discord",
|
|
"email": "Email",
|
|
"feishu": "Feishu",
|
|
"matrix": "Matrix",
|
|
"msteams": "Microsoft Teams",
|
|
"qq": "QQ",
|
|
"slack": "Slack",
|
|
"telegram": "Telegram",
|
|
"wechat": "WeChat",
|
|
"wecom": "WeCom",
|
|
"weixin": "WeChat",
|
|
"whatsapp": "WhatsApp"
|
|
},
|
|
"schedule": {
|
|
"at": "At {{time}}",
|
|
"every": "Every {{duration}}",
|
|
"cron": "Cron {{expr}}",
|
|
"cronWithTz": "Cron {{expr}} · {{tz}}",
|
|
"withTz": "{{summary}} · {{tz}}",
|
|
"dailyAt": "Daily at {{time}}",
|
|
"weekdaysAt": "Weekdays at {{time}}",
|
|
"hourlyAt": "Hourly at :{{minute}}",
|
|
"hourlyWindow": "Hourly {{start}}-{{end}} at :{{minute}}",
|
|
"local": "Local trigger",
|
|
"custom": "Custom schedule"
|
|
},
|
|
"next": {
|
|
"paused": "Paused",
|
|
"pending": "Running now",
|
|
"local": "Waiting for trigger",
|
|
"none": "No next run"
|
|
},
|
|
"message": {
|
|
"showMore": "Show full message",
|
|
"showLess": "Show less"
|
|
},
|
|
"fields": {
|
|
"name": "Name",
|
|
"message": "Message",
|
|
"scheduleType": "Schedule type",
|
|
"every": "Every",
|
|
"unit": "Unit",
|
|
"cronExpression": "Cron expression",
|
|
"timezone": "Timezone",
|
|
"runAt": "Run at"
|
|
},
|
|
"scheduleTypes": {
|
|
"every": "Interval",
|
|
"cron": "Cron",
|
|
"at": "Once"
|
|
},
|
|
"everyUnits": {
|
|
"second": "Seconds",
|
|
"minute": "Minutes",
|
|
"hour": "Hours",
|
|
"day": "Days"
|
|
},
|
|
"validation": {
|
|
"nameRequired": "Name is required.",
|
|
"messageRequired": "Message is required.",
|
|
"intervalRequired": "Interval must be a positive number.",
|
|
"cronRequired": "Cron expression is required.",
|
|
"timeRequired": "Run time is required.",
|
|
"futureRequired": "Run time must be in the future."
|
|
}
|
|
},
|
|
"oauth": {
|
|
"authentication": "OAuth authentication",
|
|
"signIn": "Sign in",
|
|
"signingIn": "Signing in...",
|
|
"signInAgain": "Sign in again",
|
|
"signOut": "Sign out",
|
|
"signedInAs": "Signed in as {{account}}",
|
|
"signInHelp": "Sign in from this device; no API key is stored in config.",
|
|
"signInRequired": "Sign in required",
|
|
"signInBeforeSaving": "Sign in before saving this OAuth provider as the active model provider.",
|
|
"signedIn": "Signed in",
|
|
"notSignedIn": "Not signed in"
|
|
},
|
|
"skills": {
|
|
"description": "Review the instruction skills this agent can load during a conversation.",
|
|
"caption": "{{available}} available · {{total}} total",
|
|
"featured": "Agent skills",
|
|
"empty": "No skills are available.",
|
|
"sourceWorkspace": "Custom",
|
|
"sourceBuiltin": "Built-in",
|
|
"statusAvailable": "Available",
|
|
"statusUnavailable": "Unavailable",
|
|
"unavailableReason": "Missing: {{reason}}",
|
|
"openDetails": "Open details for {{name}}",
|
|
"loadingDetail": "Loading skill details...",
|
|
"loadFailed": "Could not load skill details.",
|
|
"descriptionTitle": "Description",
|
|
"source": "Source",
|
|
"status": "Status",
|
|
"requirements": "Requirements",
|
|
"noRequirements": "No explicit requirements.",
|
|
"commands": "Commands",
|
|
"environment": "Environment variables",
|
|
"missingCommands": "Missing CLI",
|
|
"missingEnvironment": "Missing ENV",
|
|
"unavailableReasonLabel": "Unavailable reason",
|
|
"rawInstructions": "Raw SKILL.md",
|
|
"rawInstructionsEmpty": "No raw instructions.",
|
|
"detailDescription": "Details for {{name}}."
|
|
},
|
|
"voice": {
|
|
"selectProvider": "Select provider",
|
|
"configureProvider": "Configure provider",
|
|
"languageAuto": "Auto"
|
|
}
|
|
},
|
|
"chat": {
|
|
"fallbackTitle": "Chat {{id}}",
|
|
"forkTitle": "Fork: {{title}}",
|
|
"loading": "Loading…",
|
|
"noSessions": "No sessions yet.",
|
|
"showMore": "Show {{count}} more",
|
|
"collapsed": "{{count}} hidden chats",
|
|
"showLess": "Show less",
|
|
"actions": "Chat actions for {{title}}",
|
|
"newInProject": "Start a new chat in {{project}}",
|
|
"activity": {
|
|
"running": "Agent running",
|
|
"complete": "Agent finished",
|
|
"updated": "New activity"
|
|
},
|
|
"pin": "Pin",
|
|
"unpin": "Unpin",
|
|
"rename": "Rename",
|
|
"renameTitle": "Rename chat",
|
|
"renameDescription": "Choose a local sidebar name for this chat.",
|
|
"renamePlaceholder": "Chat name",
|
|
"renameProjectTitle": "Rename project",
|
|
"renameProjectDescription": "Choose a local sidebar name for this project.",
|
|
"renameProjectPlaceholder": "Project name",
|
|
"renameSave": "Save",
|
|
"archive": "Archive",
|
|
"unarchive": "Unarchive",
|
|
"showArchived": "Show archived",
|
|
"hideArchived": "Hide archived",
|
|
"delete": "Delete",
|
|
"newChat": "New chat",
|
|
"groups": {
|
|
"pinned": "Pinned",
|
|
"all": "Chats",
|
|
"projects": "Projects",
|
|
"today": "Today",
|
|
"yesterday": "Yesterday",
|
|
"earlier": "Earlier",
|
|
"archived": "Archived"
|
|
}
|
|
},
|
|
"deleteConfirm": {
|
|
"title": "Delete this chat?",
|
|
"description": "This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirm": "Delete",
|
|
"automationsDescription": "This chat has scheduled automations. Deleting it will also delete them.",
|
|
"moreAutomations": "+ {{count}} more",
|
|
"confirmWithAutomations": "Delete",
|
|
"schedule": {
|
|
"at": "{{time}}",
|
|
"every": "Every {{duration}}",
|
|
"cron": "Cron {{expr}}",
|
|
"cronWithTz": "Cron {{expr}} · {{tz}}",
|
|
"local": "Local trigger",
|
|
"unknown": "Custom schedule"
|
|
},
|
|
"next": {
|
|
"label": "Next: {{time}}",
|
|
"disabled": "Paused",
|
|
"local": "Waiting for trigger",
|
|
"none": "No next run"
|
|
}
|
|
},
|
|
"connection": {
|
|
"idle": "Idle",
|
|
"connecting": "Connecting…",
|
|
"open": "Connected",
|
|
"reconnecting": "Reconnecting…",
|
|
"closed": "Disconnected",
|
|
"error": "Connection error"
|
|
},
|
|
"thread": {
|
|
"loadingConversation": "Loading conversation…",
|
|
"empty": {
|
|
"greetings": {
|
|
"workOn": "What should we work on?",
|
|
"start": "Where should we start?",
|
|
"build": "What are we building today?",
|
|
"tackle": "What should we tackle together?"
|
|
},
|
|
"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",
|
|
"sessionInfo": "Session details"
|
|
},
|
|
"sessionInfo": {
|
|
"title": "Session",
|
|
"untitled": "Untitled chat",
|
|
"automations": "Automations",
|
|
"count": "{{count}}",
|
|
"loading": "Loading automations...",
|
|
"loadFailed": "Could not load automations.",
|
|
"empty": "No automations in this session yet.",
|
|
"disabled": "Off",
|
|
"schedule": {
|
|
"at": "{{time}}",
|
|
"every": "Every {{duration}}",
|
|
"cron": "Cron {{expr}}",
|
|
"cronWithTz": "Cron {{expr}} · {{tz}}",
|
|
"local": "Local trigger",
|
|
"unknown": "Custom schedule"
|
|
},
|
|
"next": {
|
|
"label": "{{time}}",
|
|
"pending": "Runs shortly",
|
|
"disabled": "Paused",
|
|
"local": "Waiting for trigger",
|
|
"none": "No next run"
|
|
}
|
|
},
|
|
"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",
|
|
"modelNotConfigured": "Model not configured",
|
|
"configureModel": "Configure model",
|
|
"queued": {
|
|
"label": "Queued guidance",
|
|
"guide": "Guide",
|
|
"delete": "Delete guidance",
|
|
"edit": "Edit guidance",
|
|
"drag": "Drag to reorder"
|
|
},
|
|
"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"
|
|
},
|
|
"voice": {
|
|
"hint": "Click to dictate or hold",
|
|
"stop": "Stop recording",
|
|
"transcribing": "Transcribing...",
|
|
"recordingStatus": "Recording {{time}}"
|
|
},
|
|
"voiceErrors": {
|
|
"unsupported": "Voice input is not supported in this browser.",
|
|
"permission": "Microphone permission is required.",
|
|
"notConfigured": "Configure a transcription provider first.",
|
|
"tooLong": "Recording is too long.",
|
|
"tooShort": "Hold a little longer to record voice.",
|
|
"noInput": "No microphone input detected.",
|
|
"failed": "Could not transcribe audio."
|
|
},
|
|
"slash": {
|
|
"ariaLabel": "Slash commands",
|
|
"label": "commands",
|
|
"navigateHint": "↑↓ Navigate",
|
|
"selectHint": "Enter/Tab Select",
|
|
"closeHint": "Esc Close",
|
|
"badges": {
|
|
"current": "Current",
|
|
"recent": "Recent"
|
|
},
|
|
"details": {
|
|
"goalActive": "Goal is running",
|
|
"goalReady": "Start a sustained objective",
|
|
"history": "Show recent messages",
|
|
"stopRunning": "Running now"
|
|
},
|
|
"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."
|
|
},
|
|
"model": {
|
|
"title": "Model",
|
|
"description": "Show or switch the active model preset."
|
|
},
|
|
"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."
|
|
},
|
|
"trigger": {
|
|
"title": "Create local trigger",
|
|
"description": "Create a CLI trigger bound to this chat session."
|
|
},
|
|
"help": {
|
|
"title": "Show help",
|
|
"description": "List available slash commands."
|
|
},
|
|
"pairing": {
|
|
"title": "Pairing",
|
|
"description": "Manage pairing requests."
|
|
}
|
|
}
|
|
},
|
|
"mentions": {
|
|
"ariaLabel": "Apps",
|
|
"label": "Apps",
|
|
"cliGroup": "CLI apps",
|
|
"mcpGroup": "MCP services",
|
|
"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"
|
|
},
|
|
"workspace": {
|
|
"accessAria": "Workspace access mode",
|
|
"projectAria": "Choose project",
|
|
"projectPlaceholder": "Select project",
|
|
"default": "Default Permission",
|
|
"full": "Full Access"
|
|
}
|
|
},
|
|
"scrollToBottom": "Scroll to bottom",
|
|
"loadEarlier": "Load earlier messages",
|
|
"forkedFromHistory": "Forked from history",
|
|
"promptNavigator": {
|
|
"open": "Open prompt navigator",
|
|
"title": "Prompts",
|
|
"search": "Search prompts",
|
|
"noResults": "No matching prompts.",
|
|
"jumpTo": "Jump to prompt: {{label}}"
|
|
}
|
|
},
|
|
"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}}",
|
|
"activityThought": "Thought",
|
|
"activityThoughtFor": "Thought for {{duration}}",
|
|
"activityWorkingFor": "Working for {{duration}}",
|
|
"activityWorked": "Worked",
|
|
"activityWorkedFor": "Worked 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",
|
|
"automationSourceFallback": "Automation",
|
|
"automationTriggered": "Triggered automatically",
|
|
"forkFromHere": "Fork",
|
|
"copyReply": "Copy",
|
|
"copiedReply": "Copied",
|
|
"turnLatencyTitle": "Response time (end-to-end)"
|
|
},
|
|
"lightbox": {
|
|
"title": "Image preview",
|
|
"open": "View image",
|
|
"prev": "Previous image",
|
|
"next": "Next image",
|
|
"close": "Close image preview"
|
|
},
|
|
"filePreview": {
|
|
"aria": "File preview",
|
|
"close": "Close file preview",
|
|
"loading": "Loading preview...",
|
|
"failed": "Could not preview this file.",
|
|
"routeMissing": "File preview needs the latest gateway. Restart nanobot gateway and try again.",
|
|
"resize": "Resize file preview",
|
|
"truncated": "Preview is truncated because this file is large."
|
|
},
|
|
"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."
|
|
},
|
|
"workspaceScopeRejected": {
|
|
"title": "Workspace was not changed",
|
|
"body": "Nanobot kept the previous workspace because the requested project or access mode was rejected by the gateway."
|
|
}
|
|
},
|
|
"workspace": {
|
|
"dialog": {
|
|
"defaultProject": "Default workspace",
|
|
"manual": "Paste path",
|
|
"manualPlaceholder": "/Users/name/project",
|
|
"usePath": "Use Path",
|
|
"absolutePathRequired": "Enter an absolute folder path on this machine."
|
|
}
|
|
}
|
|
}
|