{ "@@locale": "en", "appTitle": "Conduit", "@appTitle": { "description": "Application name displayed in the app and OS UI." }, "retry": "Retry", "@retry": { "description": "Button label to try an action again." }, "back": "Back", "@back": { "description": "Back navigation label/tooltip." }, "you": "You", "@you": { "description": "Profile tab title." }, "loadingProfile": "Loading profile...", "@loadingProfile": { "description": "Progress message while fetching profile data." }, "unableToLoadProfile": "Unable to load profile", "@unableToLoadProfile": { "description": "Error title shown when profile request fails." }, "pleaseCheckConnection": "Please check your connection and try again", "connectionIssueTitle": "Can't reach your server", "@connectionIssueTitle": { "description": "Title shown when the configured server is unreachable" }, "connectionIssueSubtitle": "Reconnect to continue or sign out to choose a different server.", "@connectionIssueSubtitle": { "description": "Subtitle explaining available actions when the server cannot be reached" }, "@pleaseCheckConnection": { "description": "Generic connectivity hint after an error." }, "account": "Account", "@account": { "description": "Section header for account-related options." }, "supportConduit": "Support Conduit", "@supportConduit": { "description": "Section header inviting the user to financially support the project." }, "supportConduitSubtitle": "Keep Conduit independent by funding ongoing development.", "@supportConduitSubtitle": { "description": "Subtitle explaining why donations are helpful." }, "githubSponsorsTitle": "GitHub Sponsors", "@githubSponsorsTitle": { "description": "Tile title linking to the GitHub Sponsors page." }, "githubSponsorsSubtitle": "Become a recurring sponsor to fund roadmap items.", "@githubSponsorsSubtitle": { "description": "Subtitle explaining the impact of recurring sponsorship." }, "buyMeACoffeeTitle": "Buy Me a Coffee", "@buyMeACoffeeTitle": { "description": "Tile title linking to the Buy Me a Coffee page." }, "buyMeACoffeeSubtitle": "Make a one-time donation to say thanks.", "@buyMeACoffeeSubtitle": { "description": "Subtitle encouraging one-time donations via Buy Me a Coffee." }, "signOut": "Sign Out", "@signOut": { "description": "Button/title for signing out of the app." }, "endYourSession": "End your session", "@endYourSession": { "description": "Subtitle explaining the sign-out action." }, "defaultModel": "Default Model", "@defaultModel": { "description": "Label for choosing a default AI model." }, "autoSelect": "Auto-select", "@autoSelect": { "description": "Option to let the app pick a suitable model automatically." }, "loadingModels": "Loading models...", "@loadingModels": { "description": "Progress message while fetching model list." }, "failedToLoadModels": "Failed to load models", "@failedToLoadModels": { "description": "Error message shown when model list cannot be retrieved." }, "availableModels": "Available Models", "@availableModels": { "description": "Header above a list of models to select from." }, "modelCapabilityMultimodal": "Multimodal", "@modelCapabilityMultimodal": { "description": "Capability chip label for models that support multimodal input." }, "modelCapabilityReasoning": "Reasoning", "@modelCapabilityReasoning": { "description": "Capability chip label for models that support reasoning features." }, "noResults": "No results", "@noResults": { "description": "Shown when a search returns no matches." }, "searchModels": "Search models...", "@searchModels": { "description": "Hint text for model search input." }, "errorMessage": "Something went wrong. Please try again.", "@errorMessage": { "description": "Generic error message for unexpected failures." }, "closeButtonSemantic": "Close", "@closeButtonSemantic": { "description": "Accessible label for a generic Close button." }, "loadingContent": "Loading content", "@loadingContent": { "description": "Shown while loading page content." }, "loadingShort": "Loading", "@loadingShort": { "description": "Short loading label used for accessibility." }, "loadingAnnouncement": "Loading: {message}", "@loadingAnnouncement": { "description": "Screen reader announcement when loading a resource.", "placeholders": { "message": { "type": "String", "example": "Messages" } } }, "errorAnnouncement": "Error: {error}", "@errorAnnouncement": { "description": "Screen reader announcement for an error.", "placeholders": { "error": { "type": "String", "example": "Network timeout" } } }, "errorAnnouncementWithSuggestion": "Error: {error}. {suggestion}", "@errorAnnouncementWithSuggestion": { "description": "Screen reader announcement for an error with a follow-up suggestion.", "placeholders": { "error": { "type": "String", "example": "Network timeout" }, "suggestion": { "type": "String", "example": "Please try again later." } } }, "successAnnouncement": "Success: {message}", "@successAnnouncement": { "description": "Screen reader announcement for successful actions.", "placeholders": { "message": { "type": "String", "example": "Profile updated" } } }, "noItems": "No items", "@noItems": { "description": "Placeholder text when a list is empty." }, "noItemsToDisplay": "No items to display", "@noItemsToDisplay": { "description": "Alternative empty-state description." }, "knowledgeBase": "Knowledge Base", "@knowledgeBase": { "description": "Section for knowledge base content." }, "attachments": "Attachments", "@attachments": { "description": "Header above list of attached files in compose area." }, "takePhoto": "Take a photo", "@takePhoto": { "description": "Action to open camera and capture a new photo." }, "document": "Document", "@document": { "description": "Generic document label used in UI." }, "backToServerSetup": "Back to server setup", "@backToServerSetup": { "description": "Button/back label to return to server configuration flow." }, "connectedToServer": "Connected to Server", "@connectedToServer": { "description": "Status label indicating a successful server connection." }, "signIn": "Sign In", "@signIn": { "description": "Button/heading for sign-in flows." }, "enterCredentials": "Enter your credentials to access your AI conversations", "@enterCredentials": { "description": "Instructional text on the sign-in screen." }, "credentials": "Credentials", "@credentials": { "description": "Header for credential input section." }, "apiKey": "API Key", "@apiKey": { "description": "Label for API key input field." }, "token": "Token", "@token": { "description": "Label for JWT token input field." }, "usernameOrEmail": "Username or Email", "@usernameOrEmail": { "description": "Label for username/email input field." }, "password": "Password", "@password": { "description": "Label for password input field." }, "signInWithApiKey": "Sign in with API Key", "@signInWithApiKey": { "description": "Alternative sign-in method using an API key." }, "signInWithToken": "Sign in with Token", "@signInWithToken": { "description": "Alternative sign-in method using a JWT token." }, "connectToServer": "Connect to Server", "@connectToServer": { "description": "Call-to-action button for server connection." }, "enterServerAddress": "Enter your Open-WebUI server address to get started", "@enterServerAddress": { "description": "Instruction telling user to provide server URL to begin." }, "serverUrl": "Server URL", "@serverUrl": { "description": "Label for server URL field." }, "serverUrlHint": "https://your-server.com", "@serverUrlHint": { "description": "Hint text showing example server URL format." }, "enterServerUrlSemantic": "Enter your server URL or IP address", "@enterServerUrlSemantic": { "description": "Semantic/ARIA label instructing to enter server URL or IP." }, "headerName": "Header Name", "@headerName": { "description": "Label for custom header key." }, "headerValue": "Header Value", "@headerValue": { "description": "Label for custom header value." }, "headerValueHint": "api-key-123 or Bearer token", "@headerValueHint": { "description": "Hint text with example header values, including API key or Bearer token." }, "addHeader": "Add header", "@addHeader": { "description": "Button to add a new custom header row." }, "maximumHeadersReached": "Maximum headers reached", "@maximumHeadersReached": { "description": "Warning when custom header limit is reached." }, "removeHeader": "Remove header", "@removeHeader": { "description": "Action to remove a custom header row." }, "connecting": "Connecting...", "@connecting": { "description": "Status while attempting to connect to server." }, "connectToServerButton": "Connect to Server", "@connectToServerButton": { "description": "Primary action button to initiate server connection." }, "demoModeActive": "Demo Mode Active", "@demoModeActive": { "description": "Banner/text indicating the app runs in demo mode." }, "skipServerSetupTryDemo": "Skip server setup and try the demo", "@skipServerSetupTryDemo": { "description": "CTA to bypass server configuration and enter demo mode." }, "enterDemo": "Enter Demo", "@enterDemo": { "description": "Button to enter demo mode." }, "demoBadge": "Demo", "@demoBadge": { "description": "Small badge label for demo content." }, "serverNotOpenWebUI": "This does not appear to be an Open-WebUI server.", "@serverNotOpenWebUI": { "description": "Validation error when the server does not resemble Open-WebUI." }, "serverUrlEmpty": "Server URL cannot be empty", "@serverUrlEmpty": { "description": "Validation message for empty server URL." }, "invalidUrlFormat": "Invalid URL format. Please check your input.", "@invalidUrlFormat": { "description": "Validation message when URL format is incorrect." }, "onlyHttpHttps": "Only HTTP and HTTPS protocols are supported.", "@onlyHttpHttps": { "description": "Validation note restricting protocols to HTTP/HTTPS." }, "serverAddressRequired": "Server address is required (e.g., 192.168.1.10 or example.com).", "@serverAddressRequired": { "description": "Validation hint providing examples for server addresses." }, "portRange": "Port must be between 1 and 65535.", "@portRange": { "description": "Validation message for allowed port range." }, "invalidIpFormat": "Invalid IP address format. Use format like 192.168.1.10.", "@invalidIpFormat": { "description": "Validation message for IP addresses with example." }, "couldNotConnectGeneric": "Couldn't connect. Double-check the address and try again.", "@couldNotConnectGeneric": { "description": "Generic failure when connecting to the server." }, "weCouldntReachServer": "We couldn't reach the server. Check your connection and that the server is running.", "@weCouldntReachServer": { "description": "Connectivity error with hints to verify server status." }, "connectionTimedOut": "Connection timed out. The server might be busy or blocked by a firewall.", "@connectionTimedOut": { "description": "Timeout error while connecting to server." }, "useHttpOrHttpsOnly": "Use http:// or https:// only.", "@useHttpOrHttpsOnly": { "description": "Note instructing the user to include protocol in URL." }, "loginFailed": "Login failed", "@loginFailed": { "description": "Title for failed login attempts." }, "invalidCredentials": "Invalid username or password. Please try again.", "@invalidCredentials": { "description": "Detailed message when authentication fails." }, "serverRedirectingHttps": "The server is redirecting requests. Check your server's HTTPS configuration.", "@serverRedirectingHttps": { "description": "Warning about HTTP→HTTPS redirect issues." }, "unableToConnectServer": "Unable to connect to server. Please check your connection.", "@unableToConnectServer": { "description": "Generic server connection failure message." }, "requestTimedOut": "The request timed out. Please try again.", "@requestTimedOut": { "description": "Timeout while waiting for a server response." }, "genericSignInFailed": "We couldn't sign you in. Check your credentials and server settings.", "@genericSignInFailed": { "description": "Fallback sign-in error when no specific cause is known." }, "skip": "Skip", "@skip": { "description": "Onboarding: skip current step." }, "next": "Next", "@next": { "description": "Onboarding: go to the next step." }, "done": "Done", "@done": { "description": "Onboarding: finish the flow." }, "onboardStartTitle": "Hello, {username}", "@onboardStartTitle": { "description": "Onboarding card: start chatting title.", "placeholders": { "username": { "type": "String", "example": "Alex" } } }, "onboardStartSubtitle": "Choose a model to get started. Tap New Chat anytime.", "@onboardStartSubtitle": { "description": "Onboarding card: brief guidance to begin a chat." }, "onboardStartBullet1": "Tap the model name in the top bar to switch models", "@onboardStartBullet1": { "description": "Bullet: how to switch models." }, "onboardStartBullet2": "Use New Chat to reset context", "@onboardStartBullet2": { "description": "Bullet: how to reset context." }, "onboardAttachTitle": "Add context", "@onboardAttachTitle": { "description": "Onboarding card: attach context title." }, "onboardAttachSubtitle": "Ground replies with content from Workspace or photos.", "@onboardAttachSubtitle": { "description": "Onboarding card: why attaching context helps." }, "onboardAttachBullet1": "Workspace: PDFs, docs, datasets", "@onboardAttachBullet1": { "description": "Bullet: types of workspace files." }, "onboardAttachBullet2": "Photos: camera or library", "@onboardAttachBullet2": { "description": "Bullet: photo sources supported." }, "onboardSpeakTitle": "Speak naturally", "@onboardSpeakTitle": { "description": "Onboarding card: voice input title." }, "onboardSpeakSubtitle": "Tap the mic to dictate with live waveform feedback.", "@onboardSpeakSubtitle": { "description": "Onboarding card: how voice input works." }, "onboardSpeakBullet1": "Stop anytime; partial text is preserved", "@onboardSpeakBullet1": { "description": "Bullet: stop dictation preserves text." }, "onboardSpeakBullet2": "Great for quick notes or long prompts", "@onboardSpeakBullet2": { "description": "Bullet: benefits of voice input." }, "onboardQuickTitle": "Quick actions", "@onboardQuickTitle": { "description": "Onboarding card: quick actions title." }, "onboardQuickSubtitle": "Open the menu to switch between Chats, Workspace, and Profile.", "@onboardQuickSubtitle": { "description": "Onboarding card: how to use the app menu." }, "onboardQuickBullet1": "Tap the menu to access Chats, Workspace, Profile", "@onboardQuickBullet1": { "description": "Bullet: menu access to sections." }, "onboardQuickBullet2": "Start New Chat or manage models from the top bar", "@onboardQuickBullet2": { "description": "Bullet: actions available in the top bar." }, "attachmentLabel": "Attachment", "@attachmentLabel": { "description": "Label shown beside attachment chips in messages." }, "tools": "Tools", "@tools": { "description": "Header for a tools/actions section." }, "filters": "Filters", "@filters": { "description": "Header for toggle filters section." }, "voiceInput": "Voice input", "@voiceInput": { "description": "Label for voice input feature." }, "voice": "Voice", "@voice": { "description": "Title for the voice input bottom sheet." }, "voiceStatusListening": "Listening…", "@voiceStatusListening": { "description": "Indicates the app is actively listening during voice input." }, "voiceStatusRecording": "Recording…", "@voiceStatusRecording": { "description": "Indicates the app is recording audio for speech recognition." }, "voiceHoldToTalk": "Hold to talk", "@voiceHoldToTalk": { "description": "Toggle label for hold-to-talk mode in voice input." }, "voiceAutoSend": "Auto-send", "@voiceAutoSend": { "description": "Toggle label for automatically sending the final transcript." }, "voiceTranscript": "Transcript", "@voiceTranscript": { "description": "Label above the transcribed voice input text." }, "voicePromptSpeakNow": "Speak now…", "@voicePromptSpeakNow": { "description": "Placeholder prompting the user to start speaking." }, "voicePromptTapStart": "Tap Start to begin", "@voicePromptTapStart": { "description": "Placeholder instructing the user to tap Start to begin recording." }, "voiceActionStop": "Stop", "@voiceActionStop": { "description": "Button label to stop voice recording." }, "voiceActionStart": "Start", "@voiceActionStart": { "description": "Button label to start voice recording." }, "voiceCallTitle": "Voice Call", "@voiceCallTitle": { "description": "Title displayed on the voice call screen." }, "voiceCallPause": "Pause", "@voiceCallPause": { "description": "Button label to pause a voice call." }, "voiceCallResume": "Resume", "@voiceCallResume": { "description": "Button label to resume a paused voice call." }, "voiceCallStop": "Stop", "@voiceCallStop": { "description": "Button label to stop the active voice call." }, "voiceCallEnd": "End Call", "@voiceCallEnd": { "description": "Button label to end the voice call session." }, "voiceCallReady": "Ready", "@voiceCallReady": { "description": "Status label shown when the voice call is ready to start." }, "voiceCallConnecting": "Connecting...", "@voiceCallConnecting": { "description": "Status label shown while the voice call is connecting." }, "voiceCallListening": "Listening", "@voiceCallListening": { "description": "Status label shown while the call is listening for input." }, "voiceCallPaused": "Paused", "@voiceCallPaused": { "description": "Status label shown when the call is paused." }, "voiceCallProcessing": "Thinking...", "@voiceCallProcessing": { "description": "Status label shown while the call processes a response." }, "voiceCallSpeaking": "Speaking", "@voiceCallSpeaking": { "description": "Status label shown while the assistant is speaking." }, "voiceCallDisconnected": "Disconnected", "@voiceCallDisconnected": { "description": "Status label shown when the voice call has ended or disconnected." }, "voiceCallErrorHelp": "Please check:\n• Microphone permissions are granted\n• Speech recognition is available on your device\n• You are connected to the server", "@voiceCallErrorHelp": { "description": "Guidance shown when the voice call encounters an error." }, "messageInputLabel": "Message input", "@messageInputLabel": { "description": "Accessibility label for the message input." }, "messageInputHint": "Type your message", "@messageInputHint": { "description": "Hint shown in the message input field." }, "messageHintText": "Ask Conduit", "@messageHintText": { "description": "Short placeholder text in the message input." }, "stopGenerating": "Stop generating", "@stopGenerating": { "description": "Action to stop the assistant's response generation." }, "send": "Send", "@send": { "description": "Primary action to send a message." }, "codeCopiedToClipboard": "Code copied to clipboard.", "@codeCopiedToClipboard": { "description": "Snack bar message confirming code was copied." }, "sendMessage": "Send message", "@sendMessage": { "description": "Semantic label for sending a message." }, "file": "File", "@file": { "description": "A file item or attachment type label." }, "chooseDifferentFile": "Choose Different File", "@chooseDifferentFile": { "description": "Action label prompting the user to pick another file." }, "photo": "Photo", "@photo": { "description": "A photo item or attachment type label." }, "camera": "Camera", "@camera": { "description": "Camera source label." }, "pasteFromClipboard": "Paste", "@pasteFromClipboard": { "description": "Action label to paste images or files from the clipboard." }, "pasteImage": "Paste Image", "@pasteImage": { "description": "Context menu action to paste an image from the clipboard." }, "apiUnavailable": "API service not available", "@apiUnavailable": { "description": "Shown when backend API service is unavailable." }, "unableToLoadImage": "Unable to load image", "@unableToLoadImage": { "description": "General failure to load an image." }, "notAnImageFile": "Not an image file: {fileName}", "@notAnImageFile": { "description": "Error when a referenced file is not an image.", "placeholders": { "fileName": { "type": "String", "example": "image.txt" } } }, "failedToLoadImage": "Failed to load image: {error}", "@failedToLoadImage": { "description": "Error including the underlying reason when image loading fails.", "placeholders": { "error": { "type": "String", "example": "Network error" } } }, "invalidDataUrl": "Invalid data URL format", "@invalidDataUrl": { "description": "Error for malformed data: URLs." }, "failedToDecodeImage": "Failed to decode image", "@failedToDecodeImage": { "description": "Error when decoding image bytes/base64." }, "invalidImageFormat": "Invalid image format", "@invalidImageFormat": { "description": "Error when image type/format is not supported." }, "emptyImageData": "Empty image data", "@emptyImageData": { "description": "Error when image data buffer is empty." }, "confirm": "Confirm", "@confirm": { "description": "Confirmation button label." }, "continueAction": "Continue", "@continueAction": { "description": "Button label to continue an action or flow." }, "cancel": "Cancel", "@cancel": { "description": "Cancel button label." }, "ok": "OK", "@ok": { "description": "Generic OK button label." }, "previousLabel": "Prev", "@previousLabel": { "description": "Label for navigating to the previous item." }, "nextLabel": "Next", "@nextLabel": { "description": "Label for navigating to the next item." }, "inputField": "Input field", "@inputField": { "description": "Accessibility label describing an input field." }, "checkConnection": "Check Connection", "@checkConnection": { "description": "CTA to verify network connectivity." }, "openSettings": "Open Settings", "@openSettings": { "description": "CTA to open device or app settings." }, "goBack": "Go Back", "@goBack": { "description": "CTA to navigate back." }, "technicalDetails": "Technical Details", "@technicalDetails": { "description": "Expandable section label to show error details or logs." }, "requiredFieldLabel": "{label} *", "@requiredFieldLabel": { "description": "Label text indicating a required field.", "placeholders": { "label": { "type": "String", "example": "Email" } } }, "requiredFieldHelper": "Required field", "@requiredFieldHelper": { "description": "Helper text indicating that the field is required." }, "switchOnLabel": "On", "@switchOnLabel": { "description": "Semantic label when a switch is enabled." }, "switchOffLabel": "Off", "@switchOffLabel": { "description": "Semantic label when a switch is disabled." }, "dialogSemanticLabel": "Dialog: {title}", "@dialogSemanticLabel": { "description": "Semantic label describing the dialog title.", "placeholders": { "title": { "type": "String", "example": "Settings" } } }, "save": "Save", "@save": { "description": "Primary action to save changes." }, "chooseModel": "Choose Model", "@chooseModel": { "description": "Button/label to choose a model." }, "reviewerMode": "REVIEWER MODE", "@reviewerMode": { "description": "Developer/reviewer mode indicator." }, "selectLanguage": "Select Language", "@selectLanguage": { "description": "Dialog title to pick application language." }, "newFolder": "New Folder", "@newFolder": { "description": "Action to create a new folder." }, "folderName": "Folder name", "@folderName": { "description": "Label for entering a folder's name." }, "newChat": "New Chat", "@newChat": { "description": "Action to start a new chat." }, "more": "More", "@more": { "description": "Opens additional actions or content." }, "clear": "Clear", "@clear": { "description": "Action to clear input or selection." }, "searchConversations": "Search conversations...", "@searchConversations": { "description": "Search input hint scoped to conversations." }, "create": "Create", "@create": { "description": "Primary action to create a resource." }, "failedToCreateFolder": "Failed to create folder", "@failedToCreateFolder": { "description": "Error notice when folder creation fails." }, "failedToMoveChat": "Failed to move chat", "@failedToMoveChat": { "description": "Error notice when moving a chat fails." }, "failedToLoadChats": "Failed to load chats", "@failedToLoadChats": { "description": "Error notice when fetching chat list fails." }, "failedToUpdatePin": "Failed to update pin", "@failedToUpdatePin": { "description": "Error notice when updating pin star/flag fails." }, "failedToDeleteChat": "Failed to delete chat", "@failedToDeleteChat": { "description": "Error notice when deleting a chat fails." }, "manage": "Manage", "@manage": { "description": "Context action to manage an item." }, "rename": "Rename", "@rename": { "description": "Context action to rename an item." }, "delete": "Delete", "@delete": { "description": "Context action to delete an item." }, "renameChat": "Rename Chat", "@renameChat": { "description": "Dialog title to rename a chat." }, "enterChatName": "Enter chat name", "@enterChatName": { "description": "Input hint/label for new chat name." }, "failedToRenameChat": "Failed to rename chat", "@failedToRenameChat": { "description": "Error notice when renaming chat fails." }, "failedToUpdateArchive": "Failed to update archive", "@failedToUpdateArchive": { "description": "Error notice when archiving/unarchiving fails." }, "unarchive": "Unarchive", "@unarchive": { "description": "Action to unarchive an item." }, "archive": "Archive", "@archive": { "description": "Action to archive an item." }, "pin": "Pin", "@pin": { "description": "Action to pin/star an item." }, "unpin": "Unpin", "@unpin": { "description": "Action to remove pin from an item." }, "recent": "Recent", "@recent": { "description": "List filter for recently used items." }, "system": "System", "@system": { "description": "Option indicating the device/system default." }, "english": "English", "@english": { "description": "Language name: English." }, "deutsch": "Deutsch", "@deutsch": { "description": "Language name: German." }, "francais": "Français", "@francais": { "description": "Language name: French." }, "italiano": "Italiano", "@italiano": { "description": "Language name: Italian." }, "espanol": "Español", "@espanol": { "description": "Language name: Spanish." }, "nederlands": "Nederlands", "@nederlands": { "description": "Language name: Dutch." }, "russian": "Русский", "@russian": { "description": "Language name: Russian." }, "chinese": "中文", "@chinese": { "description": "Language name: Chinese." }, "chineseSimplified": "Chinese (Simplified)", "@chineseSimplified": { "description": "Language name: Chinese (Simplified)." }, "chineseTraditional": "Chinese (Traditional)", "@chineseTraditional": { "description": "Language name: Chinese (Traditional)." }, "korean": "한국어", "@korean": { "description": "Language name: Korean." }, "deleteMessagesTitle": "Delete Messages", "@deleteMessagesTitle": { "description": "Dialog title asking to confirm deletion of messages." }, "deleteMessagesMessage": "Delete {count} messages?", "@deleteMessagesMessage": { "description": "Confirmation prompt asking to delete a number of messages.", "placeholders": { "count": { "type": "int" } } }, "routeNotFound": "Route not found: {routeName}", "@routeNotFound": { "description": "Displayed when navigation fails to find a route name.", "placeholders": { "routeName": { "type": "String" } } }, "deleteChatTitle": "Delete Chat", "@deleteChatTitle": { "description": "Dialog title asking to confirm deletion of a chat." }, "deleteChatMessage": "This chat will be permanently deleted.", "@deleteChatMessage": { "description": "Warning that deleting a chat cannot be undone." }, "deleteFolderTitle": "Delete Folder", "@deleteFolderTitle": { "description": "Dialog title asking to confirm deletion of a folder." }, "deleteFolderMessage": "This folder and its assignment references will be removed.", "@deleteFolderMessage": { "description": "Warning that deleting a folder will remove it and its associations." }, "failedToDeleteFolder": "Failed to delete folder", "@failedToDeleteFolder": { "description": "Error notice when deleting a folder fails." }, "aboutApp": "About", "@aboutApp": { "description": "Settings tile title to view app information." }, "aboutAppSubtitle": "Conduit information and links", "@aboutAppSubtitle": { "description": "Subtitle/description for the About section." }, "web": "Web", "@web": { "description": "Tab/section label for web features." }, "imageGen": "Image Gen", "@imageGen": { "description": "Short label for image generation section/tab." }, "pinned": "Pinned", "@pinned": { "description": "Filter/tab for pinned items." }, "folders": "Folders", "@folders": { "description": "Tab listing chat folders." }, "archived": "Archived", "@archived": { "description": "Filter/tab for archived chats." }, "appLanguage": "App Language", "@appLanguage": { "description": "Label for choosing the app's display language." }, "darkMode": "Dark Mode", "@darkMode": { "description": "Label for toggling dark theme." }, "webSearch": "Web Search", "@webSearch": { "description": "Feature toggle/section for web search." }, "webSearchDescription": "Search the web and cite sources in replies.", "@webSearchDescription": { "description": "Explains that responses can include citations from the web." }, "imageGeneration": "Image Generation", "@imageGeneration": { "description": "Feature toggle/section for image generation." }, "imageGenerationDescription": "Create images from your prompts.", "@imageGenerationDescription": { "description": "Explains creating images via model prompts." }, "copy": "Copy", "@copy": { "description": "Action to copy text to clipboard." }, "ttsListen": "Listen", "@ttsListen": { "description": "Action to play the assistant message using text to speech" }, "ttsStop": "Stop", "@ttsStop": { "description": "Action to stop text to speech playback" }, "usageInfo": "Info", "@usageInfo": { "description": "Action to show usage/performance statistics for a response" }, "usageInfoTitle": "Response Statistics", "@usageInfoTitle": { "description": "Title for the usage statistics dialog/sheet" }, "usageTokenGeneration": "Token Generation", "@usageTokenGeneration": { "description": "Label for token generation speed metric" }, "usagePromptEval": "Prompt Processing", "@usagePromptEval": { "description": "Label for prompt evaluation/pre-processing speed metric" }, "usageTotalDuration": "Total Duration", "@usageTotalDuration": { "description": "Label for total response generation duration" }, "usageTokensPerSecond": "{speed} t/s", "@usageTokensPerSecond": { "description": "Tokens per second display format", "placeholders": { "speed": { "type": "String", "example": "45.2" } } }, "usageTokenCount": "{count} tokens", "@usageTokenCount": { "description": "Token count display format", "placeholders": { "count": { "type": "int", "example": "128" } } }, "usageSecondsFormat": "{seconds}s", "@usageSecondsFormat": { "description": "Seconds duration format", "placeholders": { "seconds": { "type": "String", "example": "2.34" } } }, "usageLoadDuration": "Model Load Time", "@usageLoadDuration": { "description": "Label for model loading duration metric" }, "usageQueueTime": "Queue Time", "@usageQueueTime": { "description": "Label for queue waiting time metric" }, "usageReasoningTokens": "Reasoning Tokens", "@usageReasoningTokens": { "description": "Label for reasoning/thinking tokens count" }, "usageTotalTokens": "Total Tokens", "@usageTotalTokens": { "description": "Label for total token count" }, "edit": "Edit", "@edit": { "description": "Action to edit an item/message." }, "regenerate": "Regenerate", "@regenerate": { "description": "Action to request a new assistant response." }, "noConversationsYet": "No conversations yet", "@noConversationsYet": { "description": "Empty state when the user has no chats." }, "usernameOrEmailHint": "Enter your username or email", "@usernameOrEmailHint": { "description": "Hint text for username/email input." }, "passwordHint": "Enter your password", "@passwordHint": { "description": "Hint text for password input." }, "enterApiKey": "Enter your API key", "@enterApiKey": { "description": "Hint text for API key input." }, "enterToken": "Enter your JWT token", "@enterToken": { "description": "Hint text for JWT token input." }, "tokenHint": "Get the JWT token from OpenWebUI settings. API keys (sk-...) are not supported for streaming.", "@tokenHint": { "description": "Help text explaining what type of token to use." }, "apiKeyNotSupported": "API keys (sk-...) are not supported. Please use a JWT token instead.", "@apiKeyNotSupported": { "description": "Error message when user tries to use an API key instead of JWT token." }, "apiKeyNoLongerSupported": "You were logged out because API keys are no longer supported. Please sign in with a JWT token from OpenWebUI settings.", "@apiKeyNoLongerSupported": { "description": "Error message shown when user is forced logged out due to using an API key." }, "tokenTooShort": "Token is too short", "@tokenTooShort": { "description": "Error message when token is too short." }, "signingIn": "Signing in...", "@signingIn": { "description": "Status message shown while signing in." }, "advancedSettings": "Advanced Settings", "@advancedSettings": { "description": "Section that contains additional/optional configuration." }, "customHeaders": "Custom Headers", "@customHeaders": { "description": "Section title for adding custom HTTP headers." }, "customHeadersDescription": "Add custom HTTP headers for authentication, API keys, or special server requirements.", "@customHeadersDescription": { "description": "Helper text explaining use-cases for custom headers." }, "allowSelfSignedCertificates": "Trust self-signed certificates", "@allowSelfSignedCertificates": { "description": "Toggle label that allows trusting self-signed TLS certificates for the configured server." }, "allowSelfSignedCertificatesDescription": "Accept this server's TLS certificate even if it is self-signed. Enable only for servers you trust.", "@allowSelfSignedCertificatesDescription": { "description": "Helper text clarifying the risks of enabling the self-signed certificate toggle." }, "headerNameEmpty": "Header name cannot be empty", "@headerNameEmpty": { "description": "Validation message for empty header name." }, "headerNameTooLong": "Header name too long (max 64 characters)", "@headerNameTooLong": { "description": "Validation message for header name length." }, "headerNameInvalidChars": "Invalid header name. Use only letters, numbers, and these symbols: !#$&-^_`|~", "@headerNameInvalidChars": { "description": "Validation message for invalid characters in header name." }, "headerNameReserved": "Cannot override reserved header \"{key}\"", "@headerNameReserved": { "description": "Error when attempting to override a reserved HTTP header {key}.", "placeholders": { "key": { "type": "String" } } }, "headerValueEmpty": "Header value cannot be empty", "@headerValueEmpty": { "description": "Validation message for empty header value." }, "headerValueTooLong": "Header value too long (max 1024 characters)", "@headerValueTooLong": { "description": "Validation message for header value length." }, "headerValueInvalidChars": "Header value contains invalid characters. Use only printable ASCII.", "@headerValueInvalidChars": { "description": "Validation message for invalid characters in header value." }, "headerValueUnsafe": "Header value appears to contain potentially unsafe content", "@headerValueUnsafe": { "description": "Security warning for suspicious header values." }, "headerAlreadyExists": "Header \"{key}\" already exists. Remove it first to update.", "@headerAlreadyExists": { "description": "Error when a custom header with key {key} already exists.", "placeholders": { "key": { "type": "String" } } }, "maxHeadersReachedDetail": "Maximum of 10 custom headers allowed. Remove some to add more.", "@maxHeadersReachedDetail": { "description": "Explains the upper limit of custom headers." }, "noModelsAvailable": "No models available", "@noModelsAvailable": { "description": "Shown when model list is empty or failed to load." }, "followingSystem": "Following system: {theme}", "@followingSystem": { "description": "Indicates the app is following the system theme (\"Dark\"/\"Light\").", "placeholders": { "theme": { "type": "String" } } }, "themeDark": "Dark", "@themeDark": { "description": "Theme label for dark appearance." }, "themePalette": "Accent palette", "@themePalette": { "description": "Title for selecting the app color palette." }, "themePaletteConduitLabel": "Conduit", "@themePaletteConduitLabel": { "description": "Palette name for the default Conduit theme." }, "themePaletteConduitDescription": "Clean neutral theme designed for Conduit.", "@themePaletteConduitDescription": { "description": "Description of the Conduit palette." }, "themePaletteClaudeLabel": "Claude", "@themePaletteClaudeLabel": { "description": "Palette name inspired by the Claude web client." }, "themePaletteClaudeDescription": "Warm, tactile palette lifted from the Claude web client.", "@themePaletteClaudeDescription": { "description": "Description of the Claude palette." }, "themePaletteT3ChatLabel": "T3 Chat", "@themePaletteT3ChatLabel": { "description": "Palette name inspired by the T3 Stack brand." }, "themePaletteT3ChatDescription": "Playful gradients inspired by the T3 Stack brand.", "@themePaletteT3ChatDescription": { "description": "Description of the T3 Chat palette." }, "themePaletteCatppuccinLabel": "Catppuccin", "@themePaletteCatppuccinLabel": { "description": "Palette name for Catppuccin colors." }, "themePaletteCatppuccinDescription": "Soft pastel palette.", "@themePaletteCatppuccinDescription": { "description": "Description of the Catppuccin palette." }, "themePaletteTangerineLabel": "Tangerine", "@themePaletteTangerineLabel": { "description": "Palette name for Tangerine colors." }, "themePaletteTangerineDescription": "Warm orange-and-slate palette.", "@themePaletteTangerineDescription": { "description": "Description of the Tangerine palette." }, "themeLight": "Light", "@themeLight": { "description": "Theme label for light appearance." }, "currentlyUsingDarkTheme": "Currently using Dark theme", "@currentlyUsingDarkTheme": { "description": "Status text indicating dark theme is active." }, "currentlyUsingLightTheme": "Currently using Light theme", "@currentlyUsingLightTheme": { "description": "Status text indicating light theme is active." }, "aboutConduit": "About Conduit", "@aboutConduit": { "description": "Dialog title for app information." }, "versionLabel": "Version: {version} ({build})", "@versionLabel": { "description": "Displays version and build number in the About dialog.", "placeholders": { "version": { "type": "String" }, "build": { "type": "String" } } }, "githubRepository": "GitHub Repository", "@githubRepository": { "description": "Link label pointing to the app repository." }, "unableToLoadAppInfo": "Unable to load app info", "@unableToLoadAppInfo": { "description": "Error text when package info cannot be retrieved." }, "thinking": "Thinking…", "@thinking": { "description": "Label shown while the assistant is reasoning." }, "thoughts": "Thoughts", "@thoughts": { "description": "Section title for showing reasoning content." }, "thoughtForDuration": "Thought for {duration}", "@thoughtForDuration": { "description": "Shows how long the assistant thought before replying.", "placeholders": { "duration": { "type": "String", "example": "3s" } } }, "analyzing": "Analyzing…", "@analyzing": { "description": "Label shown while code interpreter is processing." }, "analyzed": "Analyzed", "@analyzed": { "description": "Label shown after code interpreter has finished." }, "appCustomization": "Customization", "@appCustomization": { "description": "Title of the customization settings page." }, "appCustomizationSubtitle": "Theme, language, voice, and quickpills", "@appCustomizationSubtitle": { "description": "Subtitle shown under App Customization tile and page header." }, "quickActionsDescription": "Quickpills in chat", "@quickActionsDescription": { "description": "Helper text explaining quick action pill selection in customization." }, "quickActionsSelectedCount": "{count, plural, =0{No actions selected} one{1 action selected} other{{count} actions selected}}", "@quickActionsSelectedCount": { "description": "Subtitle indicating how many quick actions are selected.", "placeholders": { "count": { "type": "int", "example": "2" } } }, "autoSelectDescription": "Let the app choose the best model", "@autoSelectDescription": { "description": "Explains what the auto-select model setting does." }, "chatSettings": "Chat", "@chatSettings": { "description": "Section header for chat-related customization options." }, "sendOnEnter": "Send on Enter", "@sendOnEnter": { "description": "Toggle title for sending messages when pressing Enter." }, "sendOnEnterDescription": "Enter sends (soft keyboard). Cmd/Ctrl+Enter also available", "@sendOnEnterDescription": { "description": "Explanation of how the Send on Enter toggle behaves." }, "androidAssistantTitle": "Android digital assistant", "@androidAssistantTitle": { "description": "Tile title for configuring the Android digital assistant trigger." }, "androidAssistantDescription": "Choose what happens when you trigger the Android digital assistant.", "@androidAssistantDescription": { "description": "Helper text describing the Android digital assistant trigger setting." }, "androidAssistantOverlayOption": "Show quick overlay (default)", "@androidAssistantOverlayOption": { "description": "Option label for keeping the current assistant overlay." }, "androidAssistantNewChatOption": "Open Conduit with a new chat", "@androidAssistantNewChatOption": { "description": "Option label for opening the app to a fresh chat from the assistant trigger." }, "androidAssistantVoiceCallOption": "Start a voice call", "@androidAssistantVoiceCallOption": { "description": "Option label for jumping straight into voice call from assistant trigger." }, "sttSettings": "Speech to Text", "@sttSettings": { "description": "Section header for speech-to-text settings." }, "sttEngineLabel": "Recognition engine", "@sttEngineLabel": { "description": "Label shown above the speech-to-text engine chips." }, "sttEngineDevice": "On device", "@sttEngineDevice": { "description": "Chip label for on-device speech recognition." }, "sttEngineServer": "Server", "@sttEngineServer": { "description": "Chip label for server speech recognition." }, "sttEngineDeviceDescription": "Keep audio on this device. Voice input stops working if on-device speech recognition isn’t supported.", "@sttEngineDeviceDescription": { "description": "Description shown when on-device speech-to-text preference is active." }, "sttEngineServerDescription": "Always send recordings to your OpenWebUI server for transcription.", "@sttEngineServerDescription": { "description": "Description shown when server speech-to-text preference is active." }, "sttDeviceUnavailableWarning": "On-device speech recognition isn’t available on this device.", "@sttDeviceUnavailableWarning": { "description": "Warning shown when the user selects on-device speech recognition but it is unavailable." }, "sttServerUnavailableWarning": "Connect to a server with transcription enabled to use this option.", "@sttServerUnavailableWarning": { "description": "Warning shown when the user selects server speech recognition but no server is available." }, "sttSilenceDuration": "Silence Duration", "@sttSilenceDuration": { "description": "Label for the silence duration setting in server speech-to-text." }, "sttSilenceDurationDescription": "Time to wait after silence before auto-stopping recording", "@sttSilenceDurationDescription": { "description": "Description for the silence duration slider in server speech-to-text settings." }, "ttsEngineLabel": "Engine", "@ttsEngineLabel": { "description": "Label for selecting the text-to-speech engine." }, "ttsEngineDevice": "On device", "@ttsEngineDevice": { "description": "Chip label for using on-device text-to-speech." }, "ttsEngineServer": "Server", "@ttsEngineServer": { "description": "Chip label for using server-side text-to-speech." }, "ttsEngineDeviceDescription": "Keep synthesis on this device. Voice playback stops working if on-device TTS isn’t supported.", "@ttsEngineDeviceDescription": { "description": "Description shown when on-device text-to-speech preference is active." }, "ttsEngineServerDescription": "Always request audio from your OpenWebUI server.", "@ttsEngineServerDescription": { "description": "Description shown when server text-to-speech preference is active." }, "ttsDeviceUnavailableWarning": "On-device text-to-speech isn’t available on this device.", "@ttsDeviceUnavailableWarning": { "description": "Warning shown when on-device text-to-speech is unavailable." }, "ttsServerUnavailableWarning": "Connect to a server with text-to-speech enabled to use this option.", "@ttsServerUnavailableWarning": { "description": "Warning shown when server text-to-speech is unavailable." }, "ttsSettings": "Text to Speech", "@ttsSettings": { "description": "Section header for TTS-related customization options." }, "ttsVoice": "Voice", "@ttsVoice": { "description": "Title for voice selection tile." }, "ttsSpeechRate": "Speech Rate", "@ttsSpeechRate": { "description": "Title for speech rate slider." }, "ttsPitch": "Pitch", "@ttsPitch": { "description": "Title for pitch slider." }, "ttsVolume": "Volume", "@ttsVolume": { "description": "Title for volume slider." }, "ttsPreview": "Preview Voice", "@ttsPreview": { "description": "Title for preview button." }, "ttsSystemDefault": "System Default", "@ttsSystemDefault": { "description": "Label for system default voice option." }, "ttsSelectVoice": "Select Voice", "@ttsSelectVoice": { "description": "Title for voice picker bottom sheet." }, "ttsPreviewText": "This is a preview of the selected voice.", "@ttsPreviewText": { "description": "Sample text spoken during voice preview." }, "ttsNoVoicesAvailable": "No voices available", "@ttsNoVoicesAvailable": { "description": "Error message when no TTS voices can be found." }, "ttsVoicesForLanguage": "{language} Voices", "@ttsVoicesForLanguage": { "description": "Section header for voices matching the app language", "placeholders": { "language": { "type": "String", "example": "EN" } } }, "ttsOtherVoices": "Other Languages", "@ttsOtherVoices": { "description": "Section header for voices in other languages." }, "error": "Error", "@error": { "description": "Generic error label." }, "errorWithMessage": "Error: {message}", "@errorWithMessage": { "description": "Error label with appended message text.", "placeholders": { "message": { "type": "String", "example": "Network timeout" } } }, "networkTimeoutError": "Connection timed out. Please check your internet connection and try again.", "@networkTimeoutError": { "description": "User-facing message when a network request times out." }, "networkUnreachableError": "Cannot reach the server. Please check your server URL and internet connection.", "@networkUnreachableError": { "description": "User-facing message when the server cannot be reached." }, "networkServerNotResponding": "Server is not responding. Please verify the server is running and accessible.", "@networkServerNotResponding": { "description": "User-facing message when the server does not respond to a request." }, "networkGenericError": "Network connection problem. Please check your internet connection.", "@networkGenericError": { "description": "Fallback message for generic network errors." }, "serverError500": "Server is experiencing issues. This is usually temporary.", "@serverError500": { "description": "Message when a 500 error is encountered." }, "serverErrorUnavailable": "Server is temporarily unavailable. Please try again in a moment.", "@serverErrorUnavailable": { "description": "Message when a 502/503 error is encountered." }, "serverErrorTimeout": "Server took too long to respond. Please try again.", "@serverErrorTimeout": { "description": "Message when the server times out." }, "serverErrorGeneric": "Server is having problems. Please try again later.", "@serverErrorGeneric": { "description": "Fallback server error message." }, "authSessionExpired": "Your session has expired. Please sign in again.", "@authSessionExpired": { "description": "Message when an authentication session expires." }, "authForbidden": "You don't have permission to perform this action.", "@authForbidden": { "description": "Message when the user lacks required permissions." }, "authInvalidToken": "Authentication token is invalid. Please sign in again.", "@authInvalidToken": { "description": "Message when the authentication token is invalid." }, "authGenericError": "Authentication problem. Please sign in again.", "@authGenericError": { "description": "Fallback authentication error message." }, "validationInvalidEmail": "Please enter a valid email address.", "@validationInvalidEmail": { "description": "Validation message for invalid email input." }, "validationWeakPassword": "Password doesn't meet requirements. Please check and try again.", "@validationWeakPassword": { "description": "Validation message for weak passwords." }, "validationMissingRequired": "Please fill in all required fields.", "@validationMissingRequired": { "description": "Validation message when required fields are missing." }, "validationFormatError": "Some information is in the wrong format. Please check and try again.", "@validationFormatError": { "description": "Validation message for generic formatting issues." }, "validationGenericError": "Please check your input and try again.", "@validationGenericError": { "description": "Fallback validation message." }, "fileNotFound": "File not found. It may have been moved or deleted.", "@fileNotFound": { "description": "Message when a file cannot be located." }, "fileAccessDenied": "Cannot access the file. Please check permissions.", "@fileAccessDenied": { "description": "Message when file access is denied." }, "fileTooLarge": "File is too large. Please choose a smaller file.", "@fileTooLarge": { "description": "Message when a file exceeds size limits." }, "fileGenericError": "Problem with the file. Please try a different file.", "@fileGenericError": { "description": "Fallback file error message." }, "permissionCameraRequired": "Camera permission is required. Please enable it in settings.", "@permissionCameraRequired": { "description": "Message when camera permission is missing." }, "permissionStorageRequired": "Storage permission is required. Please enable it in settings.", "@permissionStorageRequired": { "description": "Message when storage permission is missing." }, "permissionMicrophoneRequired": "Microphone permission is required. Please enable it in settings.", "@permissionMicrophoneRequired": { "description": "Message when microphone permission is missing." }, "permissionGenericError": "Permission required. Please check app permissions in settings.", "@permissionGenericError": { "description": "Fallback permission error message." }, "actionRetryRequest": "Try the request again.", "@actionRetryRequest": { "description": "Description for retrying a failed request." }, "actionVerifyConnection": "Verify your internet connection.", "@actionVerifyConnection": { "description": "Description for checking internet connectivity." }, "actionRetryOperation": "Retry the operation.", "@actionRetryOperation": { "description": "Description for retrying the same operation." }, "actionRetryAfterDelay": "Wait a moment then try again.", "@actionRetryAfterDelay": { "description": "Description suggesting a short delay before retrying." }, "actionSignInToAccount": "Sign in to your account.", "@actionSignInToAccount": { "description": "Description for signing back into the app." }, "actionSelectAnotherFile": "Select another file.", "@actionSelectAnotherFile": { "description": "Description for choosing a different file." }, "actionOpenAppSettings": "Open app settings to grant permissions.", "@actionOpenAppSettings": { "description": "Description for opening system or app settings." }, "actionRetryAfterPermission": "Retry after granting permission.", "@actionRetryAfterPermission": { "description": "Description for retrying once permissions are granted." }, "actionReturnToPrevious": "Return to previous screen.", "@actionReturnToPrevious": { "description": "Description for navigating back to the prior screen." }, "display": "Display", "@display": { "description": "Section header for visual and layout related settings." }, "realtime": "Realtime", "@realtime": { "description": "Section header for realtime/transport settings." }, "transportMode": "Transport mode", "@transportMode": { "description": "Title for selecting the networking transport used for realtime." }, "mode": "Mode", "@mode": { "description": "Form field label for transport mode dropdown." }, "transportModePolling": "Polling fallback", "@transportModePolling": { "description": "Dropdown option label for HTTP polling fallback transport." }, "transportModeWs": "WebSocket only", "@transportModeWs": { "description": "Dropdown option label for WebSocket-only transport." }, "transportModePollingInfo": "Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.", "@transportModePollingInfo": { "description": "Footnote text for the polling fallback transport mode." }, "transportModeWsInfo": "Lower overhead, but may fail behind strict proxies/firewalls.", "@transportModeWsInfo": { "description": "Footnote text for the WebSocket-only transport mode." }, "notes": "Notes", "@notes": { "description": "Navigation item and page title for notes feature." }, "searchNotes": "Search notes...", "@searchNotes": { "description": "Placeholder text for notes search field." }, "createNote": "Create Note", "@createNote": { "description": "Tooltip/button label for creating a new note." }, "noNotesYet": "No notes yet", "@noNotesYet": { "description": "Empty state title when user has no notes." }, "noNotesFound": "No notes found", "@noNotesFound": { "description": "Empty state title when search returns no results." }, "createFirstNoteHint": "Tap the + button to create your first note.", "@createFirstNoteHint": { "description": "Hint text encouraging user to create their first note." }, "tryDifferentSearch": "Try a different search term.", "@tryDifferentSearch": { "description": "Hint text when note search returns no results." }, "loadingNotes": "Loading notes...", "@loadingNotes": { "description": "Progress message while fetching notes list." }, "loadingNote": "Loading note...", "@loadingNote": { "description": "Progress message while fetching a single note." }, "failedToLoadNotes": "Failed to load notes", "@failedToLoadNotes": { "description": "Error message when notes list cannot be retrieved." }, "deleteNoteTitle": "Delete Note", "@deleteNoteTitle": { "description": "Dialog title for confirming note deletion." }, "deleteNoteMessage": "Delete \"{title}\"? This cannot be undone.", "@deleteNoteMessage": { "description": "Confirmation message for deleting a note.", "placeholders": { "title": { "type": "String", "example": "My Note" } } }, "noteTitle": "Note title", "@noteTitle": { "description": "Hint text for note title input field." }, "writeNote": "Write something...", "@writeNote": { "description": "Hint text for note content input field." }, "noteSaved": "Note saved", "@noteSaved": { "description": "Confirmation message when note is saved." }, "saving": "Saving...", "@saving": { "description": "Status text while saving." }, "saved": "Saved", "@saved": { "description": "Status text when content is saved." }, "unsavedChanges": "Unsaved changes", "@unsavedChanges": { "description": "Status text when there are unsaved changes." }, "noteCopiedToClipboard": "Note copied to clipboard", "@noteCopiedToClipboard": { "description": "Confirmation message when note content is copied to clipboard." }, "generateTitle": "Generate Title", "@generateTitle": { "description": "Tooltip for generating a title with AI." }, "generatingTitle": "Generating title...", "@generatingTitle": { "description": "Placeholder while AI generates a title." }, "noContentToGenerateTitle": "Add some content first to generate a title", "@noContentToGenerateTitle": { "description": "Error when trying to generate title with empty content." }, "failedToGenerateTitle": "Failed to generate title", "@failedToGenerateTitle": { "description": "Error message when title generation fails." }, "noContentToEnhance": "Add some content first to enhance", "@noContentToEnhance": { "description": "Error when trying to enhance empty content." }, "noteEnhanced": "Note enhanced with AI", "@noteEnhanced": { "description": "Success message after AI enhancement." }, "failedToEnhanceNote": "Failed to enhance note", "@failedToEnhanceNote": { "description": "Error message when enhancement fails." }, "noModelSelected": "Please select a model first", "@noModelSelected": { "description": "Error message when no AI model is selected." }, "enhanceWithAI": "Enhance with AI", "@enhanceWithAI": { "description": "Tooltip for AI enhance button." }, "enhanceNote": "Enhance Note", "@enhanceNote": { "description": "Menu item to enhance note content." }, "startDictation": "Start dictation", "@startDictation": { "description": "Tooltip for dictation button." }, "stopRecording": "Stop recording", "@stopRecording": { "description": "Tooltip for stop recording button." }, "voiceInputUnavailable": "Voice input is not available", "@voiceInputUnavailable": { "description": "Error when voice input is not available." }, "failedToStartDictation": "Failed to start dictation", "@failedToStartDictation": { "description": "Error when starting dictation fails." }, "noteNotFound": "Note not found", "@noteNotFound": { "description": "Error message when a note cannot be found." }, "untitled": "Untitled", "@untitled": { "description": "Default title for notes without a title." }, "today": "Today", "@today": { "description": "Time range label for items from today." }, "yesterday": "Yesterday", "@yesterday": { "description": "Time range label for items from yesterday." }, "previous7Days": "Previous 7 Days", "@previous7Days": { "description": "Time range label for items from the last week." }, "previous30Days": "Previous 30 Days", "@previous30Days": { "description": "Time range label for items from the last month." }, "older": "Older", "@older": { "description": "Time range label for items older than 30 days." }, "tapToExpand": "Tap to expand", "@tapToExpand": { "description": "Hint text shown on collapsed sections." }, "byAuthor": "By {name}", "@byAuthor": { "description": "Attribution text showing the note author.", "placeholders": { "name": { "type": "String", "example": "John" } } }, "wordCount": "{count} words", "@wordCount": { "description": "Status bar text showing word count.", "placeholders": { "count": { "type": "int", "example": "150" } } }, "charCount": "{count} characters", "@charCount": { "description": "Status bar text showing character count.", "placeholders": { "count": { "type": "int", "example": "500" } } }, "widgetAskConduit": "Ask Conduit", "@widgetAskConduit": { "description": "Main button text on the home screen widget." }, "widgetCamera": "Camera", "@widgetCamera": { "description": "Camera button label on the home screen widget." }, "widgetPhotos": "Photos", "@widgetPhotos": { "description": "Photos button label on the home screen widget." }, "widgetClipboard": "Clipboard", "@widgetClipboard": { "description": "Clipboard button label on the home screen widget." }, "widgetDescription": "Quick access to Conduit chat with camera, photos, and clipboard shortcuts", "@widgetDescription": { "description": "Description shown in the widget picker when adding the widget." }, "mermaidPreviewUnavailable": "Mermaid preview is not available on this platform.", "@mermaidPreviewUnavailable": { "description": "Shown when Mermaid diagrams cannot be rendered on the current platform." }, "chartPreviewUnavailable": "Chart preview is not available on this platform.", "@chartPreviewUnavailable": { "description": "Shown when Chart.js charts cannot be rendered on the current platform." }, "promptVariablesTitle": "Fill in Details", "@promptVariablesTitle": { "description": "Default title for the prompt variables dialog." }, "promptVariablesDescription": "Complete the fields below to customize this prompt.", "@promptVariablesDescription": { "description": "Description shown in the prompt variables dialog." }, "promptVariableNumberMin": "Minimum value is {min}", "@promptVariableNumberMin": { "description": "Validation message when a number is below the minimum.", "placeholders": { "min": { "type": "double", "example": "0" } } }, "promptVariableNumberMax": "Maximum value is {max}", "@promptVariableNumberMax": { "description": "Validation message when a number is above the maximum.", "placeholders": { "max": { "type": "double", "example": "100" } } }, "sso": "SSO", "@sso": { "description": "Label for Single Sign-On authentication option." }, "ssoDescription": "Sign in with your organization's identity provider", "@ssoDescription": { "description": "Description text explaining SSO authentication." }, "signInWithSso": "Sign in with SSO", "@signInWithSso": { "description": "Button text for SSO sign-in." }, "ssoAuthenticating": "Authenticating...", "@ssoAuthenticating": { "description": "Loading message during SSO authentication." }, "ssoAuthFailed": "SSO authentication failed", "@ssoAuthFailed": { "description": "Error message when SSO authentication fails." }, "ssoTokenNotFound": "Could not retrieve authentication token from SSO provider", "@ssoTokenNotFound": { "description": "Error message when SSO token cannot be captured." }, "ssoLoadingLogin": "Loading login page...", "@ssoLoadingLogin": { "description": "Loading message while SSO login page loads." }, "ldap": "LDAP", "@ldap": { "description": "Label for LDAP authentication option." }, "ldapDescription": "Sign in with your LDAP directory credentials", "@ldapDescription": { "description": "Description text explaining LDAP authentication." }, "signInWithLdap": "Sign in with LDAP", "@signInWithLdap": { "description": "Button text for LDAP sign-in." }, "ldapUsername": "Username", "@ldapUsername": { "description": "Label for LDAP username field." }, "ldapUsernameHint": "Enter your LDAP username", "@ldapUsernameHint": { "description": "Hint text for LDAP username field." }, "moreSignInOptions": "More sign-in options", "@moreSignInOptions": { "description": "Section header for additional authentication methods." }, "ldapNotEnabled": "LDAP authentication is not enabled on this server", "@ldapNotEnabled": { "description": "Error message when LDAP is not configured on the server." }, "ssoPlatformNotSupported": "SSO authentication is not supported on this platform. Please use credentials or LDAP authentication instead.", "@ssoPlatformNotSupported": { "description": "Error message when SSO is attempted on an unsupported platform (desktop/web)." }, "continueWithProvider": "Continue with {provider}", "@continueWithProvider": { "description": "Button text for OAuth provider sign-in.", "placeholders": { "provider": { "type": "String", "example": "Google" } } }, "or": "or", "@or": { "description": "Separator text between authentication options." } }