mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 14:22:28 +08:00
* fix: move History and Download buttons to Settings dialog for cleaner chat interface * fix: cleanup unused imports/props, add i18n for diagram style * fix: use npx directly to avoid package-lock.json changes in CI --------- Co-authored-by: dayuan.jiang <jdy.toh@gmail.com>
258 lines
12 KiB
JSON
258 lines
12 KiB
JSON
{
|
|
"common": {
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"close": "Close",
|
|
"confirm": "Confirm",
|
|
"clear": "Clear",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"loading": "Loading..",
|
|
"new": "NEW"
|
|
},
|
|
"nav": {
|
|
"about": "About",
|
|
"editor": "Editor",
|
|
"newChat": "Start fresh chat",
|
|
"github": "GitHub",
|
|
"settings": "Settings",
|
|
"hidePanel": "Hide chat panel (Ctrl+B)",
|
|
"showPanel": "Show chat panel (Ctrl+B)",
|
|
"aiChat": "AI Chat"
|
|
},
|
|
"providers": {
|
|
"useServerDefault": "Use Server Default",
|
|
"openai": "OpenAI",
|
|
"anthropic": "Anthropic",
|
|
"google": "Google",
|
|
"azure": "Azure OpenAI",
|
|
"openrouter": "OpenRouter",
|
|
"deepseek": "DeepSeek",
|
|
"siliconflow": "SiliconFlow"
|
|
},
|
|
"chat": {
|
|
"placeholder": "Describe your diagram or upload a file...",
|
|
"send": "Send",
|
|
"sending": "Sending...",
|
|
"sendMessage": "Send message",
|
|
"clearConversation": "Clear conversation",
|
|
"diagramHistory": "Diagram history",
|
|
"saveDiagram": "Save diagram",
|
|
"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!",
|
|
"failedToCopy": "Failed to copy",
|
|
"goodResponse": "Good response",
|
|
"badResponse": "Bad response",
|
|
"clickToEdit": "Click to edit",
|
|
"editMessage": "Edit message",
|
|
"saveAndSubmit": "Save & Submit"
|
|
},
|
|
"examples": {
|
|
"title": "Create diagrams with AI",
|
|
"subtitle": "Describe what you want to create or upload an image to replicate",
|
|
"quickExamples": "Quick 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 Flowchart",
|
|
"replicateDescription": "Upload and replicate an existing flowchart",
|
|
"creativeDrawing": "Creative Drawing",
|
|
"creativeDescription": "Draw something fun and creative",
|
|
"cachedNote": "Examples are cached for instant response",
|
|
"mcpServer": "MCP Server",
|
|
"mcpDescription": "Use in Claude Desktop, VS Code & Cursor",
|
|
"preview": "PREVIEW"
|
|
},
|
|
"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": "Dark/Light mode for interface and DrawIO canvas.",
|
|
"drawioStyle": "DrawIO Style",
|
|
"drawioStyleDescription": "Canvas style:",
|
|
"switchTo": "Switch to",
|
|
"minimal": "Minimal",
|
|
"sketch": "Sketch",
|
|
"closeProtection": "Close Protection",
|
|
"closeProtectionDescription": "Show confirmation when leaving the page.",
|
|
"diagramStyle": "Diagram Style",
|
|
"diagramStyleDescription": "Toggle between minimal and styled diagram output.",
|
|
"diagramActions": "Diagram Actions",
|
|
"diagramActionsDescription": "Manage diagram history and exports",
|
|
"history": "History",
|
|
"download": "Download"
|
|
},
|
|
"save": {
|
|
"title": "Save Diagram",
|
|
"description": "Choose a format and filename to save your diagram.",
|
|
"format": "Format",
|
|
"filename": "Filename",
|
|
"filenamePlaceholder": "Enter filename",
|
|
"formats": {
|
|
"drawio": "Draw.io XML",
|
|
"png": "PNG Image",
|
|
"svg": "SVG Image"
|
|
}
|
|
},
|
|
"history": {
|
|
"title": "Diagram History",
|
|
"description": "Here saved each diagram before AI modification.\nClick on a diagram to restore it",
|
|
"noHistory": "No history available yet. Send messages to create diagram history.",
|
|
"version": "Version",
|
|
"restoreTo": "Restore to Version {version}?"
|
|
},
|
|
"dialogs": {
|
|
"clearTitle": "Clear Everything?",
|
|
"clearDescription": "This will clear the current conversation and reset the diagram. This action cannot be undone.",
|
|
"clearEverything": "Clear Everything",
|
|
"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.",
|
|
"validationFailed": "Diagram validation failed. Please try regenerating.",
|
|
"malformedXml": "AI generated invalid diagram XML. Please try regenerating.",
|
|
"failedToProcess": "Failed to process diagram. Please try regenerating.",
|
|
"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"
|
|
},
|
|
"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": "Oops — you've reached the daily API limit for this demo! As an indie developer covering all the API costs myself, I have to set these limits to keep things sustainable.",
|
|
"messageToken": "Oops — you've reached the daily token limit for this demo! As an indie developer covering all the API costs myself, I have to set these limits to keep things sustainable.",
|
|
"tip": "<strong>Tip:</strong> You can use your own API key (click the Settings icon) or self-host the project to bypass these limits.",
|
|
"reset": "Your limit resets tomorrow. Thanks for understanding!",
|
|
"selfHost": "Self-host",
|
|
"sponsor": "Sponsor",
|
|
"learnMore": "Learn more →",
|
|
"usedOf": "{used}/{limit}"
|
|
},
|
|
"tools": {
|
|
"generateDiagram": "Generate Diagram",
|
|
"editDiagram": "Edit Diagram",
|
|
"appendDiagram": "Continue Diagram",
|
|
"complete": "Complete",
|
|
"error": "Error",
|
|
"truncated": "Truncated"
|
|
},
|
|
"file": {
|
|
"reading": "Reading...",
|
|
"chars": "chars",
|
|
"removeFile": "Remove file"
|
|
},
|
|
"reasoning": {
|
|
"thinking": "Thinking...",
|
|
"thoughtFor": "Thought for {duration} seconds",
|
|
"thoughtBrief": "Thought for a few seconds"
|
|
},
|
|
"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."
|
|
},
|
|
"modelConfig": {
|
|
"title": "AI Model Configuration",
|
|
"description": "Configure multiple AI providers and models",
|
|
"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.",
|
|
"selectProvider": "Select a provider or add a new one",
|
|
"configureMultiple": "Configure multiple AI providers and switch between them easily",
|
|
"apiKeyStored": "API keys are stored locally in your browser",
|
|
"test": "Test",
|
|
"validationError": "Validation failed",
|
|
"addModelFirst": "Add at least one model to validate",
|
|
"providers": "Providers",
|
|
"addProviderHint": "Add a provider to get started",
|
|
"verified": "Verified",
|
|
"configuration": "Configuration",
|
|
"displayName": "Display Name",
|
|
"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)",
|
|
"customEndpoint": "Custom endpoint URL",
|
|
"models": "Models",
|
|
"customModelId": "Custom model ID...",
|
|
"allAdded": "All added",
|
|
"suggested": "Suggested",
|
|
"noModelsConfigured": "No models configured",
|
|
"modelIdEmpty": "Model ID cannot be empty",
|
|
"modelIdExists": "This model ID already exists",
|
|
"configureProviders": "Configure AI Providers",
|
|
"selectProviderHint": "Select a provider from the list or add a new one to configure API keys and models",
|
|
"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 provider name...",
|
|
"modelsConfiguredCount": "{count} model(s) configured",
|
|
"validationFailedCount": "{count} model(s) failed validation",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"clickToChange": "(click to change)",
|
|
"usingServerDefault": "Using server default model",
|
|
"selectModel": "Select Model",
|
|
"searchModels": "Search models...",
|
|
"noVerifiedModels": "No verified models. Test your models first.",
|
|
"noModelsFound": "No models found.",
|
|
"default": "Default",
|
|
"serverDefault": "Server Default",
|
|
"configureModels": "Configure Models...",
|
|
"onlyVerifiedShown": "Only verified models are shown",
|
|
"showUnvalidatedModels": "Show unvalidated models",
|
|
"allModelsShown": "All models are shown (including unvalidated)",
|
|
"unvalidatedModelWarning": "This model has not been validated"
|
|
}
|
|
}
|