{ "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 chats", "searchPlaceholder": "Search chats", "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" }, "sections": { "interface": "Interface", "ai": "AI", "system": "System" }, "rows": { "theme": "Theme", "language": "Language", "provider": "Provider", "model": "Model", "restart": "Restart nanobot", "configPath": "Config path" }, "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." }, "values": { "light": "Light", "dark": "Dark", "notAvailable": "Not available" }, "status": { "loading": "Loading settings...", "loadError": "Could not load settings", "unsaved": "Unsaved changes.", "savedRestart": "Saved. Restart nanobot to apply." }, "actions": { "save": "Save", "saving": "Saving", "edit": "Edit", "cancel": "Cancel" }, "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" } }, "chat": { "fallbackTitle": "Chat {{id}}", "loading": "Loading…", "noSessions": "No sessions yet.", "actions": "Chat actions for {{title}}", "delete": "Delete", "newChat": "New chat", "groups": { "today": "Today", "yesterday": "Yesterday", "earlier": "Earlier" } }, "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", "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." }, "help": { "title": "Show help", "description": "List available slash commands." } } }, "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" }, "message": { "streaming": "streaming", "assistantTyping": "Assistant is typing", "toolSingle": "Using a tool", "toolMany": "Used {{count}} tools", "imageAttachment": "Image attachment", "copyReply": "Copy reply", "copiedReply": "Copied reply" }, "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." } } }