mirror of
https://github.com/multica-ai/multica.git
synced 2026-08-03 11:10:23 +02:00
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>
724 lines
36 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|