{
  "app": {
    "title": "MCPHub Dashboard",
    "error": "Error",
    "closeButton": "Close",
    "noServers": "No MCP servers available",
    "loading": "Loading...",
    "logout": "Logout",
    "profile": "Profile",
    "changePassword": "Change Password",
    "toggleSidebar": "Toggle Sidebar",
    "welcomeUser": "Welcome, {{username}}",
    "name": "MCPHub",
    "embeddingSyncProgress": "Embeddings for {{serverName}}",
    "embeddingSyncProgressAriaLabel": "Creating embeddings for {{serverName}}: {{current}} of {{total}} completed"
  },
  "about": {
    "title": "About",
    "versionInfo": "MCPHub Version: {{version}}",
    "newVersion": "New version available!",
    "currentVersion": "Current version",
    "newVersionAvailable": "New version {{version}} is available",
    "viewOnGitHub": "View on GitHub",
    "checkForUpdates": "Check for Updates",
    "checking": "Checking for updates..."
  },
  "profile": {
    "viewProfile": "View profile",
    "userCenter": "User Center"
  },
  "sponsor": {
    "label": "Sponsor",
    "title": "Support the Project",
    "rewardAlt": "Reward QR Code",
    "supportMessage": "Support the development of MCPHub by buying me a coffee!",
    "supportButton": "Support on Ko-fi"
  },
  "wechat": {
    "label": "WeChat",
    "title": "Connect via WeChat",
    "qrCodeAlt": "WeChat QR Code",
    "scanMessage": "Scan this QR code to connect with us on WeChat"
  },
  "discord": {
    "label": "Discord",
    "title": "Join our Discord server",
    "community": "Join our growing community on Discord for support, discussions, and updates!"
  },
  "theme": {
    "title": "Theme",
    "light": "Light",
    "dark": "Dark",
    "system": "System"
  },
  "auth": {
    "login": "Login",
    "loginTitle": "Login to MCPHub",
    "slogan": "The Unified Hub for MCP Servers",
    "subtitle": "Centralized management platform for Model Context Protocol servers. Organize, monitor, and scale multiple MCP servers with flexible routing strategies.",
    "username": "Username",
    "password": "Password",
    "loggingIn": "Logging in...",
    "orContinue": "Or continue with",
    "loginWithGoogle": "Continue with Google",
    "loginWithGithub": "Continue with GitHub",
    "loginWithOIDC": "Continue with OIDC",
    "socialLoginFailed": "Social login failed. Please try again.",
    "emptyFields": "Username and password cannot be empty",
    "loginFailed": "Login failed, please check your username and password",
    "loginError": "An error occurred during login",
    "serverUnavailable": "Unable to connect to the server. Please check your network connection or try again later",
    "currentPassword": "Current Password",
    "newPassword": "New Password",
    "confirmPassword": "Confirm Password",
    "passwordsNotMatch": "New password and confirmation do not match",
    "changePasswordSuccess": "Password changed successfully",
    "changePasswordError": "Failed to change password",
    "changePassword": "Change Password",
    "passwordChanged": "Password changed successfully",
    "passwordChangeError": "Failed to change password",
    "defaultPasswordWarning": "Default Password Security Warning",
    "defaultPasswordMessage": "You are using the default password (admin123), which poses a security risk. Please change your password immediately to protect your account.",
    "goToSettings": "Go to Settings",
    "passwordStrengthError": "Password does not meet security requirements",
    "passwordMinLength": "Password must be at least 8 characters long",
    "passwordRequireLetter": "Password must contain at least one letter",
    "passwordRequireNumber": "Password must contain at least one number",
    "passwordRequireSpecial": "Password must contain at least one special character",
    "passwordStrengthHint": "Password must be at least 8 characters and contain letters, numbers, and special characters"
  },
  "server": {
    "addServer": "Add Server",
    "add": "Add",
    "edit": "Edit",
    "copy": "Copy",
    "delete": "Delete",
    "confirmDelete": "Are you sure you want to delete this server?",
    "deleteWarning": "Deleting server '{{name}}' will remove it and all its data. This action cannot be undone.",
    "status": "Status",
    "tools": "Tools",
    "prompts": "Prompts",
    "name": "Server Name",
    "description": "Server Note",
    "descriptionPlaceholder": "Optional note to describe this server",
    "url": "Server URL",
    "apiKey": "API Key",
    "save": "Save",
    "cancel": "Cancel",
    "invalidConfig": "Could not find configuration data for {{serverName}}",
    "addError": "Failed to add server",
    "editError": "Failed to edit server {{serverName}}",
    "deleteError": "Failed to delete server {{serverName}}",
    "updateError": "Failed to update server",
    "editTitle": "Edit Server: {{serverName}}",
    "type": "Server Type",
    "typeStdio": "STDIO",
    "typeSse": "SSE",
    "typeStreamableHttp": "Streamable HTTP",
    "typeOpenapi": "OpenAPI",
    "visibility": "Visibility",
    "visibilityPrivateShort": "Private",
    "visibilityPrivate": "Private — only the owner and admins",
    "visibilityGroupShort": "Group",
    "visibilityGroup": "Group (reserved — not yet implemented)",
    "visibilityPublicShort": "Public",
    "visibilityPublic": "Public — every authenticated user",
    "visibilityDescription": "Controls which non-admin users see this server in tools/list. Admins always see all servers regardless of this setting.",
    "command": "Command",
    "arguments": "Arguments",
    "envVars": "Environment Variables",
    "headers": "HTTP Headers",
    "key": "key",
    "value": "value",
    "enabled": "Enabled",
    "enable": "Enable",
    "disable": "Disable",
    "reload": "Reload",
    "reloadSuccess": "Server reloaded successfully",
    "reloadError": "Failed to reload server {{serverName}}",
    "requestOptions": "Connection Configuration",
    "timeout": "Request Timeout",
    "timeoutDescription": "Timeout for requests to the MCP server (ms)",
    "maxTotalTimeout": "Maximum Total Timeout",
    "maxTotalTimeoutDescription": "Maximum total timeout for requests sent to the MCP server (ms) (Use with progress notifications)",
    "resetTimeoutOnProgress": "Reset Timeout on Progress",
    "resetTimeoutOnProgressDescription": "Reset timeout on progress notifications (enabled by default)",
    "keepAlive": "Keep-Alive Configuration",
    "enableKeepAlive": "Enable Keep-Alive",
    "keepAliveDescription": "Send periodic ping requests to maintain the connection. Useful for long-running connections that may timeout.",
    "keepAliveInterval": "Interval (ms)",
    "keepAliveIntervalDescription": "Time between keep-alive pings in milliseconds (default: 60000ms = 1 minute)",
    "remove": "Remove",
    "toggleError": "Failed to toggle server {{serverName}}",
    "alreadyExists": "Server {{serverName}} already exists",
    "invalidData": "Invalid server data provided",
    "notFound": "Server {{serverName}} not found",
    "namePlaceholder": "Enter server name",
    "urlPlaceholder": "Enter server URL",
    "commandPlaceholder": "Enter command",
    "argumentsPlaceholder": "Enter arguments",
    "errorDetails": "Error Details",
    "viewErrorDetails": "View error details",
    "copyConfig": "Copy Configuration",
    "confirmVariables": "Confirm Variable Configuration",
    "variablesDetected": "Variables detected in configuration. Please confirm these variables are properly configured:",
    "detectedVariables": "Detected Variables",
    "confirmVariablesMessage": "Please ensure these variables are properly defined in your runtime environment. Continue adding server?",
    "confirmAndAdd": "Confirm and Add",
    "openapi": {
      "inputMode": "Input Mode",
      "inputModeUrl": "Specification URL",
      "inputModeSchema": "JSON Schema",
      "specUrl": "OpenAPI Specification URL",
      "schema": "OpenAPI JSON Schema",
      "schemaHelp": "Paste your complete OpenAPI JSON schema here",
      "security": "Security Type",
      "securityNone": "None",
      "securityApiKey": "API Key",
      "securityHttp": "HTTP Authentication",
      "securityOAuth2": "OAuth 2.0",
      "securityOpenIdConnect": "OpenID Connect",
      "apiKeyConfig": "API Key Configuration",
      "apiKeyName": "Header/Parameter Name",
      "apiKeyIn": "Location",
      "apiKeyValue": "API Key Value",
      "httpAuthConfig": "HTTP Authentication Configuration",
      "httpScheme": "Authentication Scheme",
      "httpCredentials": "Credentials",
      "httpSchemeBasic": "Basic",
      "httpSchemeBearer": "Bearer",
      "httpSchemeDigest": "Digest",
      "oauth2Config": "OAuth 2.0 Configuration",
      "oauth2Token": "Access Token",
      "openIdConnectConfig": "OpenID Connect Configuration",
      "openIdConnectUrl": "Discovery URL",
      "openIdConnectToken": "ID Token",
      "apiKeyInHeader": "Header",
      "apiKeyInQuery": "Query",
      "apiKeyInCookie": "Cookie",
      "passthroughHeaders": "Passthrough Headers",
      "passthroughHeadersHelp": "Comma-separated list of header names to pass through from incoming MCP requests to upstream server requests (e.g., Authorization, X-API-Key)"
    },
    "oauth": {
      "sectionTitle": "OAuth Configuration",
      "sectionDescription": "Configure client credentials for OAuth-protected servers (optional).",
      "clientId": "Client ID",
      "clientSecret": "Client Secret",
      "authorizationEndpoint": "Authorization Endpoint",
      "tokenEndpoint": "Token Endpoint",
      "scopes": "Scopes",
      "scopesPlaceholder": "scope1 scope2",
      "resource": "Resource / Audience",
      "accessToken": "Access Token",
      "refreshToken": "Refresh Token"
    }
  },
  "status": {
    "online": "Online",
    "offline": "Offline",
    "connecting": "Connecting",
    "oauthRequired": "OAuth Required",
    "clickToAuthorize": "Click to authorize with OAuth",
    "oauthWindowOpened": "OAuth authorization window opened. Please complete the authorization."
  },
  "errors": {
    "general": "Something went wrong",
    "network": "Network connection error. Please check your internet connection",
    "serverConnection": "Unable to connect to the server. Please check if the server is running",
    "serverAdd": "Failed to add server. Please check the server status",
    "serverUpdate": "Failed to edit server {{serverName}}. Please check the server status",
    "serverFetch": "Failed to retrieve server data. Please try again later",
    "initialStartup": "The server might be starting up. Please wait a moment as this process can take some time on first launch...",
    "serverInstall": "Failed to install server",
    "failedToFetchSettings": "Failed to fetch settings",
    "failedToUpdateRouteConfig": "Failed to update route configuration",
    "failedToUpdateSmartRoutingConfig": "Failed to update smart routing configuration",
    "failedToUpdateBetterAuthConfig": "Failed to update Better Auth configuration"
  },
  "common": {
    "processing": "Processing...",
    "save": "Save",
    "cancel": "Cancel",
    "back": "Back",
    "refresh": "Refresh",
    "search": "Search",
    "clear": "Clear",
    "view": "View",
    "create": "Create",
    "creating": "Creating...",
    "update": "Update",
    "updating": "Updating...",
    "submitting": "Submitting...",
    "delete": "Delete",
    "remove": "Remove",
    "copy": "Copy",
    "copyId": "Copy ID",
    "copyUrl": "Copy URL",
    "copyJson": "Copy JSON",
    "copySuccess": "Copied to clipboard",
    "copyFailed": "Copy failed",
    "copied": "Copied",
    "close": "Close",
    "confirm": "Confirm",
    "language": "Language",
    "true": "True",
    "false": "False",
    "dismiss": "Dismiss",
    "github": "GitHub",
    "wechat": "WeChat",
    "discord": "Discord",
    "required": "Required",
    "itemsPerPage": "Items per page",
    "showing": "Showing {{start}}-{{end}} of {{total}}",
    "previous": "Previous",
    "next": "Next",
    "secret": "Secret",
    "default": "Default",
    "value": "Value",
    "type": "Type",
    "repeated": "Repeated",
    "valueHint": "Value Hint",
    "choices": "Choices",
    "actions": "Actions",
    "saving": "Saving...",
    "active": "Active",
    "inactive": "Inactive",
    "viewAll": "View all",
    "docs": "Docs",
    "all": "All"
  },
  "pagination": {
    "rowsPerPage": "Rows per page",
    "showing": "Showing {{from}}-{{to}} of {{total}}"
  },
  "nav": {
    "dashboard": "Dashboard",
    "servers": "Servers",
    "groups": "Groups",
    "prompts": "Prompts",
    "resources": "Resources",
    "users": "Users",
    "settings": "Settings",
    "changePassword": "Change Password",
    "market": "Market",
    "cloud": "Cloud Market",
    "logs": "Logs",
    "activity": "Activity",
    "workspace": "Workspace",
    "system": "System"
  },
  "pages": {
    "dashboard": {
      "title": "Dashboard",
      "totalServers": "Total",
      "onlineServers": "Online",
      "disabledServers": "Disabled",
      "offlineServers": "Offline",
      "connectingServers": "Connecting",
      "recentServers": "Recent Servers",
      "endpoints": "MCP Endpoints",
      "endpointsHint": "Use these URLs in Claude Desktop, Cursor or any MCP client"
    },
    "servers": {
      "title": "Server Management"
    },
    "groups": {
      "title": "Group Management"
    },
    "prompts": {
      "title": "Built-in Prompts"
    },
    "resources": {
      "title": "Built-in Resources"
    },
    "users": {
      "title": "User Management"
    },
    "settings": {
      "title": "Settings",
      "language": "Language",
      "account": "Account Settings",
      "password": "Change Password",
      "appearance": "Appearance",
      "routeConfig": "Security",
      "installConfig": "Installation",
      "smartRouting": "Smart Routing",
      "oauthServer": "OAuth Server"
    },
    "market": {
      "title": "Market Hub - Local and Cloud Markets"
    },
    "logs": {
      "title": "System Logs"
    }
  },
  "logs": {
    "filters": "Filters",
    "search": "Search logs...",
    "autoScroll": "Auto-scroll",
    "clearLogs": "Clear logs",
    "loading": "Loading logs...",
    "noLogs": "No logs available.",
    "noMatch": "No logs match the current filters.",
    "mainProcess": "Main Process",
    "childProcess": "Child Process",
    "main": "Main",
    "child": "Child"
  },
  "groups": {
    "add": "Add",
    "addNew": "Add New Group",
    "edit": "Edit Group",
    "delete": "Delete",
    "confirmDelete": "Are you sure you want to delete this group?",
    "deleteWarning": "Deleting group '{{name}}' will remove it and all its server associations. This action cannot be undone.",
    "name": "Group Name",
    "namePlaceholder": "Enter group name",
    "nameRequired": "Group name is required",
    "description": "Description",
    "descriptionPlaceholder": "Enter group description (optional)",
    "createError": "Failed to create group",
    "updateError": "Failed to update group",
    "deleteError": "Failed to delete group",
    "serverAddError": "Failed to add server to group",
    "serverRemoveError": "Failed to remove server from group",
    "addServer": "Add Server to Group",
    "selectServer": "Select a server to add",
    "servers": "Servers in Group",
    "remove": "Remove",
    "noGroups": "No groups available. Create a new group to get started.",
    "noServers": "No servers in this group.",
    "noServerOptions": "No servers available",
    "serverCount": "{{count}} Servers",
    "toolSelection": "Tool Selection",
    "promptSelection": "Prompt Selection",
    "resourceSelection": "Resource Selection",
    "toolsSelected": "Selected",
    "promptsSelected": "Selected",
    "resourcesSelected": "Selected",
    "allTools": "All",
    "allPrompts": "All prompts",
    "allResources": "All resources",
    "selectedTools": "Selected tools",
    "selectedPrompts": "Selected prompts",
    "selectedResources": "Selected resources",
    "selectAll": "Select All",
    "selectNone": "Select None",
    "configureTools": "Configure Tools",
    "configureCapabilities": "Configure Tools, Prompts, and Resources",
    "previewPrompts": "[prompts: {{items}}]",
    "previewResources": "[resources: {{items}}]",
    "previewAllTools": "(all tools)",
    "previewAllPrompts": "(all prompts)",
    "previewAllResources": "(all resources)"
  },
  "market": {
    "title": "Local Installation",
    "official": "Official",
    "by": "By",
    "unknown": "Unknown",
    "tools": "tools",
    "search": "Search",
    "searchPlaceholder": "Search for servers by name, category, or tags",
    "clearFilters": "Clear",
    "clearCategoryFilter": "",
    "clearTagFilter": "",
    "categories": "Categories",
    "tags": "Tags",
    "showTags": "Show tags",
    "hideTags": "Hide tags",
    "moreTags": "",
    "noServers": "No servers found matching your search",
    "backToList": "Back to list",
    "install": "Install",
    "installing": "Installing...",
    "installed": "Installed",
    "installServer": "Install Server: {{name}}",
    "installSuccess": "Server {{serverName}} installed successfully",
    "author": "Author",
    "license": "License",
    "repository": "Repository",
    "examples": "Examples",
    "arguments": "Arguments",
    "argumentName": "Name",
    "description": "Description",
    "required": "Required",
    "example": "Example",
    "viewSchema": "View schema",
    "fetchError": "Error fetching market servers",
    "serverNotFound": "Server not found",
    "searchError": "Error searching servers",
    "filterError": "Error filtering servers by category",
    "tagFilterError": "Error filtering servers by tag",
    "noInstallationMethod": "No installation method available for this server",
    "showing": "Showing {{from}}-{{to}} of {{total}} servers",
    "perPage": "Per page",
    "confirmVariablesMessage": "Please ensure these variables are properly defined in your runtime environment. Continue installing server?",
    "confirmAndInstall": "Confirm and Install"
  },
  "oauthServer": {
    "authorizeTitle": "Authorize Application",
    "authorizeSubtitle": "Allow this application to access your MCPHub account.",
    "buttons": {
      "approve": "Allow access",
      "deny": "Deny",
      "approveSubtitle": "Recommended if you trust this application.",
      "denySubtitle": "You can always grant access later."
    }
  },
  "cloud": {
    "title": "Cloud Support",
    "subtitle": "Powered by MCPRouter",
    "by": "By",
    "server": "Server",
    "config": "Config",
    "created": "Created",
    "updated": "Updated",
    "available": "Available",
    "description": "Description",
    "details": "Details",
    "tools": "Tools",
    "tool": "tool",
    "toolsAvailable": "{{count}} tool available||{{count}} tools available",
    "loadingTools": "Loading tools...",
    "noTools": "No tools available for this server",
    "noDescription": "No description available",
    "viewDetails": "View Details",
    "parameters": "Parameters",
    "result": "Result",
    "error": "Error",
    "callTool": "Call",
    "calling": "Calling...",
    "toolCallSuccess": "Tool {{toolName}} executed successfully",
    "toolCallError": "Failed to call tool {{toolName}}: {{error}}",
    "viewSchema": "View Schema",
    "backToList": "Back to Cloud Market",
    "search": "Search",
    "searchPlaceholder": "Search cloud servers by name, title, or author",
    "clearFilters": "Clear Filters",
    "clearCategoryFilter": "Clear",
    "clearTagFilter": "Clear",
    "categories": "Categories",
    "tags": "Tags",
    "noCategories": "No categories found",
    "noTags": "No tags found",
    "noServers": "No cloud servers found",
    "fetchError": "Error fetching cloud servers",
    "serverNotFound": "Cloud server not found",
    "searchError": "Error searching cloud servers",
    "filterError": "Error filtering cloud servers by category",
    "tagFilterError": "Error filtering cloud servers by tag",
    "showing": "Showing {{from}}-{{to}} of {{total}} cloud servers",
    "perPage": "Per page",
    "apiKeyNotConfigured": "MCPRouter API key not configured",
    "apiKeyNotConfiguredDescription": "To use cloud servers, you need to configure your MCPRouter API key.",
    "getApiKey": "Get API Key",
    "configureInSettings": "Configure in Settings",
    "installServer": "Install {{name}}",
    "installSuccess": "Server {{name}} installed successfully",
    "installError": "Failed to install server: {{error}}"
  },
  "registry": {
    "title": "Registry",
    "official": "Official",
    "latest": "Latest",
    "description": "Description",
    "website": "Website",
    "repository": "Repository",
    "packages": "Packages",
    "package": "package",
    "remotes": "Remotes",
    "remote": "remote",
    "published": "Published",
    "updated": "Updated",
    "install": "Install",
    "installing": "Installing...",
    "installed": "Installed",
    "installServer": "Install {{name}}",
    "installSuccess": "Server {{name}} installed successfully",
    "installError": "Failed to install server: {{error}}",
    "noDescription": "No description available",
    "viewDetails": "View Details",
    "backToList": "Back to Registry",
    "search": "Search",
    "searchPlaceholder": "Search registry servers by name",
    "clearFilters": "Clear",
    "noServers": "No registry servers found",
    "fetchError": "Error fetching registry servers",
    "serverNotFound": "Registry server not found",
    "showing": "Showing {{from}}-{{to}} of {{total}} registry servers",
    "perPage": "Per page",
    "environmentVariables": "Environment Variables",
    "packageArguments": "Package Arguments",
    "runtimeArguments": "Runtime Arguments",
    "headers": "Headers"
  },
  "tool": {
    "run": "Run",
    "running": "Running...",
    "runTool": "Run Tool",
    "cancel": "Cancel",
    "noDescription": "No description available",
    "inputSchema": "Input Schema:",
    "runToolWithName": "Run Tool: {{name}}",
    "execution": "Tool Execution",
    "successful": "Successful",
    "failed": "Failed",
    "result": "Result:",
    "error": "Error",
    "errorDetails": "Error Details:",
    "noContent": "Tool executed successfully but returned no content.",
    "unknownError": "Unknown error occurred",
    "jsonResponse": "JSON Response:",
    "toolResult": "Tool result",
    "noParameters": "This tool does not require any parameters.",
    "selectOption": "Select an option",
    "enterValue": "Enter {{type}} value",
    "enabled": "Enabled",
    "enableSuccess": "Tool {{name}} enabled successfully",
    "disableSuccess": "Tool {{name}} disabled successfully",
    "toggleFailed": "Failed to toggle tool status",
    "descriptionUpdateSuccess": "Tool description updated successfully",
    "descriptionUpdateFailed": "Failed to update tool description",
    "restoreDefault": "Restore default",
    "restoreDefaultSuccess": "Tool description restored to default",
    "restoreDefaultFailed": "Failed to restore the default tool description",
    "parameters": "Tool Parameters",
    "formMode": "Form Mode",
    "jsonMode": "JSON Mode",
    "jsonConfiguration": "JSON Configuration",
    "invalidJsonFormat": "Invalid JSON format",
    "fixJsonBeforeSwitching": "Please fix JSON format before switching to form mode",
    "item": "Item {{index}}",
    "addItem": "Add {{key}} item",
    "enterKey": "Enter {{key}}"
  },
  "prompt": {
    "run": "Get",
    "running": "Getting...",
    "result": "Prompt Result",
    "error": "Prompt Error",
    "execution": "Prompt Execution",
    "successful": "Successful",
    "failed": "Failed",
    "errorDetails": "Error Details:",
    "noContent": "Prompt executed successfully but returned no content.",
    "unknownError": "Unknown error occurred",
    "jsonResponse": "JSON Response:",
    "description": "Description",
    "messages": "Messages",
    "noDescription": "No description available",
    "runPromptWithName": "Get Prompt: {{name}}",
    "descriptionUpdateSuccess": "Prompt description updated successfully",
    "descriptionUpdateFailed": "Failed to update prompt description",
    "restoreDefault": "Restore default",
    "restoreDefaultSuccess": "Prompt description restored to default",
    "restoreDefaultFailed": "Failed to restore the default prompt description"
  },
  "settings": {
    "subtitle": "Configure system settings, authentication, routing, and MCP server integrations.",
    "enableGlobalRoute": "Enable Global Route",
    "enableGlobalRouteDescription": "Allow connections to /sse endpoint without specifying a group ID",
    "enableGroupNameRoute": "Enable Group Name Route",
    "enableGroupNameRouteDescription": "Allow connections to /sse endpoint using group names instead of just group IDs",
    "enableBearerAuth": "Enable Bearer Authentication",
    "enableBearerAuthDescription": "Require bearer token authentication for MCP endpoints (default on)",
    "bearerAuthKey": "Bearer Authentication Key",
    "bearerAuthKeyDescription": "The authentication key that will be required in the Bearer token",
    "bearerAuthKeyPlaceholder": "Enter bearer authentication key",
    "bearerAuthHeaderName": "Bearer Auth Header Name",
    "bearerAuthHeaderNameDescription": "Header name used to receive MCP bearer credentials. Change this when upstream passthrough headers also use Authorization.",
    "bearerAuthHeaderNamePlaceholder": "e.g. Authorization or X-MCP-Authorization",
    "bearerKeysSectionTitle": "Keys",
    "bearerKeysSectionDescription": "Manage multiple keys with different access scopes.",
    "noBearerKeys": "No keys configured yet.",
    "bearerKeyName": "Name",
    "bearerKeyToken": "Token",
    "bearerKeyEnabled": "Enabled",
    "bearerKeyAccessType": "Access scope",
    "bearerKeyAccessAll": "All",
    "bearerKeyAccessGroups": "Groups",
    "bearerKeyAccessServers": "Servers",
    "bearerKeyAccessCustom": "Custom",
    "bearerKeyAllowedGroups": "Allowed groups",
    "bearerKeyAllowedServers": "Allowed servers",
    "addBearerKey": "Add key",
    "addBearerKeyButton": "Create",
    "bearerKeyRequired": "Name and token are required",
    "bearerKeyNameRequired": "Name is required",
    "bearerKeyOwnerRequired": "Owner is required",
    "bearerKeyKind": "Key type",
    "bearerKeyKindSystem": "System-level",
    "bearerKeyKindUser": "User-level",
    "bearerKeyOwner": "Owner",
    "bearerKeySelectOwner": "Select user...",
    "bearerKeyAccessUserVisibility": "User visibility",
    "bearerKeyShownOnce": "Copy this token now. It will not be shown again.",
    "deleteBearerKeyConfirm": "Are you sure you want to delete this key?",
    "generate": "Generate",
    "selectGroups": "Select Groups",
    "selectServers": "Select Servers",
    "selectAtLeastOneGroup": "Please select at least one group",
    "selectAtLeastOneServer": "Please select at least one server",
    "skipAuth": "Skip Authentication",
    "skipAuthDescription": "Allow dashboard access without login; unauthenticated users get guest admin access (does not affect MCP endpoint auth)",
    "jsonBodyLimit": "JSON Body Size Limit",
    "jsonBodyLimitDescription": "Express JSON request size limit. This affects large OpenAPI schema uploads as well.",
    "jsonBodyLimitPlaceholder": "e.g. 1mb, 5mb, 1024kb",
    "pythonIndexUrl": "Python Package Repository URL",
    "pythonIndexUrlDescription": "Set UV_DEFAULT_INDEX environment variable for Python package installation",
    "pythonIndexUrlPlaceholder": "e.g. https://pypi.org/simple",
    "npmRegistry": "NPM Registry URL",
    "npmRegistryDescription": "Set npm_config_registry environment variable for NPM package installation",
    "npmRegistryPlaceholder": "e.g. https://registry.npmjs.org/",
    "baseUrl": "Base URL",
    "baseUrlDescription": "Base URL for MCP requests and OAuth callbacks",
    "baseUrlPlaceholder": "e.g. http://localhost:3000",
    "installConfig": "Installation",
    "systemConfigUpdated": "System configuration updated successfully",
    "betterAuthTitle": "Better Auth",
    "betterAuthEnvNote": "Client IDs and secrets still come from environment variables. Changing Better Auth settings may require an application restart, and the install base URL origin is trusted automatically.",
    "enableBetterAuth": "Enable Better Auth",
    "enableBetterAuthDescription": "Enable social and OIDC login when the required environment variables are configured.",
    "betterAuthBasePath": "Auth base path",
    "betterAuthBasePathDescription": "Relative API path used by the Better Auth routes.",
    "betterAuthTrustedOrigins": "Trusted origins",
    "betterAuthTrustedOriginsDescription": "Comma-separated origins allowed for Better Auth requests. The install base URL origin is added automatically.",
    "betterAuthProviders": "Providers",
    "betterAuthProvidersDescription": "Provider switches control which configured login methods are exposed on the sign-in page.",
    "betterAuthGoogleDescription": "Requires GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.",
    "betterAuthGithubDescription": "Requires GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET.",
    "betterAuthOidcDescription": "Requires OIDC client credentials plus a discovery URL.",
    "betterAuthOidcProviderId": "OIDC provider ID",
    "betterAuthOidcProviderIdDescription": "Provider identifier used when starting the OIDC login flow.",
    "betterAuthOidcDiscoveryUrl": "OIDC discovery URL",
    "betterAuthOidcDiscoveryUrlDescription": "Well-known OpenID configuration URL published by your identity provider.",
    "betterAuthOidcScopes": "OIDC scopes",
    "betterAuthOidcScopesDescription": "Comma-separated scopes requested during the OIDC sign-in flow.",
    "betterAuthOidcPrompt": "OIDC prompt",
    "betterAuthOidcPromptDescription": "Optional prompt value sent to the identity provider, such as login or consent.",
    "betterAuthOidcPkce": "Enable PKCE",
    "betterAuthOidcPkceDescription": "Use PKCE for the OIDC authorization flow.",
    "enableSmartRouting": "Enable Smart Routing",
    "enableSmartRoutingDescription": "Enable smart routing feature to search the most suitable tool based on input (using $smart group name)",
    "dbUrl": "PostgreSQL URL (requires pgvector support)",
    "dbUrlPlaceholder": "e.g. postgresql://user:password@localhost:5432/dbname",
    "embeddingProvider": "Embedding Provider",
    "openaiApiBaseUrl": "OpenAI-compatible Base URL",
    "openaiApiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "openaiApiKey": "LLM Provider API Key",
    "openaiApiKeyPlaceholder": "Enter LLM provider API key",
    "openaiApiEmbeddingModel": "Embedding Model Name",
    "openaiApiEmbeddingModelPlaceholder": "text-embedding-3-small",
    "basePacingDelayMs": "Base Pacing Delay (ms)",
    "basePacingDelayMsDescription": "Baseline delay between embedding API requests. Defaults to 0 — the system manages rate limits automatically: it respects Retry-After headers, falls back to a 63-second cooldown, and increases the pacing delay after any 403/429 response. Set a non-zero value only if your provider enforces a fixed minimum interval between requests.",
    "basePacingDelayMsPlaceholder": "Empty = default 0 ms",
    "basePacingDelayMsAuto": "Default ({{value}} ms): rate limiting is managed automatically.",
    "basePacingDelayMsZero": "0 ms (default): rate limiting is managed automatically via adaptive throttling and retry logic.",
    "basePacingDelayMsOverride": "Custom value: overrides the default baseline pacing delay.",
    "embeddingEncodingFormat": "Embedding Encoding Format",
    "embeddingEncodingFormatDescription": "Encoding format for embedding vectors. Auto will detect based on provider support.",
    "embeddingEncodingFormatAuto": "Auto (Recommended)",
    "azureOpenaiEndpoint": "Azure OpenAI Endpoint",
    "azureOpenaiEndpointPlaceholder": "https://YOUR_RESOURCE_NAME.openai.azure.com",
    "azureOpenaiApiKey": "Azure OpenAI API Key",
    "azureOpenaiApiKeyPlaceholder": "Enter Azure OpenAI API key",
    "azureOpenaiApiVersion": "Azure OpenAI API Version",
    "azureOpenaiApiVersionPlaceholder": "2024-02-15-preview",
    "azureOpenaiEmbeddingDeployment": "Azure OpenAI Embedding Deployment",
    "azureOpenaiEmbeddingDeploymentPlaceholder": "text-embedding-3-small",
    "azureOpenaiEmbeddingModel": "Azure Embedding Model Name",
    "azureOpenaiEmbeddingModelDescription": "The actual OpenAI model name deployed in Azure (e.g. text-embedding-3-small). Used for accurate token counting before sending text to the API.",
    "azureOpenaiEmbeddingModelPlaceholder": "text-embedding-3-small",
    "progressiveDisclosure": "Progressive Disclosure",
    "progressiveDisclosureDescription": "When enabled, search_tools returns only tool names and descriptions. Use describe_tool to get full parameter schema, reducing token usage.",
    "embeddingMaxTokens": "Max Embedding Tokens",
    "embeddingMaxTokensDescription": "Maximum tokens for text truncation before generating embeddings. Leave empty to use the model default automatically. A custom value always overrides the model default. Manually setting this value is especially useful when using local LLM providers to prevent truncation errors.",
    "embeddingMaxTokensPlaceholder": "Empty = auto by model",
    "embeddingMaxTokensAuto": "Auto: {{limit}} tokens (model default for {{model}})",
    "embeddingMaxTokensOverride": "This value overrides the model default.",
    "smartRoutingConfigUpdated": "Smart routing configuration updated successfully",
    "smartRoutingRequiredFields": "Database URL is required to enable smart routing. An LLM Provider API Key is required for cloud-based providers (local LLMs usually don't require an API key, enter any value to pass the form validation)",
    "smartRoutingValidationError": "Please fill in the required fields before enabling Smart Routing: {{fields}}",
    "smartRoutingWorkflow": "Workflow",
    "smartRoutingWorkflowDescription": "Prompts are vectorized; top-k similar tools are fetched from pgvector and exposed to the upstream LLM.",
    "mcpRouterConfig": "Cloud Market",
    "mcpRouterApiKey": "MCPRouter API Key",
    "mcpRouterApiKeyDescription": "API key for accessing MCPRouter cloud market services",
    "mcpRouterApiKeyPlaceholder": "Enter MCPRouter API key",
    "mcpRouterReferer": "Referer",
    "mcpRouterRefererDescription": "Referer header for MCPRouter API requests",
    "mcpRouterRefererPlaceholder": "https://www.mcphub.app",
    "mcpRouterTitle": "Title",
    "mcpRouterTitleDescription": "Title header for MCPRouter API requests",
    "mcpRouterTitlePlaceholder": "MCPHub",
    "mcpRouterBaseUrl": "Base URL",
    "mcpRouterBaseUrlDescription": "Base URL for MCPRouter API",
    "mcpRouterBaseUrlPlaceholder": "https://api.mcprouter.to/v1",
    "systemSettings": "System Settings",
    "nameSeparatorLabel": "Name Separator",
    "nameSeparatorDescription": "Character used to separate server name and tool/prompt name (default: -)",
    "enableSessionRebuild": "Enable Server Session Rebuild",
    "enableSessionRebuildDescription": "When enabled, applies the improved server session rebuild code for better session management experience",
    "restartRequired": "Configuration saved. It is recommended to restart the application to ensure all services load the new settings correctly.",
    "exportMcpSettings": "Export Settings",
    "mcpSettingsJson": "MCP Settings JSON",
    "mcpSettingsJsonDescription": "View, copy, or download your current mcp_settings.json configuration for backup or migration to other tools",
    "copyToClipboard": "Copy to Clipboard",
    "downloadJson": "Download JSON",
    "exportSuccess": "Settings exported successfully",
    "exportError": "Failed to fetch settings",
    "enableOauthServer": "Enable OAuth Server",
    "enableOauthServerDescription": "Allow MCPHub to issue OAuth tokens for external clients",
    "requireClientSecret": "Require Client Secret",
    "requireClientSecretDescription": "When enabled, confidential clients must present a client secret (disable for PKCE-only clients)",
    "requireState": "Require State Parameter",
    "requireStateDescription": "Reject authorization requests that omit the OAuth state parameter",
    "accessTokenLifetime": "Access Token Lifetime (seconds)",
    "accessTokenLifetimeDescription": "How long issued access tokens remain valid",
    "accessTokenLifetimePlaceholder": "e.g. 3600",
    "refreshTokenLifetime": "Refresh Token Lifetime (seconds)",
    "refreshTokenLifetimeDescription": "How long refresh tokens remain valid",
    "refreshTokenLifetimePlaceholder": "e.g. 1209600",
    "authorizationCodeLifetime": "Authorization Code Lifetime (seconds)",
    "authorizationCodeLifetimeDescription": "How long authorization codes remain valid before they can be exchanged",
    "authorizationCodeLifetimePlaceholder": "e.g. 300",
    "allowedScopes": "Allowed Scopes",
    "allowedScopesDescription": "Comma-separated list of scopes users can approve during authorization",
    "allowedScopesPlaceholder": "e.g. read, write",
    "enableDynamicRegistration": "Enable Dynamic Client Registration",
    "dynamicRegistrationDescription": "Allow RFC 7591 compliant clients to self-register using the public endpoint",
    "dynamicRegistrationAllowedGrantTypes": "Allowed Grant Types",
    "dynamicRegistrationAllowedGrantTypesDescription": "Comma-separated list of grants permitted for dynamically registered clients",
    "dynamicRegistrationAllowedGrantTypesPlaceholder": "e.g. authorization_code, refresh_token",
    "dynamicRegistrationAuth": "Require Authentication",
    "dynamicRegistrationAuthDescription": "Protect the registration endpoint so only authenticated requests can register clients",
    "invalidNumberInput": "Please enter a valid non-negative number"
  },
  "mcpb": {
    "upload": "Upload",
    "uploadTitle": "Upload MCPB Bundle",
    "dropFileHere": "Drop your .mcpb file here",
    "orClickToSelect": "or click to select from your computer",
    "invalidFileType": "Please select a valid .mcpb file",
    "noFileSelected": "Please select a .mcpb file to upload",
    "uploading": "Uploading...",
    "uploadFailed": "Failed to upload MCPB file",
    "installServer": "Install MCP Server from MCPB",
    "extensionInfo": "Extension Information",
    "name": "Name",
    "version": "Version",
    "description": "Description",
    "author": "Author",
    "tools": "Tools",
    "serverName": "Server Name",
    "serverNamePlaceholder": "Enter a name for this server",
    "install": "Install",
    "installing": "Installing...",
    "installFailed": "Failed to install server from MCPB",
    "serverExistsTitle": "Server Already Exists",
    "serverExistsConfirm": "Server '{{serverName}}' already exists. Do you want to override it with the new version?",
    "override": "Override"
  },
  "jsonImport": {
    "button": "Import",
    "title": "Import Servers from JSON",
    "inputLabel": "Server Configuration JSON",
    "inputHelp": "Paste your server configuration JSON. Supports STDIO, SSE, and HTTP (streamable-http) server types.",
    "preview": "Preview",
    "previewTitle": "Preview Servers to Import",
    "import": "Import",
    "importing": "Importing...",
    "invalidFormat": "Invalid JSON format. The JSON must contain an 'mcpServers' object.",
    "parseError": "Failed to parse JSON. Please check the format and try again.",
    "addFailed": "Failed to add server",
    "importFailed": "Failed to import servers",
    "partialSuccess": "Imported {{count}} of {{total}} servers successfully. Some servers failed:"
  },
  "groupImport": {
    "button": "Import",
    "title": "Import Groups from JSON",
    "inputLabel": "Group Configuration JSON",
    "inputHelp": "Paste your group configuration JSON. Each group can contain a list of servers.",
    "preview": "Preview",
    "previewTitle": "Preview Groups to Import",
    "import": "Import",
    "importing": "Importing...",
    "invalidFormat": "Invalid JSON format. The JSON must contain a 'groups' array.",
    "missingName": "Each group must have a 'name' field.",
    "parseError": "Failed to parse JSON. Please check the format and try again.",
    "addFailed": "Failed to add group",
    "importFailed": "Failed to import groups",
    "partialSuccess": "Imported {{count}} of {{total}} groups successfully. Some groups failed:"
  },
  "users": {
    "add": "Add User",
    "addNew": "Add New User",
    "edit": "Edit User",
    "delete": "Delete User",
    "create": "Create User",
    "update": "Update User",
    "username": "Username",
    "email": "Email",
    "emailPlaceholder": "Enter email (optional)",
    "password": "Password",
    "newPassword": "New Password",
    "confirmPassword": "Confirm Password",
    "changePassword": "Change Password",
    "adminRole": "Administrator",
    "admin": "Admin",
    "user": "User",
    "role": "Role",
    "actions": "Actions",
    "addFirst": "Add your first user",
    "permissions": "Permissions",
    "adminPermissions": "Full system access",
    "userPermissions": "Limited access",
    "currentUser": "You",
    "noUsers": "No users found",
    "adminRequired": "Administrator access required to manage users",
    "usernameRequired": "Username is required",
    "passwordRequired": "Password is required",
    "passwordTooShort": "Password must be at least 6 characters long",
    "passwordMismatch": "Passwords do not match",
    "usernamePlaceholder": "Enter username",
    "passwordPlaceholder": "Enter password",
    "newPasswordPlaceholder": "Leave empty to keep current password",
    "confirmPasswordPlaceholder": "Confirm new password",
    "createError": "Failed to create user",
    "updateError": "Failed to update user",
    "deleteError": "Failed to delete user",
    "statsError": "Failed to fetch user statistics",
    "deleteConfirmation": "Are you sure you want to delete user '{{username}}'? This action cannot be undone.",
    "confirmDelete": "Delete User",
    "deleteWarning": "Are you sure you want to delete user '{{username}}'? This action cannot be undone."
  },
  "api": {
    "errors": {
      "readonly": "Readonly for demo environment",
      "invalid_credentials": "Invalid username or password",
      "serverNameRequired": "Server name is required",
      "serverConfigRequired": "Server configuration is required",
      "serverConfigInvalid": "Server configuration must include either a URL, OpenAPI specification URL or schema, or command with arguments",
      "serverTypeInvalid": "Server type must be one of: stdio, sse, streamable-http, openapi",
      "urlRequiredForType": "URL is required for {{type}} server type",
      "openapiSpecRequired": "OpenAPI specification URL or schema is required for openapi server type",
      "headersInvalidFormat": "Headers must be an object",
      "headersNotSupportedForStdio": "Headers are not supported for stdio server type",
      "serverNotFound": "Server not found",
      "failedToRemoveServer": "Server not found or failed to remove",
      "internalServerError": "Internal server error",
      "failedToGetServers": "Failed to get servers information",
      "failedToReloadServer": "Failed to reload server",
      "failedToGetServerSettings": "Failed to get server settings",
      "failedToGetServerConfig": "Failed to get server configuration",
      "failedToSaveSettings": "Failed to save settings",
      "toolNameRequired": "Server name and tool name are required",
      "descriptionMustBeString": "Description must be a string",
      "groupIdRequired": "Group ID is required",
      "groupNameRequired": "Group name is required",
      "groupNotFound": "Group not found",
      "groupIdAndServerNameRequired": "Group ID and server name are required",
      "groupOrServerNotFound": "Group or server not found",
      "toolsMustBeAllOrArray": "Tools must be \"all\" or an array of strings",
      "serverNameAndToolNameRequired": "Server name and tool name are required",
      "usernameRequired": "Username is required",
      "userNotFound": "User not found",
      "failedToGetUsers": "Failed to get users information",
      "failedToGetUserInfo": "Failed to get user information",
      "failedToGetUserStats": "Failed to get user statistics",
      "marketServerNameRequired": "Server name is required",
      "marketServerNotFound": "Market server not found",
      "failedToGetMarketServers": "Failed to get market servers information",
      "failedToGetMarketServer": "Failed to get market server information",
      "failedToGetMarketCategories": "Failed to get market categories",
      "failedToGetMarketTags": "Failed to get market tags",
      "failedToSearchMarketServers": "Failed to search market servers",
      "failedToFilterMarketServers": "Failed to filter market servers",
      "failedToProcessMcpbFile": "Failed to process MCPB file"
    },
    "success": {
      "serverCreated": "Server created successfully",
      "serverUpdated": "Server updated successfully",
      "serverRemoved": "Server removed successfully",
      "serverToggled": "Server status toggled successfully",
      "toolToggled": "Tool {{name}} {{action}} successfully",
      "toolDescriptionUpdated": "Tool {{name}} description updated successfully",
      "systemConfigUpdated": "System configuration updated successfully",
      "groupCreated": "Group created successfully",
      "groupUpdated": "Group updated successfully",
      "groupDeleted": "Group deleted successfully",
      "serverAddedToGroup": "Server added to group successfully",
      "serverRemovedFromGroup": "Server removed from group successfully",
      "serverToolsUpdated": "Server tools updated successfully"
    }
  },
  "oauthCallback": {
    "authorizationFailed": "Authorization Failed",
    "authorizationFailedError": "Error",
    "authorizationFailedDetails": "Details",
    "invalidRequest": "Invalid Request",
    "missingStateParameter": "Missing required OAuth state parameter.",
    "missingCodeParameter": "Missing required authorization code parameter.",
    "serverNotFound": "Server Not Found",
    "serverNotFoundMessage": "Could not find server associated with this authorization request.",
    "sessionExpiredMessage": "The authorization session may have expired. Please try authorizing again.",
    "authorizationSuccessful": "Authorization Successful",
    "server": "Server",
    "status": "Status",
    "connected": "Connected",
    "successMessage": "The server has been successfully authorized and connected.",
    "autoCloseMessage": "This window will close automatically in 3 seconds...",
    "closeNow": "Close Now",
    "connectionError": "Connection Error",
    "connectionErrorMessage": "Authorization was successful, but failed to connect to the server.",
    "reconnectMessage": "Please try reconnecting from the dashboard.",
    "configurationError": "Configuration Error",
    "configurationErrorMessage": "Server transport does not support OAuth finishAuth(). Please ensure the server is configured with streamable-http transport.",
    "internalError": "Internal Error",
    "internalErrorMessage": "An unexpected error occurred while processing the OAuth callback.",
    "closeWindow": "Close Window"
  },
  "builtinPrompts": {
    "add": "Add Prompt",
    "addNew": "Add New Prompt",
    "edit": "Edit Prompt",
    "delete": "Delete",
    "noPrompts": "No built-in prompts configured",
    "addFirst": "Add your first prompt",
    "name": "Name",
    "namePlaceholder": "e.g. code-review",
    "title": "Title",
    "titlePlaceholder": "e.g. Code Review Prompt",
    "description": "Description",
    "descriptionPlaceholder": "Brief description of the prompt",
    "template": "Template",
    "templatePlaceholder": "Enter template text with {{parameter}} placeholders...",
    "templateHint": "Use {{paramName}} for template parameters",
    "arguments": "Arguments",
    "addArgument": "Add Argument",
    "argName": "Name",
    "argDescription": "Description",
    "argRequired": "Required",
    "enabled": "Enabled",
    "active": "Active",
    "inactive": "Inactive",
    "nameRequired": "Name is required",
    "templateRequired": "Template is required",
    "fetchError": "Failed to load built-in prompts",
    "createError": "Failed to create prompt",
    "updateError": "Failed to update prompt",
    "deleteError": "Failed to delete prompt",
    "saveError": "Failed to save prompt",
    "confirmDelete": "Delete Prompt",
    "deleteWarning": "Are you sure you want to delete the prompt \"{{name}}\"? This action cannot be undone."
  },
  "builtinResources": {
    "add": "Add Resource",
    "addNew": "Add New Resource",
    "edit": "Edit Resource",
    "delete": "Delete",
    "noResources": "No built-in resources configured",
    "addFirst": "Add your first resource",
    "uri": "URI",
    "uriPlaceholder": "e.g. resource://docs/guide",
    "name": "Name",
    "namePlaceholder": "e.g. User Guide",
    "description": "Description",
    "descriptionPlaceholder": "Brief description of the resource",
    "mimeType": "MIME Type",
    "content": "Content",
    "contentPlaceholder": "Enter the resource content...",
    "enabled": "Enabled",
    "active": "Active",
    "inactive": "Inactive",
    "descriptionUpdateSuccess": "Resource description updated successfully",
    "descriptionUpdateFailed": "Failed to update resource description",
    "restoreDefault": "Restore default",
    "restoreDefaultSuccess": "Resource description restored to default",
    "restoreDefaultFailed": "Failed to restore the default resource description",
    "uriRequired": "URI is required",
    "contentRequired": "Content is required",
    "fetchError": "Failed to load built-in resources",
    "createError": "Failed to create resource",
    "updateError": "Failed to update resource",
    "deleteError": "Failed to delete resource",
    "saveError": "Failed to save resource",
    "confirmDelete": "Delete Resource",
    "deleteWarning": "Are you sure you want to delete the resource \"{{name}}\"? This action cannot be undone."
  },
  "activity": {
    "title": "Activity",
    "totalCalls": "Total Calls",
    "successCount": "Successful",
    "errorCount": "Failed",
    "avgDuration": "Avg Duration",
    "timestamp": "Timestamp",
    "server": "Server",
    "tool": "Tool",
    "duration": "Duration",
    "status": "Status",
    "group": "Group",
    "key": "API Key",
    "sourceIp": "Source IP",
    "input": "Input",
    "output": "Output",
    "details": "Activity Details",
    "errorMessage": "Error Message",
    "searchServer": "Server...",
    "searchTool": "Tool...",
    "searchStatus": "Status...",
    "searchGroup": "Group...",
    "searchKeyName": "API key...",
    "keyName": "API Key Name",
    "allStatus": "All Status",
    "statusSuccess": "Success",
    "statusError": "Error",
    "noData": "No activity data available",
    "fetchError": "Failed to load activity data",
    "cleanup": "Cleanup",
    "confirmCleanup": "Are you sure you want to delete activities older than 30 days?",
    "cleanupSuccess": "Deleted {{count}} old activities",
    "cleanupError": "Failed to cleanup old activities",
    "notAvailable": "Activity tracking is only available in database mode"
  },
  "template": {
    "exportButton": "Export Template",
    "importButton": "Import Template",
    "exportTitle": "Export Configuration Template",
    "importTitle": "Import Configuration Template",
    "name": "Template Name",
    "nameRequired": "Template name is required",
    "namePlaceholder": "e.g., Frontend Dev Tools",
    "description": "Description",
    "descriptionPlaceholder": "e.g., Standard MCP servers for frontend development",
    "selectGroups": "Select Groups",
    "selectGroupsHelp": "Leave empty to export all groups",
    "selectAll": "Select All",
    "deselectAll": "Deselect All",
    "includeDisabled": "Include disabled servers",
    "exportNote": "Secrets (API keys, tokens, passwords) will be replaced with ${PLACEHOLDER} references. Recipients must supply their own credentials.",
    "export": "Export",
    "exporting": "Exporting...",
    "exportFailed": "Failed to export template",
    "import": "Import",
    "importing": "Importing...",
    "importFailed": "Failed to import template",
    "invalidFormat": "Invalid template format. Must contain version, name, servers, and groups fields.",
    "parseError": "Failed to parse JSON. Please check the format and try again.",
    "uploadFile": "Upload Template File",
    "or": "or",
    "pasteJson": "Paste Template JSON",
    "pastePlaceholder": "Paste your .mcphub-template.json content here...",
    "version": "Version",
    "createdAt": "Created",
    "servers": "Servers",
    "groups": "Groups",
    "serversInGroup": "server(s)",
    "envVarsNeeded": "Required Environment Variables — set these before using the imported servers:",
    "importResult": "Servers: {{serversCreated}} created, {{serversSkipped}} skipped. Groups: {{groupsCreated}} created, {{groupsSkipped}} skipped."
  }
}
