Files
open-design/src/i18n/locales/en.ts
T
pftom af3f96379a Refactor project name from "Open Claude Design" to "Open Design"
- Updated project name in package.json, package-lock.json, and README files.
- Changed CLI commands and references from "ocd" to "od".
- Adjusted file structure references in documentation and code to reflect new naming conventions.
- Enhanced .gitignore to include new runtime data files.
- Updated metadata in LICENSE file to match new project name.
2026-04-28 14:48:45 +08:00

495 lines
21 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { Dict } from '../types';
export const en: Dict = {
'common.cancel': 'Cancel',
'common.save': 'Save',
'common.close': 'Close',
'common.delete': 'Delete',
'common.rename': 'Rename',
'common.preview': 'Preview',
'common.share': 'Share',
'common.search': 'Search',
'common.searchEllipsis': 'Search…',
'common.loading': 'Loading…',
'common.all': 'All',
'common.none': 'None',
'common.default': 'Default',
'common.installed': 'installed',
'common.notInstalled': 'not installed',
'common.active': 'active',
'common.offline': 'offline',
'common.selected': 'selected',
'common.create': 'Create',
'common.openPreview': 'Open preview',
'common.exitFullscreen': 'Exit fullscreen',
'common.fullscreen': 'Fullscreen',
'common.openInNewTab': 'Open in new tab',
'common.exportPdf': 'Export as PDF',
'common.exportZip': 'Download as .zip',
'common.exportHtml': 'Export as standalone HTML',
'common.justNow': 'just now',
'common.minutesAgo': '{n}m ago',
'common.hoursAgo': '{n}h ago',
'common.daysAgo': '{n}d ago',
'common.now': 'now',
'common.minutesShort': '{n}m',
'common.hoursShort': '{n}h',
'common.daysShort': '{n}d',
'common.untitled': 'Untitled',
'app.brand': 'Open Design',
'app.brandPill': 'Research Preview',
'app.brandSubtitle': 'by Nexu Labs',
'app.welcomeLoading': 'Loading workspace…',
'settings.welcomeKicker': 'Welcome',
'settings.welcomeTitle': 'Set up Open Design',
'settings.welcomeSubtitle':
"Pick how you'd like to run generations. You can change this any time from the Settings button in the top bar.",
'settings.kicker': 'Settings',
'settings.title': 'Execution & model',
'settings.subtitle':
'Choose between a local code-agent CLI and the Anthropic API (BYOK). Your API key is stored only in this browser.',
'settings.modeAria': 'Execution mode',
'settings.modeDaemon': 'Local CLI',
'settings.modeDaemonHelp': 'Run via a code-agent CLI on your machine',
'settings.modeDaemonOffline': 'Daemon is not running',
'settings.modeDaemonOfflineMeta': 'daemon offline',
'settings.modeDaemonInstalledMeta': '{count} installed',
'settings.modeApi': 'Anthropic API',
'settings.modeApiMeta': 'BYOK',
'settings.codeAgent': 'Code agent',
'settings.codeAgentHint':
'Detected by scanning your PATH. Pick the CLI you want generations to flow through.',
'settings.rescan': '↻ Rescan',
'settings.rescanTitle': 'Re-scan PATH',
'settings.noAgentsDetected':
'No agents detected yet. Install one of Claude Code, Codex, Gemini CLI, OpenCode, Cursor Agent, or Qwen, then click Rescan.',
'settings.apiSection': 'Anthropic API',
'settings.apiKey': 'API key',
'settings.showKey': 'Show key',
'settings.hideKey': 'Hide key',
'settings.show': 'Show',
'settings.hide': 'Hide',
'settings.model': 'Model',
'settings.baseUrl': 'Base URL',
'settings.apiHint':
'Calls go directly from this browser to the base URL you set. No proxy. The key never leaves localStorage.',
'settings.skipForNow': 'Skip for now',
'settings.getStarted': 'Get started',
'settings.envConfigure': 'Configure execution mode',
'settings.localCli': 'Local CLI',
'settings.anthropicApi': 'Anthropic API',
'settings.noAgentSelected': 'no agent selected',
'settings.language': 'Language',
'settings.languageHint': 'Switch the interface language. Saved to this browser.',
'entry.tabDesigns': 'Designs',
'entry.tabExamples': 'Examples',
'entry.tabDesignSystems': 'Design systems',
'entry.openSettingsTitle': 'Settings',
'entry.openSettingsAria': 'Open settings',
'entry.resizeAria': 'Resize sidebar',
'entry.loadingWorkspace': 'Loading workspace…',
'newproj.tabPrototype': 'Prototype',
'newproj.tabDeck': 'Slide deck',
'newproj.tabTemplate': 'From template',
'newproj.tabOther': 'Other',
'newproj.titlePrototype': 'New prototype',
'newproj.titleDeck': 'New slide deck',
'newproj.titleTemplate': 'Start from a template',
'newproj.titleOther': 'New project',
'newproj.namePlaceholder': 'Project name',
'newproj.fidelityLabel': 'Fidelity',
'newproj.fidelityWireframe': 'Wireframe',
'newproj.fidelityHigh': 'High fidelity',
'newproj.toggleSpeakerNotes': 'Use speaker notes',
'newproj.toggleSpeakerNotesHint': 'Less text on slides — keep talking points in notes.',
'newproj.toggleAnimations': 'Include animations',
'newproj.toggleAnimationsHint':
'Add motion (entrance, hover, transitions) on top of the template.',
'newproj.templateLabel': 'Template',
'newproj.noTemplatesTitle': 'No templates yet',
'newproj.noTemplatesBody':
'Open any project, then use the Share menu inside the file viewer to convert it into a template. Templates show up here.',
'newproj.savedTemplate': 'Saved template',
'newproj.fileSingular': 'file',
'newproj.filePlural': 'files',
'newproj.create': 'Create',
'newproj.createFromTemplate': 'Create from template',
'newproj.createDisabledTitle':
'Save a project as a template first (Share menu inside any project).',
'newproj.privacyFooter': 'Only you can see your project by default.',
'newproj.designSystem': 'Design system',
'newproj.dsNoneFreeform': 'None — freeform',
'newproj.dsNoneSubtitleEmpty': 'No system tokens, choose your own palette',
'newproj.dsNoneSubtitleSelected': 'Skip system tokens. The agent picks its own palette.',
'newproj.dsCategoryFallback': 'Design system',
'newproj.dsSearch': 'Search design systems…',
'newproj.dsModeAria': 'Selection mode',
'newproj.dsModeSingle': 'Single',
'newproj.dsModeMulti': 'Multi',
'newproj.dsNoneTitle': 'None — freeform',
'newproj.dsNoneSub': 'Skip system tokens. The agent picks its own palette.',
'newproj.dsEmpty': 'No design systems match “{query}”.',
'newproj.dsFootSingular': 'is inspiration only.',
'newproj.dsFootPlural': 'are inspiration only.',
'newproj.dsFootClear': 'Clear',
'newproj.dsBadgeDefault': 'DEFAULT',
'newproj.dsPrimaryFallback': 'Primary',
'designs.subRecent': 'Recent',
'designs.subYours': 'Your designs',
'designs.filterAria': 'Filter projects',
'designs.searchPlaceholder': 'Search…',
'designs.emptyNoProjects': 'No projects yet. Create one on the left.',
'designs.emptyNoMatch': 'No projects match your search.',
'designs.deleteTitle': 'Delete project',
'designs.deleteConfirm': 'Delete "{name}"?',
'designs.cardFreeform': 'freeform',
'examples.typeLabel': 'Type',
'examples.scenarioLabel': 'Scenario',
'examples.modeAll': 'All',
'examples.modePrototypeDesktop': 'Prototypes · Desktop',
'examples.modePrototypeMobile': 'Prototypes · Mobile',
'examples.modeDeck': 'Slides',
'examples.modeDocument': 'Docs & templates',
'examples.scenarioGeneral': 'General',
'examples.scenarioEngineering': 'Engineering',
'examples.scenarioProduct': 'Product',
'examples.scenarioDesign': 'Design',
'examples.scenarioMarketing': 'Marketing',
'examples.scenarioSales': 'Sales',
'examples.scenarioFinance': 'Finance',
'examples.scenarioHr': 'HR',
'examples.scenarioOperations': 'Operations',
'examples.scenarioSupport': 'Support',
'examples.scenarioLegal': 'Legal',
'examples.scenarioEducation': 'Education',
'examples.scenarioPersonal': 'Personal',
'examples.emptyNoSkills': 'No skills available. Is the daemon running?',
'examples.emptyNoMatch': 'No examples match these filters.',
'examples.openPreview': '⤢ Open preview',
'examples.loadingPreview': 'Loading preview…',
'examples.hoverPreview': 'Hover to preview',
'examples.usePrompt': 'Use this prompt',
'examples.previewModalTitle': 'Open full preview (modal)',
'examples.shareTitle': 'Share this example',
'examples.shareLoadFirst': 'Hover to load preview first',
'examples.shareMenu': 'Share ▾',
'examples.exportPdfAllSlides': 'Export as PDF (all slides)',
'examples.exportPptxLocked': 'Export as PPTX… (open template first)',
'examples.tagSlideDeck': 'Slide deck',
'examples.tagTemplate': 'Template',
'examples.tagDesignSystem': 'Design system',
'examples.tagMobilePrototype': 'Mobile prototype',
'examples.tagDesktopPrototype': 'Desktop prototype',
'examples.previewLabel': 'Preview',
'ds.searchPlaceholder': 'Search design systems…',
'ds.emptyNoMatch': 'No design systems match your search.',
'ds.badgeDefault': 'DEFAULT',
'ds.preview': 'Preview',
'ds.previewTitle': 'Preview design system',
'ds.categoryAll': 'All',
'ds.categoryUncategorized': 'Uncategorized',
'ds.showcase': 'Showcase',
'ds.tokens': 'Tokens',
'avatar.title': 'Account & settings',
'avatar.localCli': 'Local CLI',
'avatar.anthropicApi': 'Anthropic API',
'avatar.useLocal': 'Use Local CLI',
'avatar.useApi': 'Use Anthropic API',
'avatar.codeAgent': 'Code agent',
'avatar.rescan': 'Rescan PATH',
'avatar.settings': 'Settings',
'avatar.backToProjects': 'Back to projects',
'avatar.metaActive': 'active',
'avatar.metaOffline': 'offline',
'avatar.metaSelected': 'selected',
'avatar.noAgentSelected': 'no agent selected',
'project.backToProjects': 'Back to projects',
'project.metaFreeform': 'freeform',
'chat.tabChat': 'Chat',
'chat.tabComments': 'Comments',
'chat.commentsSoon': 'Comments — coming soon',
'chat.conversationsTitle': 'Conversations',
'chat.conversationsAria': 'Conversation history',
'chat.newConversation': 'New conversation',
'chat.newConversationsTitle': 'New conversation',
'chat.conversationsHeading': 'Conversations',
'chat.new': 'New',
'chat.emptyConversations': 'No conversations yet.',
'chat.deleteConversation': 'Delete conversation',
'chat.deleteConversationConfirm':
'Delete "{title}"? This removes its messages.',
'chat.untitledConversation': 'Untitled conversation',
'chat.startTitle': 'Start a conversation',
'chat.startHint':
'Drop or paste images for visual reference, or type @ to attach a file from this project. Or try one of these starters:',
'chat.fillInputTitle': 'Click to fill the input',
'chat.jumpToLatest': 'Jump to latest',
'chat.scrollToLatest': 'Scroll to latest',
'chat.you': 'You',
'chat.openFile': 'Open {name}',
'chat.composerPlaceholder':
'Describe the design you want — paste or drop images, or @ a file…',
'chat.composerHint':
'⌘/Ctrl + Enter to send · paste images · @ to reference files',
'chat.cliSettingsTitle': 'CLI & model settings',
'chat.cliSettingsAria': 'Open CLI and model settings',
'chat.attachTitle': 'Attach files (or paste / drop)',
'chat.attachAria': 'Attach files',
'chat.importTitle': 'Import sources (coming soon)',
'chat.importLabel': 'Import',
'chat.importComingSoon': 'Coming soon',
'chat.importSoon': 'Soon',
'chat.importFig': 'Upload .fig file',
'chat.importGitHub': 'Connect GitHub',
'chat.importWeb': 'Grab web element',
'chat.importFolder': 'Link code folder',
'chat.importSkills': 'Skills and design systems',
'chat.importProject': 'Reference another project',
'chat.send': 'Send',
'chat.stop': 'Stop',
'chat.removeAria': 'Remove {name}',
'chat.example1Title': 'Editorial pitch deck',
'chat.example1Tag': 'Magazine',
'chat.example1Prompt':
'A 10-slide editorial pitch deck for a design studio raising a seed round — Swiss-grid layout, oversized serif headlines with bold drop caps, monospace section numbers, generous negative space, and full-bleed photo slides interleaved with text-heavy ones. Cover, vision, market, product, traction, team, ask, contact.',
'chat.example2Title': 'SaaS analytics dashboard',
'chat.example2Tag': 'Data',
'chat.example2Prompt':
'A dense analytics dashboard for a developer-tools SaaS — KPI strip with week-over-week deltas, two stacked line charts (MRR and active workspaces), a world heatmap of usage, a cohort retention grid, a top-customers leaderboard, and a real-time event feed. Dark theme, tabular monospace numerals, sparkline accents.',
'chat.example3Title': 'Annual report long-scroll',
'chat.example3Tag': 'Editorial',
'chat.example3Prompt':
'An interactive annual report for a climate non-profit — long-scroll editorial layout mixing big pull-quote blocks, data visualizations (stacked bars, animated counters, a choropleth map of project sites), photography breakers, donor wall, and a final call-to-action. Modern serif body, sans-serif chart labels, earthy paper palette.',
'preview.shareMenu': 'Share ▾',
'preview.openInNewTab': 'Open in new tab',
'preview.exit': '⤓ Exit',
'preview.fullscreen': '⤢ Fullscreen',
'preview.closeTitle': 'Close (Esc)',
'preview.loading': 'Loading {label}…',
'misc.savedTemplate': 'Saved template',
'misc.primary': 'Primary',
'misc.designSystem': 'Design system',
'workspace.designFiles': 'Design Files',
'workspace.closeTab': 'Close tab',
'workspace.deleteFileConfirm': 'Delete "{name}" from the project folder?',
'workspace.openFromDesignFiles': 'Open a file from',
'workspace.designFilesLink': 'Design Files',
'workspace.loadingSketch': 'Loading sketch…',
'designFiles.title': 'Design Files',
'designFiles.upload': 'Upload image',
'designFiles.pasteText': 'Paste as text file',
'designFiles.newSketch': 'New sketch',
'designFiles.empty':
'Nothing here yet. Drop files below, or create a sketch / paste text.',
'designFiles.refresh': 'Refresh',
'designFiles.delete': 'Delete',
'designFiles.searchPlaceholder': 'Search files…',
'designFiles.up': 'Up',
'designFiles.back': 'Back',
'designFiles.crumbs': 'project',
'designFiles.rowMenu': 'Row menu',
'designFiles.openInTab': 'Open in tab',
'designFiles.download': 'Download',
'designFiles.dropTitle': '⤓ Drop files here',
'designFiles.dropDesc':
'Images, docs, references, Figma links, or folders — Claude will use them as context.',
'designFiles.upload.title': 'Upload an image',
'designFiles.paste.title': 'Paste text as a file',
'designFiles.upload.label': 'Upload',
'designFiles.paste.label': 'Paste',
'designFiles.previewOpen': 'Open',
'designFiles.previewClose': 'Close preview',
'designFiles.modified': 'Modified {time} · {size}',
'designFiles.weeksAgo': '{n}w ago',
'designFiles.sectionPages': 'Pages',
'designFiles.sectionScripts': 'Scripts',
'designFiles.sectionImages': 'Images',
'designFiles.sectionSketches': 'Sketches',
'designFiles.sectionOther': 'Other',
'designFiles.kindHtml': 'HTML page',
'designFiles.kindImage': 'Image',
'designFiles.kindSketch': 'Sketch',
'designFiles.kindText': 'Text',
'designFiles.kindCode': 'Script',
'designFiles.kindBinary': 'Binary',
'pasteDialog.title': 'Paste text',
'pasteDialog.hint': 'Saved into the project folder. Pick any name.',
'pasteDialog.fileNameLabel': 'File name',
'pasteDialog.namePlaceholder': 'notes.txt',
'pasteDialog.contentLabel': 'Content',
'pasteDialog.contentPlaceholder': 'Paste anything…',
'pasteDialog.save': 'Save',
'pasteDialog.cancel': 'Cancel',
'sketch.save': 'Save sketch',
'sketch.cancel': 'Cancel',
'sketch.saving': 'Saving…',
'sketch.tooltipDirty': 'Unsaved changes',
'sketch.tooltipClean': 'Saved',
'fileViewer.empty': 'Select a file to view.',
'fileViewer.loading': 'Loading…',
'fileViewer.exportPptx': 'Export as PPTX',
'fileViewer.openInNewTab': 'Open in new tab',
'fileViewer.copyPath': 'Copy path',
'fileViewer.copied': 'Copied!',
'fileViewer.share': 'Share',
'fileViewer.binaryMeta': 'Binary · {size}',
'fileViewer.binaryNote':
'Binary file ({size} bytes). Download or open from disk to inspect.',
'fileViewer.download': 'Download',
'fileViewer.open': 'Open',
'fileViewer.imageMeta': 'Image · {size}',
'fileViewer.sketchMeta': 'Sketch · {size}',
'fileViewer.reload': 'Reload',
'fileViewer.reloadDisk': 'Reload from disk',
'fileViewer.copy': 'Copy',
'fileViewer.copyTitle': 'Copy file contents',
'fileViewer.saveDisabled': 'Save (read-only viewer)',
'fileViewer.save': 'Save',
'fileViewer.preview': 'Preview',
'fileViewer.source': 'Source',
'fileViewer.tweaks': 'Tweaks',
'fileViewer.comment': 'Comment',
'fileViewer.edit': 'Edit',
'fileViewer.draw': 'Draw',
'fileViewer.zoomOut': 'Zoom out',
'fileViewer.zoomIn': 'Zoom in',
'fileViewer.resetZoom': 'Reset zoom',
'fileViewer.reloadAria': 'Reload',
'fileViewer.previousSlide': 'Previous slide',
'fileViewer.nextSlide': 'Next slide',
'fileViewer.slideNavAria': 'Slide navigation',
'fileViewer.present': 'Present',
'fileViewer.presentInTab': 'In this tab',
'fileViewer.presentFullscreen': 'Fullscreen',
'fileViewer.presentNewTab': 'New tab',
'fileViewer.exitPresentation': 'Exit presentation',
'fileViewer.shareLabel': 'Share',
'fileViewer.exportPdf': 'Export as PDF',
'fileViewer.exportPdfAllSlides': 'Export as PDF (all slides)',
'fileViewer.exportPptxBusy': 'Wait for the current turn to finish.',
'fileViewer.exportPptxHint':
'Send a request to the agent to convert this design to PPTX.',
'fileViewer.exportPptxNa': 'PPTX export is not available here.',
'fileViewer.exportZip': 'Download as .zip',
'fileViewer.exportHtml': 'Export as standalone HTML',
'fileViewer.saveAsTemplate': 'Save as template…',
'fileViewer.savingTemplate': 'Saving template…',
'fileViewer.savedTemplate': 'Saved as "{name}"',
'fileViewer.savedTemplateFail': 'Could not save template — try again.',
'fileViewer.templateNamePrompt': 'Template name',
'fileViewer.templateNameDefault': 'Untitled template',
'fileViewer.templateDescPrompt':
'Short description (optional — what makes this template useful?)',
'questionForm.submit': 'Submit',
'questionForm.skip': 'Skip',
'questionForm.locked': 'Answered',
'conv.switch': 'Switch conversation',
'conv.label': 'Conversation',
'conv.heading': 'Conversations',
'conv.new': '+ New',
'conv.empty': 'No conversations yet.',
'conv.untitled': 'Untitled conversation',
'conv.renameTooltip': 'Double-click to rename',
'conv.delete': 'Delete conversation',
'conv.deleteConfirm': 'Delete "{title}"? This removes its messages.',
'agentPicker.label': 'Agent',
'agentPicker.modeChoose': 'Choose execution mode',
'agentPicker.localCli': 'Local CLI',
'agentPicker.daemonOff': 'daemon off',
'agentPicker.byok': 'Anthropic API · BYOK',
'agentPicker.selectAgent': 'Select a detected code-agent CLI',
'agentPicker.noAgents': 'no agents on PATH',
'agentPicker.notInstalled': 'not installed',
'agentPicker.rescan': 'Re-scan local PATH for agents',
'tool.openInTab': 'Open {name} in a tab',
'tool.open': 'open',
'tool.todos': 'Todos',
'tool.write': 'Write',
'tool.edit': 'Edit',
'tool.read': 'Read',
'tool.bash': 'Bash',
'tool.glob': 'Glob',
'tool.grep': 'Grep',
'tool.fetch': 'Fetch',
'tool.search': 'Search',
'tool.lines': '{n} lines',
'tool.changeSingular': 'change',
'tool.changePlural': 'changes',
'tool.in': 'in {path}',
'tool.hide': 'hide',
'tool.output': 'output',
'tool.running': 'running…',
'tool.error': 'error',
'tool.done': 'done',
'assistant.role': 'Claude',
'assistant.workingLabel': 'Working',
'assistant.doneLabel': 'Done',
'assistant.outTokens': '{n} out',
'assistant.producedFiles': 'Files from this turn',
'assistant.openFile': 'Open',
'assistant.downloadFile': 'Download',
'assistant.thinking': 'Thinking',
'assistant.systemReminder': 'System reminder',
'assistant.waitingFirstOutput': 'Waiting for first output',
'assistant.statusBootingAgent': 'Booting agent',
'assistant.statusStarting': 'Starting',
'assistant.statusRequesting': 'Sending request',
'assistant.statusThinking': 'Thinking',
'assistant.statusStreaming': 'Streaming',
'assistant.slowHint':
'Taking longer than usual. The form usually shows in 510s — you can Stop and rephrase.',
'assistant.verbEditing': 'Editing',
'assistant.verbWriting': 'Writing',
'assistant.verbReading': 'Reading',
'assistant.verbSearching': 'Searching',
'assistant.verbRunning': 'Running',
'assistant.verbTodos': 'Todos',
'assistant.verbFetching': 'Fetching',
'assistant.verbCalling': 'Calling',
'qf.answered': 'answered',
'qf.choose': 'Choose…',
'qf.required': 'required',
'qf.lockedSubmitted':
'Answers sent — agent is using these for the rest of the session.',
'qf.lockedPrev': 'This form is from a previous turn.',
'qf.hint':
"Pick what fits. Skip optional fields you don't care about — the agent will use sensible defaults.",
'qf.submitDefault': 'Send answers',
'qf.submitDisabledTitle': 'Fill in the required fields first',
'qf.submitTitle': 'Send answers',
'qf.cardSelected': 'selected',
'qf.cardRefs': 'Refs:',
'qf.cardSampleText': 'The quick brown fox · 0123',
'sketch.toolSelect': 'Select (no-op)',
'sketch.toolPen': 'Pen',
'sketch.toolText': 'Text',
'sketch.toolRect': 'Rectangle',
'sketch.toolArrow': 'Arrow',
'sketch.toolEraser': 'Eraser',
'sketch.color': 'Color',
'sketch.strokeSize': 'Stroke size',
'sketch.undo': 'Undo',
'sketch.clear': 'Clear',
'sketch.close': 'Close',
'sketch.textPrompt': 'Text:',
};