Files
multica/packages/views/locales/en/settings.json
dixonl90 581d9527ba feat(vcs): self-hosted Git providers (Forgejo, Gitea, GitLab) alongside GitHub (MUL-3772) (#5006)
Adds self-hosted Git provider support (Forgejo, Gitea, GitLab) alongside GitHub:
per-workspace token connection, a provider-dispatched webhook, PR/MR and CI
mirroring, and the shared issue auto-link / auto-close machinery. Off until
MULTICA_VCS_SECRET_KEY is set, so existing deployments are unaffected.

Co-authored-by: Bohan <bohan@devv.ai>
2026-07-24 15:01:27 +08:00

724 lines
36 KiB
JSON

{
"auto_save": {
"saving": "Saving…",
"saved": "Saved",
"failed": "Couldn't save",
"toast_saved": "Changes saved"
},
"preferences": {
"general_title": "General",
"theme": {
"title": "Theme",
"light": "Light",
"dark": "Dark",
"system": "System"
},
"language": {
"title": "Language",
"english": "English",
"chinese": "中文",
"korean": "한국어",
"japanese": "日本語",
"sync_failed": "Language saved on this device, but failed to sync to your account. Other devices may show the previous language."
},
"timezone": {
"title": "Viewing Timezone",
"browser_suffix": " (browser)",
"hint": "Used for dashboards, charts, and any 'today' label shown to you. It's a personal preference that applies across all your workspaces.",
"sync_failed": "Failed to save your timezone preference."
},
"sticky_comment_bar": {
"title": "Sticky comment bar",
"hint": "Keep the comment bar pinned to the bottom while scrolling an issue page."
},
"issue_link_new_tab": {
"title": "Open issue links in new tab",
"hint": "Issue links in descriptions, comments, and chat open in a new tab instead of navigating in place."
}
},
"shortcuts": {
"title": "Keyboard Shortcuts",
"description": "Customize product actions on this device. Click a shortcut, then press the new key combination.",
"search_placeholder": "Search actions...",
"reset_all": "Restore defaults",
"reset_confirm": {
"title": "Restore all shortcut defaults?",
"description": "This will remove every custom shortcut and restore the defaults on this device.",
"cancel": "Cancel",
"confirm": "Restore all defaults"
},
"reset": "Reset",
"disable": "Disable",
"reset_action": "Reset {{action}}",
"disable_action": "Disable {{action}} shortcut",
"record_aria": "Change shortcut for {{action}}",
"recording": "Press keys",
"record_hint": "Esc cancels · Delete clears",
"unassigned": "Unassigned",
"no_results": "No matching shortcut actions.",
"conflict_error": "Already used by {{action}}.",
"reserved_error": "Reserved by the browser or desktop window.",
"send_error": "Send can only use Enter or Mod+Enter.",
"unsafe_error": "This key would interfere with typing or basic keyboard navigation.",
"send_enter_hint": "Shift+Enter inserts a paragraph, continues a list, or adds a code-block newline.",
"categories": {
"general": "General",
"navigation": "Navigation"
},
"actions": {
"openSearch": { "label": "Open search", "description": "Search and run commands from anywhere." },
"createIssue": { "label": "Create issue", "description": "Open your preferred issue creation flow." },
"toggleSidebar": { "label": "Toggle sidebar", "description": "Show or hide the main sidebar." },
"findInIssue": { "label": "Find in issue", "description": "Search within the open issue detail." },
"send": { "label": "Send", "description": "Send chat messages, comments, replies, feedback, and prompts, and create issues in the create dialog." },
"goInbox": { "label": "Go to Inbox", "description": "Open the workspace inbox." },
"goChat": { "label": "Go to Chat", "description": "Open workspace chat." },
"goMyIssues": { "label": "Go to My Issues", "description": "Open issues assigned to you." },
"goIssues": { "label": "Go to Issues", "description": "Open the issue list." },
"goProjects": { "label": "Go to Projects", "description": "Open the project list." },
"goAutopilots": { "label": "Go to Autopilot", "description": "Open workspace automations." },
"goAgents": { "label": "Go to Agents", "description": "Open the agent list." },
"goSquads": { "label": "Go to Squads", "description": "Open the squad list." },
"goUsage": { "label": "Go to Usage", "description": "Open usage analytics." },
"goRuntimes": { "label": "Go to Runtimes", "description": "Open runtime configuration." },
"goSkills": { "label": "Go to Skills", "description": "Open the skill library." },
"goSettings": { "label": "Go to Settings", "description": "Open workspace settings." }
},
"fixed": {
"title": "Fixed system shortcuts",
"description": "Window and accessibility shortcuts stay fixed so they remain reliable. Zoom and tab controls apply to the desktop app.",
"close_tab": "Close active tab",
"zoom_in": "Zoom in",
"zoom_out": "Zoom out",
"reset_zoom": "Reset zoom",
"close_dialog": "Close dialog or menu"
}
},
"chat": {
"floating_title": "Floating window",
"floating_label": "Floating chat window",
"floating_hint": "Show the floating chat button in the corner of every page. Off by default — turn it on to summon chat anywhere; when off, Chat lives only in this tab."
},
"issue": {
"description": "Choose which fields each create dialog keeps on its toolbar. Hidden fields stay available from the ⋯ menu and reappear while they hold a value.",
"quick_create_title": "Create with agent",
"quick_create_description": "Fields shown in the quick create toolbar.",
"manual_create_title": "Create manually",
"manual_create_description": "Fields shown in the manual create toolbar.",
"fields": {
"status": "Status",
"priority": "Priority",
"assignee": "Assignee",
"labels": "Labels",
"project": "Project",
"due_date": "Due date",
"start_date": "Start date"
}
},
"page": {
"title": "Settings",
"my_account": "My Account",
"workspace_fallback": "Workspace",
"tabs": {
"profile": "Profile",
"preferences": "Preferences",
"shortcuts": "Shortcuts",
"issue": "Issue",
"chat": "Chat",
"notifications": "Notifications",
"tokens": "API Tokens",
"general": "General",
"repositories": "Repositories",
"github": "GitHub",
"integrations": "Integrations",
"labs": "Labs",
"members": "Members",
"labels": "Labels",
"properties": "Properties"
}
},
"properties": {
"title": "Properties",
"description": "Define typed custom properties for issues in this workspace. Values are set on each issue and are readable and writable by agents.",
"search_placeholder": "Filter by name...",
"new_property": "New property",
"show_archived": "Show archived",
"columns": {
"name": "Name",
"type": "Type",
"options": "Options",
"usage": "Used by",
"updated": "Updated"
},
"usage_count_one": "{{count}} issue",
"usage_count_other": "{{count}} issues",
"loading": "Loading properties...",
"empty": "No properties yet",
"empty_hint": "Create typed fields like Severity or Environment — agents can read and write them with validation.",
"no_results": "No matching properties",
"save_failed": "Couldn't save property",
"limit_hint": "{{count}}/{{max}} active properties",
"archived_badge": "Archived",
"types": {
"text": "Text",
"number": "Number",
"select": "Select",
"multi_select": "Multi-select",
"date": "Date",
"checkbox": "Checkbox",
"url": "URL"
},
"actions": {
"open": "Actions for {{name}}",
"edit": "Edit",
"archive": "Archive",
"unarchive": "Restore"
},
"editor": {
"create_title": "New property",
"edit_title": "Edit property",
"admin_hint": "Only workspace owners and admins can manage property definitions.",
"icon": "Icon",
"choose_icon": "Choose icon",
"remove_icon": "Remove icon",
"name": "Name",
"name_placeholder": "e.g. Severity",
"type": "Type",
"type_locked_hint": "Type can't be changed after creation.",
"description": "Description",
"description_placeholder": "What this property means and when to set it",
"options": "Options",
"option_name_placeholder": "Option name",
"add_option": "Add option",
"remove_option": "Remove option",
"cancel": "Cancel",
"save": "Save property",
"saving": "Saving..."
},
"archive_dialog": {
"title": "Archive property?",
"description": "\"{{name}}\" will be hidden from pickers and filters. Existing values on issues are preserved. You can restore it later.",
"cancel": "Cancel",
"confirm": "Archive property",
"failed": "Couldn't archive property"
}
},
"labels": {
"title": "Labels",
"description": "Manage the separate label catalogs used to organize issues, agents, and skills in this workspace.",
"scopes": {
"issue": "Issues",
"agent": "Agents",
"skill": "Skills"
},
"search_placeholder": "Filter by name or description...",
"new_label": "New label",
"columns": {
"name": "Name",
"description": "Description",
"usage": "Used by",
"updated": "Updated"
},
"usage_count": "{{count}} used",
"loading": "Loading labels...",
"empty": "No {{scope}} labels yet",
"no_results": "No matching labels",
"save_failed": "Couldn't save label",
"actions": {
"open": "Actions for {{name}}",
"edit": "Edit",
"delete": "Delete"
},
"editor": {
"create_title": "New label",
"edit_title": "Edit label",
"scope_hint": "This label belongs only to the {{scope}} catalog.",
"name": "Name",
"name_placeholder": "e.g. Bug",
"description": "Description",
"description_placeholder": "Describe when this label should be used",
"color": "Color",
"cancel": "Cancel",
"save": "Save label",
"saving": "Saving..."
},
"delete_dialog": {
"title": "Delete label?",
"description": "Delete \"{{name}}\"? It will be removed from {{count}} resources. This can't be undone.",
"cancel": "Cancel",
"confirm": "Delete label",
"failed": "Couldn't delete label"
}
},
"account": {
"section_profile": "Personal information",
"avatar_label": "Avatar",
"click_avatar_hint": "Click to upload avatar",
"name_label": "Name",
"profile_description_label": "About you",
"profile_description_hint": "Shared with agents working on your behalf — role, stack, preferences, anything you'd tell a new collaborator on day one.",
"profile_description_placeholder": "e.g. Backend engineer (Go + Postgres). Prefer terse PRs and tests alongside the change.",
"profile_description_too_long": "Profile is too long (max {{max}} characters; currently {{count}}).",
"save": "Update Profile",
"saving": "Updating...",
"toast_avatar_updated": "Avatar updated",
"toast_avatar_failed": "Failed to upload avatar",
"toast_profile_updated": "Profile updated",
"toast_profile_failed": "Failed to update profile"
},
"notifications": {
"title": "Inbox Notifications",
"description": "Control which events generate inbox notifications. Muted event types are silently filtered — you can still see them by visiting the issue directly.",
"toast_failed": "Failed to update notification settings",
"groups": {
"assignments": {
"label": "Assignments",
"description": "When you are assigned or unassigned from an issue"
},
"status_changes": {
"label": "Status changes",
"description": "When an issue you follow changes status (e.g. todo, in progress, done)"
},
"comments": {
"label": "Comments & Mentions",
"description": "New comments on issues you follow, or when someone @mentions you"
},
"updates": {
"label": "Priority & Due date",
"description": "When priority or due date changes on issues you follow"
},
"agent_activity": {
"label": "Agent activity",
"description": "When an agent task completes or fails"
}
},
"system": {
"title": "System Notifications",
"description": "Control native OS notification banners shown when Multica is in the background.",
"label": "Show system notifications",
"hint": "Show a banner from your operating system for new inbox items when the app isn't focused."
},
"browser": {
"label": "Browser notifications",
"hint": "Allow this browser to show notification banners for new inbox items.",
"enable": "Enable",
"granted": "This browser can show notification banners.",
"denied": "Blocked by your browser. Enable notifications for this site in your browser settings.",
"enabled_badge": "Enabled"
}
},
"tokens": {
"title": "API Tokens",
"description": "Personal access tokens allow the CLI and external integrations to authenticate with your account. Use one via multica login --token, or as a Bearer token when calling the API.",
"security_note": "A token grants full access to your account — treat it like a password.",
"empty": "No API tokens yet. Create one above to get started.",
"load_failed": "Could not load your API tokens. Reload the page to try again.",
"name_placeholder": "Token name (e.g. My CLI)",
"expiry": {
"30": "30 days",
"90": "90 days",
"365": "1 year",
"never": "No expiry"
},
"create": "Create",
"creating": "Creating...",
"toast_load_failed": "Failed to load tokens",
"toast_create_failed": "Failed to create token",
"toast_revoked": "Token revoked",
"toast_revoke_failed": "Failed to revoke token",
"metadata_prefix": "{{prefix}}... · Created {{created}} · {{lastUsed}}",
"last_used_with_date": "Last used {{date}}",
"last_used_never": "Never used",
"expires_with_date": " · Expires {{date}}",
"revoke_aria": "Revoke {{name}}",
"revoke_tooltip": "Revoke",
"revoke_dialog": {
"title": "Revoke token",
"description": "This token will be permanently revoked and can no longer be used. This cannot be undone.",
"cancel": "Cancel",
"confirm": "Revoke"
},
"created_dialog": {
"title": "Personal access token created",
"warning_prefix": "Your new personal access token has been created. For security reasons, it is ",
"warning_emphasis": "displayed only once",
"warning_suffix": " — store it securely and never share it. A lost token cannot be recovered; revoke it and create a new one instead.",
"confirm_stored": "I have securely stored this token.",
"copy_tooltip": "Copy token",
"cli_hint": "Sign in to the CLI with:",
"copy_command_tooltip": "Copy command",
"done": "Done"
}
},
"workspace": {
"section_general": "Workspace details",
"logo_label": "Workspace logo",
"change_logo_aria": "Change workspace logo",
"click_logo_hint": "Click the logo to upload a new image",
"toast_logo_updated": "Workspace logo updated",
"toast_logo_failed": "Failed to upload workspace logo",
"name_label": "Name",
"description_label": "Description",
"description_placeholder": "What does this workspace focus on?",
"context_label": "Context",
"context_placeholder": "Background information and context for AI agents working in this workspace",
"slug_label": "Slug",
"issue_prefix_label": "Issue prefix",
"issue_prefix_hint": "Used in issue numbers like {{example}}.",
"prefix_confirm_title": "Change issue prefix?",
"prefix_confirm_description": "All issues will be renumbered from {{oldPrefix}}-N to {{newPrefix}}-N. External references — pull request titles, branch names, links in docs and chat — that use {{oldPrefix}}-N will stop resolving.",
"save": "Save",
"saving": "Saving...",
"manage_hint": "Only admins and owners can update workspace settings.",
"toast_saved": "Workspace settings saved",
"toast_save_failed": "Failed to save workspace settings",
"danger_zone": "Danger Zone",
"leave_title": "Leave workspace",
"leave_sole_owner": "You're the only owner. Promote another member to owner first, or delete the workspace.",
"leave_sole_member": "You're the only member. Delete the workspace to leave.",
"leave_default": "Remove yourself from this workspace.",
"leave_button": "Leave workspace",
"leaving": "Leaving...",
"leave_confirm_title": "Leave workspace",
"leave_confirm_description": "Leave {{name}}? You will lose access until re-invited.",
"toast_leave_failed": "Failed to leave workspace",
"delete_title": "Delete workspace",
"delete_description": "Permanently delete this workspace and its data.",
"delete_button": "Delete workspace",
"deleting": "Deleting...",
"toast_delete_failed": "Failed to delete workspace",
"confirm_cancel": "Cancel",
"confirm_action": "Confirm"
},
"delete_workspace_dialog": {
"title": "Delete workspace",
"description": "This cannot be undone. All issues, agents, and data will be permanently removed.",
"type_to_confirm_prefix": "To confirm, type",
"type_to_confirm_suffix": " below.",
"cancel": "Cancel",
"confirm": "Delete workspace",
"deleting": "Deleting..."
},
"labs": {
"section_placeholder_title": "No experiments yet",
"section_placeholder_description": "Experimental settings will land here as they ship. Today this tab is intentionally empty.",
"toast_failed": "Failed to update setting"
},
"github": {
"page_description": "Connect a GitHub App, control how Pull Requests show up inside Multica, and decide what your agents leave behind in commit history.",
"section_master": "Enable GitHub features",
"master_description_on": "When off, every GitHub UI affordance is hidden and no new side-effects are written. Existing data is kept on the backend. Not a development team? Just turn it off here.",
"master_description_off": "GitHub features are turned off. The PR sidebar, co-author trailer, and auto-link are paused. Data on the backend is not deleted.",
"section_connection": "Connection",
"connection_title": "GitHub App",
"connection_description_prefix": "Link issues to pull requests automatically. When a PR with",
"connection_description_suffix": "in its branch, title, or body is merged, the corresponding issue moves to",
"connection_description_done": "Done",
"connection_identifier_example": "MUL-123",
"connected_to": "Connected to {{login}}",
"connect_github": "Connect GitHub",
"connect_opening": "Opening…",
"connect_disabled_tooltip": "GitHub App is not configured on this server",
"disconnect": "Disconnect",
"disconnecting": "Disconnecting…",
"disconnect_confirm_title": "Disconnect GitHub App",
"disconnect_confirm_description": "Multica will stop receiving webhooks for this installation. Existing PR mirrors and links are kept; reconnect any time to resume updates.",
"disconnect_confirm_cancel": "Cancel",
"disconnect_confirm_action": "Disconnect",
"not_configured": "GitHub integration is not configured for this deployment. Operators must set",
"not_configured_and": "and",
"read_only_hint": "Read-only view. Only workspace admins and owners can connect or disconnect GitHub.",
"contact_admin_to_connect": "GitHub is not connected for this workspace. Ask an admin or owner to set up the GitHub App.",
"connected_by": "Connected by {{name}}",
"toast_not_configured": "GitHub integration is not configured for this deployment",
"toast_open_failed": "Failed to open GitHub install",
"toast_disconnect_failed": "Failed to disconnect GitHub App",
"toast_disconnected": "GitHub App disconnected",
"section_features": "Features",
"feature_pr_sidebar_label": "Pull Request sidebar",
"feature_pr_sidebar_description": "Show linked pull requests inside the issue detail sidebar.",
"feature_co_author_label": "Co-authored-by trailer",
"feature_co_author_description_prefix": "Append",
"feature_co_author_description_suffix": "to commits authored by agents.",
"feature_auto_link_label": "Auto-link issues and PRs",
"feature_auto_link_description": "Match PR titles, bodies, and branch names against issue identifiers and create the link automatically.",
"section_repositories": "Repositories",
"repositories_shortcut_label": "Repository URLs live in the Repositories tab",
"repositories_shortcut_link": "Manage repositories →",
"toast_failed": "Failed to update GitHub settings"
},
"vcs": {
"section_title": "Git providers (self-hosted)",
"page_description": "Connect a self-hosted Forgejo, Gitea, or GitLab instance to mirror pull requests onto issues. Each connection uses an access token; agents push branches and open PRs using the runtime's own Git credentials.",
"connect_title": "Connect a provider instance",
"connected_as": "Connected as {{login}}",
"form_provider_label": "Provider",
"form_instance_url_label": "Instance URL",
"form_token_label": "Access token",
"form_token_placeholder": "Access token",
"form_token_hint": "Create an access token with read access to repositories. Forgejo/Gitea: Settings, Applications. GitLab: a personal access token with the read_api scope.",
"connect": "Connect",
"connecting": "Connecting...",
"disconnect": "Disconnect",
"disconnecting": "Disconnecting...",
"not_configured": "Git provider integration is not configured on this server. Ask an administrator to set",
"contact_admin": "Ask a workspace admin to connect a Git provider instance.",
"webhook_setup_title": "Finish setup in your provider",
"webhook_setup_description": "Add a webhook on your repository or organisation with the URL and secret below. Forgejo/Gitea: choose the Gitea format and the Pull Request (and Commit Status) events. GitLab: paste the secret as the token and enable Merge request and Pipeline events.",
"webhook_url_label": "Webhook URL",
"webhook_secret_label": "Webhook secret",
"webhook_secret_warning": "Copy the secret now. It is shown only once and cannot be retrieved later.",
"copy": "Copy",
"copied": "Copied to clipboard",
"copy_failed": "Could not copy",
"disconnect_confirm_title": "Disconnect this provider?",
"disconnect_confirm_description": "Mirrored pull requests and their issue links for this connection will be removed. This cannot be undone.",
"disconnect_confirm_cancel": "Cancel",
"disconnect_confirm_action": "Disconnect",
"toast_connected": "Provider connected",
"toast_connect_failed": "Could not connect to the provider",
"toast_disconnected": "Provider disconnected",
"toast_disconnect_failed": "Could not disconnect",
"regenerate_webhook": "Regenerate webhook",
"rotate_confirm_title": "Regenerate webhook secret?",
"rotate_confirm_description": "The current webhook secret will stop working immediately. Deliveries from your Git provider will fail until you update the webhook secret in provider settings.",
"rotate_confirm_cancel": "Cancel",
"rotate_confirm_action": "Regenerate",
"rotating": "Regenerating...",
"toast_rotated": "Webhook secret regenerated",
"toast_rotate_failed": "Could not regenerate webhook secret"
},
"lark": {
"section_title": "Lark",
"page_description": "Connect each Multica Agent to a Lark (飞书) PersonalAgent Bot. Members can DM the Bot, @ it in groups, and type /issue to spin up a new Multica issue.",
"not_enabled_title": "Lark integration not enabled",
"not_enabled_description_prefix": "Set",
"not_enabled_description_suffix": "on the server to enable Lark Bot installations.",
"not_enabled_self_host_hint": "Self-hosters: see the project README for details.",
"preview_title": "Lark Bot installation coming soon",
"preview_description": "The at-rest key is set, but the Lark HTTP client is not wired in this build. The install entry point will appear here once the transport is enabled in a follow-up release.",
"connected_bots": "Connected bots",
"loading": "Loading…",
"empty_title": "No bots connected yet",
"empty_description_prefix": "Open an Agent in this workspace and click",
"empty_description_cta": "Bind to Lark",
"empty_description_suffix": "to install a Bot for it.",
"revoked_badge": "revoked",
"region_feishu": "Feishu",
"region_lark": "Lark",
"installed_at_label": "Installed {{when}}",
"disconnect": "Disconnect",
"disconnecting": "Disconnecting…",
"disconnect_confirm_title": "Disconnect this Lark bot?",
"disconnect_confirm_description": "The Bot will stop receiving Lark messages and the WebSocket connection will be torn down. The installation row is kept for audit; you can re-install later from the same Agent.",
"disconnect_confirm_cancel": "Cancel",
"toast_disconnected": "Disconnected Lark bot",
"toast_disconnect_failed": "Disconnect failed",
"bind_button": "Bind to Lark",
"bind_button_title": "Bind {{agent}} to a Lark Bot",
"bind_button_feishu": "Bind to Feishu",
"bind_button_lark": "Bind to Lark",
"bind_button_feishu_title": "Bind {{agent}} to a Feishu (mainland) Bot",
"bind_button_lark_title": "Bind {{agent}} to a Lark (international) Bot",
"agent_bot_connected_label": "Connected to Lark",
"agent_bot_manage_link": "Manage in Lark",
"agent_bot_manage_tooltip": "Open this Bot's app page in Lark — manage scopes, edit display name, request additional permissions.",
"agent_bot_connected_label_feishu": "Connected to Feishu",
"agent_bot_connected_label_lark": "Connected to Lark",
"agent_bot_manage_link_feishu": "Manage in Feishu",
"agent_bot_manage_link_lark": "Manage in Lark",
"agent_bot_manage_tooltip_feishu": "Open this Bot's app page in Feishu — manage scopes, edit display name, request additional permissions.",
"agent_bot_manage_tooltip_lark": "Open this Bot's app page in Lark — manage scopes, edit display name, request additional permissions.",
"agent_bot_disconnect_tooltip": "Unbind this Lark Bot from the Agent. The Bot will stop receiving Lark messages.",
"install_dialog_title": "Bind to Lark",
"install_dialog_description": "Open Lark on your phone and scan the code below to create a PersonalAgent Bot.",
"install_dialog_description_for_agent": "Open Lark on your phone and scan the code below to create a Bot for {{agent}}.",
"install_dialog_title_feishu": "Bind to Feishu",
"install_dialog_title_lark": "Bind to Lark",
"install_dialog_description_feishu": "Open Feishu on your phone and scan the code below to create a PersonalAgent Bot.",
"install_dialog_description_lark": "Open Lark on your phone and scan the code below to create a PersonalAgent Bot.",
"install_dialog_description_for_agent_feishu": "Open Feishu on your phone and scan the code below to create a Bot for {{agent}}.",
"install_dialog_description_for_agent_lark": "Open Lark on your phone and scan the code below to create a Bot for {{agent}}.",
"install_starting": "Preparing QR code…",
"install_scan_hint": "Lark → Scan → authorize the new PersonalAgent.",
"install_open_link_fallback": "Or tap here to open in Lark",
"install_success": "Install complete — your Bot is online.",
"install_success_toast": "Lark Bot installed",
"install_scan_hint_feishu": "Feishu → Scan → authorize the new PersonalAgent.",
"install_scan_hint_lark": "Lark → Scan → authorize the new PersonalAgent.",
"install_open_link_fallback_feishu": "Or tap here to open in Feishu",
"install_open_link_fallback_lark": "Or tap here to open in Lark",
"install_success_toast_feishu": "Feishu Bot installed",
"install_success_toast_lark": "Lark Bot installed",
"install_close": "Close",
"install_retry": "Scan again",
"install_poll_retry": "Network blip while checking install status — retrying.",
"install_error_expired": "QR expired before authorization. Scan again.",
"install_error_access_denied": "Install cancelled in Lark.",
"install_error_protocol": "Lark refused the install — try again.",
"install_error_bot_info": "Authorized, but Multica couldn't fetch the Bot's identity. Try again.",
"install_error_conflict": "Could not save the installation. Another bot may already be bound to this agent.",
"install_error_installer_bind": "Installed the bot, but could not bind your Lark identity. Try again or contact support.",
"install_error_session_lost": "Install session expired or was lost. Scan again to start over.",
"install_error_forbidden": "You no longer have permission to install Lark Bots in this workspace. Ask a workspace admin to continue.",
"install_error_generic": "Install failed. Try again."
},
"composio": {
"section_title": "Composio",
"page_description": "Connect the Composio apps your agents can act on. Only apps configured with an enabled auth config in your Composio project appear here.",
"not_enabled_title": "Composio integration not enabled",
"not_enabled_description_prefix": "Set",
"not_enabled_description_suffix": "on the server to enable Composio toolkit connections.",
"loading": "Loading toolkits…",
"load_failed": "Failed to load Composio toolkits.",
"empty_title": "No connectable apps yet",
"empty_description": "No toolkit has an enabled auth config in your Composio project yet. Enable one in the Composio dashboard to make it available here.",
"search_placeholder": "Search toolkits…",
"connect": "Connect",
"connecting": "Connecting…",
"connected": "Connected",
"disconnect": "Disconnect",
"disconnecting": "Disconnecting…",
"connect_failed": "Couldn't start the connection. Please try again.",
"disconnect_failed": "Couldn't disconnect. Please try again.",
"toast_disconnected": "Disconnected",
"disconnect_confirm_title": "Disconnect this app?",
"disconnect_confirm_description": "Your connected account will be revoked at Composio and your agents will lose access to this toolkit. You can reconnect later.",
"disconnect_confirm_cancel": "Cancel",
"connections_load_failed": "Couldn't load your existing connections, so connected status may be incomplete.",
"toast_connected": "Connected",
"toast_connect_failed": "Couldn't complete the connection. Please try again.",
"last_used": "Last used {{when}}",
"last_used_never": "Never used",
"expired": "Token expired",
"reconnect": "Reconnect"
},
"slack": {
"section_title": "Slack",
"page_description": "Connect each Multica Agent to its own Slack bot. Members can DM the bot, @mention it in a channel, and type /issue to spin up a new Multica issue.",
"not_enabled_title": "Slack integration not enabled",
"not_enabled_description_prefix": "Set",
"not_enabled_description_suffix": "on the server to enable Slack bot installations.",
"not_enabled_self_host_hint": "Self-hosters: see the project README for details.",
"preview_title": "Slack install coming soon",
"preview_description": "The at-rest key is set, but the hosted Slack app's OAuth credentials are not configured in this deployment. The Connect button will appear here once they are set.",
"connected_bots": "Connected bots",
"loading": "Loading…",
"empty_title": "No bots connected yet",
"empty_description_prefix": "Open an Agent in this workspace and click",
"empty_description_cta": "Connect Slack",
"empty_description_suffix": "to install a bot for it.",
"revoked_badge": "revoked",
"installed_at_label": "Installed {{when}}",
"disconnect": "Disconnect",
"disconnecting": "Disconnecting…",
"disconnect_confirm_title": "Disconnect this Slack bot?",
"disconnect_confirm_description": "The bot will stop receiving Slack messages for this workspace. The installation row is kept for audit; you can re-install later from the same Agent.",
"disconnect_confirm_cancel": "Cancel",
"toast_disconnected": "Disconnected Slack bot",
"toast_disconnect_failed": "Disconnect failed",
"bind_button": "Connect Slack",
"bind_button_title": "Connect {{agent}} to a Slack bot",
"connecting": "Opening Slack…",
"connect_failed_toast": "Could not start the Slack install",
"agent_bot_connected_label": "Connected to Slack",
"agent_bot_disconnect_tooltip": "Unbind this Slack bot from the Agent. The bot will stop receiving Slack messages.",
"agent_bot_manage_link": "Open in Slack",
"agent_bot_manage_tooltip": "Open this bot's Slack workspace.",
"byo_dialog_title": "Connect a Slack bot",
"byo_video_cta": "Watch the setup walkthrough",
"byo_docs_link": "Step-by-step: connect your Multica agent to Slack",
"byo_bot_token_label": "Bot token (xoxb-)",
"byo_app_token_label": "App-level token (xapp-)",
"byo_submit": "Connect",
"byo_submitting": "Connecting…",
"byo_cancel": "Cancel",
"byo_success_toast": "Slack bot connected",
"byo_failed_toast": "Could not connect the Slack bot"
},
"repositories": {
"section_title": "Repositories",
"description": "Git repositories associated with this workspace. Agents use these to clone and work on code.",
"url_placeholder": "https://git.example.com/org/repo.git or git@git.example.com:org/repo.git",
"url_empty": "(empty URL)",
"description_placeholder": "Description (e.g. Go backend + Next.js frontend)",
"add": "Add repository",
"save": "Save",
"saving": "Saving...",
"saved_hint": "All changes saved",
"empty": "No repositories yet.",
"edit_aria": "Edit repository",
"cancel_aria": "Cancel edit",
"delete_aria": "Delete repository",
"delete_confirm_title": "Delete repository?",
"delete_confirm_description": "This repository will be removed from the workspace immediately.",
"delete_confirm_cancel": "Cancel",
"delete_confirm_action": "Delete repository",
"manage_hint": "Only admins and owners can manage repositories.",
"toast_saved": "Repositories saved",
"toast_save_failed": "Failed to save repositories"
},
"desktop": {
"tabs": {
"updates": "Updates"
},
"updates": {
"title": "Updates",
"description": "Control automatic background updates or check for a new version manually.",
"current_version": "Current version",
"automatic_updates_title": "Automatic background updates",
"automatic_updates_description": "Check shortly after launch and every hour, then download available updates in the background.",
"automatic_updates_save_failed": "Failed to save automatic update settings",
"check_section_title": "Check for updates",
"check_section_description": "Check now regardless of your automatic update preference. Available updates download in the background and show a restart prompt when ready.",
"up_to_date": "You're on the latest version.",
"downloading": "v{{version}} is downloading in the background — you'll be notified when it's ready to install.",
"check_now": "Check now",
"checking": "Checking…"
}
},
"members": {
"section_title": "Members ({{count}})",
"invite_title": "Invite member",
"invite_email_placeholder": "user@company.com",
"invite_button": "Invite",
"inviting": "Inviting...",
"toast_invitation_sent": "Invitation sent",
"toast_invitation_failed": "Failed to send invitation",
"no_members": "No members found.",
"pending_title": "Pending invitations ({{count}})",
"pending_status": "Pending",
"revoke_invitation_tooltip": "Revoke invitation",
"revoke_invitation_title": "Revoke invitation",
"revoke_invitation_description": "Revoke the invitation to {{email}}? They will no longer be able to join this workspace.",
"toast_invitation_revoked": "Invitation revoked",
"toast_invitation_revoke_failed": "Failed to revoke invitation",
"toast_role_updated": "Role updated",
"toast_role_failed": "Failed to update member",
"toast_member_removed": "Member removed",
"toast_member_remove_failed": "Failed to remove member",
"remove_member_title": "Remove {{name}}",
"remove_member_description": "Remove {{name}} from {{workspace}}? They will lose access to this workspace.",
"confirm_cancel": "Cancel",
"confirm_action": "Confirm",
"change_role": "Change role",
"remove_action": "Remove from workspace",
"cannot_demote_last_owner_title": "Promote another member to owner first — a workspace must keep at least one owner.",
"cannot_demote_last_owner": "Cannot demote the last owner",
"roles": {
"owner": {
"label": "Owner",
"description": "Full access, manage all settings"
},
"admin": {
"label": "Admin",
"description": "Manage members and settings"
},
"member": {
"label": "Member",
"description": "Create and work on issues"
}
}
}
}