Files
next-ai-draw-io/lib/i18n/dictionaries/en.json
T
dayuan.jiang f811242568 refactor(providers): the UI, the connection test and the routes read the record's fields
Step 5 of the provider refactor plan. Provider names gave way to the
record's credential and sdk fields in: hasCredentials (one rule per
credential kind), the connection test (an Object.hasOwn check first, then a
credential switch; EdgeOne's site endpoint and cookie forwarding follow
credential none), the chat route (the on-site function and the single-system
rule for the OpenAI SDK), the credentials form (which fields to show, the
optional-key label, the base URL hint from the record), the picker (the note
from the record), the logo (icon and logo fields), the settings dialog (test
blocker, error hints, EdgeOne origin), the admin panel (fixedCredentials),
chatRequestUrl (sdk), the model list (sdk aihubmix) and the zod schema
(Object.hasOwn instead of 'in'). The eight provider-specific dictionary
entries moved into the record as four-language objects; needAzure became a
generic needUrl.

Two intended behavior changes: the connection test answers 400 'Invalid
provider' for an unknown name whether or not a key is sent (before: 400
'API key is required' without a key, 200 with an error text with one); and
Azure has no placeholder default URL any more, so a new Azure entry starts
with an empty URL and the generic 'needs a URL' rule applies. The e2e
Azure test seeds no URL and expects the new wording. Out-of-layer
provider-name checks: 44 before, 6 after (the admin panel's fixed-variable
branches for Bedrock, Vertex AI and Ollama, kept on purpose). Behavior
snapshot unchanged.
2026-10-12 21:17:51 +09:00

623 lines
30 KiB
JSON

{
"common": {
"save": "Save",
"cancel": "Cancel",
"close": "Close",
"edit": "Edit",
"delete": "Delete",
"loading": "Loading.."
},
"nav": {
"newChat": "New diagram",
"settings": "Settings",
"hidePanel": "Hide chat panel",
"showPanel": "Show chat panel",
"aiChat": "AI chat"
},
"chat": {
"placeholder": "Describe your diagram or upload a file...",
"inputLabel": "Chat input",
"send": "Send",
"stopGeneration": "Stop generation",
"uploadFile": "Upload file (image, PDF, text)",
"minimalStyle": "Minimal",
"styledMode": "Styled",
"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",
"mcpTagline": "Let Claude Code, Cursor or VS Code draw from your local files and code. You get the same canvas as here: live preview, outlined changes, undo."
},
"settings": {
"title": "Settings",
"description": "Configure your application settings.",
"accessCode": "Access code",
"accessCodePlaceholder": "Enter access code",
"accessCodeDescription": "Required to use this application.",
"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",
"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.",
"failedToExport": "Error fetching chart data",
"failedToLoadExample": "Error loading example image",
"failedToRecordFeedback": "Failed to record your feedback. Please try again.",
"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",
"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": "<strong>Tip:</strong> You can use your own API key (click the Settings icon) or self-host the project to bypass these limits.",
"tipSelfHosted": "<strong>Tip:</strong> 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",
"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"
},
"sessionHistory": {
"empty": "No diagrams yet",
"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": {
"addProvider": "Add provider",
"modelId": "Model ID",
"deleteProvider": "Delete provider",
"validationError": "The test failed",
"addModelFirst": "Add a model first.",
"displayName": "Display Name",
"bedrockApiKey": "Bedrock API key",
"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",
"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",
"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.",
"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",
"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.",
"needUrl": "Fill in the API key and the base URL 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.",
"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)"
},
"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"
},
"shell": {
"waiting": "Waiting for the MCP server…",
"toggleTheme": "Switch between light and dark",
"connected": "Connected to the MCP server",
"offline": "Can't reach the MCP server",
"tooLarge": "This diagram is too large to save to the MCP server (over 10 MB).",
"unreachable": "Can't reach the MCP server. Your changes are only in this tab for now.",
"restoredFromFile": "The diagram was restored from its saved file. What this tab showed before is in History.",
"aiChanged": "The AI changed the diagram while you were editing. Your last change was saved in History.",
"historyChanged": "History changed on the server. Please open it again.",
"restoreFailed": "Restore failed. Please try again.",
"userEdit": "Changed by hand",
"showVersions": "Show the versions",
"hideVersions": "Hide the versions"
}
}