{
  "title": "Extension Management",
  "subtitle": "Manage and configure system extensions",
  "tabs": {
    "installedPlugins": "AstrBot Plugins",
    "installedMcpServers": "MCP",
    "skills": "Skills",
    "handlersOperation": "Manage Handlers",
    "market": "AstrBot Plugin Market"
  },
  "titles": {
    "installedAstrBotPlugins": "Installed AstrBot Plugins"
  },
  "failedPlugins": {
    "title": "Failed to Load Plugins ({count})",
    "hint": "These plugins failed to load. You can try reload or uninstall them directly.",
    "columns": {
      "plugin": "Plugin",
      "error": "Error"
    }
  },
  "search": {
    "placeholder": "Search extensions...",
    "marketPlaceholder": "Search market extensions..."
  },
  "filters": {
    "all": "All"
  },
  "views": {
    "card": "Card View",
    "list": "List View"
  },
  "buttons": {
    "showSystemPlugins": "Show System Extensions",
    "hideSystemPlugins": "Hide System Extensions",
    "install": "Install",
    "uninstall": "Uninstall",
    "update": "Update",
    "reload": "Reload",
    "enable": "Enable",
    "disable": "Disable",
    "configure": "Configure",
    "viewInfo": "Handlers",
    "viewDocs": "Documentation",
    "viewRepo": "Repository",
    "close": "Close",
    "save": "Save",
    "saveAndClose": "Save and Close",
    "cancel": "Cancel",
    "actions": "Actions",
    "back": "Back",
    "selectFile": "Select File",
    "refresh": "Refresh",
    "updateAll": "Update All",
    "deleteSource": "Delete Source",
    "reshuffle": "Shuffle Again"
  },
  "status": {
    "enabled": "Enabled",
    "disabled": "Disabled",
    "system": "System",
    "loading": "Loading...",
    "installed": "Installed",
    "unknown": "Unknown"
  },
  "tooltips": {
    "enable": "Click to Enable",
    "disable": "Click to Disable",
    "reload": "Reload",
    "configure": "Configure",
    "viewInfo": "Handlers",
    "viewDocs": "Documentation",
    "update": "Update",
    "uninstall": "Uninstall"
  },
  "table": {
    "headers": {
      "name": "Name",
      "description": "Description",
      "version": "Version",
      "author": "Author",
      "status": "Status",
      "actions": "Actions",
      "stars": "Stars",
      "lastUpdate": "Last Update",
      "tags": "Tags",
      "eventType": "Event Type",
      "specificType": "Specific Type",
      "trigger": "Trigger"
    }
  },
  "empty": {
    "noPlugins": "No Extensions",
    "noPluginsDesc": "Try installing extensions or showing system extensions"
  },
  "market": {
    "recommended": "🥳 Recommended",
    "allPlugins": "📦 All Extensions",
    "showFullName": "Full Name",
    "devDocs": "Extension Development Docs",
    "submitRepo": "Submit Extension Repository",
    "customSource": "Custom Extension Source",
    "source": "Source",
    "availableSources": "Available Sources",
    "sourceManagement": "Source Management",
    "addSource": "Add Source",
    "sourceName": "Source Name",
    "sourceUrl": "Source URL",
    "defaultSource": "Default Source",
    "removeSource": "Remove Source",
    "confirmRemoveSource": "Are you sure you want to remove this source?",
    "sourceAdded": "Source added successfully",
    "sourceRemoved": "Source removed successfully",
    "sourceError": "Operation failed",
    "selectSource": "Select Source",
    "currentSource": "Current Source",
    "editSource": "Edit Source",
    "sourceUpdated": "Source updated successfully",
    "defaultOfficialSource": "Default Official Source",
    "sourceExists": "This source already exists",
    "installPlugin": "Install Plugin",
    "randomPlugins": "🎲 Random Plugins",
    "showRandomPlugins": "Show Random Plugins",
    "hideRandomPlugins": "Hide Random Plugins",
    "sourceSafetyWarning": "Even with the default source, plugin stability and security cannot be fully guaranteed. Please verify carefully before use."
  },
  "sort": {
    "by": "Sort by",
    "default": "Default",
    "installTime": "Last Modified",
    "name": "Name",
    "stars": "Stars",
    "author": "Author",
    "updated": "Last Updated",
    "updateStatus": "Update Status",
    "ascending": "Ascending",
    "descending": "Descending"
  },
  "tags": {
    "danger": "Danger"
  },
  "dialogs": {
    "error": {
      "title": "Error Information",
      "checkConsole": "Please check console for details"
    },
    "config": {
      "title": "Extension Configuration",
      "noConfig": "This extension has no configuration"
    },
    "loading": {
      "title": "Loading...",
      "logs": "Logs"
    },
    "uninstall": {
      "title": "Confirm Deletion",
      "message": "Are you sure you want to delete this extension?",
      "deleteConfig": "Also delete plugin configuration file",
      "deleteData": "Also delete plugin persistent data",
      "configHint": "Configuration file located in data/config directory",
      "dataHint": "Deletes data in data/plugin_data and data/plugins_data"
    },
    "install": {
      "title": "Install Extension",
      "fromFile": "Install from File",
      "fromUrl": "Install from URL",
      "supportPlatformsCount": "Supports {count} Platforms"
    },
    "danger_warning": {
      "title": "Dangerous Plugin Warning",
      "message": "This plugin has been flagged as containing security risks, including unsafe code or functionalities that may cause system malfunctions or data loss. Do you wish to proceed with the installation?",
      "confirm": "Continue",
      "cancel": "Cancel"
    },
    "versionCompatibility": {
      "title": "Version Compatibility Warning",
      "message": "This plugin declares an AstrBot version range that does not match your current version. You can ignore this warning and continue installation, but it may not work correctly.",
      "confirm": "Ignore Warning and Install",
      "cancel": "Cancel Installation"
    },
    "forceUpdate": {
      "title": "No New Version Detected",
      "message": "No new version detected for this plugin. Do you want to force reinstall? This will pull the latest code from the remote repository.",
      "confirm": "Force Update"
    },
    "updateAllConfirm": {
      "title": "Confirm Update All Plugins",
      "message": "Are you sure you want to update all {count} plugins? This operation may take some time.",
      "confirm": "Confirm Update"
    }
  },
  "messages": {
    "uninstalling": "Uninstalling",
    "refreshing": "Refreshing extension list...",
    "refreshSuccess": "Extension list refreshed!",
    "refreshFailed": "Error occurred while refreshing extension list",
    "operationFailed": "Operation failed",
    "reloadSuccess": "Reload successful",
    "reloadFailed": "Reload failed",
    "updateSuccess": "Update successful!",
    "addSuccess": "Add successful!",
    "saveSuccess": "Save successful!",
    "deleteSuccess": "Delete successful!",
    "installing": "Installing extension from file",
    "installingFromUrl": "Installing extension from URL...",
    "installFailed": "Extension installation failed:",
    "getMarketDataFailed": "Failed to get extension market data:",
    "hasUpdate": "New version available:",
    "confirmDelete": "Are you sure you want to delete this extension?",
    "fillUrlOrFile": "Please fill in extension URL or upload extension file",
    "dontFillBoth": "Please don't fill in both extension URL and upload file",
    "supportedFormats": "Supports .zip extension files",
    "updateAllSuccess": "All upgradable extensions have been updated!",
    "updateAllFailed": "{failed} of {total} extensions failed to update:",
    "fillSourceNameAndUrl": "Please fill in the complete source name and URL",
    "invalidUrl": "Please enter a valid URL",
    "enterJsonUrl": "Please enter a URL that returns plugin list JSON data"
  },
  "upload": {
    "fromFile": "Install from File",
    "fromUrl": "Install from URL",
    "selectFile": "Select File",
    "enterUrl": "Enter extension repository URL"
  },
  "skills": {
    "modeLocal": "Local Skills",
    "modeNeo": "Neo Skills",
    "actions": "Actions",
    "upload": "Upload Skills",
    "refresh": "Refresh",
    "empty": "No Skills found",
    "emptyHint": "Upload a Skills zip to get started",
    "uploadDialogTitle": "Upload Skills",
    "uploadHint": "Upload multiple zip skill packages or drag them in. The system validates the structure automatically and shows a result for each file.",
    "structureRequirement": "The most common failure is an invalid archive structure. Each zip must contain exactly one top-level folder such as `skillname/`, and that folder must include `SKILL.md`.",
    "abilityMultiple": "Upload multiple zip files at once",
    "abilityValidate": "Validate `SKILL.md` automatically",
    "abilitySkip": "Automatically skip duplicate files.",
    "selectFile": "Select file",
    "selectFiles": "Select files (multiple allowed)",
    "dropzoneTitle": "Drag multiple zip files here",
    "dropzoneAction": "or click to pick multiple files from a folder",
    "dropzoneHint": "Batch upload is supported and the structure will be validated automatically",
    "fileListTitle": "Files in queue",
    "fileListEmpty": "Selected files will appear here with validation feedback and upload status",
    "uploading": "Uploading...",
    "batchResultTitle": "Batch Upload Results",
    "batchResultSummary": "{success} of {total} files uploaded successfully",
    "batchSuccessList": "Successfully uploaded",
    "batchFailedList": "Failed to upload",
    "confirm": "OK",
    "confirmUpload": "Start Upload",
    "cancel": "Cancel",
    "statusWaiting": "Waiting",
    "statusUploading": "Uploading",
    "statusSuccess": "Uploaded",
    "statusError": "Failed",
    "statusSkipped": "Skipped",
    "summaryTotal": "{count} file(s)",
    "summaryReady": "Pending {count}",
    "summarySuccess": "Success {count}",
    "summaryFailed": "Failed {count}",
    "summarySkipped": "Skipped {count}",
    "validationReady": "Ready to upload. The archive structure will be checked during upload.",
    "validationZipOnly": "Only zip skill packages are supported",
    "validationDuplicate": "A file with the same name is already in the queue and has been skipped",
    "validationUploading": "Validating and uploading...",
    "validationUploadFailed": "Upload failed. Please try again.",
    "validationUploadedAs": "Installed as {name}",
    "validationNoResult": "No validation result was returned. Check the platform logs.",
    "noDescription": "No description",
    "path": "Path",
    "uploadSuccess": "Upload succeeded",
    "uploadFailed": "Upload failed",
    "download": "Download",
    "downloadSuccess": "Download succeeded",
    "downloadFailed": "Download failed",
    "loadFailed": "Failed to load Skills",
    "updateSuccess": "Updated successfully",
    "updateFailed": "Update failed",
    "deleteTitle": "Delete confirmation",
    "deleteMessage": "Are you sure you want to delete this Skill?",
    "deleteSuccess": "Deleted successfully",
    "deleteFailed": "Delete failed",
    "neoSkillKey": "Filter by skill_key",
    "neoStatus": "Candidate Status",
    "neoStage": "Release Stage",
    "neoFilterHint": "Filter candidates and release records",
    "neoAll": "All",
    "neoCandidates": "Neo Candidates",
    "neoReleases": "Neo Releases",
    "neoLoadFailed": "Failed to load Neo skills data",
    "neoPass": "Pass",
    "neoReject": "Reject",
    "neoEvaluateSuccess": "Evaluation updated",
    "neoEvaluateFailed": "Failed to update evaluation",
    "neoPromoteSuccess": "Promoted successfully",
    "neoPromoteFailed": "Failed to promote",
    "neoRollback": "Rollback",
    "neoRollbackSuccess": "Rollback succeeded",
    "neoRollbackFailed": "Rollback failed",
    "neoDeactivate": "Deactivate",
    "neoDeactivateSuccess": "Deactivated successfully",
    "neoDeactivateFailed": "Failed to deactivate",
    "neoSync": "Sync",
    "neoSyncSuccess": "Sync succeeded",
    "neoSyncFailed": "Sync failed",
    "neoDelete": "Delete",
    "neoDeleteSuccess": "Deleted successfully",
    "neoDeleteFailed": "Failed to delete",
    "neoPayloadTitle": "Neo Payload",
    "neoPayloadFailed": "Failed to load payload",
    "runtimeNoneWarning": "Computer Use runtime is set to None; Skills may not run correctly because no runtime is enabled.",
    "runtimeHint": "Set the Computer Use runtime to Local or Sandbox in settings so AstrBot can use your Skills.",
    "neoRuntimeRequired": "Neo Skills are available only when runtime is sandbox and sandbox booter is shipyard_neo.",
    "sourceLocalOnly": "Local Skill",
    "sourceSandboxOnly": "Sandbox Preset Skill",
    "sourceBoth": "Local + Sandbox",
    "sandboxDiscoveryPending": "Sandbox preset skills have not been discovered yet. Start at least one sandbox session to populate this list.",
    "sandboxPresetReadonly": "Sandbox preset skills are read-only here. You cannot delete or enable/disable them from Local Skills."
  },
  "card": {
    "actions": {
      "pluginConfig": "Extension Config",
      "uninstallPlugin": "Uninstall Extension",
      "reloadPlugin": "Reload Extension",
      "togglePlugin": "Extension",
      "viewHandlers": "View Handlers",
      "updateTo": "Update to",
      "reinstall": "Reinstall"
    },
    "status": {
      "hasUpdate": "New version available",
      "disabled": "This extension is disabled",
      "handlersCount": " handlers",
      "supportPlatform": "Supported Platform",
      "supportPlatformsCount": "Supports {count} Platforms",
      "astrbotVersion": "AstrBot Version Requirement"
    },
    "alt": {
      "logo": "logo",
      "extensionIcon": "extension icon"
    },
    "errors": {
      "confirmNotRegistered": "$confirm not properly registered"
    }
  },
  "conflicts": {
    "title": "Command Conflicts Detected",
    "message": "This will cause some commands to work abnormally. It is recommended to go to the [Command Management] panel to handle it.",
    "pairs": "command conflicts",
    "goToManage": "Go to Manage",
    "later": "Later"
  },
  "pluginChangelog": {
    "menuTitle": "View Changelog"
  }
}
