mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
* fix(web): confirm before deleting saved template in New Project EntryShell and NewProjectModal were dropping the onDeleteTemplate prop, so the trash button in the template picker was inert; thread it through and gate it behind an alertdialog confirm. Fixes #2237 * fix(web/i18n): translate deleteTemplate keys across 18 locales The initial commit shipped English placeholders for the 4 new newproj.deleteTemplate* keys; replace with localized strings matching each locale's existing designs.deleteConfirm style. * fix(web): gate confirm-dialog backdrop on in-flight delete + style error message Backdrop now no-ops while `deleting` is true (matching the Cancel and Delete button gating), preventing a false-cancellation race where the backgrounded DELETE keeps running and leaks a stale `deleteError=true` into the next dialog open; also adds the missing `.modal-confirm-error` rule so the inline failure copy renders as a destructive state instead of default body styling.
1529 lines
87 KiB
TypeScript
1529 lines
87 KiB
TypeScript
import type { Dict } from '../types';
|
||
import { en } from './en';
|
||
|
||
export const de: Dict = {
|
||
...en,
|
||
'common.cancel': 'Abbrechen',
|
||
'common.save': 'Speichern',
|
||
'common.close': 'Schließen',
|
||
'common.delete': 'Löschen',
|
||
'common.rename': 'Umbenennen',
|
||
'common.edit': 'Bearbeiten',
|
||
'common.preview': 'Vorschau',
|
||
'common.share': 'Teilen',
|
||
'common.search': 'Suchen',
|
||
'common.searchEllipsis': 'Suchen…',
|
||
'common.loading': 'Wird geladen…',
|
||
'common.all': 'Alle',
|
||
'common.none': 'Keine',
|
||
'common.default': 'Standard',
|
||
'common.installed': 'installiert',
|
||
'common.notInstalled': 'nicht installiert',
|
||
'common.active': 'aktiv',
|
||
'common.offline': 'offline',
|
||
'common.selected': 'ausgewählt',
|
||
'common.create': 'Erstellen',
|
||
'common.openPreview': 'Vorschau öffnen',
|
||
'common.exitFullscreen': 'Vollbild verlassen',
|
||
'common.fullscreen': 'Vollbild',
|
||
'common.openInNewTab': 'In neuem Tab öffnen',
|
||
'common.exportPdf': 'Als PDF exportieren',
|
||
'common.exportZip': 'Als .zip herunterladen',
|
||
'common.exportHtml': 'Als eigenständiges HTML exportieren',
|
||
'common.justNow': 'gerade eben',
|
||
'common.minutesAgo': 'vor {n} Min.',
|
||
'common.hoursAgo': 'vor {n} Std.',
|
||
'common.daysAgo': 'vor {n} T.',
|
||
'common.weeksAgo': 'vor {n} Wo.',
|
||
'common.now': 'jetzt',
|
||
'common.minutesShort': '{n} Min.',
|
||
'common.hoursShort': '{n} Std.',
|
||
'common.daysShort': '{n} T.',
|
||
'common.untitled': 'Ohne Titel',
|
||
|
||
'app.brand': 'Open Design',
|
||
'app.brandPill': 'Forschungsvorschau',
|
||
'app.brandSubtitle': 'von Nexu Labs',
|
||
'app.welcomeLoading': 'Workspace wird geladen…',
|
||
|
||
'settings.welcomeKicker': "",
|
||
'settings.welcomeTitle': "Welcome",
|
||
'settings.welcomeSubtitle': "",
|
||
'settings.onboardingCreateTitle': 'Start from a brief',
|
||
'settings.onboardingCreateBody':
|
||
'Describe the site, app, deck, image, or video you want. Open Design will create a project and keep the work editable.',
|
||
'settings.onboardingMemoryTitle': 'Save working context',
|
||
'settings.onboardingMemoryBody':
|
||
'Add preferences, project facts, and recurring rules so future chats pick up the right context.',
|
||
'settings.onboardingSystemsTitle': 'Bring your design system',
|
||
'settings.onboardingSystemsBody':
|
||
'Pick or create a brand system so generated work follows real colors, typography, and product language.',
|
||
'settings.onboardingExecutionTitle': 'Choose how generation runs',
|
||
'settings.onboardingExecutionBody':
|
||
'Use a local CLI agent or connect your own API key. You can change this any time in Settings.',
|
||
'settings.onboardingStepConnect': "Connect",
|
||
'settings.onboardingStepDesignSystem': "Design system",
|
||
'settings.onboardingStepProfile': "About you",
|
||
'settings.onboardingConnectTitle': "Choose a runtime",
|
||
'settings.onboardingConnectBody': "",
|
||
'settings.onboardingRecommended': "Recommended",
|
||
'settings.onboardingLocalTitle': "Local coding agent",
|
||
'settings.onboardingLocalBody': "Use an installed CLI such as Claude Code, Codex, Cursor, Gemini, or OpenCode.",
|
||
'settings.onboardingLocalAction': "Open CLI settings",
|
||
'settings.onboardingCliScanHint': "This usually takes 5-10 seconds.",
|
||
'settings.onboardingByokTitle': "Bring your own key",
|
||
'settings.onboardingByokBody': "Use your own model provider credentials.",
|
||
'settings.onboardingByokAction': "Open BYOK settings",
|
||
'settings.onboardingDesignTitle': "Design system",
|
||
'settings.onboardingDesignBody': "Generate once, reuse everywhere.",
|
||
'settings.onboardingDesignIntroGenerateTitle': "Generate from existing work",
|
||
'settings.onboardingDesignIntroGenerateBody': "Upload your design system from GitHub or local code repositories, Figma files, images, and other content assets.",
|
||
'settings.onboardingDesignIntroReuseTitle': "Reuse in future work",
|
||
'settings.onboardingDesignIntroReuseBody': "Future prototypes, slides, and other content can reference your existing fonts, spacing, logo style, and color tone.",
|
||
'settings.onboardingDesignIntroSkipTitle': "Optional for now",
|
||
'settings.onboardingDesignIntroSkipBody': "Skip this step if you want to start without generating a design system.",
|
||
'settings.onboardingGithubTitle': "Import from GitHub",
|
||
'settings.onboardingGithubBody': "Use a frontend repository.",
|
||
'settings.onboardingUploadTitle': "Upload local files",
|
||
'settings.onboardingUploadBody': "Add project files, screenshots, CSS, docs, or assets.",
|
||
'settings.onboardingPromptTitle': "Generate from prompt",
|
||
'settings.onboardingPromptBody': "Describe the product or brand.",
|
||
'settings.onboardingProfileTitle': "About you",
|
||
'settings.onboardingProfileBody': "Optional details for better defaults.",
|
||
'settings.onboardingRoleLabel': "Your role",
|
||
'settings.onboardingOrgSizeLabel': "Organization size",
|
||
'settings.onboardingUseCaseLabel': "Use case",
|
||
'settings.onboardingSourceLabel': "Where did you hear about us?",
|
||
'settings.onboardingSelectPlaceholder': "Select one",
|
||
'settings.onboardingSelectMultiplePlaceholder': "Select one or more",
|
||
'settings.onboardingOrgSolo': "Solo / personal (1)",
|
||
'settings.onboardingOrgTeam': "Small team (2-10)",
|
||
'settings.onboardingOrgStartup': "Startup / SMB (11-50)",
|
||
'settings.onboardingOrgGrowth': "Growth company (51-200)",
|
||
'settings.onboardingOrgMidMarket': "Mid-market (201-1000)",
|
||
'settings.onboardingOrgEnterprise': "Enterprise (1000+)",
|
||
'settings.onboardingRolePm': "📋 Product manager",
|
||
'settings.onboardingRoleDesigner': "🎨 Designer",
|
||
'settings.onboardingRoleEngineer': "💻 Engineer",
|
||
'settings.onboardingRoleMarketing': "📣 Marketing",
|
||
'settings.onboardingRoleGrowth': "📈 Growth",
|
||
'settings.onboardingRoleOps': "⚙️ Operations",
|
||
'settings.onboardingRoleFounder': "🚀 Founder / executive",
|
||
'settings.onboardingRoleStudent': "🎓 Student / educator",
|
||
'settings.onboardingRoleOther': "✨ Other",
|
||
'settings.onboardingUseProduct': "🎨 Product design",
|
||
'settings.onboardingUseDesignSystem': "🧩 Design system",
|
||
'settings.onboardingUsePrototype': "📱 Prototype / app UI",
|
||
'settings.onboardingUseLanding': "🌐 Landing pages",
|
||
'settings.onboardingUseAds': "📣 Ads / social content",
|
||
'settings.onboardingUseDashboard': "📊 Dashboards / internal tools",
|
||
'settings.onboardingUseDeck': "🖥️ Presentation / deck",
|
||
'settings.onboardingUseMarketing': "📈 Marketing / growth",
|
||
'settings.onboardingUseEngineering': "🤝 Engineering handoff",
|
||
'settings.onboardingUseAgency': "💼 Agency / client work",
|
||
'settings.onboardingSourceGithub': "🐙 GitHub",
|
||
'settings.onboardingSourceFriend': "👥 Friend or coworker",
|
||
'settings.onboardingSourceSocial': "📱 Social media",
|
||
'settings.onboardingSourceProductHunt': "🅿️ Product Hunt",
|
||
'settings.onboardingSourceCommunity': "💬 Design / AI community",
|
||
'settings.onboardingSourceYoutube': "▶️ YouTube",
|
||
'settings.onboardingSourceBlog': "📰 Blog or newsletter",
|
||
'settings.onboardingSourceAiTool': "✨ AI tool recommendation",
|
||
'settings.onboardingSourceSearch': "🔍 Search",
|
||
'settings.onboardingSourceEvent': "🎤 Event or community",
|
||
'settings.onboardingBack': "Back",
|
||
'settings.onboardingContinue': "Continue",
|
||
'settings.onboardingFinish': "Finish setup",
|
||
'settings.onboardingSkip': "Skip for now",
|
||
'settings.kicker': 'Einstellungen',
|
||
'settings.title': 'Ausführungsmodus',
|
||
'settings.subtitle': 'Wählen Sie zwischen lokaler CLI und BYOK. Ihr API-Schlüssel wird nur in diesem Browser gespeichert.',
|
||
'settings.modeAria': 'Ausführungsmodus',
|
||
'settings.protocolAria': 'API-Protokoll',
|
||
'settings.modeDaemon': 'Lokale CLI',
|
||
'settings.modeDaemonHelp': 'Über eine Code-Agent-CLI auf Ihrem Rechner ausführen',
|
||
'settings.modeDaemonOffline': 'Daemon läuft nicht',
|
||
'settings.modeDaemonOfflineMeta': 'Daemon offline',
|
||
'settings.modeDaemonInstalledMeta': '{count} installiert',
|
||
'settings.modeApi': 'API-Anbieter',
|
||
'settings.modeApiMeta': 'BYOK',
|
||
'settings.codeAgent': 'Code-Agent',
|
||
'settings.codeAgentHint':
|
||
'Durch Scannen Ihres PATH erkannt. Wählen Sie die CLI, über die Generierungen laufen sollen.',
|
||
'settings.rescan': '↻ Neu scannen',
|
||
'settings.rescanTitle': 'PATH erneut scannen',
|
||
'settings.rescanRunning': 'Scannen...',
|
||
'settings.rescanSuccess': 'Scan abgeschlossen. {count} verfuegbar.',
|
||
'settings.rescanFailed': 'Scan fehlgeschlagen. Pruefen Sie den Daemon und versuchen Sie es erneut.',
|
||
'settings.test': 'Test',
|
||
'settings.testTitle': 'Sende einen winzigen Testprompt, um die Verbindung zu pruefen',
|
||
'settings.testRunning': 'Verbindung wird geprueft…',
|
||
'settings.testCancel': 'Abbrechen',
|
||
'settings.testSuccessApi': 'Verbunden. Antwort in {ms} ms — \'{sample}\'',
|
||
'settings.testSuccessCli': '{agentName} antwortete in {ms} ms — \'{sample}\'',
|
||
'settings.testAuthFailed': 'Authentifizierung fehlgeschlagen. Pruefen Sie Ihren API-Schluessel.',
|
||
'settings.testForbidden': 'Zugriff verweigert. Pruefen Sie Konto, Region oder Organisation.',
|
||
'settings.testNotFoundModel': 'Modell \'{model}\' an diesem Endpunkt nicht gefunden.',
|
||
'settings.testInvalidModelId': 'Modell-ID \'{model}\' ist ungueltig. Benutzerdefinierte IDs muessen mit einem Buchstaben oder einer Zahl beginnen und duerfen keine Leerzeichen enthalten.',
|
||
'settings.testInvalidBaseUrl': 'Base URL ist ungueltig oder nicht erreichbar.',
|
||
'settings.testRateLimited': 'Anbieter hat den Test ratenbegrenzt. Konfiguration sieht gueltig aus.',
|
||
'settings.testUpstream': 'Anbieter antwortete mit {status}. Versuchen Sie es gleich erneut.',
|
||
'settings.testTimeout': 'Test abgebrochen nach {ms} ms.',
|
||
'settings.testAgentMissing': '{agentName} ist nicht installiert oder nicht im PATH.',
|
||
'settings.testAgentSpawn': '{agentName} konnte nicht gestartet werden: {detail}.',
|
||
'settings.testUnknown': 'Test fehlgeschlagen: {detail}',
|
||
'settings.agentInstall.install': 'Installieren',
|
||
'settings.agentInstall.docs': 'Doku',
|
||
'settings.agentInstall.pathHint':
|
||
'Wenn Sie eine CLI mit npm oder Homebrew installiert haben und sie weiterhin als nicht installiert angezeigt wird, stellen Sie sicher, dass das Bin-Verzeichnis der CLI im PATH enthalten ist, den der Open-Design-Daemon erbt (Terminal und GUI-Apps koennen sich unter macOS unterscheiden). Siehe QUICKSTART.md (Abschnitt "Local agent CLI and PATH").',
|
||
'settings.agentInstall.stepOpenLinks': 'Oeffnen Sie Installieren oder Doku fuer den gewuenschten Agenten.',
|
||
'settings.agentInstall.stepAuth':
|
||
'Authentifizieren Sie sich mit der Anbieter-CLI (anmelden oder API-Zugangsdaten setzen), bevor Sie zu Open Design zurueckkehren.',
|
||
'settings.agentInstall.stepRescan': 'Klicken Sie in diesem Bereich auf Neu scannen.',
|
||
'settings.agentInstall.stepSelect': 'Waehlen Sie die Agent-Karte aus, sobald sie als installiert angezeigt wird.',
|
||
'settings.noAgentsDetected':
|
||
'Noch keine Agents erkannt. Installieren Sie Claude Code, Codex, Devin for Terminal, Gemini CLI, OpenCode, Cursor Agent, Qwen oder GitHub Copilot CLI und klicken Sie dann auf Neu scannen.',
|
||
'settings.agentAuthRequired': 'Authentifizierung erforderlich',
|
||
'settings.agentAuthUnknown': 'Authentifizierungsstatus unbekannt',
|
||
'settings.apiSection': 'Anthropic API',
|
||
'settings.quickFillProvider': 'Anbieter schnell ausfüllen',
|
||
'settings.customProvider': 'Benutzerdefinierter Anbieter',
|
||
'settings.apiKey': 'API-Key',
|
||
'settings.showKey': 'Key anzeigen',
|
||
'settings.hideKey': 'Key ausblenden',
|
||
'settings.show': 'Anzeigen',
|
||
'settings.hide': 'Ausblenden',
|
||
'settings.model': 'Modell',
|
||
'settings.suggestedModelsHint':
|
||
'Dies sind vorgeschlagene Modelle für dieses Protokoll. Ihr Anbieter kann andere Modelle unterstützen.',
|
||
'settings.baseUrl': 'Base URL',
|
||
'settings.baseUrlInvalid': 'Geben Sie eine gültige öffentliche http://- oder https://-URL ein. Localhost ist erlaubt; private Netzwerk-IPs werden blockiert.',
|
||
'settings.azureDeploymentModel': 'Deployment-Name',
|
||
'settings.azureDeploymentModelHint':
|
||
'Fuer Azure OpenAI wird dieses Feld als Deployment-Name in /openai/deployments/<model> verwendet. Geben Sie den in Azure angelegten Deployment-Namen ein.',
|
||
'settings.apiVersion': 'API-Version',
|
||
'settings.byokImageModel': 'Bilderzeugungsmodell',
|
||
'settings.maxTokens': 'Max. Tokens (optional)',
|
||
'settings.maxTokensHint':
|
||
'Obergrenze für die Antwortlänge. Jedes Modell hat einen abgestimmten Standardwert (im Platzhalter sichtbar); leer lassen, um ihn zu verwenden, oder eine Zahl eingeben, um ihn zu überschreiben.',
|
||
'settings.apiHint': 'Anfragen werden über den lokalen Daemon-Proxy an die festgelegte Base URL gesendet. Der Schlüssel wird nur in diesem Browser gespeichert und mit Provider-Anfragen gesendet.',
|
||
'settings.skipForNow': 'Vorerst überspringen',
|
||
'settings.getStarted': 'Loslegen',
|
||
'settings.envConfigure': 'Ausführungsmodus',
|
||
'settings.localCli': 'Lokale CLI',
|
||
'settings.anthropicApi': 'Anthropic API',
|
||
'settings.noAgentSelected': 'kein Agent ausgewählt',
|
||
'settings.language': 'Sprache',
|
||
'settings.languageHint': 'Wechseln Sie die Sprache der Oberfläche. Wird in diesem Browser gespeichert.',
|
||
'settings.appearance': 'Erscheinungsbild',
|
||
'settings.appearanceHint': 'Hell, dunkel oder Systemeinstellung übernehmen.',
|
||
'settings.themeSystem': 'System',
|
||
'settings.themeLight': 'Hell',
|
||
'settings.themeDark': 'Dunkel',
|
||
'settings.agentModelHead': 'Modell für:',
|
||
'settings.modelPicker': 'Modell',
|
||
'settings.modelSourceLive': 'Live from CLI',
|
||
'settings.modelSourceFallback': 'Fallback list',
|
||
'settings.reasoningPicker': 'Reasoning-Aufwand',
|
||
'settings.modelPickerHint':
|
||
'Wird aus der CLI geladen, wenn sie einen `models`-Befehl anbietet. „Standard“ überlässt die Auswahl der CLI-Konfiguration; mit „Benutzerdefiniert…“ können Sie jede von der CLI akzeptierte Modell-ID eingeben.',
|
||
'settings.modelPickerLiveHint':
|
||
'Models were refreshed from the installed CLI. Default still uses the CLI config.',
|
||
'settings.modelPickerFallbackHint':
|
||
'Using Open Design fallback models because the installed CLI did not return live model metadata. Rescan after updating or logging in to the CLI.',
|
||
'settings.cliEnvTitle': 'CLI config locations',
|
||
'settings.cliEnvHint':
|
||
'Set non-secret config directories for packaged app runs and agent detection.',
|
||
'settings.cliEnvClaudeConfigDir': 'Claude Code config directory',
|
||
'settings.cliEnvClaudeBaseUrl': 'Claude proxy base URL',
|
||
'settings.cliEnvClaudeApiKey': 'Claude proxy API key',
|
||
'settings.cliEnvCodexHome': 'Codex home',
|
||
'settings.cliEnvCodexBin': 'Codex executable path',
|
||
'settings.cliEnvCodexBaseUrl': 'Codex/OpenAI proxy base URL',
|
||
'settings.cliEnvCodexApiKey': 'Codex/OpenAI proxy API key',
|
||
'settings.modelCustom': 'Benutzerdefiniert (unten eingeben)…',
|
||
'settings.modelCustomLabel': 'Benutzerdefinierte Modell-ID',
|
||
'settings.modelCustomPlaceholder': 'z. B. anthropic/claude-sonnet-4-6',
|
||
'settings.mediaProviders': 'Medienanbieter',
|
||
'settings.mediaProvidersHint':
|
||
'API-Keys für Bild-, Video- und Audiogenerierung. Lokal gespeichert und mit dem lokalen Daemon synchronisiert.',
|
||
'settings.mcpServerTitle': 'MCP-Server',
|
||
'settings.mcpServerHint': 'Stelle Open Design als MCP-Server für deinen Coding-Agent bereit.',
|
||
'settings.externalMcpTitle': 'Externes MCP',
|
||
'settings.externalMcpHint': 'MCP-Tools aus externen Diensten hinzufügen (Higgsfield, GitHub, …).',
|
||
'settings.mediaProviderApiKey': 'API-Key',
|
||
'settings.mediaProviderBaseUrl': 'Base URL',
|
||
'settings.mediaProviderConfigured': 'Konfiguriert',
|
||
'settings.mediaProviderUnset': 'Nicht gesetzt',
|
||
'settings.mediaProviderClear': 'Leeren',
|
||
'settings.mediaProviderClearConfirm': 'Gespeicherte {name}-Einstellungen löschen? Du musst sie erneut eingeben, um {name} zu nutzen.',
|
||
'settings.mediaProviderPlaceholder': 'API-Key einfügen',
|
||
'settings.mediaProviderBaseUrlPlaceholder': 'Standard-Base-URL überschreiben',
|
||
'settings.mediaProviderReload': 'Vom lokalen Daemon neu laden',
|
||
'settings.mediaProviderReloadError': 'Die Einstellungen der Medienanbieter konnten nicht vom lokalen Daemon neu geladen werden.',
|
||
'settings.mediaProviderReloadSuccess': 'Die Einstellungen der Medienanbieter wurden vom lokalen Daemon neu geladen.',
|
||
'settings.mediaProviderLoadError': 'Die Einstellungen der Medienanbieter konnten nicht vom lokalen Daemon geladen werden. Vorerst werden die im Browser gespeicherten Einstellungen verwendet.',
|
||
'settings.privacy': 'Privacy',
|
||
'settings.privacyHint': 'What data is shared with the Open Design team',
|
||
'settings.privacyConsentKicker': 'Help us improve Open Design',
|
||
'settings.privacyConsentLead': 'Open Design can share usage data with our team to help us improve. This includes:',
|
||
'settings.privacyConsentFooter': 'You can change either of these any time in Settings → Privacy. We never upload the contents of your generated artifact files.',
|
||
'settings.privacyConsentShare': 'Share usage data',
|
||
'settings.privacyConsentDecline': "Don't share",
|
||
'settings.privacyConsentAccept': 'I get it',
|
||
'settings.privacyConsentBannerFooter':
|
||
'Data sharing is on by default. You can turn it off any time in Settings → Privacy. We never upload the contents of your generated artifact files.',
|
||
'settings.privacyConsentPolicyLink': 'Read the privacy policy',
|
||
'settings.privacyMetrics': 'Anonymous metrics',
|
||
'settings.privacyMetricsHint': 'Run counts, token usage, error rate, duration. No prompts, no project data.',
|
||
'settings.privacyContent': 'Conversation content',
|
||
'settings.privacyContentHint': "Your prompts and the assistant's responses (truncated 8 KB / 16 KB). API keys, tokens, JWTs, emails, IPs, and credit-card numbers are stripped automatically before send.",
|
||
'settings.privacyArtifacts': 'Project artifacts manifest',
|
||
'settings.privacyArtifactsHint': 'Filenames, types, sizes of generated files. File contents are never sent.',
|
||
'settings.privacyInstallationId': 'Anonymous ID',
|
||
'settings.privacyOptedOut': 'opted out',
|
||
'settings.privacyDataDeletion': 'Delete my data',
|
||
'settings.privacyDataDeletionHint': 'Rotates your anonymous ID and stops sending. Existing traces age out under our retention policy.',
|
||
'settings.about': 'Info',
|
||
'settings.aboutHint': 'Version und Laufzeitdetails',
|
||
'settings.appVersion': 'Version',
|
||
'settings.appChannel': 'Kanal',
|
||
'settings.appRuntime': 'Laufzeit',
|
||
'settings.appPlatform': 'Plattform',
|
||
'settings.appArchitecture': 'Architektur',
|
||
'settings.runtimePackaged': 'Paketierte App',
|
||
'settings.runtimeDevelopment': 'Entwicklung',
|
||
'settings.versionUnavailable': 'Versionsdetails sind nicht verfügbar, solange der Daemon offline ist.',
|
||
'settings.installLatest': 'Neueste Version installieren',
|
||
'settings.alreadyLatest': 'Sie verwenden die neueste Version',
|
||
|
||
'entry.tabDesigns': 'Designs',
|
||
'entry.tabTemplates': 'Vorlagen',
|
||
'entry.tabDesignSystems': 'Designsysteme',
|
||
'entry.openSettingsTitle': 'Einstellungen',
|
||
'entry.openSettingsAria': 'Einstellungen öffnen',
|
||
'entry.resizeAria': 'Seitenleiste skalieren',
|
||
'entry.loadingWorkspace': 'Workspace wird geladen…',
|
||
'entry.useEverywhereTitle': 'Überall verwenden',
|
||
'entry.useEverywhereAria': 'Anleitung „Überall verwenden“ öffnen (CLI, MCP, HTTP, Skills)',
|
||
'entry.navNewProject': 'Neues Projekt',
|
||
'entry.navHome': 'Start',
|
||
'entry.navProjects': 'Projekte',
|
||
'entry.navDesignSystems': 'Design-Systeme',
|
||
'entry.helpAria': 'Hilfe',
|
||
'entry.helpMenuAria': 'Hilfemenü',
|
||
'entry.helpGetHelp': 'Hilfe auf GitHub',
|
||
'entry.helpSubmitFeature': 'Feature vorschlagen',
|
||
'entry.helpWhatsNew': 'Neuigkeiten',
|
||
'entry.helpDownloadDesktop': 'Desktop-App herunterladen',
|
||
'entry.githubStarLabel': 'Star',
|
||
'entry.githubStarTitle': 'Klicken, um uns auf GitHub einen Stern zu geben',
|
||
'entry.githubStarAria': 'Open Design auf GitHub einen Stern geben',
|
||
'entry.tabImageTemplates': 'Bildvorlagen',
|
||
'entry.tabVideoTemplates': 'Videovorlagen',
|
||
'promptTemplates.searchPlaceholder': 'Templates suchen…',
|
||
'promptTemplates.countLabel': '{n} Ergebnisse',
|
||
'promptTemplates.emptyImage': 'Noch keine Bild-Prompt-Templates installiert.',
|
||
'promptTemplates.emptyVideo': 'Noch keine Video-Prompt-Templates installiert.',
|
||
'promptTemplates.emptyNoMatch': 'Keine Templates passen zu Ihrer Suche.',
|
||
'promptTemplates.attributionFooter': 'Aus öffentlichen Prompt-Bibliotheken adaptiert. Jede Karte verlinkt zum ursprünglichen Autor.',
|
||
'promptTemplates.openPreviewTitle': 'Prompt und Vorschau öffnen',
|
||
'promptTemplates.sourcePrefix': 'Quelle:',
|
||
'promptTemplates.fetchError': 'Dieser Template-Inhalt konnte nicht geladen werden.',
|
||
'promptTemplates.promptLabel': 'Prompt-Text',
|
||
'promptTemplates.copyPrompt': 'Prompt kopieren',
|
||
'promptTemplates.copyDone': 'Kopiert!',
|
||
'promptTemplates.modelHint': 'Vorgeschlagenes Modell: {model}',
|
||
'promptTemplates.openSource': 'Original anzeigen',
|
||
'promptTemplates.openFullscreen': 'Vollbildvorschau öffnen',
|
||
'promptTemplates.closeFullscreen': 'Vollbildvorschau schließen',
|
||
'promptTemplates.allSources': 'Alle Quellen',
|
||
'promptTemplates.sourceFilterAria': 'Nach Quelle filtern',
|
||
'promptTemplates.retry': 'Erneut versuchen',
|
||
|
||
'newproj.tabPrototype': 'Prototyp',
|
||
'newproj.tabDeck': 'Slide Deck',
|
||
'newproj.tabTemplate': 'Aus Template',
|
||
'newproj.tabMedia': 'Medien',
|
||
'newproj.tabOther': 'Andere',
|
||
'newproj.titlePrototype': 'Neuer Prototyp',
|
||
'newproj.titleDeck': 'Neues Slide Deck',
|
||
'newproj.titleTemplate': 'Mit Template starten',
|
||
'newproj.titleImage': 'Neues Bild',
|
||
'newproj.titleVideo': 'Neues Video',
|
||
'newproj.titleAudio': 'Neues Audio',
|
||
'newproj.titleMedia': 'Neue Medien',
|
||
'newproj.titleOther': 'Neues Projekt',
|
||
'newproj.namePlaceholder': 'Projektname',
|
||
'newproj.fidelityLabel': 'Detailgrad',
|
||
'newproj.fidelityWireframe': 'Wireframe',
|
||
'newproj.fidelityHigh': 'High Fidelity',
|
||
'newproj.toggleSpeakerNotes': 'Sprechernotizen verwenden',
|
||
'newproj.toggleSpeakerNotesHint': 'Weniger Text auf Slides — Gesprächspunkte in Notizen halten.',
|
||
'newproj.toggleAnimations': 'Animationen einbeziehen',
|
||
'newproj.toggleAnimationsHint':
|
||
'Bewegung (Einstiege, Hover, Übergänge) zusätzlich zum Template hinzufügen.',
|
||
'newproj.templateLabel': 'Template',
|
||
'newproj.noTemplatesTitle': 'Noch keine Templates',
|
||
'newproj.noTemplatesBody':
|
||
'Öffnen Sie ein Projekt und nutzen Sie dann das Teilen-Menü im File Viewer, um es in ein Template umzuwandeln. Templates erscheinen hier.',
|
||
'newproj.savedTemplate': 'Gespeichertes Template',
|
||
'newproj.fileSingular': 'Datei',
|
||
'newproj.filePlural': 'Dateien',
|
||
'newproj.create': 'Erstellen',
|
||
'newproj.createFromTemplate': 'Aus Template erstellen',
|
||
'newproj.createDisabledTitle':
|
||
'Speichern Sie zuerst ein Projekt als Template (Teilen-Menü in einem beliebigen Projekt).',
|
||
'newproj.importClaudeZip': 'Claude Design ZIP importieren',
|
||
'newproj.importClaudeZipTitle': 'Einen Claude Design .zip-Export importieren',
|
||
'newproj.importingClaudeZip': 'Import läuft…',
|
||
'newproj.privacyFooter': 'Standardmäßig können nur Sie Ihr Projekt sehen.',
|
||
'newproj.designSystem': 'Designsystem',
|
||
'newproj.dsNoneFreeform': 'Keines — frei',
|
||
'newproj.dsNoneSubtitleEmpty': 'Keine System-Tokens, eigene Palette wählen',
|
||
'newproj.dsNoneSubtitleSelected': 'System-Tokens überspringen. Der Agent wählt eine eigene Palette.',
|
||
'newproj.dsCategoryFallback': 'Designsystem',
|
||
'newproj.dsSearch': 'Designsysteme suchen…',
|
||
'newproj.dsModeAria': 'Auswahlmodus',
|
||
'newproj.dsModeSingle': 'Einzeln',
|
||
'newproj.dsModeMulti': 'Mehrfach',
|
||
'newproj.dsNoneTitle': 'Keines — frei',
|
||
'newproj.dsNoneSub': 'System-Tokens überspringen. Der Agent wählt eine eigene Palette.',
|
||
'newproj.dsEmpty': 'Keine Designsysteme passen zu „{query}“.',
|
||
'newproj.dsFootSingular': 'dient nur als Inspiration.',
|
||
'newproj.dsFootPlural': 'dienen nur als Inspiration.',
|
||
'newproj.dsFootClear': 'Leeren',
|
||
'newproj.dsBadgeDefault': 'STANDARD',
|
||
'newproj.dsPrimaryFallback': 'Primär',
|
||
'newproj.surfaceImage': 'Bild',
|
||
'newproj.surfaceVideo': 'Video',
|
||
'newproj.surfaceAudio': 'Audio',
|
||
'newproj.modelLabel': 'Modell',
|
||
'newproj.modelSearch': 'Modelle suchen…',
|
||
'newproj.modelEmpty': 'Keine passenden Modelle.',
|
||
'newproj.modelRecommended': 'Empfohlen',
|
||
'newproj.modelMissingTitle': 'Modell auswählen',
|
||
'newproj.modelMissingSub': 'Wähle ein Modell für diese Oberfläche.',
|
||
'newproj.aspectLabel': 'Format',
|
||
'newproj.videoLengthLabel': 'Länge',
|
||
'newproj.videoLengthSeconds': '{n}s',
|
||
'newproj.audioKindLabel': 'Audiotyp',
|
||
'newproj.audioKindMusic': 'Musik',
|
||
'newproj.audioKindSpeech': 'Sprache / TTS',
|
||
'newproj.audioKindSfx': 'SFX',
|
||
'newproj.audioDurationLabel': 'Dauer',
|
||
'newproj.audioDurationSeconds': '{n}s',
|
||
'newproj.voiceLabel': 'Stimme',
|
||
'newproj.voicePlaceholder': 'Provider-Voice-ID, optional',
|
||
'newproj.promptTemplateLabel': 'Referenzvorlage',
|
||
'newproj.promptTemplateNoneTitle': 'Keine — eigene schreiben',
|
||
'newproj.promptTemplateNoneSub': 'Galerie überspringen und eigenes Briefing verfassen',
|
||
'newproj.promptTemplateRefSub': 'Referenzvorlage',
|
||
'newproj.promptTemplateSearch': 'Vorlagen suchen…',
|
||
'newproj.promptTemplateEmpty': 'Für dieses Format sind noch keine Vorlagen installiert.',
|
||
'newproj.promptTemplateBodyLabel': 'Prompt (kann angepasst werden)',
|
||
'newproj.promptTemplateOptimizeHint':
|
||
'Beliebig editierbar — deine Änderungen fließen in das Agenten-Briefing ein.',
|
||
'newproj.promptTemplateBodyEmpty':
|
||
'Leerer Body — der Agent erhält keine Vorlagenreferenz.',
|
||
'newproj.deleteTemplateTitle': 'Template löschen',
|
||
'newproj.deleteTemplateConfirm': '„{name}" löschen? Dies kann nicht rückgängig gemacht werden.',
|
||
'newproj.deleteTemplateConfirmCta': 'Template löschen',
|
||
'newproj.deleteTemplateError':
|
||
'Dieses Template konnte nicht gelöscht werden. Bitte erneut versuchen.',
|
||
|
||
'designs.subRecent': 'Aktuell',
|
||
'designs.subYours': 'Ihre Designs',
|
||
'designs.filterAria': 'Projekte filtern',
|
||
'designs.searchPlaceholder': 'Suchen…',
|
||
'designs.emptyNoProjects': 'Noch keine Projekte. Erstellen Sie links eines.',
|
||
'designs.emptyNoMatch': 'Keine Projekte passen zu Ihrer Suche.',
|
||
'designs.deleteTitle': 'Projekt löschen',
|
||
'designs.deleteConfirm': '„{name}“ löschen?',
|
||
'designs.cardFreeform': 'frei',
|
||
'designs.status.notStarted': 'Nicht gestartet',
|
||
'designs.status.queued': 'In Warteschlange',
|
||
'designs.status.running': 'Läuft',
|
||
'designs.status.awaitingInput': 'Eingabe nötig',
|
||
'designs.status.succeeded': 'Abgeschlossen',
|
||
'designs.status.failed': 'Fehlgeschlagen',
|
||
'designs.status.canceled': 'Abgebrochen',
|
||
'designs.viewToggleAria': 'Ansichtsmodus',
|
||
'designs.viewGrid': 'Rasteransicht',
|
||
'designs.viewKanban': 'Board-Ansicht',
|
||
'designs.kanbanEmptyColumn': 'Keine Designs',
|
||
'designs.deleteAria': 'Projekt {name} löschen',
|
||
'designs.menuMore': 'More actions',
|
||
'designs.menuRename': 'Rename',
|
||
'designs.menuDelete': 'Delete',
|
||
'designs.renamePrompt': 'New name for "{name}"',
|
||
'designs.selectMode': 'Select',
|
||
'designs.cancelSelect': 'Cancel',
|
||
'designs.deleteSelected': 'Delete selected',
|
||
'designs.selectedCount': '{n} selected',
|
||
'designs.deleteSelectedConfirm': 'Delete {n} project(s)?',
|
||
'designs.tagPrototype': 'Prototype',
|
||
'designs.tagLiveArtifact': 'Live Artifact',
|
||
'designs.tagSlide': 'Slide',
|
||
'designs.tagMedia': 'Media',
|
||
'designs.renameTitle': 'Rename project',
|
||
'designs.renameSave': 'OK',
|
||
'designs.renameCancel': 'Cancel',
|
||
|
||
'examples.typeLabel': 'Typ',
|
||
'examples.surfaceLabel': 'Oberfläche',
|
||
'examples.surfaceWeb': 'Web',
|
||
'examples.surfaceImage': 'Bild',
|
||
'examples.surfaceVideo': 'Video',
|
||
'examples.surfaceAudio': 'Audio',
|
||
'examples.scenarioLabel': 'Szenario',
|
||
'examples.modeAll': 'Alle',
|
||
'examples.modePrototypeDesktop': 'Prototypen · Desktop',
|
||
'examples.modePrototypeMobile': 'Prototypen · Mobil',
|
||
'examples.modeDeck': 'Folien',
|
||
'examples.modeDocument': 'Dokumente & Templates',
|
||
'examples.modeOrbit': 'Orbit',
|
||
'examples.modeLive': 'Live',
|
||
'examples.scenarioGeneral': 'Allgemein',
|
||
'examples.scenarioEngineering': 'Engineering',
|
||
'examples.scenarioProduct': 'Produkt',
|
||
'examples.scenarioDesign': 'Design',
|
||
'examples.scenarioMarketing': 'Marketing',
|
||
'examples.scenarioSales': 'Vertrieb',
|
||
'examples.scenarioFinance': 'Finanzen',
|
||
'examples.scenarioHr': 'Personal',
|
||
'examples.scenarioOperations': 'Betrieb',
|
||
'examples.scenarioSupport': 'Support',
|
||
'examples.scenarioLegal': 'Recht',
|
||
'examples.scenarioEducation': 'Bildung',
|
||
'examples.scenarioPersonal': 'Persönlich',
|
||
'examples.emptyNoSkills': 'Keine Skills verfügbar. Läuft der Daemon?',
|
||
'examples.searchPlaceholder': 'Beispiele suchen…',
|
||
'examples.searchAria': 'Beispiele nach Namen suchen',
|
||
'examples.emptyNoMatch': 'Keine Beispiele passen zu diesen Filtern.',
|
||
'examples.openPreview': '⤢ Vorschau öffnen',
|
||
'examples.loadingPreview': 'Vorschau wird geladen…',
|
||
'examples.hoverPreview': 'Für Vorschau hovern',
|
||
'examples.usePrompt': 'Diesen Prompt verwenden',
|
||
'examples.previewModalTitle': 'Vollständige Vorschau öffnen (Modal)',
|
||
'examples.shareTitle': 'Dieses Beispiel teilen',
|
||
'examples.shareLoadFirst': 'Zuerst hovern, um die Vorschau zu laden',
|
||
'examples.unavailablePlaceholder': 'Keine mitgelieferte {kind}-Vorschau — öffnen für mehr Infos',
|
||
'examples.shareUnavailable': 'Keine mitgelieferte {kind}-Vorschau zum Teilen',
|
||
'examples.shareMenu': 'Teilen ▾',
|
||
'examples.exportPdfAllSlides': 'Als PDF exportieren (alle Slides)',
|
||
'examples.exportPptxLocked': 'Als PPTX exportieren… (zuerst Template öffnen)',
|
||
'examples.tagSlideDeck': 'Foliendeck',
|
||
'examples.tagTemplate': 'Template',
|
||
'examples.tagDesignSystem': 'Designsystem',
|
||
'examples.tagMobilePrototype': 'Mobiler Prototyp',
|
||
'examples.tagDesktopPrototype': 'Desktop-Prototyp',
|
||
'examples.tagImage': 'Bild',
|
||
'examples.tagVideo': 'Video',
|
||
'examples.tagAudio': 'Audio',
|
||
'examples.previewLabel': 'Vorschau',
|
||
|
||
'ds.surfaceLabel': 'Oberfläche',
|
||
'ds.surfaceWeb': 'Web',
|
||
'ds.surfaceImage': 'Bild',
|
||
'ds.surfaceVideo': 'Video',
|
||
'ds.surfaceAudio': 'Audio',
|
||
'ds.searchPlaceholder': 'Designsysteme suchen…',
|
||
'ds.emptyNoMatch': 'Keine Designsysteme passen zu Ihrer Suche.',
|
||
'ds.badgeDefault': 'STANDARD',
|
||
'ds.preview': 'Vorschau',
|
||
'ds.previewTitle': 'Designsystem-Vorschau',
|
||
'ds.categoryAll': 'Alle',
|
||
'ds.categoryUncategorized': 'Nicht kategorisiert',
|
||
'ds.showcase': 'Showcase',
|
||
'ds.tokens': 'Tokens',
|
||
'ds.specToggle': 'DESIGN.md',
|
||
'ds.specLoading': 'DESIGN.md wird geladen…',
|
||
|
||
'avatar.title': 'Konto & Einstellungen',
|
||
'avatar.localCli': 'Lokale CLI',
|
||
'avatar.anthropicApi': 'Anthropic API',
|
||
'avatar.useLocal': 'Lokale CLI verwenden',
|
||
'avatar.useApi': 'API · BYOK verwenden',
|
||
'avatar.codeAgent': 'Code-Agent',
|
||
'avatar.rescan': 'PATH neu scannen',
|
||
'avatar.settings': 'Einstellungen',
|
||
'avatar.backToProjects': 'Zurück zu Projekten',
|
||
'avatar.metaActive': 'aktiv',
|
||
'avatar.metaOffline': 'offline',
|
||
'avatar.metaSelected': 'ausgewählt',
|
||
'avatar.noAgentSelected': 'kein Agent ausgewählt',
|
||
'avatar.modelSection': 'Modell',
|
||
'avatar.modelLabel': 'Modell',
|
||
'avatar.reasoningLabel': 'Reasoning',
|
||
'avatar.customSuffix': '(benutzerdefiniert)',
|
||
|
||
'inlineSwitcher.chipTitle': 'CLI / Modell wechseln',
|
||
'inlineSwitcher.chipCli': 'Lokales CLI',
|
||
'inlineSwitcher.chipByok': 'BYOK',
|
||
'inlineSwitcher.modelDefault': 'Standard',
|
||
'inlineSwitcher.noAgent': 'kein Agent',
|
||
'inlineSwitcher.modeLabel': 'Modus',
|
||
'inlineSwitcher.agentLabel': 'Agent',
|
||
'inlineSwitcher.providerLabel': 'Anbieter',
|
||
'inlineSwitcher.modelLabel': 'Modell',
|
||
'inlineSwitcher.useCli': 'Lokales CLI verwenden',
|
||
'inlineSwitcher.useByok': 'Eigenen API-Schlüssel verwenden',
|
||
'inlineSwitcher.daemonOffline': 'Daemon offline — Einstellungen öffnen',
|
||
'inlineSwitcher.noAgentsDetected': 'Kein CLI im PATH gefunden',
|
||
'inlineSwitcher.openSettingsForModel': 'Anbieter in den Einstellungen konfigurieren',
|
||
'inlineSwitcher.missingApiKey': 'API-Schlüssel fehlt — in den Einstellungen ergänzen.',
|
||
'inlineSwitcher.openFullSettings': 'Ausführungseinstellungen öffnen',
|
||
'inlineSwitcher.customSuffix': '(benutzerdefiniert)',
|
||
|
||
'project.backToProjects': 'Zurück zu Projekten',
|
||
'project.metaFreeform': 'frei',
|
||
'project.resizeChatPanel': 'Größe des Chat-Bereichs ändern',
|
||
'project.instructionsActive': 'Aktiv – in jeder Nachricht enthalten',
|
||
'chat.tabChat': 'Chat',
|
||
'chat.tabComments': 'Kommentare',
|
||
'chat.commentsSoon': 'Kommentare — demnächst',
|
||
'chat.comments.attached': 'Attached to chat',
|
||
'chat.comments.emptyAttached': 'No comments attached.',
|
||
'chat.comments.saved': 'Saved comments',
|
||
'chat.comments.emptySaved': 'No saved comments.',
|
||
'chat.comments.add': 'Add',
|
||
'chat.comments.addAll': 'Add all',
|
||
'chat.comments.remove': 'Remove',
|
||
'chat.comments.placeholder': 'Comment on this element…',
|
||
'chat.comments.addSend': 'Add & send',
|
||
'chat.comments.updateSend': 'Update & send',
|
||
'chat.comments.removeAttachment': 'Remove comment attachment',
|
||
'chat.comments.removeAttachmentAria': 'Remove comment attachment for {name}',
|
||
'chat.comments.comment': 'Kommentar',
|
||
'chat.comments.sendToChat': 'An Chat senden',
|
||
'chat.comments.sending': 'Wird gesendet…',
|
||
'chat.comments.edit': 'Bearbeiten',
|
||
'chat.comments.select': 'Auswählen',
|
||
'chat.comments.deselect': 'Abwählen',
|
||
'chat.comments.nSelected': '{n} ausgewählt',
|
||
'chat.comments.pin': 'Pin',
|
||
'chat.comments.addNote': 'Notiz hinzufügen',
|
||
'chat.comments.savedToast': 'Kommentar gespeichert',
|
||
'chat.comments.pinSavedToast': 'Pin gespeichert',
|
||
'chat.comments.pinAtCoords': 'bei {x}, {y}',
|
||
'chat.comments.capturedItems': '{n} erfasste Elemente',
|
||
'chat.comments.clear': 'Löschen',
|
||
'chat.conversationsTitle': 'Konversationen',
|
||
'chat.conversationsAria': 'Konversationsverlauf',
|
||
'chat.newConversation': 'Neue Konversation',
|
||
'chat.newConversationsTitle': 'Neue Konversation',
|
||
'chat.resumeConversation': 'In neuer Konversation fortsetzen',
|
||
'chat.conversationsHeading': 'Konversationen',
|
||
'chat.new': 'Neu',
|
||
'chat.emptyConversations': 'Noch keine Konversationen.',
|
||
'chat.deleteConversation': 'Konversation löschen',
|
||
'chat.deleteConversationConfirm':
|
||
'„{title}“ löschen? Dadurch werden die Nachrichten entfernt.',
|
||
'chat.untitledConversation': 'Konversation ohne Titel',
|
||
'chat.startTitle': 'Konversation starten',
|
||
'chat.startHint':
|
||
'Legen Sie Bilder als visuelle Referenz ab, fügen Sie sie ein oder tippen Sie @, um eine Datei aus diesem Projekt anzuhängen. Oder probieren Sie einen dieser Starts:',
|
||
'chat.fillInputTitle': 'Klicken, um die Eingabe zu füllen',
|
||
'chat.jumpToLatest': 'Zur neuesten springen',
|
||
'chat.scrollToLatest': 'Zur neuesten scrollen',
|
||
'chat.you': 'Sie',
|
||
'chat.openFile': '{name} öffnen',
|
||
'chat.copyPrompt': 'Prompt kopieren',
|
||
'chat.copyDone': 'Kopiert!',
|
||
'chat.composerPlaceholder':
|
||
'Beschreiben Sie das gewünschte Design — Bilder einfügen/ablegen oder mit @ eine Datei oder einen Skill referenzieren…',
|
||
'chat.composerHint':
|
||
'⌘/Ctrl + Enter zum Senden · Bilder einfügen · @ für Dateien oder Skills · / für Befehle',
|
||
'chat.cliSettingsTitle': 'CLI- & Modelleinstellungen',
|
||
'chat.cliSettingsAria': 'CLI- und Modelleinstellungen öffnen',
|
||
'chat.attachTitle': 'Dateien anhängen (oder einfügen / ablegen)',
|
||
'chat.attachAria': 'Dateien anhängen',
|
||
'chat.importTitle': 'Quellen importieren (demnächst)',
|
||
'chat.importLabel': 'Importieren',
|
||
'chat.importComingSoon': 'Demnächst',
|
||
'chat.importSoon': 'Bald',
|
||
'chat.importFig': '.fig-Datei hochladen',
|
||
'chat.importGitHub': 'GitHub verbinden',
|
||
'chat.importWeb': 'Webelement erfassen',
|
||
'chat.importFolder': 'Code-Ordner verknüpfen',
|
||
'chat.importSkills': 'Skills und Designsysteme',
|
||
'chat.importProject': 'Reference another project',
|
||
'chat.linkedFolderRemoveAria': 'Verknüpften Ordner {path} entfernen',
|
||
'chat.linkedFolderNotFound': 'Ordner existiert nicht',
|
||
'chat.linkedFolderAlready': 'Dieser Ordner ist bereits verknüpft',
|
||
'chat.linkedFolderPickError': 'Ordnerauswahl konnte nicht geöffnet werden',
|
||
'chat.send': 'Senden',
|
||
'chat.stop': 'Stoppen',
|
||
'chat.removeAria': '{name} entfernen',
|
||
'chat.example1Title': 'Editorial Pitch Deck',
|
||
'chat.example1Tag': 'Magazin',
|
||
'chat.example1Prompt':
|
||
'Ein 10-Slide-Editorial-Pitch-Deck für ein Designstudio, das eine Seed-Runde aufnimmt — Swiss-Grid-Layout, übergroße Serif-Headlines mit markanten Initialen, Monospace-Abschnittsnummern, großzügiger Negativraum und Full-Bleed-Fotoslides im Wechsel mit textlastigen Slides. Cover, Vision, Markt, Produkt, Traction, Team, Ask, Kontakt.',
|
||
'chat.example2Title': 'SaaS-Analytics-Dashboard',
|
||
'chat.example2Tag': 'Daten',
|
||
'chat.example2Prompt':
|
||
'Ein dichtes Analytics-Dashboard für ein Developer-Tools-SaaS — KPI-Leiste mit Week-over-Week-Deltas, zwei gestapelte Liniendiagramme (MRR und aktive Workspaces), eine Welt-Heatmap der Nutzung, ein Kohorten-Retention-Raster, eine Top-Customers-Bestenliste und ein Echtzeit-Event-Feed. Dark Theme, tabellarische Monospace-Ziffern, Sparkline-Akzente.',
|
||
'chat.example3Title': 'Annual Report Long-Scroll',
|
||
'chat.example3Tag': 'Editorial',
|
||
'chat.example3Prompt':
|
||
'Ein interaktiver Annual Report für eine Klima-Non-Profit-Organisation — Long-Scroll-Editorial-Layout mit großen Pull-Quote-Blöcken, Datenvisualisierungen (gestapelte Balken, animierte Counter, Choropleth-Karte der Projektstandorte), Fotobrechern, Spenderwand und finalem Call-to-Action. Moderne Serifenschrift für Body, Sans-Serif-Chartlabels, erdige Papierpalette.',
|
||
|
||
'preview.shareMenu': 'Teilen ▾',
|
||
'preview.openInNewTab': 'In neuem Tab öffnen',
|
||
'preview.exit': '⤓ Beenden',
|
||
'preview.fullscreen': '⤢ Vollbild',
|
||
'preview.closeTitle': 'Schließen (Esc)',
|
||
'preview.loading': '{label} wird geladen…',
|
||
'preview.errorTitle': 'Beispiel konnte nicht geladen werden.',
|
||
'preview.errorBody': 'Das Beispiel-HTML konnte nicht abgerufen werden. Stelle sicher, dass Open Design läuft, und versuche es erneut.',
|
||
'preview.retry': 'Erneut versuchen',
|
||
'preview.unavailableTitle': 'Für diesen Skill ist keine Vorschau verfügbar.',
|
||
'preview.unavailableBody': 'Dieser Skill erzeugt {kind}-Output — führe den Prompt im Chat aus, um etwas zu erzeugen.',
|
||
'preview.showSidebar': '{label} einblenden',
|
||
'preview.hideSidebar': '{label} ausblenden',
|
||
|
||
'misc.savedTemplate': 'Gespeichertes Template',
|
||
'misc.primary': 'Primär',
|
||
'misc.designSystem': 'Designsystem',
|
||
|
||
'workspace.designFiles': 'Design-Dateien',
|
||
'workspace.focusMode': 'Focus workspace',
|
||
'workspace.showChat': 'Show chat',
|
||
'workspace.closeTab': 'Tab schließen',
|
||
'workspace.deleteFileConfirm': '„{name}“ aus dem Projektordner löschen?',
|
||
'workspace.deleteSelectedFilesConfirm': '{n} ausgewählte Datei(en) aus dem Projektordner löschen?',
|
||
'workspace.deleteSelectedFilesPartial': '{n} Datei(en) konnten nicht gelöscht werden.',
|
||
'workspace.openFromDesignFiles': 'Datei öffnen aus',
|
||
'workspace.designFilesLink': 'Design-Dateien',
|
||
'workspace.loadingSketch': 'Sketch wird geladen…',
|
||
'designFiles.title': 'Design-Dateien',
|
||
'designFiles.upload': 'Dateien hochladen',
|
||
'designFiles.pasteText': 'Als Textdatei einfügen',
|
||
'designFiles.newSketch': 'Neuer Sketch',
|
||
'designFiles.empty': 'Kreationen erscheinen hier',
|
||
'designFiles.refresh': 'Aktualisieren',
|
||
'designFiles.delete': 'Löschen',
|
||
'designFiles.searchPlaceholder': 'Dateien suchen…',
|
||
'designFiles.up': 'Nach oben',
|
||
'designFiles.back': 'Zurück',
|
||
'designFiles.crumbs': 'Projekt',
|
||
'designFiles.rowMenu': 'Zeilenmenü',
|
||
'designFiles.openInTab': 'In Tab öffnen',
|
||
'designFiles.download': 'Herunterladen',
|
||
'designFiles.downloadSelected': '{n} als ZIP herunterladen',
|
||
'designFiles.deleteSelected': '{n} löschen',
|
||
'designFiles.clearSelection': 'Auswahl aufheben',
|
||
'designFiles.selectPage': 'Alle auf dieser Seite auswählen',
|
||
'designFiles.selectAll': 'Alle auswählen',
|
||
'designFiles.dropTitle': '⤓ Dateien hier ablegen',
|
||
'designFiles.dropDesc':
|
||
'Bilder, Docs, Referenzen oder Ordner — der Agent nutzt sie als Kontext.',
|
||
'designFiles.upload.title': 'Dateien hochladen',
|
||
'designFiles.paste.title': 'Text als Datei einfügen',
|
||
'designFiles.upload.label': 'Hochladen',
|
||
'designFiles.paste.label': 'Einfügen',
|
||
'designFiles.previewOpen': 'Öffnen',
|
||
'designFiles.previewClose': 'Vorschau schließen',
|
||
'designFiles.modified': 'Geändert {time} · {size}',
|
||
'designFiles.weeksAgo': 'vor {n} W.',
|
||
'designFiles.groupBy': 'Gruppieren nach',
|
||
'designFiles.groupByKind': 'Typ',
|
||
'designFiles.groupByModified': 'Geändert',
|
||
'designFiles.expandGroup': 'Erweitern',
|
||
'designFiles.collapseGroup': 'Einklappen',
|
||
'designFiles.sectionPages': 'Seiten',
|
||
'designFiles.sectionScripts': 'Skripte',
|
||
'designFiles.sectionImages': 'Bilder',
|
||
'designFiles.sectionSketches': 'Sketches',
|
||
'designFiles.sectionOther': 'Andere',
|
||
'designFiles.modifiedToday': 'Heute',
|
||
'designFiles.modifiedYesterday': 'Gestern',
|
||
'designFiles.modifiedPrevious7Days': 'Letzte 7 Tage',
|
||
'designFiles.modifiedPrevious30Days': 'Letzte 30 Tage',
|
||
'designFiles.modifiedOlder': 'Älter',
|
||
'designFiles.showMore': '+{n} weitere anzeigen',
|
||
'designFiles.kindHtml': 'HTML-Seite',
|
||
'designFiles.kindImage': 'Bild',
|
||
'designFiles.kindSketch': 'Sketch',
|
||
'designFiles.kindText': 'Text',
|
||
'designFiles.kindCode': 'Skript',
|
||
'designFiles.kindPdf': 'PDF',
|
||
'designFiles.kindDocument': 'Dokument',
|
||
'designFiles.kindPresentation': 'Präsentation',
|
||
'designFiles.kindSpreadsheet': 'Tabellenblatt',
|
||
'designFiles.kindBinary': 'Binärdatei',
|
||
'designFiles.colName': 'Name',
|
||
'designFiles.colKind': 'Art',
|
||
'designFiles.colModified': 'Geändert',
|
||
'designFiles.perPage': 'Anzeigen',
|
||
'designFiles.all': 'Alle',
|
||
'designFiles.prev': 'Zurück',
|
||
'designFiles.next': 'Weiter',
|
||
'designFiles.jumpToPage': 'Gehe zu Seite',
|
||
'designFiles.pageInfo': '{start}–{end} von {total}',
|
||
'quickSwitcher.placeholder': 'Datei öffnen…',
|
||
'quickSwitcher.empty': 'Keine Dateien in diesem Projekt',
|
||
'quickSwitcher.noMatches': 'Keine Treffer',
|
||
'quickSwitcher.navigate': 'navigieren',
|
||
'quickSwitcher.open': 'öffnen',
|
||
'quickSwitcher.close': 'schließen',
|
||
'pasteDialog.title': 'Text einfügen',
|
||
'pasteDialog.hint': 'Wird im Projektordner gespeichert. Wählen Sie einen beliebigen Namen.',
|
||
'pasteDialog.fileNameLabel': 'Dateiname',
|
||
'pasteDialog.namePlaceholder': 'notes.txt',
|
||
'pasteDialog.contentLabel': 'Inhalt',
|
||
'pasteDialog.contentPlaceholder': 'Beliebigen Text einfügen…',
|
||
'pasteDialog.save': 'Speichern',
|
||
'pasteDialog.cancel': 'Abbrechen',
|
||
'sketch.save': 'Sketch speichern',
|
||
'sketch.cancel': 'Abbrechen',
|
||
'sketch.saving': 'Speichern…',
|
||
'sketch.tooltipDirty': 'Ungespeicherte Änderungen',
|
||
'sketch.tooltipClean': 'Gespeichert',
|
||
'fileViewer.empty': 'Wählen Sie eine Datei zur Ansicht aus.',
|
||
'fileViewer.loading': 'Wird geladen…',
|
||
'fileViewer.exportPptx': 'Als PPTX exportieren',
|
||
'fileViewer.openInNewTab': 'In neuem Tab öffnen',
|
||
'fileViewer.copyPath': 'Pfad kopieren',
|
||
'fileViewer.copied': 'Kopiert!',
|
||
'fileViewer.share': 'Teilen',
|
||
'fileViewer.binaryMeta': 'Binärdatei · {size}',
|
||
'fileViewer.binaryNote':
|
||
'Binärdatei ({size} Bytes). Laden Sie sie herunter oder öffnen Sie sie von der Festplatte, um sie zu prüfen.',
|
||
'fileViewer.pdfMeta': 'PDF · {size}',
|
||
'fileViewer.documentMeta': 'Dokument',
|
||
'fileViewer.presentationMeta': 'Präsentation',
|
||
'fileViewer.spreadsheetMeta': 'Tabellenblatt',
|
||
'fileViewer.previewUnavailable': 'Vorschau nicht verfügbar. Laden Sie die Datei herunter oder öffnen Sie sie zur Prüfung.',
|
||
'fileViewer.download': 'Herunterladen',
|
||
'fileViewer.open': 'Öffnen',
|
||
'fileViewer.imageMeta': 'Bild · {size}',
|
||
'fileViewer.reactMeta': 'React-Komponente · {size}',
|
||
'fileViewer.sketchMeta': 'Sketch · {size}',
|
||
'fileViewer.markdownStreamingMeta': 'Streaming-Vorschau…',
|
||
'fileViewer.markdownErrorMeta': 'Vorschau ist möglicherweise unvollständig (Generierungsfehler).',
|
||
'fileViewer.markdownStreamingStatus': 'Streaming… zeige partielles Markdown.',
|
||
'fileViewer.markdownErrorStatus': 'Generierungsfehler. Zeige letzten verfügbaren Inhalt.',
|
||
'fileViewer.videoMeta': 'Video · {size}',
|
||
'fileViewer.audioMeta': 'Audio · {size}',
|
||
'fileViewer.reload': 'Neu laden',
|
||
'fileViewer.reloadDisk': 'Von Festplatte neu laden',
|
||
'fileViewer.copy': 'Kopieren',
|
||
'fileViewer.copyTitle': 'Dateiinhalte kopieren',
|
||
'fileViewer.saveDisabled': 'Speichern (Read-only-Viewer)',
|
||
'fileViewer.save': 'Speichern',
|
||
'fileViewer.preview': 'Vorschau',
|
||
'fileViewer.source': 'Quelle',
|
||
'fileViewer.tweaks': 'Tweaks',
|
||
'fileViewer.comment': 'Kommentieren',
|
||
'fileViewer.edit': 'Bearbeiten',
|
||
'fileViewer.draw': 'Zeichnen',
|
||
'manualEdit.layers': "Layers",
|
||
'manualEdit.editableCount': "{count} editable",
|
||
'manualEdit.title': "Manual editor",
|
||
'manualEdit.selectLayer': "Select a layer",
|
||
'manualEdit.empty': "Click an element in the preview or choose a layer.",
|
||
'manualEdit.noClass': "no class",
|
||
'manualEdit.tabsAria': "Manual edit tabs",
|
||
'manualEdit.tabContent': "Content",
|
||
'manualEdit.tabStyle': "Style",
|
||
'manualEdit.tabAttributes': "Attributes",
|
||
'manualEdit.tabHtml': "Html",
|
||
'manualEdit.tabSource': "Source",
|
||
'manualEdit.attributesJson': "Attributes JSON",
|
||
'manualEdit.selectedHtml': "Selected element HTML",
|
||
'manualEdit.fullSource': "Full artifact source",
|
||
'manualEdit.applyContent': "Apply Content",
|
||
'manualEdit.applyStyle': "Apply Style",
|
||
'manualEdit.applyAttributes': "Apply Attributes",
|
||
'manualEdit.applyHtml': "Apply HTML",
|
||
'manualEdit.applySource': "Apply Source",
|
||
'manualEdit.invalidAttributes': "Invalid attributes JSON.",
|
||
'manualEdit.changes': "Changes",
|
||
'manualEdit.undo': "Undo",
|
||
'manualEdit.redo': "Redo",
|
||
'manualEdit.noChanges': "No manual edits yet.",
|
||
'manualEdit.imageUrl': "Image URL",
|
||
'manualEdit.altText': "Alt text",
|
||
'manualEdit.label': "Label",
|
||
'manualEdit.text': "Text",
|
||
'manualEdit.href': "Href",
|
||
'manualEdit.textColor': "Text color",
|
||
'manualEdit.background': "Background",
|
||
'manualEdit.fontSize': "Font size",
|
||
'manualEdit.weight': "Weight",
|
||
'manualEdit.align': "Align",
|
||
'manualEdit.padding': "Padding",
|
||
'manualEdit.margin': "Margin",
|
||
'manualEdit.radius': "Radius",
|
||
'manualEdit.border': "Border",
|
||
'manualEdit.width': "Width",
|
||
'manualEdit.minHeight': "Min height",
|
||
'fileViewer.zoomOut': 'Verkleinern',
|
||
'fileViewer.zoomIn': 'Vergrößern',
|
||
'fileViewer.resetZoom': 'Zoom zurücksetzen',
|
||
'fileViewer.viewportAria': 'Preview viewport',
|
||
'fileViewer.viewportDesktop': 'Desktop',
|
||
'fileViewer.viewportDesktopTitle': 'Full-width desktop preview',
|
||
'fileViewer.viewportTablet': 'Tablet',
|
||
'fileViewer.viewportTabletTitle': 'Tablet preview at 820 × 1180 (modern portrait baseline)',
|
||
'fileViewer.viewportMobile': 'Mobile',
|
||
'fileViewer.viewportMobileTitle': 'Mobile preview at 390 × 844',
|
||
'fileViewer.reloadAria': 'Neu laden',
|
||
'fileViewer.previousSlide': 'Vorherige Slide',
|
||
'fileViewer.nextSlide': 'Nächste Slide',
|
||
'fileViewer.slideNavAria': 'Slide-Navigation',
|
||
'fileViewer.present': 'Präsentieren',
|
||
'fileViewer.presentInTab': 'In diesem Tab',
|
||
'fileViewer.presentFullscreen': 'Vollbild',
|
||
'fileViewer.presentNewTab': 'Neuer Tab',
|
||
'fileViewer.exitPresentation': 'Präsentation beenden',
|
||
'fileViewer.shareLabel': 'Teilen',
|
||
'fileViewer.exportPdf': 'Als PDF exportieren',
|
||
'fileViewer.exportPdfAllSlides': 'Als PDF exportieren (alle Slides)',
|
||
'fileViewer.exportPptxBusy': 'Warten Sie, bis der aktuelle Turn abgeschlossen ist.',
|
||
'fileViewer.exportPptxHint':
|
||
'Senden Sie eine Anfrage an den Agent, um dieses Design in PPTX umzuwandeln.',
|
||
'fileViewer.exportPptxNa': 'PPTX-Export ist hier nicht verfügbar.',
|
||
'fileViewer.exportZip': 'Als .zip herunterladen',
|
||
'fileViewer.exportHtml': 'Als eigenständiges HTML exportieren',
|
||
'fileViewer.exportMd': 'Als Markdown exportieren',
|
||
'fileViewer.exportImage': 'Als Bild exportieren',
|
||
'fileViewer.exportImageFailed': 'Bildaufnahme fehlgeschlagen. Bitte versuchen Sie es erneut oder verwenden Sie das Screenshot-Tool Ihres Browsers.',
|
||
'fileViewer.exportJsx': 'Als JSX exportieren',
|
||
'fileViewer.exportReactHtml': 'Vorschau als HTML exportieren',
|
||
'fileViewer.saveAsTemplate': 'Als Template speichern…',
|
||
'fileViewer.savingTemplate': 'Template wird gespeichert…',
|
||
'fileViewer.savedTemplate': 'Als „{name}“ gespeichert',
|
||
'fileViewer.savedTemplateFail': 'Template konnte nicht gespeichert werden — bitte erneut versuchen.',
|
||
'fileViewer.templateNamePrompt': 'Template-Name',
|
||
'fileViewer.templateNameDefault': 'Template ohne Titel',
|
||
'fileViewer.templateDescPrompt':
|
||
'Kurze Beschreibung (optional — was macht dieses Template nützlich?)',
|
||
'fileViewer.deployToVercel': 'Auf Vercel deployen',
|
||
'fileViewer.redeployToVercel': 'Erneut deployen',
|
||
'fileViewer.deployingToVercel': 'Deployment auf Vercel…',
|
||
'fileViewer.deployProviderLabel': 'Anbieter',
|
||
'fileViewer.vercelProvider': 'Vercel',
|
||
'fileViewer.cloudflarePagesProvider': 'Cloudflare Pages',
|
||
'fileViewer.deployToProvider': 'Auf {provider} deployen',
|
||
'fileViewer.redeployToProvider': 'Erneut auf {provider} deployen',
|
||
'fileViewer.deployingToProvider': 'Deployment auf {provider}…',
|
||
'fileViewer.preparingPublicLink': 'Öffentlicher Link wird vorbereitet…',
|
||
'fileViewer.copyDeployLink': 'Link kopieren',
|
||
'fileViewer.deployModalTitle': 'Bereitstellen',
|
||
'fileViewer.deployModalSubtitle': 'Verwende das Konto des gewählten Anbieters, um diese HTML-Vorschau zu deployen.',
|
||
'fileViewer.vercelToken': 'Vercel Token',
|
||
'fileViewer.vercelTokenGetLink': 'Vercel Token abrufen',
|
||
'fileViewer.vercelTokenPlaceholder': 'Vercel Token einfügen',
|
||
'fileViewer.vercelTokenReuseHint': 'Gespeicherter Token wird verwendet. Gib einen neuen Token ein, um ihn zu ersetzen.',
|
||
'fileViewer.vercelTokenRequired': 'Gib zuerst einen Vercel Token ein und speichere ihn.',
|
||
'fileViewer.cloudflareApiToken': 'Cloudflare API-Token',
|
||
'fileViewer.cloudflareApiTokenGetLink': 'Cloudflare API-Token abrufen',
|
||
'fileViewer.cloudflareApiTokenPlaceholder': 'Cloudflare API-Token einfügen',
|
||
'fileViewer.cloudflareApiTokenReuseHint': 'Der gespeicherte Cloudflare API-Token wird verwendet. Gib einen neuen Token ein, um ihn zu ersetzen.',
|
||
'fileViewer.cloudflareApiTokenRequired': 'Gib zuerst einen Cloudflare API-Token ein und speichere ihn.',
|
||
'fileViewer.cloudflareApiTokenScopeHint': 'Pages Edit is required for deploys. Zone Read is required to list domains. DNS Edit is only needed when binding a custom domain.',
|
||
'fileViewer.vercelTeamId': 'Team-ID',
|
||
'fileViewer.vercelTeamSlug': 'Team-Slug',
|
||
'fileViewer.cloudflareAccountId': 'Account-ID',
|
||
'fileViewer.cloudflareAccountIdHint': 'Erforderlich. Die Account-ID findest du im Cloudflare-Dashboard.',
|
||
'fileViewer.cloudflareAccountIdRequired': 'Gib zuerst eine Cloudflare Account ID ein und speichere sie.',
|
||
'fileViewer.cloudflareZoneLabel': 'Domain',
|
||
'fileViewer.cloudflareZonePlaceholder': 'Save Cloudflare settings to load domains',
|
||
'fileViewer.cloudflareZoneRequired': 'Select a Cloudflare domain first.',
|
||
'fileViewer.cloudflareZonesLoading': 'Loading Cloudflare domains…',
|
||
'fileViewer.cloudflareZonesRefresh': 'Refresh domains',
|
||
'fileViewer.cloudflareZonesLoadFailed': 'Could not load Cloudflare domains.',
|
||
'fileViewer.cloudflareZonesEmpty': 'No active full Cloudflare domains were found for this account.',
|
||
'fileViewer.cloudflareDomainPrefixLabel': 'Subdomain prefix',
|
||
'fileViewer.cloudflareDomainPrefixPlaceholder': 'demo',
|
||
'fileViewer.cloudflareDomainPrefixInvalid': 'Use one DNS label only: lowercase letters, numbers, and hyphens.',
|
||
'fileViewer.cloudflareHostnamePreview': 'Custom domain preview: {hostname}',
|
||
'fileViewer.cloudflareCustomDomainHint': 'Optional: choose a Cloudflare domain and prefix to bind a custom subdomain. pages.dev will still be available.',
|
||
'fileViewer.cloudflarePagesDevLinkLabel': 'pages.dev URL',
|
||
'fileViewer.cloudflareCustomDomainLinkLabel': 'Custom domain',
|
||
'fileViewer.optional': 'Optional',
|
||
'fileViewer.vercelPreviewOnly': 'Deployments sind derzeit nur Preview-Deployments.',
|
||
'fileViewer.cloudflarePagesPreviewHint': 'Cloudflare Pages nutzt Direct Upload.',
|
||
'fileViewer.savingConfig': 'Speichern…',
|
||
'fileViewer.deployConfigSaveFailed': 'Vercel-Einstellungen konnten nicht gespeichert werden.',
|
||
'fileViewer.deployFailed': 'Deployment fehlgeschlagen. Prüfe die Vercel-Einstellungen und versuche es erneut.',
|
||
'fileViewer.deployProviderConfigSaveFailed': '{provider}-Einstellungen konnten nicht gespeichert werden.',
|
||
'fileViewer.deployProviderFailed': '{provider}-Deployment fehlgeschlagen. Prüfe die Einstellungen und versuche es erneut.',
|
||
'fileViewer.deployResultLabel': 'Deployment-URL',
|
||
'fileViewer.deployLinkReady': 'Bereit',
|
||
'fileViewer.deployLinkPreparingLabel': 'Öffentlicher Link ausstehend',
|
||
'fileViewer.deployLinkDelayed': 'Die Seite wurde deployt. Der Anbieter bereitet den öffentlichen Link noch vor.',
|
||
'fileViewer.deployLinkFailed': 'Benutzerdefinierte Domain fehlgeschlagen',
|
||
'fileViewer.deployLinkProtectedLabel': 'Deployment-Schutz aktiviert',
|
||
'fileViewer.deployLinkProtected': 'Die Seite wurde deployt, aber dieser Vorschau-Link erfordert eine Anmeldung. Deaktiviere Deployment Protection oder nutze eine eigene Domain.',
|
||
'fileViewer.retryLink': 'Jetzt erneut versuchen',
|
||
|
||
'questionForm.submit': 'Absenden',
|
||
'questionForm.skip': 'Überspringen',
|
||
'questionForm.locked': 'Beantwortet',
|
||
|
||
'conv.switch': 'Konversation wechseln',
|
||
'conv.label': 'Konversation',
|
||
'conv.heading': 'Konversationen',
|
||
'conv.new': '+ Neu',
|
||
'conv.empty': 'Noch keine Konversationen.',
|
||
'conv.untitled': 'Konversation ohne Titel',
|
||
'conv.renameTooltip': 'Doppelklicken zum Umbenennen',
|
||
'conv.delete': 'Konversation löschen',
|
||
'conv.deleteConfirm': '„{title}“ löschen? Dadurch werden die Nachrichten entfernt.',
|
||
|
||
'agentPicker.label': 'Agent',
|
||
'agentPicker.modeChoose': 'Ausführungsmodus wählen',
|
||
'agentPicker.localCli': 'Lokale CLI',
|
||
'agentPicker.daemonOff': 'Daemon aus',
|
||
'agentPicker.byok': 'API · BYOK',
|
||
'agentPicker.selectAgent': 'Erkannte Code-Agent-CLI auswählen',
|
||
'agentPicker.noAgents': 'keine Agents im PATH',
|
||
'agentPicker.notInstalled': 'nicht installiert',
|
||
'agentPicker.rescan': 'Lokalen PATH erneut nach Agents scannen',
|
||
|
||
'tool.openInTab': '{name} in einem Tab öffnen',
|
||
'tool.open': 'öffnen',
|
||
'tool.todos': 'Todos',
|
||
'tool.askQuestion': 'Frage',
|
||
'tool.askQuestionSubmit': 'Senden',
|
||
'tool.askQuestionPending': 'Warte auf deine Antwort',
|
||
'tool.askQuestionAnswered': 'Beantwortet',
|
||
'tool.todosExpand': 'Aufgaben einblenden',
|
||
'tool.todosCollapse': 'Aufgaben ausblenden',
|
||
'tool.todosDone': 'Fertig',
|
||
'tool.todosDismiss': 'Aufgabenliste schließen',
|
||
'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} Zeilen',
|
||
'tool.changeSingular': 'Änderung',
|
||
'tool.changePlural': 'Änderungen',
|
||
'tool.in': 'in {path}',
|
||
'tool.hide': 'ausblenden',
|
||
'tool.output': 'Ausgabe',
|
||
'tool.running': 'läuft…',
|
||
'tool.error': 'Fehler',
|
||
'tool.done': 'fertig',
|
||
|
||
'assistant.role': 'Assistent',
|
||
'assistant.workingLabel': 'Arbeitet',
|
||
'assistant.doneLabel': 'Fertig',
|
||
'assistant.feedbackPrompt': 'Feedback',
|
||
'assistant.feedbackPositive': 'Hilfreich',
|
||
'assistant.feedbackNegative': 'Nicht hilfreich',
|
||
'assistant.feedbackReasonTitle': 'Tell us why',
|
||
'assistant.feedbackReasonPositiveMatched': 'Understood my request',
|
||
'assistant.feedbackReasonPositiveVisual': 'Looks good',
|
||
'assistant.feedbackReasonPositiveUseful': 'Useful structure',
|
||
'assistant.feedbackReasonPositiveEasy': 'Easy to keep editing',
|
||
'assistant.feedbackReasonNegativeMissed': 'Missed my request',
|
||
'assistant.feedbackReasonNegativeVisual': 'Visual quality needs work',
|
||
'assistant.feedbackReasonNegativeIncomplete': 'Incomplete output',
|
||
'assistant.feedbackReasonNegativeHard': 'Hard to use',
|
||
'assistant.feedbackReasonOther': 'Other',
|
||
'assistant.feedbackReasonPlaceholder': 'Add a short note...',
|
||
'assistant.feedbackReasonSubmit': 'Submit',
|
||
'assistant.emptyResponseLabel': 'No output',
|
||
'assistant.emptyResponseMessage': 'The provider ended the request without returning text or an artifact. Try another model or provider, check quota, or retry.',
|
||
'assistant.unfinishedLabel': 'Mit unerledigter Arbeit gestoppt',
|
||
'assistant.unfinishedSummary': '{n} Aufgabe(n) offen',
|
||
'assistant.unfinishedMore': '+{n} weitere',
|
||
'assistant.continueRemaining': 'Offene Aufgaben fortsetzen',
|
||
'assistant.outTokens': '{n} ausgehend',
|
||
'assistant.producedFiles': 'Dateien aus diesem Turn',
|
||
'assistant.openFile': 'Öffnen',
|
||
'assistant.downloadFile': 'Herunterladen',
|
||
'assistant.thinking': 'Denkt',
|
||
'assistant.systemReminder': 'Systemhinweis',
|
||
'assistant.waitingFirstOutput': 'Warte auf erste Ausgabe',
|
||
'assistant.statusBootingAgent': 'Agent wird gestartet',
|
||
'assistant.statusStarting': 'Startet',
|
||
'assistant.statusRequesting': 'Anfrage wird gesendet',
|
||
'assistant.statusThinking': 'Denkt',
|
||
'assistant.statusStreaming': 'Streamt',
|
||
'assistant.slowHint':
|
||
'Dauert länger als üblich. Das Formular erscheint normalerweise nach 5–10 s — Sie können Stoppen und umformulieren.',
|
||
'assistant.verbEditing': 'Bearbeitet',
|
||
'assistant.verbWriting': 'Schreibt',
|
||
'assistant.verbReading': 'Liest',
|
||
'assistant.verbSearching': 'Sucht',
|
||
'assistant.verbRunning': 'Führt aus',
|
||
'assistant.verbTodos': 'Todos',
|
||
'assistant.verbFetching': 'Holt',
|
||
'assistant.verbCalling': 'Ruft auf',
|
||
|
||
'qf.answered': 'beantwortet',
|
||
'qf.choose': 'Auswählen…',
|
||
'qf.required': 'erforderlich',
|
||
'qf.lockedSubmitted':
|
||
'Antworten gesendet — der Agent nutzt sie für den Rest der Sitzung.',
|
||
'qf.lockedPrev': 'Dieses Formular stammt aus einem vorherigen Turn.',
|
||
'qf.hint':
|
||
'Wählen Sie, was passt. Überspringen Sie optionale Felder, die Ihnen egal sind — der Agent nutzt sinnvolle Standards.',
|
||
'qf.submitDefault': 'Antworten senden',
|
||
'qf.submitDisabledTitle': 'Füllen Sie zuerst die erforderlichen Felder aus',
|
||
'qf.submitTitle': 'Antworten senden',
|
||
'qf.cardSelected': 'ausgewählt',
|
||
'qf.cardRefs': 'Refs:',
|
||
'qf.cardSampleText': 'Franz jagt im komplett verwahrlosten Taxi quer durch Bayern · 0123',
|
||
|
||
'sketch.toolSelect': 'Auswählen (no-op)',
|
||
'sketch.toolPen': 'Stift',
|
||
'sketch.toolText': 'Text',
|
||
'sketch.toolRect': 'Rechteck',
|
||
'sketch.toolArrow': 'Pfeil',
|
||
'sketch.toolEraser': 'Radierer',
|
||
'sketch.color': 'Farbe',
|
||
'sketch.strokeSize': 'Strichstärke',
|
||
'sketch.undo': 'Rückgängig',
|
||
'sketch.clear': 'Leeren',
|
||
'sketch.close': 'Schließen',
|
||
'sketch.closeConfirm': 'Skizze schließen und ungespeicherte Änderungen verwerfen?',
|
||
'sketch.textPrompt': 'Text:',
|
||
'sketch.textModalTitle': 'Text hinzufügen',
|
||
|
||
'critiqueTheater.userFacingName': 'Design-Jury',
|
||
'critiqueTheater.roleDesigner': 'Designer',
|
||
'critiqueTheater.roleCritic': 'Kritiker',
|
||
'critiqueTheater.roleBrand': 'Marke',
|
||
'critiqueTheater.roleA11y': 'Barrierefreiheit',
|
||
'critiqueTheater.roleCopy': 'Text',
|
||
'critiqueTheater.roundLabel': 'Runde {n} von {m}',
|
||
'critiqueTheater.mustFix': '{n} Pflichtkorrekturen',
|
||
'critiqueTheater.composite': 'Gesamtscore',
|
||
'critiqueTheater.threshold': 'Schwelle',
|
||
'critiqueTheater.consensus': 'Konsens',
|
||
'critiqueTheater.interrupt': 'Abbrechen',
|
||
'critiqueTheater.interrupting': 'Wird abgebrochen…',
|
||
'critiqueTheater.interrupted': 'Abgebrochen',
|
||
'critiqueTheater.interruptedSummary': 'In Runde {round} abgebrochen · bester Gesamtscore {composite}',
|
||
'critiqueTheater.degradedHeading': 'Jury für diesen Lauf offline',
|
||
'critiqueTheater.degradedReasonMalformed': 'Ungültige Jury-Ausgabe (Parser hat den Block abgelehnt).',
|
||
'critiqueTheater.degradedReasonOversize': 'Jury-Ausgabe hat das sichere Byte-Budget überschritten.',
|
||
'critiqueTheater.degradedReasonAdapter': 'Adapter {adapter} unterstützt das Critique-Protokoll nicht.',
|
||
'critiqueTheater.degradedReasonProtocol': 'Adapter {adapter} verwendet eine nicht unterstützte Protokollversion.',
|
||
'critiqueTheater.degradedReasonMissingArtifact': 'Der Lauf endete ohne ein finales Artefakt.',
|
||
'critiqueTheater.replay': 'Wiedergabe',
|
||
'critiqueTheater.replaySpeed': 'Wiedergabegeschwindigkeit',
|
||
'critiqueTheater.readOnly': 'Nur lesen',
|
||
'critiqueTheater.shippedSummary': 'In Runde {round} freigegeben · Gesamtscore {composite}',
|
||
'critiqueTheater.shippedBadge': 'Freigegeben',
|
||
'critiqueTheater.belowThresholdBadge': 'Unter der Schwelle',
|
||
'critiqueTheater.timedOutBadge': 'Zeitüberschreitung',
|
||
'critiqueTheater.failedHeading': 'Lauf fehlgeschlagen',
|
||
'critiqueTheater.failedReasonCliExit': 'Agent-CLI hat vor Ende der Jury mit einem Fehler beendet.',
|
||
'critiqueTheater.failedReasonPerRoundTimeout': 'Eine Runde hat ihr Zeitbudget überschritten.',
|
||
'critiqueTheater.failedReasonTotalTimeout': 'Der gesamte Lauf hat sein Zeitbudget überschritten.',
|
||
'critiqueTheater.failedReasonOrchestrator': 'Interner Orchestrierungsfehler.',
|
||
'critiqueTheater.transcriptEmpty': 'Noch keine Wiedergabe verfügbar. Starte eine Jury, um eine aufzuzeichnen.',
|
||
'critiqueTheater.transcriptLoading': 'Wiedergabe wird geladen…',
|
||
'critiqueTheater.transcriptError': 'Wiedergabe konnte nicht geladen werden: {error}',
|
||
'critiqueTheater.replaySpeedPaused': 'Pausiert',
|
||
'critiqueTheater.replaySpeedInstant': 'Sofort',
|
||
'critiqueTheater.replaySpeedLive': 'Live',
|
||
'critiqueTheater.replaySpeedFast': 'Schnell',
|
||
'critiqueTheater.settingsNav': 'Design Jury',
|
||
'critiqueTheater.settingsNavHint': 'Fünf-Panel-Review für deine Agent-Runs',
|
||
'critiqueTheater.settingsEnabledLabel': 'Design Jury während Agent-Runs anzeigen',
|
||
'critiqueTheater.settingsEnabledDescription':
|
||
'Aktiviert, läuft während jeder Agent-Generierung eine Fünf-Panel-Review mit, die das Ergebnis vor der Auslieferung bewertet. Du kannst jederzeit unterbrechen.',
|
||
'critiqueTheater.settingsEnabledProjectHint':
|
||
'Für dieses Projekt gespeichert. Neue Runs in diesem Projekt laufen serverseitig durch die Design Jury.',
|
||
'critiqueTheater.settingsEnabledNoProjectHint':
|
||
'Öffne ein Projekt, damit dies serverseitig persistiert. Bis dahin ändert sich nur die Browser-Voreinstellung.',
|
||
|
||
'pet.title': 'Haustiere',
|
||
'pet.tabBuiltIn': 'Vorgegeben',
|
||
'pet.tabBuiltInHint': 'Mit Open Design gebündelte Begleiter — auswählen und adoptieren.',
|
||
'pet.builtInEmpty': 'Eingebaute Pets sind gerade nicht verfügbar. Aktualisiere den Community-Tab, sobald der Daemon wieder online ist.',
|
||
'pet.tabCustom': 'Eigenes',
|
||
'pet.tabCustomHint': 'Eigener Name, Glyph, Farbe oder Sprite.',
|
||
'pet.tabCommunity': 'Community',
|
||
'pet.tabCommunityHint': 'Von Codex geschlüpfte Pets — adoptieren oder neue generieren.',
|
||
'pet.tabsAria': 'Pet-Quelle',
|
||
'pet.subtitle': 'Adoptiere ein kleines Maskottchen, das über deinem Workspace schwebt.',
|
||
'pet.navTitle': 'Haustiere',
|
||
'pet.navHint': 'Adoptieren oder anpassen',
|
||
'pet.adopt': 'Adoptieren',
|
||
'pet.adoptedBadge': 'Adoptiert',
|
||
'pet.adoptCallout': 'Ein Haustier adoptieren',
|
||
'pet.changePet': 'Haustier wechseln',
|
||
'pet.wake': 'Wecken',
|
||
'pet.tuck': 'Verstecken',
|
||
'pet.wakeTitle': 'Haustier wecken — Overlay anzeigen.',
|
||
'pet.tuckTitle': 'Haustier verstecken — Overlay ausblenden.',
|
||
'pet.settingsTitle': 'Haustier-Einstellungen öffnen',
|
||
'pet.useCustom': 'Mein Haustier verwenden',
|
||
'pet.customTitle': 'Selbst gestalten',
|
||
'pet.customHint': 'Wähle Name, Symbol und Akzentfarbe — das Overlay aktualisiert sich live.',
|
||
'pet.customGreetingPlaceholder': 'Eine Begrüßung von deinem Haustier…',
|
||
'pet.fieldName': 'Name',
|
||
'pet.fieldGlyph': 'Symbol',
|
||
'pet.fieldGlyphHint': 'Ein einzelnes Emoji passt am besten (z. B. 🐝, 🦄, 🐢).',
|
||
'pet.fieldGreeting': 'Begrüßung',
|
||
'pet.fieldAccent': 'Akzentfarbe',
|
||
'pet.fieldAccentCustom': 'Eigene Farbe',
|
||
'pet.fieldAccentDefault': 'Standard-Akzentfarbe',
|
||
'pet.overlayAria': 'Haustier-Begleiter',
|
||
'pet.spriteAria': '{name} — zum Bewegen ziehen, zum Plaudern klicken',
|
||
'pet.spriteTitle': 'Hallo von {name}! Klick zum Plaudern.',
|
||
'pet.composerTitle': 'Haustiere — wecken, verstecken oder auswählen',
|
||
'pet.composerMenuTitle': 'Haustiere',
|
||
'pet.composerMenuHint': 'Tipp: tippe /pet zum Umschalten',
|
||
'pet.composerOpenSettings': 'Haustiere verwalten',
|
||
'pet.welcomeTeaserTitle': 'Adoptiere ein Haustier',
|
||
'pet.welcomeTeaserBody': 'Ein kleiner schwebender Begleiter für deinen Workspace.',
|
||
'pet.welcomeTeaserCta': 'Eines wählen',
|
||
'pet.imageUpload': 'Sprite hochladen',
|
||
'pet.imageReplace': 'Sprite ersetzen',
|
||
'pet.imageRemove': 'Emoji verwenden',
|
||
'pet.imageHintIdle': 'PNG, JPG, WebP, GIF oder SVG. Spritesheet? Lade einen horizontalen Streifen hoch und setze die Frame-Anzahl.',
|
||
'pet.imageHintActive': 'Dein Sprite wird angezeigt. Setze Frames > 1, um einen horizontalen Spritesheet zu animieren.',
|
||
'pet.fieldFrames': 'Frames',
|
||
'pet.fieldFramesHint': '1 = statisch. > 1 = horizontaler Spritesheet.',
|
||
'pet.fieldFps': 'Geschwindigkeit (fps)',
|
||
'pet.fieldFpsHint': 'Wie schnell die Frames durchlaufen.',
|
||
'pet.atlasImport': 'Codex-Sprite importieren',
|
||
'pet.atlasImportTitle': 'Importiere ein hatch-pet 8x9 / 192x208 Atlas (PNG oder WebP).',
|
||
'pet.atlasPickerTitle': 'Animationszeile wählen',
|
||
'pet.atlasPickerHint': 'Codex-Pets bringen 9 Animationszeilen mit. Standardmäßig behalten wir den ganzen Atlas, damit das Pet bei Hover, Drag-Richtung und langer Untätigkeit die Reihen wechselt. Du kannst es auch auf eine Schleife festlegen.',
|
||
'pet.atlasCancel': 'Atlas verwerfen',
|
||
'pet.atlasAdopt': 'Auf diese Zeile festlegen',
|
||
'pet.atlasAdoptFull': 'Ganzen Atlas verwenden (animiert)',
|
||
'pet.atlasAdoptFullTitle': 'Alle Zeilen behalten, damit das Pet auf Hover, Drag-Richtung und lange Untätigkeit reagiert.',
|
||
'pet.atlasAdoptRowTitle': 'Nur die markierte Zeile als einzelne Endlosschleife herausschneiden.',
|
||
'pet.atlasActiveHint': 'Animierter Atlas aktiv — das Pet wählt anhand deiner Interaktion (Hover, Drag, Untätigkeit) eine Zeile aus.',
|
||
'pet.atlasRow.idle': 'Idle',
|
||
'pet.atlasRow.running-right': 'Lauf rechts',
|
||
'pet.atlasRow.running-left': 'Lauf links',
|
||
'pet.atlasRow.waving': 'Winken',
|
||
'pet.atlasRow.jumping': 'Springen',
|
||
'pet.atlasRow.failed': 'Gescheitert',
|
||
'pet.atlasRow.waiting': 'Warten',
|
||
'pet.atlasRow.running': 'Laufen',
|
||
'pet.atlasRow.review': 'Prüfen',
|
||
'pet.hatchTitle': 'Neues Pet mit KI ausbrüten',
|
||
'pet.hatchHint': 'Nutze das mitgelieferte hatch-pet-Skill im Chat, um ein Codex-Spritesheet zu erzeugen, und importiere es danach hier.',
|
||
'pet.hatchConcept': 'Pet-Konzept (optional)',
|
||
'pet.hatchConceptPlaceholder': 'z. B. ein winziger Pixel-Shiba im kuscheligen Pulli',
|
||
'pet.hatchCopy': 'Prompt kopieren',
|
||
'pet.hatchCopied': 'Kopiert!',
|
||
'pet.hatchFoot': 'Sobald das Skill dein Pet gespeichert hat, kommst du zurück und wählst „Codex-Sprite importieren".',
|
||
'pet.slashPopoverAria': 'Slash-Befehle',
|
||
'pet.slashPopoverTitle': 'Befehle',
|
||
'pet.slashPopoverHint': '↑↓ navigieren · enter auswählen · esc schließen',
|
||
'pet.slashPet': 'Pet umschalten, adoptieren oder Einstellungen öffnen.',
|
||
'pet.slashPetWake': 'Schwebende Pet-Anzeige aufwecken.',
|
||
'pet.slashPetTuck': 'Pet vorerst wegstecken.',
|
||
'pet.slashHatch': 'Codex-Pet mit dem hatch-pet-Skill erzeugen.',
|
||
'pet.slashHatchArg': '<Konzept>',
|
||
'pet.slashSearch': 'Suche im Web über den OD-Research-Befehl.',
|
||
'pet.slashSearchArg': '<Suchanfrage>',
|
||
'pet.codexTitle': 'Kürzlich ausgebrütet',
|
||
'pet.codexSubtitle': 'Vom hatch-pet-Skill gepackte Pets erscheinen hier zur Ein-Klick-Adoption.',
|
||
'pet.codexSubtitleWithDir': 'Suche in {dir} nach hatch-pet-Paketen.',
|
||
'pet.codexEmpty': 'Noch keine ausgebrüteten Pets. Tippe /hatch im Chat, um eines zu erzeugen.',
|
||
'pet.codexLoading': 'Suche nach ausgebrüteten Pets…',
|
||
'pet.codexRefresh': 'Aktualisieren',
|
||
'pet.codexAdopt': 'Adoptieren',
|
||
'pet.codexAdopting': 'Adoptiere…',
|
||
'pet.communitySync': 'Community-Pets herunterladen',
|
||
'pet.communitySyncing': 'Lade…',
|
||
'pet.communitySyncTitle': 'Synchronisiere die neuesten Pets aus Codex Pet Share + j20 Hatchery nach ~/.codex/pets/.',
|
||
'pet.communitySyncDone': '{wrote} neue Pets synchronisiert ({total} insgesamt).',
|
||
'pet.communitySyncFailed': 'Sync fehlgeschlagen: {error}',
|
||
'pet.codexBundled': 'Mitgeliefert',
|
||
'pet.codexBundledTitle': 'Wird mit Open Design ausgeliefert — kein Download nötig.',
|
||
|
||
'settings.notifications': 'Benachrichtigungen',
|
||
'settings.notificationsHint': 'Ton und Desktop-Benachrichtigung beim Abschluss von Aufgaben',
|
||
'settings.notifyCompletionSound': 'Abschluss-Ton',
|
||
'settings.notifyCompletionSoundHint': 'Wird abgespielt, wenn eine Runde endet. Standardmäßig aus.',
|
||
'settings.notifySuccessSound': 'Erfolgs-Ton',
|
||
'settings.notifyFailureSound': 'Fehler-Ton',
|
||
'settings.notifyDesktop': 'Desktop-Benachrichtigung',
|
||
'settings.notifyDesktopHint': 'Wird gesendet, wenn das Fenster nicht im Vordergrund ist.',
|
||
'settings.notifyDesktopBlocked': 'Vom Browser blockiert. Bitte in den Website-Einstellungen erlauben.',
|
||
'settings.notifyDesktopUnsupported': 'Desktop-Benachrichtigungen werden in dieser Umgebung nicht unterstützt.',
|
||
'settings.notifyTest': 'Test senden',
|
||
'settings.notifyTestSent': 'Testbenachrichtigung gesendet. Wenn kein Banner erscheint, Browser- und Systembenachrichtigungen prüfen.',
|
||
'settings.notifyTestFailed': 'Benachrichtigungsaufruf fehlgeschlagen. Browser- und Systembenachrichtigungen prüfen.',
|
||
'settings.notifySoundDing': 'Ding',
|
||
'settings.notifySoundChime': 'Glockenspiel',
|
||
'settings.notifySoundTwoToneUp': 'Zweiton aufwärts',
|
||
'settings.notifySoundPluck': 'Zupfen',
|
||
'settings.notifySoundBuzz': 'Summen',
|
||
'settings.notifySoundTwoToneDown': 'Zweiton abwärts',
|
||
'settings.notifySoundThud': 'Dumpfer Schlag',
|
||
'settings.skills': 'Skills',
|
||
'settings.skillsHint': 'Funktionale Skills, die der Agent während einer Aufgabe aufrufen kann',
|
||
'settings.skillsNew': 'Neuer Skill',
|
||
'settings.skillsEmpty': 'Wähle links einen Skill aus oder erstelle einen neuen.',
|
||
'settings.skillsEdit': 'Bearbeiten',
|
||
'settings.skillsDelete': 'Löschen',
|
||
'settings.skillsDeleteConfirm': 'Löschen bestätigen',
|
||
'settings.skillsName': 'Name',
|
||
'settings.skillsTriggers': 'Trigger (Komma- oder zeilengetrennt)',
|
||
'settings.skillsDescription': 'Beschreibung',
|
||
'settings.skillsBody': 'SKILL.md-Inhalt',
|
||
'settings.skillsCreate': 'Erstellen',
|
||
'settings.skillsSave': 'Speichern',
|
||
'settings.skillsSaving': 'Speichern…',
|
||
'settings.skillsFiles': 'Dateien',
|
||
'settings.skillsNoFiles': 'Keine Dateien in diesem Skill-Ordner.',
|
||
'settings.skillsNameRequired': 'Skill-Name ist erforderlich.',
|
||
'settings.skillsBodyRequired': 'Skill-Inhalt ist erforderlich.',
|
||
'settings.designSystems': 'Design-Systeme',
|
||
'settings.designSystemsHint': 'Verfügbare Design-Systeme durchsuchen und umschalten',
|
||
'settings.librarySkills': 'Fähigkeiten',
|
||
'settings.libraryDesignSystems': 'Designsysteme',
|
||
'settings.librarySearch': 'Suchen...',
|
||
'settings.libraryAll': 'Alle',
|
||
'settings.libraryPreview': 'Vorschau',
|
||
'settings.libraryPreviewClose': 'Schließen',
|
||
'settings.libraryLoading': 'Laden...',
|
||
'settings.libraryNoResults': 'Keine Elemente entsprechen Ihrer Suche.',
|
||
'settings.libraryEnabled': 'Aktiviert',
|
||
'settings.libraryDisabled': 'Deaktiviert',
|
||
'settings.connectorsNavHint': 'Externe Systemverbindungen',
|
||
'settings.connectorsHint': 'Verwalte Connector- und Tool-Anbieter-Einstellungen für dieses Gerät.',
|
||
'settings.connectorsComposioApiKey': 'Composio-API-Schlüssel',
|
||
'settings.connectorsSavedTitle': 'Im lokalen Daemon gespeichert',
|
||
'settings.connectorsSavedWithTail': 'Gespeichert · ••••{tail}',
|
||
'settings.connectorsSaved': 'Gespeichert',
|
||
'settings.connectorsGetApiKey': 'API-Schlüssel abrufen',
|
||
'settings.connectorsReplaceKeyPlaceholder': 'Neuen Schlüssel einfügen, um den gespeicherten zu ersetzen',
|
||
'settings.connectorsApiKeyPlaceholder': 'Composio-API-Schlüssel einfügen',
|
||
'settings.connectorsClear': 'Löschen',
|
||
'settings.connectorsClearConfirmTitle': 'Gespeicherten Composio-API-Schlüssel löschen?',
|
||
'settings.connectorsClearConfirmBody': 'Beim Entfernen des Schlüssels werden alle Composio-Connectors dieses Workspaces getrennt. Verknüpfte Konten, OAuth-Freigaben und Tool-Zugriffe werden allesamt entfernt.',
|
||
'settings.connectorsClearConfirmContinue': 'Weiter',
|
||
'settings.connectorsClearFinalTitle': 'Damit werden alle Connectors getrennt',
|
||
'settings.connectorsClearFinalBody': 'Dieser Schritt lässt sich nicht rückgängig machen. Nach dem Einfügen eines neuen Schlüssels musst du jede Integration neu verbinden.',
|
||
'settings.connectorsClearFinalConfirm': 'Schlüssel löschen & trennen',
|
||
'settings.connectorsClearArming': 'Einen Moment\u2026',
|
||
'settings.connectorsClearCancel': 'Abbrechen',
|
||
'settings.connectorsSaveKey': "Key speichern",
|
||
'settings.connectorsSaveKeyTitle': "Diesen Key an den lokalen Daemon senden",
|
||
'settings.connectorsKeySaving': "Speichere…",
|
||
'settings.connectorsKeySaved': "Gespeichert ✓",
|
||
'settings.connectorsKeyError': "Key konnte nicht gespeichert werden. Prüfe, ob der lokale Daemon läuft, und versuche es erneut.",
|
||
'settings.connectorsHelpSaved': 'Dein Schlüssel entsperrt den Katalog unten und bleibt im lokalen Daemon. Füge einen neuen Schlüssel ein, um ihn zu ersetzen, oder lösche ihn.',
|
||
'settings.connectorsHelpUnsaved': "Ungespeicherte Änderungen — klicke auf „Key speichern“, um diesen Schlüssel im lokalen Daemon abzulegen und den Katalog unten freizuschalten.",
|
||
'settings.connectorsHelpEmpty': 'Füge einen Schlüssel hinzu, um den Katalog unten zu entsperren. Schlüssel werden lokal im Daemon gespeichert und nie über Umgebungsvariablen gesendet.',
|
||
'settings.connectorsLoadingSavedKey': 'Im lokalen Daemon wird nach einem gespeicherten Schlüssel gesucht…',
|
||
'settings.autosaveSaving': "Speichere…",
|
||
'settings.autosaveSaved': "Alle Änderungen gespeichert",
|
||
'settings.autosaveError': "Änderungen konnten nicht gespeichert werden. Der lokale Daemon ist möglicherweise offline.",
|
||
'settings.libraryToggleLabel': 'Umschalten',
|
||
// Memory (auto-extracted personalization saved as on-disk markdown)
|
||
'settings.memory': 'Speicher',
|
||
'settings.memoryHint': 'Persönliche Fakten, automatisch aus Chats extrahiert',
|
||
'settings.memoryDescription': 'Aus Chats extrahierte Fakten zu deinen Präferenzen, gespeichert als Markdown-Dateien und in jeden Chat eingespielt.',
|
||
'settings.memoryEnabled': 'Aktiviert',
|
||
'settings.memoryDisabled': 'Deaktiviert',
|
||
'settings.memoryEnableLabel': 'Speicher-Injektion aktivieren',
|
||
'settings.memoryDisabledBanner': 'Der Speicher ist derzeit AUS. Bestehende Fakten bleiben auf der Festplatte, werden aber nicht in neue Chats eingespielt.',
|
||
'settings.memoryNew': 'Neuer Eintrag',
|
||
'settings.memoryEdit': 'Bearbeiten',
|
||
'settings.memoryDelete': 'Löschen',
|
||
'settings.memoryPreview': 'Vorschau',
|
||
'settings.memoryEmpty': 'Noch keine Erinnerungen.',
|
||
'settings.memoryEmptyHintZh': '记住: 用户偏好深色主题',
|
||
'settings.memoryEmptyHintEn': 'I prefer dark mode',
|
||
'settings.memoryName': 'Name',
|
||
'settings.memoryDesc': 'Einzeilige Beschreibung',
|
||
'settings.memoryBody': 'Inhalt (Markdown unterstützt)',
|
||
'settings.memoryBodyHint': 'Regel zuerst, dann Zeilen Why und How to apply.',
|
||
'settings.memoryStartersLabel': 'Need a starting point? Click to fill the form:',
|
||
'settings.memoryStarterUserName': 'My role',
|
||
'settings.memoryStarterUserDesc': 'I am a frontend engineer working on a SaaS design tool',
|
||
'settings.memoryStarterUserBody': '- Role: senior frontend engineer\n- Stack: React, TypeScript, Vite\n- Domain: design / collaboration tools\n- Timezone: GMT+8 (Asia/Shanghai)\n\nWhen to apply: any chat — frame examples around web frontend.',
|
||
'settings.memoryStarterFeedbackName': 'UI preferences',
|
||
'settings.memoryStarterFeedbackDesc': 'Dark mode, large body text, low information density',
|
||
'settings.memoryStarterFeedbackBody': '- Theme: dark by default\n- Body text: ≥ 18px\n- Information density: prefer whitespace, fewer items per screen\n\nWhy: less eye strain during long sessions.\nWhen to apply: whenever you generate UI, web pages, or slides.',
|
||
'settings.memoryStarterProjectName': 'Current project',
|
||
'settings.memoryStarterProjectDesc': 'Open Design v0.5 — chat-driven design editor',
|
||
'settings.memoryStarterProjectBody': '- Goal: ship the chat-driven editor this quarter\n- Priorities: streaming render, local multimodal, offline-first\n- Stack: Next.js 16, Express daemon, SQLite\n\nWhen to apply: in any conversation about this project.',
|
||
'settings.memorySaveHint': 'Not auto-saved — click Create / Save to apply.',
|
||
'settings.memoryIndexSaveHint': 'Edits to the index are not auto-saved — click Save index to apply.',
|
||
'settings.memoryIndexUnsaved': 'Unsaved changes',
|
||
'settings.memoryFlashCreated': '✓ Memory created',
|
||
'settings.memoryFlashSaved': '✓ Memory saved',
|
||
'settings.memoryFlashDeleted': '✓ Memory deleted',
|
||
'settings.memoryFlashIndexSaved': '✓ Index saved',
|
||
'settings.memoryFlashPathCopied': '✓ Pfad kopiert',
|
||
'settings.memoryNameLabel': 'Title',
|
||
'settings.memoryTypeLabel': 'Type',
|
||
'settings.memoryDescLabel': 'Description',
|
||
'settings.memoryBodyLabel': 'Content',
|
||
'settings.memoryTypeUser': 'Benutzer',
|
||
'settings.memoryTypeFeedback': 'Feedback',
|
||
'settings.memoryTypeProject': 'Projekt',
|
||
'settings.memoryTypeReference': 'Referenz',
|
||
'settings.memoryIndex': 'MEMORY.md (Index)',
|
||
'settings.memoryIndexSave': 'Index speichern',
|
||
'settings.memoryIndexReset': 'Zurücksetzen',
|
||
'settings.memoryToastChanged': 'Speicher aktualisiert',
|
||
'settings.memoryToastClickHint': 'Anzeigen',
|
||
'settings.memoryAll': 'Alle',
|
||
'settings.memoryExtractions': 'Extraction history',
|
||
'settings.memoryExtractionsHint': 'Recent LLM-backed extraction attempts. Heuristic regex extraction always runs first; LLM extraction runs in the background after each turn.',
|
||
'settings.memoryExtractionsEmpty': 'No extractions yet. The next chat turn will populate this list.',
|
||
'settings.memoryExtractionsRefresh': 'Refresh',
|
||
'settings.memoryExtractionsRefreshing': 'Refreshing…',
|
||
'settings.memoryExtractionPhaseRunning': 'Running…',
|
||
'settings.memoryExtractionPhaseSuccess': 'Success',
|
||
'settings.memoryExtractionPhaseSkipped': 'Skipped',
|
||
'settings.memoryExtractionPhaseFailed': 'Failed',
|
||
'settings.memoryExtractionSkipNoProvider': 'No API key configured for LLM memory extraction.',
|
||
'settings.memoryExtractionSkipDisabled': 'Memory is disabled.',
|
||
'settings.memoryExtractionSkipEmpty': 'Empty user message — nothing to extract.',
|
||
'settings.memoryExtractionSkipNoMatch': 'No regex pattern matched this turn.',
|
||
'settings.memoryExtractionKindHeuristic': 'regex',
|
||
'settings.memoryExtractionKindLlm': 'LLM',
|
||
'settings.memoryExtractionProviderEnv': 'env',
|
||
'settings.memoryExtractionProviderMediaConfig': 'media settings',
|
||
'settings.memoryExtractionProposed': 'proposed',
|
||
'settings.memoryExtractionWritten': 'written',
|
||
'settings.memoryExtractionDuration': 'in',
|
||
'settings.memoryNoProviderBannerTitle': 'LLM memory extraction is not running',
|
||
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
|
||
'settings.memoryExtractionProviderOverride': 'memory settings',
|
||
'settings.memoryExtractionDelete': 'Delete',
|
||
'settings.memoryExtractionsClear': 'Clear',
|
||
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
|
||
'settings.libraryInstall': 'Installieren',
|
||
'settings.libraryInstallGithub': 'GitHub',
|
||
'settings.libraryInstallLocal': 'Lokaler Pfad',
|
||
'settings.libraryInstallUrl': 'https://github.com/owner/repo',
|
||
'settings.libraryInstallPath': '/path/to/skill-folder',
|
||
'settings.libraryInstallButton': 'Installieren',
|
||
'settings.libraryUninstall': 'Deinstallieren',
|
||
'settings.libraryBuiltIn': 'Integriert',
|
||
'settings.libraryInstalled': 'Installiert',
|
||
'notify.successTitle': 'Aufgabe abgeschlossen',
|
||
'notify.failureTitle': 'Aufgabe fehlgeschlagen',
|
||
'notify.successBody': 'Eine Runde ist abgeschlossen.',
|
||
'notify.failureBody': 'Die Aufgabe wurde mit einem Fehler beendet.',
|
||
'updater.available': 'Update verfügbar',
|
||
'updater.downloading': 'Update wird heruntergeladen',
|
||
'updater.downloadingPercent': 'Update wird heruntergeladen {percent}%',
|
||
'updater.done': 'Fertig',
|
||
'updater.failed': 'Update fehlgeschlagen',
|
||
'updater.installerOpenBody': 'Der Installer ist geöffnet. Beenden Sie Open Design, bevor Sie die App ersetzen.',
|
||
'updater.installerOpened': 'Installer geöffnet',
|
||
'updater.later': 'Später',
|
||
'updater.openFailedFallback': 'Der Installer konnte nicht geöffnet werden.',
|
||
'updater.openInstaller': 'Installer öffnen',
|
||
'updater.opening': 'Wird geöffnet...',
|
||
'updater.quitButton': 'Open Design beenden',
|
||
'updater.quitFailedBody': 'Open Design konnte nicht beendet werden.',
|
||
'updater.quitFailedTitle': 'Beenden fehlgeschlagen',
|
||
'updater.quitting': 'Wird beendet...',
|
||
'updater.ready': 'Update bereit',
|
||
'updater.readyGeneric': 'Eine neue Version ist bereit.',
|
||
'updater.readyVersion': 'Open Design {version} ist bereit.',
|
||
'settings.memoryModelInlineLabel': 'Memory model',
|
||
'settings.memoryModelInlineSameAsChat': 'Same as chat',
|
||
'settings.memoryModelInlineSameAsChatWithModel': 'Same as chat ({model})',
|
||
'settings.memoryModelInlineSameAsChatWithProvider': 'Same as chat ({provider})',
|
||
'settings.memoryModelInlineHintCli': 'Optional. The memory extractor uses an env-var or media-providers API key on this provider; pinning a model here just overrides the auto-pick.',
|
||
'settings.memoryModelInlineHintCliConstrained': 'Optional. Memory will call {provider}; needs an env-var or media-providers API key for that provider, or pick a model below to override.',
|
||
'settings.memoryModelInlineHintByok': 'Optional. Reuses your chat API key on the same provider — picking a different (usually cheaper) model only changes the request body.',
|
||
'settings.memoryModelInlineFlashSaved': 'Saved',
|
||
'settings.memoryModelInlineFlashCleared': 'Cleared',
|
||
'settings.orbit.eyebrow': 'Automatisierung',
|
||
'settings.orbit.title': 'Orbit',
|
||
'settings.orbit.navHint': 'Tägliche Connector-Zusammenfassung',
|
||
'settings.orbit.lede': 'Connector-Aktivität nach Zeitplan sammeln und das Ergebnis als aktualisierbares live artifact veröffentlichen.',
|
||
'settings.orbit.statusOnTitle': 'Geplante tägliche Läufe sind aktiv',
|
||
'settings.orbit.statusOffTitle': 'Geplante tägliche Läufe sind deaktiviert',
|
||
'settings.orbit.statusActive': 'Aktiv',
|
||
'settings.orbit.statusOff': 'Aus',
|
||
'settings.orbit.runTitle': 'Einen Orbit-Lauf starten und die Live-Konversation öffnen',
|
||
'settings.orbit.running': 'Läuft…',
|
||
'settings.orbit.runOpen': 'Jetzt ausführen',
|
||
'settings.orbit.dailySummaryTitle': 'Tägliche Zusammenfassung',
|
||
'settings.orbit.dailySummarySub': 'Wird einmal pro Tag zur geplanten lokalen Zeit ausgeführt.',
|
||
'settings.orbit.on': 'Ein',
|
||
'settings.orbit.off': 'Aus',
|
||
'settings.orbit.runTimeTitle': 'Ausführungszeit',
|
||
'settings.orbit.runTimeSub': 'Standard 08:00. Speichern, um den Daemon-Zeitplan anzuwenden.',
|
||
'settings.orbit.runTimeAria': 'Tägliche Orbit-Ausführungszeit',
|
||
'settings.orbit.nextRun': 'Nächster Lauf',
|
||
'settings.orbit.nextRunScheduledAfterSave': 'Nach dem Speichern geplant',
|
||
'settings.orbit.schedule': 'Zeitplan',
|
||
'settings.orbit.pausedManualOnly': 'Pausiert — nur manuelle Läufe',
|
||
'settings.orbit.templateTitle': 'Prompt-Vorlage',
|
||
'settings.orbit.templateMissing': 'Vorlage {id} ist nicht installiert.',
|
||
'settings.orbit.templateMissingOption': '{id} (fehlt)',
|
||
'settings.orbit.templateMissingInstall': 'Installiere eine Orbit-Skill, um den Prompt zu steuern.',
|
||
'settings.orbit.templateMissingPickAnother': 'Wähle eine andere Vorlage aus dem Dropdown.',
|
||
'settings.orbit.templateResetTitle': 'Auf {id} zurücksetzen',
|
||
'settings.orbit.templateReset': 'Zurücksetzen',
|
||
'settings.orbit.templateHelp': 'Steuere Orbit mit einer Skill — der Beispiel-Prompt der ausgewählten Vorlage wird in jeden Orbit-Lauf eingefügt, damit Zusammenfassungen dieser Vorlagenform folgen.',
|
||
'settings.orbit.templateAria': 'Orbit-Prompt-Vorlage',
|
||
'settings.orbit.templatesLoading': 'Vorlagen werden geladen…',
|
||
'settings.orbit.templatesOptgroup': 'Orbit-Skill-Vorlagen',
|
||
'settings.orbit.lastRun': 'Letzter Lauf',
|
||
'settings.orbit.triggerManual': 'Manuell',
|
||
'settings.orbit.triggerScheduled': 'Geplant',
|
||
'settings.orbit.meterAria': '{succeeded} erfolgreich, {skipped} übersprungen, {failed} fehlgeschlagen von {checked} geprüft',
|
||
'settings.orbit.countChecked': 'Geprüft',
|
||
'settings.orbit.countSucceeded': 'Erfolgreich',
|
||
'settings.orbit.countSkipped': 'Übersprungen',
|
||
'settings.orbit.countFailed': 'Fehlgeschlagen',
|
||
'settings.orbit.runError': 'Orbit konnte nicht ausgeführt werden. Stelle sicher, dass der lokale Daemon läuft und Connectors konfiguriert sind.',
|
||
'settings.orbit.gateAriaLabel': "Connectors werden für Orbit benötigt",
|
||
'settings.orbit.gateEyebrow': "Einrichtung erforderlich",
|
||
'settings.orbit.gateTitle': "Verbinde ein Tool, um Orbit zu nutzen",
|
||
'settings.orbit.gateBody': "Orbit fasst die Aktivität deiner Connectors zusammen. Du hast noch nichts verbunden — füge mindestens eine Integration hinzu, damit Orbit etwas zu berichten hat.",
|
||
'settings.orbit.gateBodyNoKey': "Orbit fasst die Aktivität deiner Connectors zusammen, und Connectors laufen über Composio. Trage einen Composio-API-Key unter Connectors ein, um den Katalog freizuschalten und deine erste Integration zu wählen.",
|
||
'settings.orbit.gateAction': "Connectors öffnen",
|
||
'settings.orbit.gateActionNoKey': "Composio konfigurieren",
|
||
'settings.orbit.gateLoading': "Connectors werden geprüft…",
|
||
'settings.orbit.controlsLockedBadge': "Gesperrt",
|
||
'settings.orbit.controlsLockedHint': "Verbinde ein Tool, um Zeitplan und Vorlage von Orbit freizuschalten.",
|
||
'settings.orbit.artifactKickerLive': 'live artifact',
|
||
'settings.orbit.artifactKickerLegacy': 'Legacy-Zusammenfassung',
|
||
'settings.orbit.artifactTitle': 'Tägliche Orbit-Aktivitätszusammenfassung',
|
||
'settings.orbit.artifactMetaLive': 'Aktualisierbares HTML-Artefakt, erzeugt aus Connector-Aktivität.',
|
||
'settings.orbit.artifactMetaLegacy': 'Erzeugt, bevor live artifact-Unterstützung aktiviert wurde — führe Orbit erneut aus, um eines zu veröffentlichen.',
|
||
'settings.orbit.copyMarkdownTitle': 'Markdown-Zusammenfassung in die Zwischenablage kopieren',
|
||
'settings.orbit.copied': 'Kopiert',
|
||
'settings.orbit.copy': 'Kopieren',
|
||
'settings.orbit.openArtifact': 'Artefakt öffnen',
|
||
'settings.orbit.sourceMarkdown': 'Quell-Markdown',
|
||
'liveArtifact.viewer.tabPreview': 'Vorschau',
|
||
'liveArtifact.viewer.tabCode': 'Code',
|
||
'liveArtifact.viewer.tabData': 'Daten',
|
||
'liveArtifact.viewer.tabRefreshHistory': 'Aktualisierungsverlauf',
|
||
'liveArtifact.viewer.dataEmpty': 'Kein data.json-Cache verfügbar.',
|
||
'liveArtifact.viewer.code.templateHeading': 'Vorlagen-HTML',
|
||
'liveArtifact.viewer.code.renderedHeading': 'Gerendertes HTML',
|
||
'liveArtifact.viewer.code.templateHelp': 'Die bearbeitbare Vorlage, die mit data.json zum Erzeugen der Vorschau verwendet wird.',
|
||
'liveArtifact.viewer.code.renderedHelp': 'Die erzeugte index.html, die derzeit von der Vorschau geladen wird.',
|
||
'liveArtifact.viewer.code.variantAria': 'Code-Variante',
|
||
'liveArtifact.viewer.code.variantTemplate': 'Vorlage',
|
||
'liveArtifact.viewer.code.variantRendered': 'Gerendert',
|
||
'liveArtifact.viewer.code.loading': 'Code wird geladen…',
|
||
'liveArtifact.viewer.code.unavailable': 'Code ist noch nicht verfügbar.',
|
||
'liveArtifact.viewer.code.empty': 'Diese Codedatei ist leer.',
|
||
// Diagnostics export
|
||
'diagnostics.exportTitle': 'Diagnose exportieren',
|
||
'diagnostics.exportButton': 'Diagnose exportieren',
|
||
'diagnostics.exportHint': 'Bündelt die aktuellen App-Logs und Geräteinformationen in ein Zip-Archiv, das du mit dem Team teilen kannst.',
|
||
'diagnostics.exporting': 'Exportiere…',
|
||
'diagnostics.exportSuccess': 'Diagnose gespeichert: {path}',
|
||
'diagnostics.exportFailed': 'Diagnose-Export fehlgeschlagen: {message}',
|
||
};
|