{
  "preferences": {
    "theme": {
      "title": "Theme",
      "light": "Light",
      "dark": "Dark",
      "system": "System"
    },
    "palette": {
      "title": "Color Palette",
      "rime": "Hoarfrost",
      "rime_description": "Frost-blue tinted",
      "zinc": "Zinc Classic",
      "zinc_description": "Neutral gray"
    },
    "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."
    }
  },
  "page": {
    "title": "Settings",
    "my_account": "My Account",
    "workspace_fallback": "Workspace",
    "tabs": {
      "profile": "Profile",
      "preferences": "Preferences",
      "notifications": "Notifications",
      "tokens": "API Tokens",
      "general": "General",
      "repositories": "Repositories",
      "github": "GitHub",
      "integrations": "Integrations",
      "labs": "Labs",
      "members": "Members",
      "backup": "Backup"
    }
  },
  "account": {
    "section_profile": "Profile",
    "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 RimeDeck 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."
    }
  },
  "tokens": {
    "title": "API Tokens",
    "description": "Personal access tokens allow the CLI and external integrations to authenticate with your account.",
    "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": "Token created",
      "description": "Copy your personal access token now. You won't be able to see it again.",
      "copy_tooltip": "Copy token",
      "done": "Done"
    }
  },
  "workspace": {
    "section_general": "General",
    "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"
  },
  "integrations": {
    "section_title": "Integrations",
    "empty_title": "No third-party integrations yet",
    "empty_description": "Once Slack, Linear, and other integrations are wired up they will appear here. GitHub has moved to its own tab.",
    "manage_hint": "Only admins and owners can manage integrations."
  },
  "github": {
    "page_description": "Connect a GitHub App, control how Pull Requests show up inside RimeDeck, 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": "RimeDeck 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"
  },
  "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."
  },
  "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",
    "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": "The desktop app checks for new versions automatically once an hour and shortly after launch, downloading them in the background. You'll be prompted to restart once an update is ready.",
      "current_version": "Current version",
      "check_section_title": "Check for updates",
      "check_section_description": "Trigger a check now instead of waiting for the next automatic poll. 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",
    "generate_code_button": "Generate invite code",
    "inviting": "Generating...",
    "invite_code_label": "Invite code",
    "invite_code_hint": "Share this code with the person you want to invite. They can enter it in their RimeDeck Desktop to join.",
    "invite_code_steps": "Tell the other person: open RimeDeck Desktop → click workspace name in sidebar → Join workspace → enter the server address and invite code above.",
    "join_title": "Join a workspace",
    "join_description": "Enter the server address and invite code from the workspace admin.",
    "join_history_description": "Reconnect to a previous workspace or join a new one.",
    "join_server_label": "Server address",
    "join_code_label": "Invite code",
    "join_button": "Join",
    "join_joining": "Joining…",
    "join_reconnecting": "Reconnecting…",
    "join_cancel": "Cancel",
    "join_new_server": "New server",
    "join_back_to_history": "Back",
    "join_token_expired": "Credentials expired — enter a new invite code.",
    "join_reconnect_failed": "Could not reach this server. Enter the address and invite code below.",
    "join_done": "Done",
    "join_success_title": "Joined workspace",
    "join_success_description": "You are now a member. The app will reload to show the workspace.",
    "toast_invitation_sent": "Invite code generated",
    "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"
      }
    }
  },
  "backup": {
    "section_title": "Backup & Restore",
    "section_description": "Export your workspace's agents, skills, and squads as a JSON file, or import from a previous backup.",
    "export_title": "Export",
    "export_description": "Download all agents, skills, and squads as a single JSON file.",
    "export_button": "Export",
    "exporting": "Exporting...",
    "toast_export_failed": "Failed to export workspace data",
    "import_title": "Import",
    "import_description": "Upload a previously exported JSON file to restore agents, skills, and squads.",
    "import_button": "Import",
    "importing": "Importing...",
    "import_choose_file": "Choose file",
    "import_preview_title": "Import preview",
    "import_preview_description": "The following resources will be created:",
    "import_preview_skills": "{{count}} skills",
    "import_preview_agents": "{{count}} agents",
    "import_preview_squads": "{{count}} squads",
    "import_overwrite_label": "Overwrite existing resources with the same name",
    "import_runtime_label": "Target runtime",
    "import_confirm": "Confirm import",
    "import_cancel": "Cancel",
    "toast_import_success": "Import complete: {{created}} created, {{skipped}} skipped",
    "toast_import_failed": "Failed to import workspace data",
    "toast_import_warnings": "Import completed with {{count}} warnings",
    "manage_hint": "Only admins and owners can backup and restore workspace data."
  }
}
