{
  "header": {
    "collapseSidebar": "Collapse sidebar",
    "expandSidebar": "Expand sidebar",
    "toggleConnection": "Toggle backend connection",
    "viewAnnualSummary": "View annual summary",
    "annualSummary": "2025 Annual Summary",
    "searchPlaceholder": "Search...",
    "viewDocs": "View MaiBot docs",
    "docs": "MaiBot Docs",
    "switchToLight": "Switch to light mode",
    "switchToDark": "Switch to dark mode",
    "logout": "Log out",
    "logoutLabel": "Logout",
    "notConnected": "Not connected"
  },
  "sidebar": {
    "groups": {
      "overview": "Overview",
      "botConfig": "Bot Configuration",
      "botResources": "Bot Resources",
      "extensionsMonitor": "Extensions & Monitor",
      "system": "System"
    },
    "menu": {
      "home": "Home",
      "botMainConfig": "Bot Main Config",
      "aiModelProvider": "AI Model Providers",
      "modelManagement": "Model Management",
      "adapterConfig": "Adapter Config",
      "emojiManagement": "Emoji Management",
      "expressionManagement": "Expression Management",
      "slangManagement": "Slang Management",
      "personInfo": "Person Info",
      "knowledgeGraph": "Knowledge Graph",
      "knowledgeBase": "Knowledge Base",
      "pluginMarket": "Plugin Market",
      "configTemplate": "Config Templates",
      "pluginConfig": "Plugin Config",
      "logViewer": "Log Viewer",
      "plannerMonitor": "Planner & Replier Monitor",
      "localChat": "Local Chat",
      "settings": "Settings"
    }
  },
  "layout": {
    "verifyingLogin": "Verifying login status...",
    "logoTitle": "MaiBot WebUI",
    "logoTitleShort": "M"
  },
  "settings": {
    "title": "Settings",
    "description": "Manage your application preferences",
    "tabs": {
      "appearance": "Appearance",
      "security": "Security",
      "other": "Other",
      "about": "About"
    },
    "appearance": {
      "themeMode": "Theme Mode",
      "themeModeDesc": "Light / Dark / Follow system",
      "light": "Light",
      "dark": "Dark",
      "system": "System",
      "accentColor": "Accent Color",
      "resetDefault": "Reset Default",
      "colorPreview": "Live Color Preview",
      "styleTweaks": "Style Tweaks",
      "typography": "Typography",
      "visualEffects": "Visual Effects",
      "layout": "Layout",
      "animation": "Animation",
      "background": "Background",
      "customCss": "Custom CSS",
      "animationEffect": "Animation Effect",
      "importExportTheme": "Import / Export Theme",
      "importTheme": "Import Theme",
      "exportTheme": "Export Theme",
      "importSuccess": "Import successful",
      "importFailed": "Import failed",
      "resetSuccess": "Reset successful",
      "fontFamily": "Font Family",
      "fontSize": "Font Size",
      "borderRadius": "Border Radius",
      "contentWidth": "Content Width",
      "sidebarWidth": "Sidebar Width",
      "animationSpeed": "Animation Speed",
      "backgroundImage": "Background Image",
      "backgroundBlur": "Background Blur",
      "backgroundOpacity": "Background Opacity",
      "lightDesc": "Always use light theme",
      "darkDesc": "Always use dark theme",
      "systemDesc": "Auto-switch based on system settings",
      "accentPrimary": "Primary Color",
      "accentHint": "Click the color ring or enter a HEX value",
      "resetTheme": "Reset to Default",
      "confirmResetTheme": "Confirm Reset Theme",
      "confirmResetThemeDesc": "This will reset all theme settings to default, including colors, fonts, layout and custom CSS. This cannot be undone, are you sure?",
      "confirmResetAction": "Confirm Reset",
      "cssWarningTitle": "The following have been filtered for safety:",
      "cssPlaceholder": "/* Enter custom CSS here */\n\n/* Example: */\n/* .sidebar { background: #1a1a2e; } */",
      "cssDescription": "Write custom CSS to further personalize the interface. Dangerous CSS (like @import, url()) will be automatically filtered.",
      "clearCss": "Clear",
      "exportDesc": "Export theme as a JSON file for sharing or backup; all settings will be applied automatically on import.",
      "importSuccessDesc": "Theme config imported, page will reload automatically",
      "resetSuccessDesc": "Theme has been reset to default",
      "enableAnimations": "Enable Animations",
      "enableAnimationsDesc": "Disabling this will turn off all transition animations and effects, improving performance",
      "loginWavesBackground": "Login Page Wave Background",
      "loginWavesBackgroundDesc": "Disabling this will use a solid color background on the login page, suitable for low-performance devices",
      "inheritParentBg": "Inherit Parent Background",
      "inheritParentBgDesc": "When enabled, uses the background config from the parent layer",
      "fontFamilyLabel": "Font Family",
      "fontFamilyPlaceholder": "Select font family",
      "fontFamilySystem": "System Default (System)",
      "fontFamilySans": "Sans-serif",
      "fontFamilySerif": "Serif",
      "fontFamilyMono": "Monospace",
      "baseFontSize": "Base Font Size",
      "lineHeight": "Line Height",
      "lineHeightPlaceholder": "Select line height",
      "lineHeightCompact": "Compact (1.2)",
      "lineHeightNormal": "Normal (1.5)",
      "lineHeightLoose": "Loose (1.75)",
      "borderRadiusLabel": "Border Radius",
      "shadowLabel": "Shadow Intensity",
      "shadowPlaceholder": "Select shadow intensity",
      "shadowNone": "None",
      "shadowSm": "Small",
      "shadowMd": "Medium",
      "shadowLg": "Large",
      "shadowXl": "Extra Large",
      "blurLabel": "Blur Effect",
      "sidebarWidthLabel": "Sidebar Width",
      "maxContentWidth": "Max Content Width",
      "spacingUnit": "Spacing Unit",
      "animationSpeedLabel": "Animation Speed",
      "animationSpeedPlaceholder": "Select animation speed",
      "animationFast": "Fast (100ms)",
      "animationNormal": "Normal (300ms)",
      "animationSlow": "Slow (500ms)",
      "animationOff": "Off (0ms)",
      "bgPage": "Page",
      "bgSidebar": "Sidebar",
      "typographyGroup": "Typography",
      "visualGroup": "Visual Effects",
      "layoutGroup": "Layout",
      "animationGroup": "Animation",
      "backgroundGroup": "Background Settings"
    },
    "security": {
      "currentToken": "Current Access Token",
      "yourToken": "Your Access Token",
      "regenerate": "Regenerate",
      "customToken": "Custom Access Token",
      "securityTip": "Security Tips",
      "cannotCopy": "Cannot copy",
      "copySuccess": "Copied",
      "copyFailed": "Copy failed",
      "updateSuccess": "Updated",
      "updateFailed": "Update failed",
      "generateSuccess": "Generated",
      "generateFailed": "Generation failed",
      "newToken": "New Access Token",
      "confirmRegenerate": "Confirm Regenerate Token",
      "confirmRegenerateDesc": "The old token will be invalidated after regeneration. You will need to log in again.",
      "cancel": "Cancel",
      "confirm": "Confirm",
      "cannotCopyDesc": "Token is stored in a secure Cookie. Please regenerate to get a new Token.",
      "copySuccessDesc": "Token copied to clipboard",
      "copyFailedDesc": "Please copy the Token manually",
      "inputError": "Input error",
      "inputErrorDesc": "Please enter a new Token",
      "formatError": "Format error",
      "formatErrorDesc": "Token does not meet requirements: {{failedRules}}",
      "updateSuccessDesc": "Access Token updated. Redirecting to login page.",
      "updateFailedDesc": "Unable to update Token",
      "updateFailedConn": "Failed to connect to server",
      "generateSuccessDesc": "New Access Token generated. Please save it immediately.",
      "generateFailedDesc": "Unable to generate new Token",
      "generateFailedConn": "Failed to connect to server",
      "cannotView": "Cannot view",
      "cannotViewDesc": "Token is stored in a secure Cookie. Click \"Regenerate\" to get a new Token.",
      "hide": "Hide",
      "show": "Show",
      "copyTip": "Copy to clipboard",
      "regenerateShort": "Generate",
      "confirmRegenerateFullDesc": "This will generate a new 64-character secure token, immediately invalidating the current Token. You will need to log in again with the new Token. This action cannot be undone. Are you sure?",
      "confirmGenerate": "Confirm Generate",
      "tokenStorePlaceholder": "Token is stored in a secure Cookie",
      "safekeepTip": "Keep your Access Token safe and do not share it with others.",
      "newTokenLabel": "New Access Token",
      "customTokenPlaceholder": "Enter custom Token",
      "tokenReqTitle": "Token security requirements:",
      "tokenValid": "Token format is valid and ready to use",
      "updateBtn": "Update Custom Token",
      "updating": "Updating...",
      "dialogTitle": "New Access Token",
      "dialogDesc": "This is your new Token. Please save it immediately. You will be redirected to the login page after closing this window.",
      "dialogTokenLabel": "Your new Token (64-char secure token)",
      "important": "Important Notice",
      "tip1": "This Token is only shown once and cannot be viewed after closing",
      "tip2": "Copy and save it to a secure location immediately",
      "tip3": "You will be automatically redirected to the login page after closing",
      "tip4": "Use the new Token to log back in",
      "copied": "Copied",
      "copyToken": "Copy Token",
      "savedClose": "Saved, close",
      "securityTip1": "Regenerating creates a new system-generated 64-character secure token",
      "securityTip2": "Custom Tokens must meet all security requirements",
      "securityTip3": "After updating, the old Token will be immediately invalidated",
      "securityTip4": "View and copy your Token only in a secure environment",
      "securityTip5": "If you suspect a Token leak, regenerate or update it immediately",
      "securityTip6": "System-generated Tokens are recommended for maximum security"
    },
    "other": {
      "performance": "Performance & Storage",
      "localStorage": "Local Storage Usage",
      "logCache": "Log Cache Size",
      "importExport": "Import / Export Settings",
      "configWizard": "Config Wizard",
      "devTools": "Developer Tools",
      "clearStorage": "Clear Local Storage",
      "clearStorageDesc": "Clear all local storage data",
      "clearStorageConfirm": "Confirm Clear",
      "clearLogCache": "Clear Log Cache",
      "clearLogCacheDesc": "Clear all cached log data",
      "clearLogCacheConfirm": "Confirm Clear",
      "importSettings": "Import Settings",
      "exportSettings": "Export Settings",
      "resetAllSettings": "Reset All Settings",
      "resetAllSettingsDesc": "Restore all settings to defaults",
      "resetAllSettingsConfirm": "Confirm Reset",
      "clearStorageSuccess": "Local storage cleared",
      "clearStorageFailed": "Failed to clear",
      "clearLogSuccess": "Log cache cleared",
      "clearLogFailed": "Failed to clear",
      "importSuccess": "Import successful",
      "importFailed": "Import failed",
      "exportSuccess": "Export successful",
      "exportFailed": "Export failed",
      "resetSuccess": "Reset successful",
      "resetFailed": "Reset failed",
      "storageItems": "{{count}} storage items",
      "logCacheSizeDesc": "Controls the maximum number of log entries cached. Larger values use more memory.",
      "logCacheSizeUnit": "entries",
      "dataSyncIntervalLabel": "Home Data Refresh Interval",
      "dataSyncIntervalUnit": "s",
      "dataSyncIntervalDesc": "Controls the auto-refresh interval for home page statistics",
      "wsReconnectLabel": "WebSocket Reconnect Interval",
      "wsReconnectUnit": "s",
      "wsReconnectDesc": "Base reconnect interval after log WebSocket disconnects",
      "wsMaxReconnectLabel": "WebSocket Max Reconnect Attempts",
      "wsMaxReconnectUnit": "times",
      "wsMaxReconnectDesc": "Maximum reconnect attempts after connection failure",
      "clearLogCacheFn": "Clear Log Cache",
      "clearLocalCache": "Clear Local Cache",
      "confirmClearCache": "Confirm Clear Local Cache",
      "confirmClearCacheDesc": "This will clear all locally cached settings and data (excluding login credentials). You may need to reconfigure some preferences. Are you sure?",
      "confirmClear": "Confirm Clear",
      "importExportDesc": "Export current interface settings for backup, or restore from a previously exported file.",
      "exporting": "Exporting...",
      "importing": "Importing...",
      "resetAllSettingsBtn": "Reset All Settings to Defaults",
      "confirmResetAll": "Confirm Reset All Settings",
      "confirmResetAllDesc": "This will restore all interface settings to their defaults, including theme, colors, animation, and other preferences. This will not affect your login status. Are you sure?",
      "configWizardDesc": "Re-run the initial setup wizard to reconfigure system basics.",
      "rerunSetup": "Re-run Initial Setup",
      "confirmRerunSetup": "Confirm Re-run Setup",
      "confirmRerunSetupDesc": "This will take you back to the initial setup wizard. You can reconfigure the system basics. Are you sure?",
      "devToolsDesc": "The following features are for development and debugging only. They may cause crashes or abnormal behavior.",
      "triggerError": "Trigger Test Error",
      "confirmTriggerError": "Confirm Trigger Error",
      "confirmTriggerErrorDesc": "This will manually trigger a React error to test the error boundary component. The page will display an error view; you can recover by refreshing the page or clicking Go Home.",
      "confirmTrigger": "Confirm Trigger",
      "logCleared": "Log cleared",
      "logClearedDesc": "Log cache has been cleared",
      "cacheCleared": "Cache cleared",
      "cacheClearedDesc": "Cleared {{count}} cached items",
      "exportSuccessDesc": "Settings exported as a JSON file",
      "exportFailedDesc": "Unable to export settings",
      "importSuccessDesc": "Successfully imported {{imported}} settings",
      "importSkippedSuffix": ", skipped {{skipped}}",
      "importRefreshHint": "Note",
      "importRefreshHintDesc": "Some settings require a page refresh to take full effect",
      "importNoDataDesc": "No valid settings to import",
      "importInvalidDesc": "Invalid file format",
      "resetDone": "Reset done",
      "resetDoneDesc": "All settings restored to defaults. Refresh the page to apply changes."
    },
    "about": {
      "openSource": "Open Source",
      "aboutApp": "About MaiBot Dashboard",
      "version": "Version:",
      "author": "Author",
      "techStack": "Tech Stack",
      "frontendFramework": "Frontend Framework",
      "uiComponents": "UI Components",
      "backend": "Backend",
      "buildTool": "Build Tool",
      "openSourceThanks": "Open Source Libraries",
      "openSourceLicense": "Open Source License",
      "openSourceDesc": "This project is open source on GitHub. Give us a Star ⭐!",
      "visitGitHub": "Visit GitHub",
      "appDesc": "A modern Web management interface for MaiBot",
      "maimaiCore": "MaiBot Core",
      "uiFrameworkGroup": "UI Framework & Components",
      "routingStateGroup": "Routing & State Management",
      "formGroup": "Form Handling",
      "utilsGroup": "Utility Libraries",
      "animationGroup": "Animation",
      "backendGroup": "Backend Framework",
      "devToolsGroup": "Developer Tools",
      "openSourceThanksDesc": "This project uses the following excellent open source libraries. Thank you for your contributions:",
      "licenseDesc": "This project is licensed under the GNU General Public License v3.0. You are free to use, modify, and distribute the software, provided you keep the same open source license.",
      "licenseDeps": "All open source libraries used by this project comply with their respective licenses (MIT, Apache-2.0, BSD, etc.). Thank you to all open source contributors for your selfless work.",
      "lib": {
        "react": "UI library for building user interfaces",
        "shadcn": "Elegant React component library",
        "radix": "Unstyled accessible component primitives",
        "tailwind": "Utility-first CSS framework",
        "lucide": "Beautiful icon library",
        "tanstackRouter": "Type-safe routing library",
        "zustand": "Lightweight state management",
        "reactHookForm": "High-performance form library",
        "zod": "TypeScript-first schema validation",
        "clsx": "Conditional className builder",
        "tailwindMerge": "Tailwind class name merger",
        "cva": "Component variant management",
        "dateFns": "Modern date utility library",
        "framerMotion": "React animation library",
        "vaul": "Drawer component animation",
        "fastapi": "Modern Python web framework",
        "uvicorn": "ASGI server",
        "pydantic": "Data validation library",
        "pythonMultipart": "File upload support",
        "typescript": "Superset of JavaScript",
        "vite": "Next-generation frontend build tool",
        "eslint": "JavaScript code linter"
      }
    }
  },
  "auth": {
    "title": "Login",
    "description": "Enter your access token to continue",
    "tokenLabel": "Access Token",
    "tokenPlaceholder": "Enter Access Token",
    "loginButton": "Login",
    "loggingIn": "Logging in...",
    "loginFailed": "Login failed",
    "loginSuccess": "Login successful",
    "checkingAuth": "Checking login status...",
    "welcome": "Welcome to MaiBot",
    "accessDesc": "Enter your Access Token to continue accessing the system",
    "tokenRequired": "Please enter your Access Token",
    "verifyingLabel": "Verifying...",
    "verifyEnter": "Verify & Enter",
    "helpLink": "I don't have a Token. Where can I get one?",
    "helpTitle": "How to Get an Access Token",
    "helpDesc": "Access Token is the only credential to access MaiBot WebUI. Get yours in one of the following ways",
    "method1Title": "Method 1: Check Startup Log",
    "method1Desc": "When MaiBot starts, the console will display the WebUI Access Token.",
    "method1Example1": "🔑 WebUI Access Token: abc123...",
    "method1Example2": "💡 Use this Token to log in to WebUI",
    "method2Title": "Method 2: Check Config File",
    "method2Desc": "The Token is saved in the config file at the project root:",
    "method2FileHint": "Open this file and copy the value of the access_token field",
    "securityTipTitle": "Security Notice",
    "securityTip1": "Keep your Token safe and never share it with others",
    "securityTip2": "To reset the Token, go to System Settings after logging in",
    "slowLink": "The interface feels laggy. What can I do?",
    "disableAnimTitle": "Disable Background Animation",
    "disableAnimDesc": "Background animation may cause lag on low-performance devices. Disabling it can significantly improve smoothness.",
    "disableAnimDetail": "After disabling, the background will be a solid color, but all features remain fully functional. You can re-enable it anytime in System Settings.",
    "disableAnimBtn": "Disable Animation",
    "verifyFailed": "Token verification failed. Please check and try again.",
    "connFailed": "Failed to connect to the server. Please check your network connection.",
    "switchToLight": "Switch to light mode",
    "switchToDark": "Switch to dark mode"
  },
  "setupPage": {
    "steps": {
      "botBasic": {
        "title": "Bot Basics",
        "description": "Configure the bot's basic information"
      },
      "personality": {
        "title": "Personality",
        "description": "Define the bot's personality and speaking style"
      },
      "emoji": {
        "title": "Emoji",
        "description": "Configure emoji-related settings"
      },
      "other": {
        "title": "Other Settings",
        "description": "Configure tools, emotion system, and more"
      },
      "siliconFlow": {
        "title": "API Setup",
        "description": "Configure the SiliconFlow API key"
      }
    },
    "loading": {
      "title": "Loading configuration...",
      "description": "Reading existing configuration"
    },
    "header": {
      "title": "Initial Setup Wizard",
      "description": "Let's complete the initial setup for {{appName}}"
    },
    "progress": {
      "stepCounter": "Step {{current}} / {{total}}"
    },
    "validation": {
      "selectPlatform": "Please select a platform",
      "enterNickname": "Please enter a nickname",
      "enterQqAccount": "Please enter a QQ account",
      "enterAccountId": "Please enter an account ID"
    },
    "toast": {
      "loadFailedTitle": "Failed to load configuration",
      "loadFailedDescription": "Unable to load the existing configuration. Default values will be used.",
      "saveSuccessTitle": "Saved successfully",
      "saveSuccessDescription": "{{step}} configuration has been saved",
      "saveFailedTitle": "Save failed",
      "validationFailedTitle": "Validation failed",
      "completeSuccessTitle": "Setup complete",
      "completeSuccessDescription": "{{appName}} is restarting to apply the new configuration...",
      "completeFailedTitle": "Setup failed",
      "skipFailedTitle": "Failed to skip the setup wizard",
      "unknownError": "Unknown error"
    },
    "actions": {
      "previous": "Previous",
      "next": "Next",
      "skip": "Skip Wizard",
      "complete": "Complete Setup",
      "saving": "Saving...",
      "completing": "Completing..."
    },
    "skipDialog": {
      "title": "Skip the setup wizard?",
      "description": "You can reopen the setup wizard anytime from System Settings. Are you sure you want to skip it?",
      "confirm": "Skip Anyway"
    },
    "footer": "You can change these settings anytime in Settings",
    "defaults": {
      "personality": {
        "personality": "She is a sophomore college student who spends time on Tieba.",
        "replyStyle": "Keep replies plain and concise, speak Chinese, and avoid deliberately emphasizing any academic background. You can refer to the reply styles commonly seen on Tieba, Zhihu, and Weibo.",
        "interest": "Interested in technology, games, anime, and everyday topics, and dislikes topics that are overly heavy or serious.",
        "planStyle": "1. Consider **every action** in **all** available actions and use it if its conditions match the current conversation.\n2. Do not repeat content that has already been executed.\n3. Control how often you speak and avoid replying too frequently.\n4. If someone seems annoyed with you, reduce your replies.\n5. If someone attacks you or becomes emotional, respond appropriately.",
        "privatePlanStyle": "1. Consider **every action** in **all** available actions and use it if its conditions match the current conversation.\n2. Do not repeat content that has already been executed.\n3. If a sentence has already been replied to, do not reply to it again."
      },
      "emoji": {
        "filtrationPrompt": "Appropriate and safe for general audiences"
      }
    },
    "forms": {
      "botBasic": {
        "platform": {
          "label": "Platform *",
          "placeholder": "Select a platform",
          "description": "Choose the platform where the bot runs",
          "options": {
            "custom": "Other Platform"
          }
        },
        "customPlatform": {
          "label": "Platform Name *",
          "placeholder": "Enter a platform name, such as matrix"
        },
        "qqAccount": {
          "label": "QQ Account *",
          "placeholder": "Enter the bot's QQ account",
          "description": "The QQ account used to log in the bot"
        },
        "primaryAccount": {
          "label": "Account ID *",
          "placeholder": "Enter the bot's account ID",
          "description": "The bot's account identifier on this platform"
        },
        "nickname": {
          "label": "Nickname *",
          "placeholder": "Enter the bot's nickname",
          "description": "The bot's primary display name"
        },
        "alias": {
          "label": "Aliases",
          "placeholder": "Type an alias and press Enter to add it",
          "add": "Add",
          "description": "Other names for the bot. You can add multiple aliases.",
          "remove": "Remove alias {{alias}}"
        }
      },
      "personality": {
        "personality": {
          "label": "Personality Traits *",
          "placeholder": "Describe the bot's personality and identity traits (recommended within 120 characters)",
          "description": "Example: a sophomore college girl who browses Tieba"
        },
        "replyStyle": {
          "label": "Reply Style *",
          "placeholder": "Describe how the bot speaks and expresses itself",
          "description": "Example: keep replies plain and concise, speak Chinese, and refer to styles seen on Tieba, Zhihu, and Weibo"
        },
        "interest": {
          "label": "Interests *",
          "placeholder": "Describe the topics the bot is interested in",
          "description": "This affects which topics the bot is more likely to respond to"
        },
        "planStyle": {
          "label": "Group Chat Rules *",
          "placeholder": "The bot's behavior style and rules in group chats",
          "description": "Defines how the bot acts in group chats, such as reply frequency and conditions"
        },
        "privatePlanStyle": {
          "label": "Private Chat Rules *",
          "placeholder": "The bot's behavior style and rules in private chats",
          "description": "Defines how the bot behaves in private chats"
        }
      },
      "emoji": {
        "emojiChance": {
          "label": "Emoji Activation Chance",
          "description": "How likely the bot is to send an emoji"
        },
        "maxRegNum": {
          "label": "Maximum Emoji Count",
          "description": "The maximum number of emojis the bot can store"
        },
        "doReplace": {
          "label": "Replace When Full",
          "description": "When enabled, old emojis will be removed; when disabled, new emojis will no longer be collected"
        },
        "checkInterval": {
          "label": "Check Interval (Minutes)",
          "description": "How often to check emoji registration, damage, and deletion"
        },
        "stealEmoji": {
          "label": "Collect Emojis",
          "description": "Allow the bot to keep certain emojis for itself"
        },
        "contentFiltration": {
          "label": "Enable Emoji Filtering",
          "description": "Only save emojis that meet the requirements"
        },
        "filtrationPrompt": {
          "label": "Filter Requirements",
          "placeholder": "For example: appropriate and safe for general audiences",
          "description": "Describe what kind of emojis should be allowed"
        }
      },
      "other": {
        "enableTool": {
          "label": "Enable Tool System",
          "description": "Allow the bot to use tools to enhance its capabilities"
        },
        "allGlobal": {
          "label": "Enable Global Slang Mode",
          "description": "Allow the bot to learn and use group-specific slang"
        }
      },
      "siliconFlow": {
        "about": {
          "title": "About SiliconFlow",
          "description": "SiliconFlow provides broad model coverage, including DeepSeek V3, Qwen, vision models, speech recognition, and embedding models. A single API key unlocks all MaiBot features.",
          "link": "Get an API key from SiliconFlow"
        },
        "apiKey": {
          "label": "SiliconFlow API Key *",
          "description": "Enter your SiliconFlow API key. Once provided, MaiBot will automatically configure all required models.",
          "show": "Show API key",
          "hide": "Hide API key"
        },
        "autoConfig": {
          "title": "The following models will be configured automatically:",
          "items": {
            "deepseek": "DeepSeek V3 - primary chat and tool model",
            "qwen3": "Qwen3 30B - frequent small tasks and tool calls",
            "qwen3Vl": "Qwen3 VL 30B - image recognition",
            "senseVoice": "SenseVoice - speech recognition",
            "bgeM3": "BGE-M3 - text embeddings",
            "lpmm": "Knowledge-base-related models (LPMM)"
          }
        },
        "hint": {
          "title": "Tip: ",
          "description": "After finishing the wizard, you can add more API providers and models in \"System Settings -> Model Config\"."
        }
      }
    }
  },
  "common": {
    "loading": "Loading...",
    "error": "Error",
    "retry": "Retry",
    "save": "Save",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "delete": "Delete",
    "edit": "Edit",
    "close": "Close",
    "search": "Search",
    "noData": "No data",
    "success": "Success",
    "failed": "Failed"
  },
  "restart": {
    "preparing": "Preparing to restart",
    "preparingDesc": "Sending restart request...",
    "preparingTip": "🔄 Preparing to restart MaiBot...",
    "restarting": "Restarting MaiBot",
    "restartingDesc": "Please wait, MaiBot is restarting...",
    "restartingTip": "🔄 Config saved, restarting main process...",
    "checking": "Checking service status",
    "checkingDesc": "Waiting for service to recover... ({{current}}/{{max}})",
    "checkingTip": "⏳ Waiting for service to recover, do not close this page...",
    "success": "Restart successful",
    "successDesc": "Redirecting to login page...",
    "successTip": "✅ Config applied, service is running normally",
    "failed": "Restart timed out",
    "failedDesc": "Service failed to recover within the expected time",
    "failedTip": "⚠️ If unresponsive for a long time, try restarting manually",
    "refreshPage": "Refresh page",
    "retryCheck": "Retry check",
    "elapsed": "Elapsed:"
  },
  "errorBoundary": {
    "title": "Something went wrong",
    "description": "The application encountered an unexpected error. You can try refreshing the page or going back home.",
    "refreshPage": "Refresh page",
    "goHome": "Go home",
    "footer": "If the problem persists, copy the error info and report it to the developer",
    "copiedToClipboard": "Copied to clipboard",
    "copyError": "Copy error info"
  },
  "search": {
    "placeholder": "Search pages...",
    "title": "Search",
    "noResults": "No matching pages found",
    "startSearch": "Type a keyword to start searching",
    "navigate": "Navigate",
    "select": "Select",
    "close": "Close",
    "categories": {
      "overview": "Overview",
      "config": "Config",
      "resources": "Resources",
      "monitor": "Monitor",
      "extensions": "Extensions",
      "system": "System"
    },
    "items": {
      "home": "Home",
      "homeDesc": "View dashboard overview",
      "botConfig": "Bot Main Config",
      "botConfigDesc": "Configure bot core settings",
      "modelProvider": "Model Provider Config",
      "modelProviderDesc": "Configure model providers",
      "model": "Model Config",
      "modelDesc": "Configure model parameters",
      "emoji": "Emoji Management",
      "emojiDesc": "Manage bot emoji",
      "expression": "Expression Management",
      "expressionDesc": "Manage bot expressions",
      "person": "Person Info",
      "personDesc": "Manage person info",
      "jargon": "Slang Management",
      "jargonDesc": "Manage bot learned slang and jargon",
      "statistics": "Statistics",
      "statisticsDesc": "View usage statistics",
      "plugins": "Plugin Market",
      "pluginsDesc": "Browse and install plugins",
      "logs": "Log Viewer",
      "logsDesc": "View system logs",
      "settings": "Settings",
      "settingsDesc": "Configure system settings"
    }
  },
  "a11y": {
    "skipToContent": "Skip to main content",
    "sidebarNav": "Main navigation",
    "closeMenu": "Close menu",
    "navigatedTo": "Navigated to {{page}}"
  },
  "home": {
    "title": "Live Monitor",
    "subtitle": "MaiBot runtime status and statistics overview",
    "loading": "Loading statistics...",
    "loadingHint": "Fetching MaiBot runtime data",
    "timeRange": {
      "24h": "24 Hours",
      "7d": "7 Days",
      "30d": "30 Days"
    },
    "autoRefresh": "Auto Refresh",
    "botStatus": {
      "title": "MaiBot Status",
      "running": "Running",
      "stopped": "Stopped",
      "uptime": "Up {{time}}"
    },
    "quickActions": {
      "title": "Quick Actions",
      "restart": "Restart MaiBot",
      "restarting": "Restarting...",
      "expressionReview": "Expression Review",
      "viewLogs": "View Logs",
      "pluginManage": "Plugins",
      "systemSettings": "Settings"
    },
    "survey": {
      "title": "Feedback Survey",
      "description": "Help us improve the experience",
      "webui": "WebUI Feedback",
      "maibot": "MaiBot Feedback"
    },
    "stats": {
      "totalRequests": "Total Requests",
      "totalCost": "Total Cost",
      "tokenUsage": "Token Usage",
      "avgResponse": "Avg Response",
      "avgResponseDesc": "Avg API latency",
      "onlineTime": "Online Time",
      "messageProcessing": "Messages",
      "costEfficiency": "Cost Efficiency",
      "recentPeriod": "Last {{range}}",
      "perHour": "{{value}}/hr",
      "noData": "No data",
      "replied": "{{num}} replies",
      "per100Messages": "Per 100 messages",
      "seconds": "sec",
      "hours": "hours",
      "days": "days"
    },
    "charts": {
      "tabs": {
        "trends": "Trends",
        "models": "Models",
        "activity": "Activity",
        "daily": "Daily"
      },
      "requestTrend": "Request Trend",
      "requestTrendDesc": "Request volume over the last {{hours}} hours",
      "costTrend": "Cost Trend",
      "costTrendDesc": "API call cost over time",
      "tokenUsage": "Token Usage",
      "tokenUsageDesc": "Token consumption over time",
      "modelDistribution": "Model Request Distribution",
      "modelDistributionDesc": "Usage share per model ({{count}} models)",
      "modelDetails": "Model Details",
      "modelDetailsDesc": "Requests, cost and performance",
      "recentActivity": "Recent Activity",
      "recentActivityDesc": "Latest API call records",
      "dailyStats": "Daily Statistics",
      "dailyStatsDesc": "Data summary for the last 7 days",
      "requests": "Requests",
      "cost": "Cost (¥)",
      "requestCount": "Requests",
      "costLabel": "Cost",
      "avgTime": "Avg Time",
      "timeCost": "Duration",
      "status": "Status"
    },
    "time": {
      "hoursMinutes": "{{hours}}h {{minutes}}m"
    },
    "hitokotoFallback": "Life is like a box of chocolates, you never know what you're gonna get.",
    "hitokotoFallbackFrom": "Forrest Gump",
    "unknownSource": "Unknown",
    "ariaLabel": {
      "requestTrend": "Hourly request trend chart showing request count changes over recent hours",
      "costTrend": "API cost trend chart showing API call cost changes over recent hours",
      "tokenUsage": "Token usage trend chart showing token consumption over recent hours"
    }
  }
}
