{ "common": { "save": "Save", "cancel": "Cancel", "close": "Close", "clear": "Clear", "edit": "Edit", "delete": "Delete", "loading": "Loading.." }, "nav": { "editor": "Editor", "newChat": "New diagram", "github": "GitHub", "settings": "Settings", "hidePanel": "Hide chat panel", "showPanel": "Show chat panel", "aiChat": "AI chat" }, "providers": { "useServerDefault": "Use Server Default", "openai": "OpenAI", "anthropic": "Anthropic", "google": "Google", "azure": "Azure OpenAI", "openrouter": "OpenRouter", "deepseek": "DeepSeek", "siliconflow": "SiliconFlow", "modelscope": "ModelScope", "minimax": "MiniMax", "glm": "GLM", "qwen": "Qwen", "kimi": "Kimi", "qiniu": "Qiniu", "mimo": "MiMo (Xiaomi)" }, "chat": { "placeholder": "Describe your diagram or upload a file...", "inputLabel": "Chat input", "send": "Send", "stopGeneration": "Stop generation", "sendMessage": "Send message", "clearConversation": "Clear conversation", "uploadFile": "Upload file (image, PDF, text)", "minimalStyle": "Minimal", "styledMode": "Styled", "minimalTooltip": "Use minimal for faster generation (no colors)", "regenerate": "Regenerate response", "copyResponse": "Copy response", "copied": "Copied!", "failedToCopyDetail": "Failed to copy message. Please copy manually or check clipboard permissions.", "goodResponse": "Good response", "badResponse": "Bad response", "clickToEdit": "Click to edit", "editMessage": "Edit message", "saveAndSubmit": "Save & submit", "ExtractURL": "Extract from URL", "attach": "Add", "placeholderFollowUp": "Ask for a change, or select shapes to edit them", "emptyThread": "Draw on the canvas, or describe what you want below.", "attachedImage": "Attached image", "retry": "Retry" }, "examples": { "paperToDiagram": "Paper to diagram", "paperDescription": "Upload .pdf, .txt, .md, .json, .csv, .py, .js, .ts and more", "animatedDiagram": "Animated diagram", "animatedDescription": "Draw a transformer architecture with animated connectors", "awsArchitecture": "AWS architecture", "awsDescription": "Create a cloud architecture diagram with AWS icons", "replicateFlowchart": "Replicate a flowchart", "replicateDescription": "Upload and replicate an existing flowchart", "creativeDrawing": "Creative drawing", "creativeDescription": "Draw something fun and creative", "cachedNote": "Examples use saved answers: they appear instantly and don't call the AI.", "mcpServer": "MCP Server", "mcpDescription": "Use in Claude Desktop, VS Code & Cursor" }, "settings": { "title": "Settings", "description": "Configure your application settings.", "accessCode": "Access code", "accessCodePlaceholder": "Enter access code", "accessCodeDescription": "Required to use this application.", "aiProvider": "AI Provider Settings", "aiProviderDescription": "Use your own API key to bypass usage limits. Your key is stored locally in your browser and is never stored on the server.", "provider": "Provider", "modelId": "Model ID", "apiKey": "API Key", "apiKeyPlaceholder": "Your API key", "baseUrl": "Base URL (optional)", "customEndpoint": "Custom endpoint URL", "overrides": "Overrides", "clearSettings": "Clear Settings", "useServerDefault": "Use Server Default", "language": "Language", "languageDescription": "Choose your interface language.", "theme": "Theme", "themeDescription": "Light or dark interface. The canvas follows the same theme.", "diagramStyle": "Diagram style", "diagramStyleDescription": "How the AI draws new diagrams: Styled uses colors and icons, Minimal keeps shapes plain.", "sendShortcut": "Send shortcut", "sendShortcutDescription": "Choose how to send messages.", "enterToSend": "Enter to send", "ctrlEnterToSend": "Cmd/Ctrl+Enter to send", "diagramActions": "Diagram Actions", "diagramActionsDescription": "Manage diagram history and exports", "history": "History", "download": "Download", "proxy": "Proxy settings", "proxyDescription": "Configure HTTP/HTTPS proxy for API requests (Desktop only)", "httpProxy": "HTTP proxy", "httpsProxy": "HTTPS proxy", "applyProxy": "Apply", "proxyApplied": "Proxy settings applied", "diagramValidation": "Check diagrams with a screenshot (experimental)", "diagramValidationDescription": "After each drawing, a model that can read images looks at a screenshot and asks for fixes. Needs a model that can read images.", "customSystemMessage": "Custom instructions", "customSystemMessageDescription": "Add custom instructions appended to the AI's system prompt.", "customSystemMessagePlaceholder": "e.g., Always use blue color scheme for diagrams...", "maxOutputTokens": "Output token limit", "maxOutputTokensDescription": "Budget for one reply, shared by thinking and the diagram XML. Raise it if the AI keeps thinking and no diagram appears. Leave empty for the default.", "tabModels": "Models", "tabAbout": "About", "themeLight": "Light", "themeDarkMode": "Dark", "themeSystem": "System", "accessCodeSaved": "Access code saved", "proxyInvalid": "Proxy addresses must start with http:// or https://", "proxyFailed": "Couldn't apply the proxy settings", "appVersion": "Version", "projectWebsite": "Project website", "tabGeneral": "General", "tabDrawing": "Drawing", "sectionInterface": "Interface", "sectionAccess": "Access" }, "save": { "title": "Export diagram", "description": "Pick a format and a file name.", "format": "Format", "filename": "Filename", "filenamePlaceholder": "Enter filename", "formats": { "drawio": "draw.io file", "png": "PNG image", "svg": "SVG image", "xmlsvg": "Editable SVG" }, "savedSuccessfully": "Diagram exported", "hints": { "drawio": "Keeps everything editable", "png": "A picture for slides and documents", "svg": "A picture that scales without blur", "xmlsvg": "A picture that still opens in draw.io" } }, "dialogs": { "clearSuccess": "Started a fresh chat" }, "errors": { "maxFiles": "Too many files. Maximum {max} allowed.", "onlyMoreAllowed": "Only {slots} more file(s) allowed", "fileExceeds": "\"{name}\" is {size} (exceeds {max}MB)", "unsupportedType": "\"{name}\" is not a supported file type", "filesRejected": "{count} files rejected:", "andMore": "...and {count} more", "invalidAccessCode": "Invalid or missing access code. Please configure it in Settings.", "networkError": "Network error. Please check your connection.", "retryLimit": "Auto-retry limit reached ({max}). Please try again manually.", "continuationRetryLimit": "Continuation retry limit reached ({max}). The diagram may be too complex.", "sessionCorrupted": "Session data was corrupted. Starting fresh.", "failedToSave": "Failed to save messages to localStorage", "failedToRestore": "Failed to restore from localStorage", "failedToPersist": "Failed to persist state before unload", "failedToExport": "Error fetching chart data", "failedToLoadExample": "Error loading example image", "failedToRecordFeedback": "Failed to record your feedback. Please try again.", "storageUpdateFailed": "Chat cleared but browser storage could not be updated", "sessionSaveFailed": "Could not save this chat. Browser storage may be full: delete old chats from history and try again.", "sessionSaveFailedLeave": "Could not save this chat. Browser storage may be full. You can go on without saving it, then delete old chats from the list in the new chat.", "continueWithoutSaving": "Continue without saving", "notADiagramFile": "{name} isn't a draw.io diagram.", "fileTooLong": "{name}: Content exceeds {limit}k character limit ({size}k chars)", "fileReadFailed": "Failed to read file: {name}", "answerEndedEarly": "The answer ended before the diagram was finished.", "attachmentsStillReading": "Attachments are still being read. Send again when they are ready.", "sendInProgress": "The last message is still being sent. Try again in a moment.", "answerInProgress": "An answer is still coming. Send again when it is done.", "cannotResend": "This message can't be sent again: the diagram from when it was sent wasn't saved.", "llm": { "invalid_api_key": "The provider rejected the API key. Check it in model settings.", "forbidden": "The provider refused the request. The key may not have access to this model or region.", "server_key_forbidden": "Today's free quota is used up. It resets tomorrow. You can also add your own API key in model settings to keep going.", "model_not_found": "The provider does not know this model. Check the model ID in model settings.", "insufficient_quota": "The provider account has no credit or quota left.", "rate_limited": "The provider is limiting requests. Wait a moment and try again.", "context_too_long": "The conversation is too long for this model. Start a new chat or pick a model with a larger context.", "images_unsupported": "This model doesn't support image input.", "tools_unsupported": "This model doesn't support tool calls, which drawing needs. Pick another model.", "output_truncated": "The output was cut off before the diagram was complete. Try a simpler request or raise the output limit in settings.", "provider_unavailable": "The provider is having problems. Try again later.", "cannot_connect": "Could not reach the provider. Check the base URL and your network.", "timeout": "The provider did not answer in time.", "openModelSettings": "Open model settings" } }, "quota": { "dailyLimit": "Daily Quota Reached", "tokenLimit": "Daily Token Limit Reached", "tpmLimit": "Rate Limit", "tpmMessage": "Too many requests. Please wait a moment.", "tpmMessageDetailed": "Rate limit reached ({limit} tokens/min). Please wait {seconds} seconds before sending another request.", "messageApi": "Looks like you've reached today's demo limit. We're glad you're enjoying it; the limit keeps the demo fair for everyone.", "messageApiSelfHosted": null, "messageToken": "Looks like you've reached today's token limit. We're glad you're enjoying it; the limit keeps the demo fair for everyone.", "messageTokenSelfHosted": null, "tip": "Tip: You can use your own API key (click the Settings icon) or self-host the project to bypass these limits.", "tipSelfHosted": "Tip: You can configure your own API key in the settings to continue using the service.", "reset": "Your limit resets tomorrow. Thanks for understanding.", "configModel": "Use Your API Key", "selfHost": "Self-host", "sponsor": "Sponsor", "learnMore": "Learn more →", "usedOf": "{used}/{limit}" }, "tools": { "truncated": "Truncated" }, "file": { "reading": "Reading...", "chars": "chars", "removeFile": "Remove file" }, "url": { "title": "Extract Content from URL", "description": "Paste a URL to extract and analyze its content", "Extracting": "Extracting...", "extract": "Extract", "Cancel": "Cancel", "enterUrl": "Please enter a URL", "invalidFormat": "Invalid URL format", "failed": "Couldn't read that page" }, "reasoning": { "thinking": "Thinking...", "thoughtFor": "Thought for {duration} seconds", "thoughtForOne": "Thought for 1 second", "thoughtBrief": "Thought for a few seconds" }, "dev": { "title": "Dev: XML Streaming Simulator", "preset": "Preset:", "selectPreset": "Select a preset...", "clear": "Clear", "placeholder": "Paste mxCell XML here or select a preset...", "interval": "Interval:", "chars": "Chars:", "streaming": "Streaming...", "simulate": "Simulate", "stop": "Stop", "testQuotaToast": "Test Quota Toast", "simulatingMessage": "[Dev] Simulating XML streaming", "successMessage": "Successfully displayed the diagram." }, "about": { "modelChange": "Model Change & Usage Limits", "walletCrying": "(Or: Why My Wallet is Crying)", "seekingSponsorship": "Call for Sponsorship", "contactMe": "Contact Me", "usageNotice": "Due to high usage, I have changed the model from Claude to minimax-m2 and added some usage limits. See About page for details." }, "sessionHistory": { "tooltip": "Chat History", "newChat": "New Chat", "empty": "No diagrams yet", "emptyHint": "Start a conversation to begin", "today": "Today", "yesterday": "Yesterday", "thisWeek": "This Week", "earlier": "Earlier", "deleteTitle": "Delete this diagram?", "deleteDescription": "The diagram and its conversation are deleted for good.", "justNow": "Just now", "searchPlaceholder": "Search diagrams…", "noResults": "No chats found", "rename": "Rename", "busyHint": "Available when the answer is finished" }, "templates": { "emptyTitle": "No saved prompts yet", "emptyDescription": "Save a prompt you reuse, for example \"Draw an AWS architecture for…\". It shows up here.", "createFirst": "Save your first prompt", "neverUsed": "Not used yet", "usedCount": "{count} uses", "myTemplates": "Saved prompts", "createTitle": "Save a prompt", "createDescription": "Save a prompt to use again later.", "promptLabel": "Prompt", "promptPlaceholder": "Describe the diagram you want to create...", "promptRequired": "Prompt is required", "titleLabel": "Title", "titlePlaceholder": "Enter a title", "titleHint": "Leave empty to use the first 20 characters of prompt", "descriptionLabel": "Description", "descriptionPlaceholder": "What this prompt is for", "pinnedLabel": "Pin to top", "pinnedHint": "Pinned prompts appear at the top of the list", "createButton": "Save prompt", "createFailed": "Couldn't save the prompt. Try again.", "editTitle": "Edit saved prompt", "editDescription": "Change the prompt and its settings.", "updateFailed": "Couldn't update the prompt. Try again.", "duplicate": "Duplicate", "copySuffix": "(copy)", "deleteTitle": "Delete this saved prompt?", "deleteDescription": "The prompt is deleted for good.", "confirmSendTitle": "Replace current input?", "confirmSendDescription": "You have unsent text in the message box. Sending this prompt replaces it.", "confirmSendButton": "Send prompt", "searchPlaceholder": "Search saved prompts…", "searchNoResults": "No saved prompts match", "pin": "Pin to top", "unpin": "Unpin from top", "saveAsTemplate": "Save this prompt", "exportTemplates": "Export saved prompts", "importTemplates": "Import saved prompts", "exportEmpty": "No saved prompts to export", "exportSuccess": "Exported {count} saved prompt(s)", "importNoFile": "Please select a JSON file", "importFailed": "Import failed: {error}", "importSuccess": "Imported {imported} saved prompt(s), skipped {skipped} duplicate(s)", "saveDisabledHint": "Type a prompt first" }, "validation": { "title": "Validate Diagram", "capturing": "Capturing", "validating": "Validating", "validatingWithAttempt": "Validating ({attempt}/{max})", "valid": "Valid", "validWithWarnings": "Valid with Warnings", "issuesFound": "Issues Found", "error": "Error", "skipped": "Skipped", "capturedScreenshot": "Captured Screenshot:", "issuesFoundLabel": "Issues Found:", "suggestions": "Suggestions:", "passedValidation": "Diagram passed visual validation - no issues detected.", "improvementRequested": "Improvement requested - check the new diagram below", "improveWithSuggestions": "Improve with Suggestions", "regenerateWithFeedback": "Regenerate the diagram using the validation feedback" }, "modelConfig": { "configure": "Configure", "addProvider": "Add provider", "addModel": "Add Model", "modelId": "Model ID", "modelLabel": "Display Label", "streaming": "Enable Streaming", "deleteProvider": "Delete provider", "deleteModel": "Delete Model", "noModels": "No models configured. Add a model to get started.", "validationError": "The test failed", "addModelFirst": "Add a model first.", "displayName": "Display Name", "bedrockApiKey": "Bedrock API key", "bedrockApiKeyHint": "With an API key, the access keys below are not needed.", "awsAccessKeyId": "AWS Access Key ID", "awsSecretAccessKey": "AWS Secret Access Key", "awsRegion": "AWS Region", "selectRegion": "Select region", "apiKey": "API key", "enterApiKey": "Enter your API key", "enterSecretKey": "Enter your secret access key", "baseUrl": "Base URL", "optional": "(optional)", "getApiKey": "Get API key", "noTools": "no tool calls", "mayNotDraw": "models.dev lists no tool call support for this model, so it may not be able to draw.", "requestUrl": "Requests go to {url}", "baseUrlWithExample": "Base URL (optional, e.g. {example})", "customEndpoint": "Custom endpoint URL", "minimaxBaseUrlHint": "Use /anthropic for Anthropic-compatible API (recommended), or /v1 for OpenAI-compatible API", "mimoBaseUrlHint": "Default works with pay-as-you-go keys (sk-...). Token Plan subscribers (tp-... keys) must set https://token-plan-cn.xiaomimimo.com/v1", "models": "Models", "customModelId": "Custom model ID...", "allAdded": "All added", "modelIdEmpty": "Model ID cannot be empty", "modelIdExists": "This model ID already exists", "deleteConfirmDesc": "Are you sure you want to delete {name}? This will remove all configured models and cannot be undone.", "typeToConfirm": "Type \"{name}\" to confirm", "typeProviderName": "Type the provider name...", "requestFailed": "Request failed ({status})", "cancel": "Cancel", "delete": "Delete", "clickToChange": "(click to change)", "usingServerDefault": "Using server default model", "selectModel": "Select Model", "searchModels": "Search models...", "noModelsFound": "No models found.", "default": "Default", "serverDefault": "Server model", "serverModels": "Server Models", "userModels": "User Models", "configureModels": "Configure Models...", "serverDefaultModel": "Server default model", "showValue": "Show value", "hideValue": "Hide value", "myProviders": "My providers", "inUse": "In use", "listSeparator": ", ", "serverModelsTitle": "Models from this server", "serverDefaultSummary": "No API key needed: the server's default model.", "statusError": "{count} failed", "statusIncomplete": "Not set up yet", "statusUntested": "{count} untested", "statusOk": "{count} working", "noModelsYet": "No models yet", "keysStayLocal": "API keys stay in this browser on this device and go to the server only with your requests.", "useOwnKey": "Use your own API key", "useOwnKeyHint": "Add a provider to use its models from the chat's model picker. Pick one to start:", "viewAllProviders": "See all {count} providers", "searchProviders": "Search providers, e.g. DeepSeek, Qwen, Ollama", "noProvidersFound": "No provider matches.", "groupVendors": "Model makers", "groupAggregators": "Aggregators", "groupCloud": "Cloud platforms", "groupSelfHosted": "Self-hosted", "noteBedrock": "AWS credentials", "noteVertex": "Express mode key", "noteAzure": "Key and resource URL", "noteEdgeone": "No key needed", "noteOllama": "Key optional", "noteSglang": "Your server's URL", "added": "Added", "awsCredentials": "AWS credentials", "bedrockAuthApiKey": "Bedrock API key", "bedrockAuthAccessKey": "Access keys", "moreOptions": "More options: base URL, display name", "moreOptionsName": "More options: display name", "keyRejected": "The provider rejected this API key. Check that the key above was copied in full.", "modelNotFound": "The provider can't find this model ID. Check its spelling.", "modelWorks": "Works", "modelWorksTime": "Works · {seconds} s", "modelFailed": "Failed", "modelUntested": "Untested", "needKey": "Fill in the API key first.", "needAws": "Fill in the AWS credentials and region first.", "needModel": "Add a model first.", "stepConnect": "Connection", "edgeoneNoKey": "EdgeOne Pages uses the model service that comes with this site's deployment: no API key needed.", "stepModels": "Models", "fetchAllModels": "Get all models from {name}", "suggestedLabel": "Suggested:", "orTypeModelId": "Or type another model ID", "add": "Add", "browseModels": "Browse models", "stepTest": "Test", "testHint": "Sends each model a very short message to check that the key and the model work.", "testOne": "Test {model}", "testAll": "Test all {count} models", "testPassedOne": "{model} works", "testPassedAll": "All {count} models work", "answeredIn": "(answered in {seconds} s)", "useInChat": "Use {model} in the chat", "backToProviders": "Back to providers", "deleteProviderOnly": "Delete {name}", "addProviderEntry": "Add a provider…", "awsKeysRejected": "AWS rejected these access keys. Check that both were copied in full.", "needAzure": "Fill in the API key and your Azure resource's base URL first.", "validationFailedCountOne": "{count} model failed the test", "validationFailedCountOther": "{count} models failed the test", "deleteProviderNamedOne": "Delete {name} and its model", "deleteProviderNamedOther": "Delete {name} and its {count} models", "serverModelsSummaryOne": "No API key needed. {count} model: {names}", "serverModelsSummaryOther": "No API key needed. {count} models: {names}", "noModelsReturned": "The provider returned no models.", "awsSessionToken": "AWS session token (optional)", "awsSessionTokenHint": "Only for temporary credentials: access keys that start with ASIA.", "bedrockBothSaved": "This provider also keeps an access key pair, unused while there is an API key.", "removeAccessKeys": "Remove the access keys" }, "admin": { "title": "Admin Settings", "loginPrompt": "Enter the admin password (the ADMIN_PASSWORD environment variable)", "password": "Password", "signIn": "Sign In", "signingIn": "Signing in…", "loginFailed": "Login failed", "precedence": "Priority: this page > environment variables > defaults", "notWritable": "Settings can't be saved on this deployment, only viewed; use environment variables instead", "settingGroups": "Setting groups", "enabled": "On", "disabled": "Off", "enableGroup": "Turn on {group}", "unsavedChanges": "Unsaved changes", "saved": "Saved. Changes apply right away, except items marked \"Needs restart\"", "saveFailed": "Save failed. Check your connection and try again", "invalidSettings": "Some settings are invalid; see the notes under them", "discard": "Discard changes", "saveChanges": "Save changes", "saving": "Saving…", "sourceSaved": "This page", "sourceEnv": "Env", "sourceSavedTitle": "Set on this page", "sourceEnvTitle": "From an environment variable", "restartRequired": "Needs restart", "modified": "Modified", "notSet": "Not set", "savedReplace": "Saved ({hint}); type a new value to replace it", "showValue": "Show", "hideValue": "Hide", "removeValue": "Clear", "removeValueTitle": "Clear the saved value", "resetToDefault": "Reset to default", "models": "Models", "modelsDescription": "Models every user can use, no personal API key needed", "addProviderHint": "Add a provider to offer models to all users", "selectProviderHint": "Select or add a provider, then enter its key and models", "addProviderToOfferModels": "Add at least one model before users can see this provider", "managedViaEnv": "(environment variables)", "envReadOnly": "Defined in AI_MODELS_CONFIG / ai-models.json; view only here, edit it there", "defaultModel": "Default Model", "noModelsConfigured": "No models yet", "modelCount": "{count} model", "modelCountPlural": "{count} models", "default": "Default", "setAsDefault": "Set as default provider", "defaultProvider": "Default provider", "modelIdPlaceholder": "Model ID…", "addModel": "Add model", "suggested": "Suggested", "test": "Test", "testOk": "Passed ({ms} ms)", "testFailed": "Failed", "removeModel": "Delete {model}", "deleteProviderTitle": "Delete {name}?", "deleteProviderDesc": "After you save, its key and models are deleted from the server", "cancel": "Cancel", "delete": "Delete", "groups": { "generation": { "title": "Replies", "description": "How the AI replies, for every conversation" }, "access": { "title": "Access", "description": "Limit who can use this site" }, "features": { "title": "Optional Features", "description": "Extra features and safety options" }, "observability": { "title": "Call Logs", "description": "Record model calls with Langfuse" }, "quota": { "title": "Usage Limits", "description": "Per-IP limits; they take effect only with a DynamoDB table" } }, "settings": { "TEMPERATURE": { "label": "Temperature", "description": "Higher is more random; leave empty for reasoning models that don't support it" }, "MAX_OUTPUT_TOKENS": { "label": "Output Token Limit" }, "ACCESS_CODE_LIST": { "label": "Access Codes", "description": "Separate several with commas; users must enter one to chat; empty means no limit" }, "ENABLE_VLM_VALIDATION": { "label": "Diagram Check", "description": "After drawing, a model that can see images checks a screenshot" }, "VALIDATION_MODEL": { "label": "Check Model", "description": "Empty means the default model" }, "VALIDATION_TIMEOUT": { "label": "Check Timeout (ms)" }, "ENABLE_HISTORY_XML_REPLACE": { "label": "Trim Old Diagrams", "description": "Old diagrams in the chat history are kept as a short marker" }, "ALLOW_PRIVATE_URLS": { "label": "Allow Private URLs", "description": "When off, custom model URLs can't point to private networks; safer" }, "LANGFUSE_PUBLIC_KEY": { "label": "Langfuse Public Key" }, "LANGFUSE_SECRET_KEY": { "label": "Langfuse Secret Key" }, "LANGFUSE_BASEURL": { "label": "Langfuse URL" }, "DAILY_REQUEST_LIMIT": { "label": "Daily Requests", "description": "Requests per IP per day" }, "DAILY_TOKEN_LIMIT": { "label": "Daily Tokens", "description": "Tokens per IP per day" }, "TPM_LIMIT": { "label": "Tokens Per Minute" }, "DYNAMODB_QUOTA_TABLE": { "label": "DynamoDB Table Name", "description": "Empty means no usage limits" }, "DYNAMODB_REGION": { "label": "DynamoDB Region" }, "QUOTA_TIMEZONE": { "label": "Time Zone", "description": "Daily usage resets at midnight in this time zone" } } }, "workspace": { "export": "Export", "openFile": "Open .drawio file", "canvasLoading": "Loading the canvas…", "askAi": "Ask AI to change this", "untitled": "Untitled diagram", "mobileCanvas": "Canvas", "mobileChat": "Chat" }, "selection": { "one": "Selected: {label}", "many": "{count} shapes selected", "shape": "shape", "connector": "connector", "remove": "Don't send the selection", "placeholder": "Describe how to change the selected shapes" }, "versions": { "strip": "Versions", "created": "Drew the diagram", "edited": "Changed the diagram", "undone": "Change undone", "undo": "Undo change", "redo": "Redo change", "compare": "Compare", "compareTitle": "Compare versions", "currentCanvas": "Canvas now", "versionLabel": "Version {n}", "previous": "Previous version", "next": "Next version", "rendering": "Rendering preview…", "showCode": "Show XML", "hideCode": "Hide XML", "drawing": "Drawing the diagram…", "editing": "Changing the diagram…", "loadingLibrary": "Loading a shape library…", "libraryLoaded": "Loaded a shape library", "failed": "This attempt failed", "failedRetrying": "This attempt failed, trying again", "stopped": "Stopped", "truncatedHint": "The reply hit the output limit before the diagram was complete. Ask for a simpler diagram, or raise Max output tokens in Settings > Drawing.", "noChanges": "No visible changes", "listSeparator": ", ", "shapesAddedOne": "added 1 shape", "shapesAddedOther": "added {count} shapes", "edgesAddedOne": "added 1 connector", "edgesAddedOther": "added {count} connectors", "shapesChangedOne": "changed 1 shape", "shapesChangedOther": "changed {count} shapes", "edgesChangedOne": "changed 1 connector", "edgesChangedOther": "changed {count} connectors", "shapesRemovedOne": "removed 1 shape", "shapesRemovedOther": "removed {count} shapes", "edgesRemovedOne": "removed 1 connector", "edgesRemovedOther": "removed {count} connectors", "totals": "{shapes}, {edges}", "shapesTotalOne": "1 shape", "shapesTotalOther": "{count} shapes", "edgesTotalOne": "1 connector", "edgesTotalOther": "{count} connectors", "restoreVersion": "Restore v{n}", "restoredVersion": "Restored v{n}", "undoRestore": "Undo", "noPreview": "No preview", "compareSince": "Since version {n}, the canvas has changed:", "isOnCanvas": "This version is what the canvas shows now.", "differsElsewhere": "The shapes and connectors on the first page are the same as in version {n}; their order, other pages or the page settings differ." }, "lobby": { "title": "What would you like to draw?", "lede": "Describe a diagram or upload a screenshot or PDF. You get a draw.io diagram you can keep editing and export.", "placeholder": "For example: a login sequence diagram with SMS codes and retries", "recent": "Recent diagrams", "drawYourself": "Start with a blank canvas", "openFileHint": "Keep working on a diagram you have" } }