{
  "@@locale": "en",
  "appTitle": "Conduit",
  "@appTitle": {"description": "Application name displayed in the app and OS UI."},
  "initializationFailed": "Initialization Failed",
  "@initializationFailed": {"description": "Shown if the app fails to initialize critical services."},
  "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",
  "@pleaseCheckConnection": {"description": "Generic connectivity hint after an error."},
  "account": "Account",
  "@account": {"description": "Section header for account-related options."},
  "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."},
  "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."},
  "loginButton": "Login",
  "@loginButton": {"description": "Button text for the login action."},
  "menuItem": "Settings",
  "@menuItem": {"description": "Generic settings menu item label."},
  "dynamicContentWithPlaceholder": "Welcome, {name}!",
  "@dynamicContentWithPlaceholder": {
    "description": "Greeting message with a dynamic user name.",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "Alex"
      }
    }
  },
  "itemsCount": "{count, plural, =0{No items} one{1 item} other{{count} items}}",
  "@itemsCount": {
    "description": "Pluralized count of items.",
    "placeholders": {
      "count": {
        "type": "int",
        "example": "3"
      }
    }
  },
  "closeButtonSemantic": "Close",
  "@closeButtonSemantic": {"description": "Accessible label for a generic Close button."},
  "loadingContent": "Loading content",
  "@loadingContent": {"description": "Shown while loading page content."},
  "noItems": "No items",
  "@noItems": {"description": "Placeholder text when a list is empty."},
  "noItemsToDisplay": "No items to display",
  "@noItemsToDisplay": {"description": "Alternative empty-state description."},
  "loadMore": "Load More",
  "@loadMore": {"description": "Button label to load additional items in a paged list."},
  "workspace": "Workspace",
  "@workspace": {"description": "Section/tab label for documents and files."},
  "recentFiles": "Recent Files",
  "@recentFiles": {"description": "Header for recently accessed files."},
  "knowledgeBase": "Knowledge Base",
  "@knowledgeBase": {"description": "Section for knowledge base content."},
  "noFilesYet": "No files yet",
  "@noFilesYet": {"description": "Empty state when no files are present."},
  "uploadDocsPrompt": "Upload documents to reference in your conversations with Conduit",
  "@uploadDocsPrompt": {"description": "Prompt encouraging users to upload documents."},
  "uploadFirstFile": "Upload your first file",
  "@uploadFirstFile": {"description": "CTA to add the first file."},
  "attachments": "Attachments",
  "@attachments": {"description": "Header above list of attached files in compose area."},
  "knowledgeBaseEmpty": "Knowledge base is empty",
  "@knowledgeBaseEmpty": {"description": "Empty state title for the knowledge base section."},
  "createCollectionsPrompt": "Create collections of related documents for easy reference",
  "@createCollectionsPrompt": {"description": "Prompt describing the benefit of creating collections."},
  "chooseSourcePhoto": "Choose your source",
  "@chooseSourcePhoto": {"description": "Sheet title to pick camera or photo library."},
  "takePhoto": "Take a photo",
  "@takePhoto": {"description": "Action to open camera and capture a new photo."},
  "chooseFromGallery": "Choose from your photos",
  "@chooseFromGallery": {"description": "Action to pick an existing photo from library."},
  "document": "Document",
  "@document": {"description": "Generic document label used in UI."},
  "documentHint": "PDF, Word, or text file",
  "@documentHint": {"description": "Helper hint listing supported document types."},
  "uploadFileTitle": "Upload File",
  "@uploadFileTitle": {"description": "Dialog/sheet title for file upload."},
  "fileUploadComingSoon": "File upload for {type} is coming soon!",
  "@fileUploadComingSoon": {
    "placeholders": {"type": {"type": "String", "example": "gallery"}},
    "description": "Temporary message for upcoming upload feature by type"
  },
  "kbCreationComingSoon": "Knowledge base creation is coming soon!",
  "@kbCreationComingSoon": {"description": "Temporary message indicating KB creation feature is not yet available."},
  "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."},
  "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."},
  "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."}
  ,
  "addAttachment": "Add attachment",
  "@addAttachment": {"description": "Button to add an attachment (file/photo)."},
  "tools": "Tools",
  "@tools": {"description": "Header for a tools/actions section."},
  "voiceInput": "Voice input",
  "@voiceInput": {"description": "Label for voice input feature."},
  "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": "Message...",
  "@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."},
  "sendMessage": "Send message",
  "@sendMessage": {"description": "Semantic label for sending a message."},
  "file": "File",
  "@file": {"description": "A file item or attachment type label."},
  "photo": "Photo",
  "@photo": {"description": "A photo item or attachment type label."},
  "camera": "Camera",
  "@camera": {"description": "Camera source label."},
  "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."}
  ,
  "offlineBanner": "You're offline. Some features may be limited.",
  "@offlineBanner": {"description": "Banner warning when device is offline."},
  "featureRequiresInternet": "This feature requires an internet connection",
  "@featureRequiresInternet": {"description": "Informational text explaining internet requirement."},
  "messagesWillSendWhenOnline": "Messages will be sent when you're back online",
  "@messagesWillSendWhenOnline": {"description": "Queue behavior notice while offline."},
  "confirm": "Confirm",
  "@confirm": {"description": "Confirmation button label."},
  "cancel": "Cancel",
  "@cancel": {"description": "Cancel button label."}
  ,
  "ok": "OK",
  "@ok": {"description": "Generic OK button label."},
  "inputField": "Input field",
  "@inputField": {"description": "Accessibility label describing an input field."},
  "captureDocumentOrImage": "Capture a document or image",
  "@captureDocumentOrImage": {"description": "Action to capture a document or image using camera."},
  "checkConnection": "Check Connection",
  "@checkConnection": {"description": "CTA to verify network connectivity."},
  "openSettings": "Open Settings",
  "@openSettings": {"description": "CTA to open device or app settings."},
  "chooseDifferentFile": "Choose Different File",
  "@chooseDifferentFile": {"description": "CTA to pick an alternative file."},
  "goBack": "Go Back",
  "@goBack": {"description": "CTA to navigate back."},
  "technicalDetails": "Technical Details",
  "@technicalDetails": {"description": "Expandable section label to show error details or logs."},
  "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."},
  "searchHint": "Search...",
  "@searchHint": {"description": "Generic search input hint."},
  "searchConversations": "Search conversations...",
  "@searchConversations": {"description": "Search input hint scoped to conversations."},
  "create": "Create",
  "@create": {"description": "Primary action to create a resource."},
  "folderCreated": "Folder created",
  "@folderCreated": {"description": "Toast/notice after successfully creating a folder."},
  "failedToCreateFolder": "Failed to create folder",
  "@failedToCreateFolder": {"description": "Error notice when folder creation fails."},
  "movedChatToFolder": "Moved \"{title}\" to \"{folder}\"",
  "@movedChatToFolder": {
    "description": "Toast indicating a chat titled {title} was moved to folder {folder}.",
    "placeholders": {
      "title": {"type": "String"},
      "folder": {"type": "String"}
    }
  },
  "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."},
  "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 App",
  "@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"
  },
  "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."},
  "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."},
  "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."}
  ,
  "editMessage": "Edit Message",
  "@editMessage": {"description": "Action to edit a previously sent message."}
  ,
  "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."},
  "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"}}
  }
  ,
  "appCustomization": "App Customization",
  "@appCustomization": {"description": "Title of the customization settings page."},
  "appCustomizationSubtitle": "Personalize how names and UI display",
  "@appCustomizationSubtitle": {"description": "Subtitle shown under App Customization tile and page header."},
  "quickActionsDescription": "Pick up to two shortcuts to pin near the composer",
  "@quickActionsDescription": {"description": "Helper text explaining quick action pill selection in customization."},
  "display": "Display",
  "@display": {"description": "Section header for visual and layout related settings."},
  "realtime": "Realtime",
  "@realtime": {"description": "Section header for realtime/transport settings."},
  "hideProviderInModelNames": "Hide provider in model names",
  "@hideProviderInModelNames": {"description": "Toggle label to hide the provider prefix in model names (e.g., show gpt-4o instead of openai/gpt-4o)."},
  "hideProviderInModelNamesDescription": "Show names like \"gpt-4o\" instead of \"openai/gpt-4o\".",
  "@hideProviderInModelNamesDescription": {"description": "Helper text for provider hiding toggle."},
  "transportMode": "Transport mode",
  "@transportMode": {"description": "Title for selecting the networking transport used for realtime."},
  "transportModeDescription": "Choose how the app connects for realtime updates.",
  "@transportModeDescription": {"description": "Helper text explaining the transport setting."},
  "mode": "Mode",
  "@mode": {"description": "Form field label for transport mode dropdown."},
  "transportModeAuto": "Auto (Polling + WebSocket)",
  "@transportModeAuto": {"description": "Dropdown option label for automatic transport selection."},
  "transportModeWs": "WebSocket only",
  "@transportModeWs": {"description": "Dropdown option label for WebSocket-only transport."},
  "transportModeAutoInfo": "More robust on restrictive networks. Upgrades to WebSocket when possible.",
  "@transportModeAutoInfo": {"description": "Footnote text for the Auto transport mode."},
  "transportModeWsInfo": "Lower overhead, but may fail behind strict proxies/firewalls."
  ,
  "@transportModeWsInfo": {"description": "Footnote text for the WebSocket-only transport mode."}
}
