const messages = { home: { settingsTitle: "Settings", settingsDescription: "Language and agent preferences", title: "Your app is running", intro: "Start building by editing", actionCardTitle: "Action-backed data", loadingAction: "Loading action result...", docsTitle: "Documentation", docsDescription: "Learn the framework", themeTitle: "Theme", themeDescription: "Toggle dark / light", }, settings: { title: "Settings", description: "Language and workspace preferences for this app.", languageTitle: "Language", languageDescription: "Choose the interface language. This preference is saved for your account.", languageLabel: "Interface language", agentTitle: "Manage agent", agentDescription: "Manage the agent's model, API keys, automations, voice, and other controls.", openAgentSettings: "Manage agent", workspaceTitle: "Workspace", workspaceDescription: "Manage team access and shared workspace resources.", openTeamSettings: "Open team settings", openResourceSettings: "Open resource settings", backHome: "Back to home", }, dispatch: { nav: { chat: "Chat", overview: "Overview", apps: "Apps", metrics: "Metrics", vault: "Vault", integrations: "Integrations", agents: "Agents", resources: "Resources", messaging: "Messaging", destinations: "Destinations", identities: "Identities", approvals: "Approvals", automations: "Automations", delivery: "Delivery", audit: "Audit", dreams: "Dreams", threadDebug: "Thread Debug", settings: "Settings", team: "Team", operations: "Operations", navigation: "Navigation", navigationDescription: "Workspace navigation links", }, sidebar: { workspaceControlPlane: "Workspace control plane", workspaceSubtitle_one: "Workspace · {{count}} app", workspaceSubtitle_other: "Workspace · {{count}} apps", chats: "Chats", newChat: "New chat", newDispatchChat: "New Dispatch chat", renameChat: "Rename chat", renameThread: "Rename {{title}}", chatOptions: "Chat options for {{title}}", aboutPage: "About {{title}}", emptyAgentText: "Create apps, manage vault keys, and route work across the workspace.", suggestionBuildApp: "Build a workspace app for X", suggestionRouteSlack: "Route Slack mentions to my analytics app", suggestionGrantKey: "Grant my OpenAI key to this app", }, pages: { appsDescription: "Open workspace apps and start new app creation from Dispatch.", appsDescriptionWithWorkspace: 'Apps in the "{{workspace}}" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.', appsInWorkspace: "Apps in {{workspace}}", workspaceApps: "Workspace apps", otherApps: "Other apps", otherAppsDescription: "Open other apps available to you.", availableCount: "{{count}} available", activeCount: "{{count}} active", hiddenCount: "{{count}} hidden", createApp: "Create app", templates: "Templates", checkingTemplates: "Checking available templates", templatesAvailable: "{{count}} available to scaffold", curatedTemplates: "Curated templates", curatedTemplatesDescription: "Start from a reviewed app shape, then make it your own.", remix: "Create from template", remixTemplate: "Create {{name}} app", remixAppIdLabel: "New app id", remixStarted: "Started creating {{name}}", viewLiveApp: "View live app", alreadyInWorkspace: "Already in workspace", remixAppIdDescription: "Choose the URL-safe id for the new workspace app.", integrationSetup: "Integration setup", source: "Source", remixing: "Creating app…", remixSuccess: "Template app creation started.", remixError: "Could not create an app from this template", appIdRequired: "App ID is required.", hide: "Hide", show: "Show", hiddenApps: "Hidden apps", hiddenAppCount: "{{count}} hidden apps", workspaceAppFallback: "Workspace App", workspaceAppDescription: "Open a deployed app or check the status of an app being created.", pageNotFound: "Page not found", pageNotFoundDescription: "This route is not in the workspace app list yet.", browseApps: "Browse apps", newApp: "New App", newAppDescription: "Create a workspace app from a prompt and apply the workspace vault policy.", destinationsDescription: "Saved outbound Slack channels, Telegram chats, and thread targets.", savedDestinations: "Saved destinations", addDestination: "Add destination", quickTestMessage: "Quick test message", send: "Send", delete: "Delete", cancel: "Cancel", messageSent: "Message sent", unableToSendMessage: "Unable to send message", destinationSaved: "Destination saved", destinationRemoved: "Destination removed", deleteDestinationTitle: "Delete destination?", deleteDestinationDescription: '"{{name}}" will be removed. Any saved workflows or jobs that target this destination will start failing on the next send.', noDestinations: "No destinations saved yet. Add your first Slack channel or Telegram chat on the right.", dailyDigestChannel: "Daily digest channel", optionalThreadOrTopicId: "Optional thread or topic id", destinationNotes: "What should use this destination?", saveDestination: "Save destination", noWorkspaceApps: "No workspace apps yet", noWorkspaceAppsDescription: "Create an app when a workflow needs its own focused place to live.", appNotFound: "App not found", building: "Building", appBuildingPrefix: "This app is being created. It will be available at", appBuildingSuffix: "after its branch is merged and the workspace deploy finishes.", branch: "Branch: {{branch}}", openBuilderBranch: "Open Builder branch", openingApp: "Opening {{name}}", redirectingTo: "Redirecting to", openApp: "Open app", notDispatchOrWorkspaceApp: " a Dispatch tab or a workspace app in this workspace.", agentsDescription: "Dispatch can delegate to the built-in app suite over A2A by default. Add extra agents here only if you want to route work to apps outside that built-in set.", mcpAccessUpdated: "MCP app access updated", selectAppForMcp: "Select at least one app, or expose all apps.", mcpUrlCopied: "MCP URL copied", mcpUrlCopyFailed: "Could not copy MCP URL", unifiedMcpGateway: "Unified MCP gateway", unifiedMcpGatewayDescription: "Connect external agents to Dispatch once, then route to granted workspace apps through", allApps: "All apps", selectedApps: "Selected apps", loading: "Loading", grantedCount: "{{count}} granted", exposeAllAppsMcp: "Expose all apps through Dispatch MCP", copyUrl: "Copy URL", metricsUnavailable: "Metrics unavailable", unableToLoadUsage: "Unable to load usage.", metricsDescriptionBuilder: "Workspace-wide Builder.io credit spend, chat volume, user activity, and app access.", metricsDescriptionLlm: "Workspace-wide LLM spend, chat volume, user activity, and app access.", llmCalls: "LLM calls", activeUsers: "Active users", workspaceAppsStat: "Workspace apps", chatThreads: "Chat threads", also: "Also", workspaceShortcutsAria: "Workspace shortcuts", deliveryQueue: "Delivery queue", failedLastHour: "{{count}} failed in the last hour", processingCount: "{{count}} processing", queued: "Queued", active: "Active", done1h: "Done 1h", failed1h: "Failed 1h", oldestQueued: "Oldest queued: {{age}}", queueAgeNone: "none", queueFailureHint: "Check credentials, destinations, and recent queue errors.", unknownPlatform: "unknown", attemptsCount: "{{count}} attempts", noErrorMessage: "(no error message)", }, }, agentPanel: { useBuilder: "Use Builder", openDesktopToEditCode: "Open Desktop to edit code", codeUnavailableDescription: "Source-code changes and CLI access are available in the Agent Native Desktop app.", downloadDesktop: "Download Desktop", chatMode: "Chat mode", chat: "Chat", cliTerminalMode: "CLI terminal mode", cli: "CLI", workspaceMode: "Files, agents, skills, and tasks", workspace: "Resources", newChat: "New chat", newTerminal: "New terminal", panelOptions: "Agent panel options", collapseSidebar: "Collapse sidebar", hideChats: "Hide chats", allChats: "All chats", settings: "Settings", feedback: "Feedback", exitFullscreen: "Exit fullscreen", fullscreen: "Fullscreen", closeTab: "Close tab", closeOtherTabs: "Close other tabs", closeAllTabs: "Close all tabs", clearChat: "Clear chat", cliRequiresDevMode: "CLI requires dev mode", cliRequiresDevModeDescription: "Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.", toggleAgent: "Toggle agent", }, share: { titleWithResource: 'Share "{{title}}"', titleWithType: "Share {{type}}", owner: "Owner: {{name}}", close: "Close", shareOptions: "Share options", link: "Link", invite: "Invite", embed: "Embed", done: "Done", generalAccess: "General access", shareLink: "Share link", addPeopleByEmail: "Add people by email", notifyPeople: "Notify people", peopleWithAccess: "People with access", ownerRole: "Owner", remove: "Remove", noAccess: "No one has access yet.", embedUrl: "Embed URL", embedCode: "Embed code", copy: "Copy", role: "Role", private: "Private", privateDescription: "Only people with access can view", organization: "Organization", organizationDescription: "Anyone in your organization can view", public: "Public", publicDescription: "Anyone signed in with the link can view", viewer: "Viewer", viewerDescription: "Can view", editor: "Editor", editorDescription: "Can edit", admin: "Admin", adminDescription: "Can edit and manage access", }, runsTray: { runs: "Runs", agentRuns: "Agent runs", activeRun_one: "{{count}} active run", activeRun_other: "{{count}} active runs", failedRun_one: "{{count}} failed run", failedRun_other: "{{count}} failed runs", recentRuns: "Recent runs", noRecentRuns: "No recent runs", ariaAgentRuns: "Agent runs, {{label}}", summaryRunning: "{{activeCount}} running", summaryRunningRecent: "{{activeCount}} running · {{terminalCount}} recent", summaryRecent_one: "{{count}} recent run", summaryRecent_other: "{{count}} recent runs", noTrackedWorkYet: "No tracked work yet", emptyDescription: "Background agent work will appear here while it runs and after it finishes.", open: "Open", stopRun: "Stop {{title}}", hideRun: "Hide {{title}}", statusRunning: "Running", statusDone: "Done", statusFailed: "Failed", statusStopped: "Stopped", updatedJustNow: "Updated just now", finishedJustNow: "Finished just now", updatedMinutes: "Updated {{count}}m ago", finishedMinutes: "Finished {{count}}m ago", updatedHours: "Updated {{count}}h ago", finishedHours: "Finished {{count}}h ago", updatedDate: "Updated {{date}}", finishedDate: "Finished {{date}}", }, codeRequired: { fallbackDetail: "Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.", defaultFeature: "Make the requested code changes to this app", branchError: "Failed to create branch", title: "Code changes required", subtitleWithFeature: '"{{feature}}" creates or modifies source code, which needs Desktop or Builder from this surface.', subtitle: "This action creates or modifies source code, which needs Desktop or Builder from this surface.", desktopTitle: "Use Agent Native Desktop", desktopDescription: "Open the project in the desktop app to enable source edits and CLI access.", builderAgentTitle: "Use Builder.io Agent", builderAgentDescription: "Let our cloud agent make the changes for you. You'll get a link to preview and deploy.", codeChangeTitle: "This requires a code change", codeChangeBadge: "Code change", connectBuilderTitle: "Connect Builder.io", connectBuilderDescription: "Connect Builder to enable cloud-based code changes from this app.", setupRequired: "Setup required", branchCreated: "Branch created", close: "Close", }, extensions: { createPrompt: "Create an extension: {{prompt}}", createWidgetPrompt: 'Create a new widget that fits in slot "{{slotId}}". I\'ll describe what it should do next.', whatShouldItDo: "What should it do?", createPlaceholder: "A todo list, API dashboard, calculator...", title: "Extensions", hiddenShown: "Hiding shown", showHidden: "Show hidden", newExtension: "New Extension", newExtensionTitle: "New extension", buildPlaceholder: "Describe what you'd like to build...", namePlaceholder: "My Extension", descriptionPlaceholder: "What does this extension do?", contentPlaceholder: "...", emptyTitle: "Create your first extension", emptyDescription: "Describe a small app and the agent will build it.", hiddenFromEveryone: "Hidden from everyone", localFile: "Local file", optionsFor: "Options for {{name}}", unhideEveryone: "Unhide for everyone", hideEveryone: "Hide from everyone", localFileDescription: "This extension is backed by {{entryPath}}. Edit or remove it from the workspace.", deleteQuestion: "Archive {{name}}?", removeQuestion: "Remove {{name}}?", hideForYouDescription: "This hides it from your Extensions list without deleting it for anyone else.", removeEverywhereDescription: "This archives it everywhere it is shared.", cancel: "Cancel", remove: "Remove", removing: "Removing...", delete: "Archive", deleting: "Archiving...", openFullView: "Open full view", removeFromWidgetArea: "Remove from this widget area", deleteExtensionEllipsis: "Archive extension...", removeFromMyListEllipsis: "Remove from my list...", removeFromWidgetAreaForMe: "Remove from this widget area (for me)", deleteEverywhereConfirmation: "This archives the extension everywhere, for everyone it's shared with.", addWidget: "Add widget", loading: "Loading...", noWidgetsAvailable: "No widgets available for this slot yet.", buildNewWidget: "Build a new widget", contactSidebarWidget: "Contact sidebar widget", contactSidebarDescription: "Appears beside the current conversation with contact and thread context.", eventDetailWidget: "Event detail widget", eventDetailDescription: "Appears below the open calendar event with event and attendee context.", addWidgetHere: "Add widget here", back: "Back", editExtension: "Edit Extension", saving: "Saving...", save: "Save", create: "Create", moreOptions: "More options", appearsIn: "Appears in", noWidgetAreas: "Not installed in any widget areas. Ask the agent to add it somewhere.", widgetAreaCount_one: "This extension can render in {{count}} widget area.", widgetAreaCount_other: "This extension can render in {{count}} widget areas.", nameLabel: "Name", descriptionLabel: "Description", contentLabel: "Content", previewTitle: "Extension preview", previewEmpty: "Preview will appear here", loadError: "Couldn't load extensions.", widgetsLoadError: "Couldn't load widgets.", widgetAreasLoadError: "Couldn't load widget areas.", historyLoadError: "Couldn't load extension history.", versionLoadError: "Couldn't load this extension version.", retry: "Retry", }, org: { createTitle: "Create your organization", createDescription: "This app organizes your content by team. Create an organization to continue - you can invite teammates afterward.", loadErrorTitle: "Couldn't load organization", loadErrorFallback: "Couldn't load organization.", tryAgain: "Try again", yourOrganization: "Your organization", joinYourTeam: "Join your team", openToDomainEmails: "Open to @{{domain}} emails", joinOrg: "Join {{name}}", pendingInvitations: "Pending invitations", invitedBy: "from {{name}}", accept: "Accept", createSeparate: "or create a separate organization", organizationName: "Organization name", organizationPlaceholder: "Acme Inc.", createOrganization: "Create organization", create: "Create", creating: "Creating...", team: "Team", createOrgCardTitle: "Create an Organization", createOrgCardDescription: "Set up a team to collaborate with your colleagues.", joinDomainOne: "An organization matching your email domain already exists. Join it to collaborate with your teammates.", joinDomainMany: "Organizations matching your email domain already exist. Join one to collaborate with your teammates.", join: "Join", invitedByLabel: "Invited by {{name}}", you: "You", owner: "Owner", admin: "Admin", member: "Member", members: "Members", inviteMembers: "Invite members", invited: "Invited", role: "Role", status: "Status", actions: "Actions", noMembers: "No members yet.", memberCount_one: "{{count}} member", memberCount_other: "{{count}} members", youAreRole: "You are {{role}}", changeRole: "Change role", removeMember: "Remove member", cancel: "Cancel", remove: "Remove", save: "Save", loading: "Loading...", dangerZone: "Danger zone", deleteOrg: "Delete organization", deleteOrgDescription: "Permanently deletes this organization, its members, and its pending invitations. Data owned by the organization becomes inaccessible. This cannot be undone.", deleteOrgConfirmPrompt: "Type {{name}} to confirm.", deleteOrgConfirmPlaceholder: "Organization name", deleteOrgConfirmCta: "Delete organization", deleteOrgPending: "Deleting…", }, integrations: { webhookUrl: "Webhook URL", copyWebhookUrl: "Copy webhook URL", notConfigured: "Not configured. Set the required secrets to enable this integration.", enable: "Enable", disable: "Disable", toggling: "...", networkError: "Network error reaching the server", back: "Back", agentEngineRequired: "Agent engine required", agentEngineDescription: "Connect Builder.io or an LLM key before {{platform}} can answer.", openLlm: "Open LLM", setup: "Setup", shareDocumentsWith: "Share documents with", copyServiceAccountEmail: "Copy service account email", requiredSecrets: "Required secrets", envHelp: "Set these in your .env file or environment to connect.", copy: "Copy", documentation: "Documentation", clientAvailable: "This agent's A2A endpoint is automatically available. No configuration needed.", addChatIntegration: "Add a chat integration", chatIntegrations: "Chat Integrations", chatIntegrationsDescription: "Talk to this agent from other platforms", addIntegration: "Add integration", dispatchEntrypoint: "For a central Slack or Telegram entrypoint that can route work across multiple apps, use the", sharedMessaging: "Need one shared messaging surface for your workspace? Connect Slack or Telegram to a dispatch app and let it delegate to other agents over A2A.", }, observability: { noData: "No data available", noConversations: "No conversations recorded yet", noEvals: "No eval results recorded yet", noExperiments: "No experiments created yet", totalRuns: "Total runs", totalCost: "Total cost", avgLatency: "Avg latency", toolSuccess: "Tool success", thumbsUp: "Thumbs up", avgEvalScore: "Avg eval score", run: "Run", model: "Model", duration: "Duration", cost: "Cost", tools: "Tools", time: "Time", failedCount: "({{count}} failed)", backToList: "Back to list", spans: "Spans", type: "Type", name: "Name", tokens: "Tokens", status: "Status", totalEvals: "Total evals", avgScore: "Avg score", scoresByCriteria: "Scores by criteria", overview: "Overview", conversations: "Conversations", evals: "Evals", experiments: "Experiments", feedback: "Feedback", variants: "Variants", created: "Created", backToExperiments: "Back to experiments", metrics: "Metrics", level: "Level", results: "Results", variant: "Variant", metric: "Metric", value: "Value", totalFeedback: "Total feedback", thumbsDown: "Thumbs down", frustration: "Frustration", thumbsUpRate: "Thumbs up rate", categories: "Categories", }, error: { genericTitle: "Something went wrong", genericDetails: "An unexpected error occurred.", notFoundTitle: "Page not found", notFoundDetails: "This page doesn't exist. It may have been moved or deleted.", statusTitle: "{{status}} Error", goHome: "Go home", }, }; export default messages;