1961 lines
67 KiB
Plaintext
1961 lines
67 KiB
Plaintext
{
|
||
"@@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."
|
||
},
|
||
"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": "Server provided",
|
||
"@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."
|
||
},
|
||
"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."
|
||
},
|
||
"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."
|
||
},
|
||
"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."
|
||
},
|
||
"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."
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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": "Use the default model configured on the server",
|
||
"@autoSelectDescription": {
|
||
"description": "Explains what the server-provided 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"
|
||
}
|
||
}
|
||
},
|
||
"writeNote": "Write something...",
|
||
"@writeNote": {
|
||
"description": "Hint text for note content input field."
|
||
},
|
||
"saving": "Saving...",
|
||
"@saving": {
|
||
"description": "Status text while saving."
|
||
},
|
||
"saved": "Saved",
|
||
"@saved": {
|
||
"description": "Status text when content is saved."
|
||
},
|
||
"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."
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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."
|
||
},
|
||
"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)."
|
||
},
|
||
"proxyAuthentication": "Proxy Authentication",
|
||
"@proxyAuthentication": {
|
||
"description": "Title for the proxy authentication page."
|
||
},
|
||
"proxyAuthPlatformNotSupported": "Proxy authentication requires a mobile device. Please authenticate through a browser first.",
|
||
"@proxyAuthPlatformNotSupported": {
|
||
"description": "Error message when proxy auth is attempted on an unsupported platform."
|
||
},
|
||
"proxyAuthLoading": "Loading authentication page...",
|
||
"@proxyAuthLoading": {
|
||
"description": "Loading message while the proxy login page loads."
|
||
},
|
||
"proxyAuthFailed": "Proxy authentication failed",
|
||
"@proxyAuthFailed": {
|
||
"description": "Error message when proxy authentication fails."
|
||
},
|
||
"proxyAuthHelpText": "Complete sign-in through your organization's proxy, then sign in to Open WebUI. You'll be redirected automatically.",
|
||
"@proxyAuthHelpText": {
|
||
"description": "Help text explaining how to complete proxy authentication."
|
||
},
|
||
"proxyAuthHelpTextSimple": "Sign in through your proxy. Once authenticated, tap Continue to proceed to sign in.",
|
||
"@proxyAuthHelpTextSimple": {
|
||
"description": "Simplified help text for proxy-only authentication flow."
|
||
},
|
||
"continueButton": "Continue",
|
||
"@continueButton": {
|
||
"description": "Generic continue button text."
|
||
},
|
||
"proxyAuthRequired": "This server requires proxy authentication",
|
||
"@proxyAuthRequired": {
|
||
"description": "Message when server is behind an authentication proxy."
|
||
},
|
||
"proxyAuthRequiredDescription": "Your server appears to be behind an authentication proxy (like oauth2-proxy). You'll need to sign in through the proxy first.",
|
||
"@proxyAuthRequiredDescription": {
|
||
"description": "Detailed explanation of proxy authentication requirement."
|
||
},
|
||
"authenticateThroughProxy": "Authenticate",
|
||
"@authenticateThroughProxy": {
|
||
"description": "Button text to start proxy authentication."
|
||
},
|
||
"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."
|
||
}
|
||
}
|