// English language pack export default { // TabBar 'tabBar.home': 'Home', 'tabBar.deviceConfig': 'Network Config', 'tabBar.settings': 'System', // Settings page title 'settings.title': 'Settings', // Login page 'login.pageTitle': 'Login', 'login.navigationTitle': 'Login', 'login.fetchConfigError': 'Failed to fetch configuration:', 'login.selectLanguage': 'Select Language', 'login.selectLanguageTip': 'En', 'login.welcomeBack': 'Welcome Back', 'login.pleaseLogin': 'Please log in to your account', 'login.enterUsername': 'Please enter username', 'login.enterPassword': 'Please enter password', 'login.enterCaptcha': 'Please enter verification code', 'login.loginButton': 'Login', 'login.loggingIn': 'Logging in...', 'login.noAccount': 'Sign Up', 'login.enterPhone': 'Please enter phone number', 'login.selectCountry': 'Select Country/Region', 'login.confirm': 'Confirm', 'login.serverSetting': 'Server Settings', 'login.requiredUsername': 'Username cannot be empty', 'login.requiredPassword': 'Password cannot be empty', 'login.requiredCaptcha': 'Verification code cannot be empty', 'login.requiredMobile': 'Please enter a valid phone number', 'login.captchaError': 'Graphic verification code error', 'login.forgotPassword': 'Forgot Password', 'login.userAgreement': 'User Agreement', 'login.privacyPolicy': 'Privacy Policy', // Register page 'register.pageTitle': 'Register', 'register.createAccount': 'Create Account', 'register.enterUsername': 'Please enter username', 'register.enterPassword': 'Please enter password', 'register.confirmPassword': 'Please confirm password', 'register.enterPhone': 'Please enter phone number', 'register.enterCode': 'Please enter verification code', 'register.getCode': 'Get Code', 'register.agreeTerms': 'I have read and agree to the', 'register.terms': 'User Agreement', 'register.privacy': 'Privacy Policy', 'register.registerButton': 'Register', 'register.registering': 'Registering...', 'register.haveAccount': 'Already have an account?', 'register.loginNow': 'Login Now', 'register.selectCountry': 'Select Country/Region', 'register.confirm': 'Confirm', 'register.captchaSendSuccess': 'Verification code sent successfully', // Home page 'home.pageTitle': 'Home', 'home.createAgent': 'Create Agent', 'home.agentName': 'Agent', 'home.modelInfo': 'Model Info', 'home.lastActive': 'Last Active', 'home.greeting': 'Hi Jarvis', 'home.subtitle': 'Let\'s have', 'home.wonderfulDay': 'a wonderful day!', 'home.emptyState': 'No agents available', 'home.deviceManagement': 'Device Management', 'home.lastConversation': 'Last Conversation:', 'home.delete': 'Delete', 'home.createFirstAgent': 'Click the + button in the lower right corner to create your first agent', 'home.dialogTitle': 'Create Agent', 'home.inputPlaceholder': 'e.g. Customer Service Assistant, Voice Assistant, Knowledge Q&A', 'home.createError': 'The name length must be between 1 and 64 characters', 'home.createNow': 'Create Now', 'home.deleteConfirmTitle': 'Delete Agent', 'home.confirmDeleteAgent': 'Deletion cannot be undone. Type the agent name "{agentName}" to confirm.', 'home.deleteAgentNamePlaceholder': 'Enter agent name', 'home.deleteAgentNameMismatch': 'The agent name does not match', 'home.deleteAgentPasteForbidden': 'Please type the agent name manually. Pasting is not allowed.', 'home.deleteAgentMissingInfo': 'Unable to confirm agent information. Please refresh and try again.', 'home.deleteAgentSuccess': 'Agent deleted successfully', 'home.justNow': 'Just now', 'home.minutesAgo': 'minutes ago', 'home.hoursAgo': 'hours ago', 'home.daysAgo': 'days ago', 'home.languageModel': 'LLM', 'home.voiceModel': 'TTS', // Agent page 'agent.pageTitle': 'Agent', 'agent.roleConfig': 'Role Configuration', 'agent.deviceManagement': 'Device Management', 'agent.chatHistory': 'Chat History', 'agent.voiceprintManagement': 'Voiceprint Management', 'agent.editTitle': 'Edit Agent', 'agent.toolsTitle': 'Edit Features', 'agent.voiceActivityDetection': 'Voice Activity Detection', 'agent.speechRecognition': 'Speech Recognition', 'agent.largeLanguageModel': 'Large Language Model', 'agent.save': 'Save', 'agent.cancel': 'Cancel', // Agent Edit Page 'agent.basicInfo': 'Basic Information', 'agent.agentName': 'Agent Name', 'agent.inputAgentName': 'Please input agent name', 'agent.roleMode': 'Role Mode', 'agent.agentTag': 'Intelligent agent label', 'agent.addAgentTag': 'Add label', 'agent.inputAgentTag': 'Please input agent label', 'agent.contextProvider': 'Context', 'agent.contextProviderSuccess': 'Successfully added {count} sources.', 'agent.contextProviderDocLink': 'How to deploy context provider', 'agent.editContextProvider': 'Edit Source', 'agent.roleDescription': 'Role Description', 'agent.inputRoleDescription': 'Please input role description', 'agent.modelConfig': 'Model Configuration', 'agent.vad': 'Voice Activity Detection', 'agent.asr': 'Speech Recognition', 'agent.llm': 'Main language model', 'agent.slm': 'Small parameter model', 'agent.vllm': 'Vision Language Model', 'agent.intent': 'Intent Recognition', 'agent.memory': 'Memory', 'agent.voiceSettings': 'Voice Settings', 'agent.tts': 'Text-to-Speech', 'agent.voiceprint': 'Agent Voice', 'agent.plugins': 'Plugins', 'agent.editFunctions': 'Edit Functions', 'agent.historyMemory': 'History Memory', 'agent.memoryContent': 'Memory content', 'agent.saving': 'Saving...', 'agent.saveSuccess': 'Save successful', 'agent.saveFail': 'Save failed', 'agent.ttsOptionsLoadFailed': 'Voice options could not be loaded. The previous voice settings were kept.', 'agent.loadFail': 'Load failed', 'agent.pleaseInputAgentName': 'Please input agent name', 'agent.pleaseInputRoleDescription': 'Please input role description', 'agent.pleaseSelect': 'Please select', 'agent.reportText': 'Report Text', 'agent.reportTextVoice': 'Report Text+Voice', 'agent.reportMode': 'Report Mode', 'agent.language': 'Conversation Language', 'agent.languageConfig': 'Speech Rate&Tone', 'agent.ttsVolume': 'Volume', 'agent.ttsRate': 'Speech Rate', 'agent.ttsPitch': 'Tone', 'agent.volumeHint': '-100=Minimum, 0=Standard, 100=Maximum', 'agent.speedHint': '-100=Slower, 0=Standard, 100=Faster', 'agent.pitchHint': '-100=Lowest, 0=Standard, 100=Highest', // Agent snapshots 'agentSnapshot.title': 'Version History', 'agentSnapshot.empty': 'No versions yet', 'agentSnapshot.emptyTip': 'Saved configs will appear here', 'agentSnapshot.version': 'Version', 'agentSnapshot.createdAt': 'Saved At', 'agentSnapshot.source': 'Source', 'agentSnapshot.changedFields': 'Changes', 'agentSnapshot.view': 'View', 'agentSnapshot.restore': 'Restore', 'agentSnapshot.delete': 'Delete', 'agentSnapshot.loadMore': 'Load More', 'agentSnapshot.detailTitle': 'Change Details', 'agentSnapshot.restorePreviewTitle': 'Restore Preview', 'agentSnapshot.confirmRestore': 'Confirm Restore', 'agentSnapshot.currentVersion': 'Latest Snapshot', 'agentSnapshot.beforeChange': 'Before', 'agentSnapshot.afterChange': 'After', 'agentSnapshot.beforeRestore': 'Before Restore', 'agentSnapshot.afterRestore': 'After Restore', 'agentSnapshot.configValue': 'Config Value', 'agentSnapshot.emptyValue': 'None', 'agentSnapshot.secretRedacted': 'Secret hidden', 'agentSnapshot.redactedValueChanged': 'The value is hidden, but it did change', 'agentSnapshot.noChangedContent': 'No displayable changes', 'agentSnapshot.recordedChange': 'Changed when recorded', 'agentSnapshot.noRestoreNeeded': 'The current configuration already matches this version', 'agentSnapshot.unsavedChangesTitle': 'Unsaved changes', 'agentSnapshot.unsavedChangesWarning': 'Continuing will discard the unsaved changes on this page.', 'agentSnapshot.discardAndRestore': 'Discard and restore', 'agentSnapshot.restoreConfirm': 'Restore to version #{version}? The current configuration will remain available in history.', 'agentSnapshot.restoreMemoryWarning': 'Restoring to a no-memory version will clear this agent\'s chat history. Please confirm the risk.', 'agentSnapshot.restoreChatHistoryDestructiveWarning': 'This restore will permanently delete this agent\'s existing chat history. Chat history is not included in configuration snapshots and cannot be recovered from version history.', 'agentSnapshot.restoreSuccess': 'Version restored', 'agentSnapshot.restoreFailed': 'Failed to restore version', 'agentSnapshot.reloadAfterRestorePending': 'Reloading the restored configuration and tags. Saving is disabled until this completes.', 'agentSnapshot.reloadAfterRestoreFailed': 'The restored configuration or tags could not be reloaded. Saving remains disabled to prevent stale data from overwriting the restore. Please retry.', 'agentSnapshot.retryReload': 'Reload', 'agentSnapshot.mutationBusy': 'The configuration is being saved or reloaded. Wait for it to finish before opening version history or restoring.', 'agentSnapshot.deleteConfirm': 'Delete version #{version}? This cannot be undone.', 'agentSnapshot.deleteSuccess': 'Version deleted', 'agentSnapshot.deleteFailed': 'Failed to delete version', 'agentSnapshot.fetchFailed': 'Failed to fetch versions', 'agentSnapshot.detailFailed': 'Failed to fetch version details', 'agentSnapshot.correctWordCount': '{count} replacement words', 'agentSnapshot.source.config': 'Config Save', 'agentSnapshot.source.current': 'Current Config', 'agentSnapshot.source.restore': 'Restored', 'agentSnapshot.source.initial': 'Initial Version', 'agentSnapshot.field.initial': 'Initial Snapshot', 'agentSnapshot.field.agentCode': 'Agent Code', 'agentSnapshot.field.agentName': 'Nickname', 'agentSnapshot.field.asrModelId': 'Speech Recognition', 'agentSnapshot.field.vadModelId': 'Voice Activity Detection', 'agentSnapshot.field.llmModelId': 'Main Language Model', 'agentSnapshot.field.slmModelId': 'Small Language Model', 'agentSnapshot.field.vllmModelId': 'Vision Model', 'agentSnapshot.field.ttsModelId': 'Text-to-Speech', 'agentSnapshot.field.ttsVoiceId': 'Voice', 'agentSnapshot.field.ttsLanguage': 'Language', 'agentSnapshot.field.ttsVolume': 'Volume', 'agentSnapshot.field.ttsRate': 'Speed', 'agentSnapshot.field.ttsPitch': 'Pitch', 'agentSnapshot.field.memModelId': 'Memory Mode', 'agentSnapshot.field.intentModelId': 'Intent Recognition', 'agentSnapshot.field.chatHistoryConf': 'Chat History Config', 'agentSnapshot.field.systemPrompt': 'Role Description', 'agentSnapshot.field.summaryMemory': 'Memory', 'agentSnapshot.field.langCode': 'Language Code', 'agentSnapshot.field.language': 'Interaction Language', 'agentSnapshot.field.sort': 'Sort', 'agentSnapshot.field.functions': 'Plugins', 'agentSnapshot.field.contextProviders': 'Context Sources', 'agentSnapshot.field.correctWordFileIds': 'Replacement Words', 'agentSnapshot.field.tagNames': 'Agent Tags', 'agentSnapshot.chatHistoryConf.none': 'Do not record chat history', 'agentSnapshot.chatHistoryConf.text': 'Report text', 'agentSnapshot.chatHistoryConf.textVoice': 'Report text and voice', 'agentSnapshot.model.Memory_nomem': 'No memory', 'agentSnapshot.model.Memory_mem_local_short': 'Local short memory', 'agentSnapshot.model.Memory_mem0ai': 'Mem0AI memory', 'agentSnapshot.model.Memory_mem_report_only': 'Report only', 'agentSnapshot.model.Intent_nointent': 'No intent recognition', 'agentSnapshot.model.Intent_intent_llm': 'External LLM intent recognition', 'agentSnapshot.model.Intent_function_call': 'LLM function calling', // Context provider dialog related 'contextProviderDialog.title': 'Edit Source', 'contextProviderDialog.noContextApi': 'No Context API', 'contextProviderDialog.add': 'Add', 'contextProviderDialog.apiUrl': 'API URL', 'contextProviderDialog.apiUrlPlaceholder': 'http://api.example.com/data', 'contextProviderDialog.requestHeaders': 'Request Headers', 'contextProviderDialog.headerKeyPlaceholder': 'Key', 'contextProviderDialog.headerValuePlaceholder': 'Value', 'contextProviderDialog.noHeaders': 'No Headers', 'contextProviderDialog.addHeader': 'Add Header', 'contextProviderDialog.cancel': 'Cancel', 'contextProviderDialog.confirm': 'Confirm', // Manual add device dialog related 'manualAddDeviceDialog.title': 'Manual Add Device', 'manualAddDeviceDialog.deviceType': 'Device Type', 'manualAddDeviceDialog.deviceTypePlaceholder': 'Please select device type', 'manualAddDeviceDialog.firmwareVersion': 'Firmware Version', 'manualAddDeviceDialog.firmwareVersionPlaceholder': 'Please enter firmware version', 'manualAddDeviceDialog.macAddress': 'Mac Address', 'manualAddDeviceDialog.macAddressPlaceholder': 'Please enter Mac address', 'manualAddDeviceDialog.confirm': 'Confirm', 'manualAddDeviceDialog.cancel': 'Cancel', 'manualAddDeviceDialog.requiredMacAddress': 'Please enter Mac address', 'manualAddDeviceDialog.invalidMacAddress': 'Please enter correct Mac address format, e.g.: 00:1A:2B:3C:4D:5E', 'manualAddDeviceDialog.requiredDeviceType': 'Please select device type', 'manualAddDeviceDialog.requiredFirmwareVersion': 'Please enter firmware version', 'manualAddDeviceDialog.getFirmwareTypeFailed': 'Failed to get firmware type', 'manualAddDeviceDialog.addSuccess': 'Device added successfully', 'manualAddDeviceDialog.addFailed': 'Failed to add', 'manualAddDeviceDialog.bindWithCode': 'Bind with 6-digit code', // Chat History Page 'chatHistory.getChatSessions': 'Get chat session list', 'chatHistory.noSelectedAgent': 'No agent selected', 'chatHistory.getChatSessionsFailed': 'Failed to get chat session list:', 'chatHistory.unknownTime': 'Unknown time', 'chatHistory.justNow': 'Just now', 'chatHistory.minutesAgo': '{minutes} minutes ago', 'chatHistory.hoursAgo': '{hours} hours ago', 'chatHistory.daysAgo': '{days} days ago', 'chatHistory.conversationRecord': 'Conversation Record', 'chatHistory.totalChats': '{count} chats in total', 'chatHistory.loading': 'Loading...', 'chatHistory.noMoreData': 'No more data', 'chatHistory.noChatRecords': 'No chat records', 'chatHistory.chatRecordsDescription': 'Conversation records with agents will be displayed here', // Chat History Detail Page 'chatHistory.pageTitle': 'Chat Detail', 'chatHistory.assistantName': 'Intelligent Assistant', 'chatHistory.userName': 'User', 'chatHistory.aiAssistantName': 'AI Assistant', 'chatHistory.loadFailed': 'Failed to load chat history', 'chatHistory.parameterError': 'Page parameter error', 'chatHistory.invalidAudioId': 'Invalid audio ID', 'chatHistory.audioPlayFailed': 'Audio playback failed', 'chatHistory.playAudioFailed': 'Failed to play audio', // Device management page 'device.pageTitle': 'Device Management', 'device.noDevices': 'No devices available', 'device.macAddress': 'MAC Address', 'device.firmwareVersion': 'Firmware Version', 'device.lastConnected': 'Last Conversation', 'device.otaUpdate': 'OTA Update', 'device.unbind': 'Unbind', 'device.confirmUnbind': 'Sure', 'device.bindDevice': 'Bind New Device', 'device.deviceType': 'Device Type', 'device.loading': 'Loading...', 'device.neverConnected': 'Never connected', 'device.justNow': 'Just now', 'device.minutesAgo': '{minutes} minutes ago', 'device.hoursAgo': '{hours} hours ago', 'device.daysAgo': '{days} days ago', 'device.otaAutoUpdateEnabled': 'OTA auto update enabled', 'device.otaAutoUpdateDisabled': 'OTA auto update disabled', 'device.operationFailed': 'Operation failed, please retry', 'device.deviceUnbound': 'Device unbound', 'device.unbindFailed': 'Unbind failed, please retry', 'device.unbindDevice': 'Unbind Device', 'device.confirmUnbindDevice': 'Are you sure you want to unbind device "{macAddress}"?', 'device.cancel': 'Cancel', 'device.noDevice': 'No Device', 'device.pleaseSelectAgent': 'Please select an agent first', 'device.deviceBindSuccess': 'Device bound successfully!', 'device.bindFailed': 'Bind failed, please check if the verification code is correct', 'device.enterDeviceCode': 'Please enter device verification code', 'device.bindNow': 'Bind Now', 'device.lastConnection': 'Last Connection', 'device.clickToBindFirstDevice': 'Click the + button in the lower right corner to bind your first device', // Common 'common.success': 'Success', 'common.fail': 'Failed', 'common.loading': 'Loading...', 'common.confirm': 'Confirm', 'common.cancel': 'Cancel', 'common.delete': 'Delete', 'common.edit': 'Edit', 'common.add': 'Add', 'common.pleaseSelect': 'Please select', 'common.unknownError': 'Unknown error', 'common.networkError': 'Network error', // Retrieve Password page 'retrievePassword.title': 'Reset Password', 'retrievePassword.subtitle': 'Recover your account password via mobile number', 'retrievePassword.mobileRequired': 'Please enter mobile number', 'retrievePassword.inputCorrectMobile': 'Please enter a valid mobile number', 'retrievePassword.captchaRequired': 'Please enter graphic verification code', 'retrievePassword.mobileCaptchaRequired': 'Please enter SMS verification code', 'retrievePassword.newPasswordRequired': 'Please enter new password', 'retrievePassword.confirmNewPasswordRequired': 'Please confirm new password', 'retrievePassword.passwordsNotMatch': 'Passwords do not match', 'retrievePassword.mobilePlaceholder': 'Please enter mobile number', 'retrievePassword.captchaPlaceholder': 'Please enter graphic verification code', 'retrievePassword.mobileCaptchaPlaceholder': 'Please enter SMS verification code', 'retrievePassword.newPasswordPlaceholder': 'Please enter new password', 'retrievePassword.confirmNewPasswordPlaceholder': 'Please confirm new password', 'retrievePassword.getMobileCaptcha': 'Get Code', 'retrievePassword.captchaSendSuccess': 'Verification code sent successfully', 'retrievePassword.passwordUpdateSuccess': 'Password reset successfully', 'retrievePassword.resetButton': 'Reset Password', 'retrievePassword.goToLogin': 'Back to Login', // SM2 encryption related error messages 'sm2.publicKeyNotConfigured': 'SM2 public key not configured, please contact administrator', 'sm2.encryptionFailed': 'Password encryption failed', 'sm2.keyGenerationFailed': 'Key pair generation failed', 'sm2.invalidPublicKey': 'Invalid public key format', 'sm2.encryptionError': 'Error occurred during encryption', 'sm2.publicKeyRetry': 'Retrying to get public key...', 'sm2.publicKeyRetryFailed': 'Public key retrieval retry failed', // Voiceprint page 'voiceprint.noSelectedAgent': 'No agent selected', 'voiceprint.pleaseSelectAgent': 'Please select an agent first', 'voiceprint.fetchHistoryFailed': 'Failed to fetch chat history', 'voiceprint.clickToSelectVector': 'Click to select voiceprint vector', 'voiceprint.pleaseInputName': 'Please input name', 'voiceprint.pleaseSelectVector': 'Please select voiceprint vector', 'voiceprint.addSuccess': 'Add success', 'voiceprint.addFailed': 'Failed to add speaker', 'voiceprint.editSuccess': 'Edit success', 'voiceprint.editFailed': 'Failed to edit speaker', 'voiceprint.deleteConfirmMsg': 'Are you sure to delete this speaker?', 'voiceprint.deleteConfirmTitle': 'Confirm Delete', 'voiceprint.deleteSuccess': 'Delete success', 'voiceprint.loading': 'Loading...', 'voiceprint.delete': 'Delete', 'voiceprint.emptyTitle': 'No voiceprint data', 'voiceprint.emptyDesc': 'Click the + button at the bottom right to add your first speaker', 'voiceprint.addSpeaker': 'Add Speaker', 'voiceprint.voiceVector': 'Voiceprint Vector', 'voiceprint.name': 'Name', 'voiceprint.description': 'Description', 'voiceprint.pleaseInputDescription': 'Please input description', 'voiceprint.cancel': 'Cancel', 'voiceprint.save': 'Save', 'voiceprint.editSpeaker': 'Edit Speaker', 'voiceprint.selectVector': 'Select Voiceprint Vector', 'voiceprint.voiceprintInterfaceNotConfigured': 'Voiceprint interface not configured', // Settings page 'settings.pageTitle': 'Settings', 'settings.navigationTitle': 'Settings', 'settings.networkSettings': 'Network Settings', 'settings.serverApiUrl': 'Server API URL', 'settings.validServerUrl': 'Please enter a valid server address (starting with http or https and ending with /xiaozhi)', 'settings.saveSettings': 'Save Settings', 'settings.resetDefault': 'Reset Default', 'settings.restartApp': 'Restart App', 'settings.restartNow': 'Restart Now', 'settings.restartLater': 'Later', // About us 'settings.aboutApp': 'About XiaoZhi Console', 'settings.aboutContent': 'XiaoZhi Console\n\nA cross-platform mobile management app built with Vue.js 3 + uni-app, providing device management, agent configuration and other functions for xiaozhi ESP32 smart hardware.\n\n© 2025 xiaozhi-esp32-server {version}', 'settings.restartSuccess': 'Saved, you can manually restart the app later', 'settings.serverUrlSavedAndCacheCleared': 'Server URL saved and cache cleared', 'settings.resetToDefaultAndCacheCleared': 'Reset to default and cache cleared', 'settings.resetSuccess': 'Reset successful', 'settings.enterServerUrl': 'Please enter server URL', 'settings.clearCacheFailed': 'Failed to clear cache', 'settings.cacheManagement': 'Cache Management', 'settings.totalCacheSize': 'Total Cache Size', 'settings.appDataSize': 'Total App Data Size', 'settings.cacheClear': 'Cache Clear', 'settings.clearAllCache': 'Clear all cache data', 'settings.clearCache': 'Clear Cache', 'settings.modifyWillClearCache': 'Modifications will clear cache', 'settings.appInfo': 'App Info', 'settings.aboutUs': 'About Us', 'settings.appVersion': 'App Version & Team Info', 'settings.confirmClear': 'Confirm Clear', 'settings.confirmClearMessage': 'Are you sure you want to clear all cache? This will delete all data including login status and require re-login.', 'settings.cacheCleared': 'Cache cleared successfully, redirecting to login page', 'settings.languageSettings': 'Language Settings', 'settings.language': 'Language', 'settings.selectLanguage': 'Select Language', 'settings.languageChanged': 'Language changed successfully', // Messages 'message.loginSuccess': 'Login successful!', 'message.loginFail': 'Login failed', 'message.registerSuccess': 'Registration successful', 'message.registerFail': 'Registration failed', 'message.saveSuccess': 'Save successful', 'message.saveFail': 'Save failed', 'message.deleteSuccess': 'Delete successful', 'message.deleteFail': 'Delete failed', 'message.bindSuccess': 'Binding successful', 'message.bindFail': 'Binding failed', 'message.unbindSuccess': 'Unbinding successful', 'message.unbindFail': 'Unbinding failed', 'message.networkError': 'Network error, please check your connection', 'message.serverError': 'Server error, please try again later', 'message.invalidAddress': 'The address may be invalid. Please check if the server is started or if the network connection is normal; It is also possible that requests cannot be sent due to HTTPS protocol issues', 'message.languageChanged': 'Language changed', 'message.passwordError': 'Account or password error', 'message.phoneRegistered': 'This phone number has been registered', // Agent Tools Page 'agent.tools.pageTitle': 'Agent Tools', 'agent.tools.unselected': 'Unselected', 'agent.tools.selected': 'Selected', 'agent.tools.noMorePlugins': 'No more plugins', 'agent.tools.pleaseSelectPlugin': 'Please select plugin function', 'agent.tools.builtInPlugins': 'Built-in Plugins', 'agent.tools.mcpAccessPoint': 'MCP Access Point', 'agent.tools.copy': 'Copy', 'agent.tools.noTools': 'No tools available', 'agent.tools.parameterConfig': 'Param Config', 'agent.tools.noParamsNeeded': 'No parameters needed', 'agent.tools.pleaseInput': 'Please input', 'agent.tools.inputOneItemPerLine': 'Input one item per line', 'agent.tools.pleaseInputValidJson': 'Please input valid JSON format', 'agent.tools.enableFunction': 'Enable Function', 'agent.tools.toggleFunction': 'Turn on or off this function', 'agent.tools.jsonFormatError': 'JSON format error', 'agent.tools.noMcpAddressToCopy': 'No MCP address to copy', 'agent.tools.mcpAddressCopied': 'MCP address copied to clipboard', 'agent.tools.copyFailed': 'Copy failed, please try again', 'agent.tools.defaultValue': 'Default value', 'agent.tools.notSelected': 'Unselected', 'agent.tools.clickToConfigure': 'Click to configure', 'agent.tools.mcpEndpoint': 'MCP Endpoint', 'agent.tools.eachLineOneItem': 'Input one item per line', // Device Config page 'deviceConfig.pageTitle': 'Device Configuration', 'deviceConfig.wifiConfig': 'WiFi Configuration', 'deviceConfig.ultrasonicConfig': 'Ultrasonic Configuration', 'deviceConfig.selectConfigMethod': 'Select Configuration Method', 'deviceConfig.networkConfig': 'Network Configuration', 'deviceConfig.selectedNetwork': 'Selected Network', 'deviceConfig.signal': 'Signal', 'deviceConfig.openNetwork': 'Open Network', 'deviceConfig.encryptedNetwork': 'Encrypted Network', 'deviceConfig.password': 'Password', 'deviceConfig.pleaseEnterPassword': 'Please enter WiFi password', 'deviceConfig.startConfig': 'Start Configuration', 'deviceConfig.connectToXiaozhiHotspot': 'Please connect to xiaozhi hotspot first', 'deviceConfig.detecting': 'Detecting...', 'deviceConfig.reDetect': 'Re-detect', 'deviceConfig.alreadyConnected': 'Connected to xiaozhi hotspot', 'deviceConfig.refreshStatus': 'Refresh Status', 'deviceConfig.wifiNetworks': 'WiFi Networks', 'deviceConfig.selectWifiNetwork': 'Select WiFi Network', 'deviceConfig.refreshScan': 'Refresh Scan', 'deviceConfig.noWifiNetworks': 'No WiFi networks available', 'deviceConfig.clickToRefreshScan': 'Please click Refresh Scan', 'deviceConfig.signalStrong': 'Strong Signal', 'deviceConfig.signalGood': 'Good Signal', 'deviceConfig.signalFair': 'Fair Signal', 'deviceConfig.signalWeak': 'Weak Signal', 'deviceConfig.channel': 'Channel', 'deviceConfig.about': 'about', 'deviceConfig.seconds': 'seconds', 'deviceConfig.generating': 'Generating...', 'deviceConfig.playing': 'Playing...', 'deviceConfig.generateAndPlaySoundWave': 'Generate and Play Sound Wave', 'deviceConfig.playSoundWave': 'Play Sound Wave', 'deviceConfig.stopPlaying': 'Stop Playing', 'deviceConfig.autoLoopPlaySoundWave': 'Auto Loop Play Sound Wave', 'deviceConfig.configAudioFile': 'Configuration Audio File', 'deviceConfig.duration': 'Duration', 'deviceConfig.ultrasonicConfigInstructions': 'Ultrasonic Configuration Instructions', 'deviceConfig.ensureWifiNetworkSelectedAndPasswordEntered': 'Ensure WiFi network is selected and password is entered', 'deviceConfig.clickGenerateAndPlaySoundWave': 'Click Generate and Play Sound Wave, the system will encode configuration information into audio', 'deviceConfig.bringPhoneCloseToXiaozhiDevice': 'Bring phone close to xiaozhi device (1-2 meters distance)', 'deviceConfig.duringAudioPlaybackXiaozhiWillReceive': 'During audio playback, xiaozhi will receive and decode configuration information', 'deviceConfig.afterConfigSuccessDeviceWillConnect': 'After successful configuration, the device will automatically connect to WiFi network', 'deviceConfig.usesAfskModulation': 'Uses AFSK modulation technology, transmitting data through 1800Hz and 1500Hz frequencies', 'deviceConfig.ensureModeratePhoneVolume': 'Please ensure phone volume is moderate to avoid environmental noise interference', 'deviceConfig.generatingUltrasonicConfigAudio': 'Generating ultrasonic configuration audio', 'deviceConfig.configData': 'Configuration data', 'deviceConfig.dataBytesLength': 'Data bytes length', 'deviceConfig.bitStreamLength': 'Bit stream length', 'deviceConfig.base64Length': 'Base64 length', 'deviceConfig.audioFileTooLarge': 'Audio file too large, please shorten SSID or password length', 'deviceConfig.audioGenerationSuccess': 'Audio generation successful', 'deviceConfig.samplePoints': 'Sample points', 'deviceConfig.soundWaveGenerationSuccess': 'Sound wave generation successful', 'deviceConfig.audioGenerationFailed': 'Audio generation failed', 'deviceConfig.soundWaveGenerationFailed': 'Sound wave generation failed', 'deviceConfig.pleaseGenerateAudioFirst': 'Please generate audio first', 'deviceConfig.startPlayingUltrasonicConfigAudio': 'Starting to play ultrasonic configuration audio', 'deviceConfig.ultrasonicAudioStartedPlaying': 'Ultrasonic audio started playing', 'deviceConfig.startPlayingConfigSoundWave': 'Started playing configuration sound wave', 'deviceConfig.ultrasonicAudioPlaybackEnded': 'Ultrasonic audio playback ended', 'deviceConfig.audioPlaybackFailed': 'Audio playback failed', 'deviceConfig.audioResourceBusy': 'Audio resource busy, please try again later', 'deviceConfig.audioFormatNotSupported': 'Audio format not supported, may be a data URI issue', 'deviceConfig.audioFileError': 'Audio file error', 'deviceConfig.cleaningUpAudioContext': 'Cleaning up audio context', 'deviceConfig.cleaningUpAudioContextFailed': 'Failed to clean up audio context', 'deviceConfig.stoppedPlayingUltrasonicAudio': 'Stopped playing ultrasonic audio', 'deviceConfig.stoppedPlaying': 'Stopped playing', 'deviceConfig.configMethod': 'Configuration Method', 'deviceConfig.enterWifiPassword': 'Please enter WiFi password', 'deviceConfig.xiaozhi': 'xiaozhi', 'deviceConfig.connectXiaozhiHotspot': 'Please connect to xiaozhi hotspot', 'deviceConfig.wifiScanResponse': 'WiFi scan response', 'deviceConfig.scanSuccess': 'Scan successful', 'deviceConfig.networks': 'networks', 'deviceConfig.wifiScanFailed': 'WiFi scan failed', 'deviceConfig.scanFailedCheckConnection': 'Scan failed, please check connection', 'deviceConfig.checking': 'Checking', 'deviceConfig.reCheck': 'Re-check', 'deviceConfig.connectedXiaozhiHotspot': 'Connected to xiaozhi hotspot', 'deviceConfig.wifiNetwork': 'WiFi Network', 'deviceConfig.wifiPassword': 'WiFi Password', 'deviceConfig.scanning': 'Scanning', 'deviceConfig.cancel': 'Cancel', 'deviceConfig.clickRefreshScan': 'Please click Refresh Scan', 'deviceConfig.esp32ConnectionCheckFailed': 'ESP32 connection check failed', 'deviceConfig.startWifiConfig': 'Starting WiFi configuration', 'deviceConfig.configSuccess': 'Configuration successful', 'deviceConfig.deviceWillConnectTo': 'Device will connect to', 'deviceConfig.deviceWillRestart': 'Device will restart', 'deviceConfig.pleaseDisconnectXiaozhiHotspot': 'Please disconnect from xiaozhi hotspot', 'deviceConfig.configFailed': 'Configuration failed', 'deviceConfig.wifiConfigFailed': 'WiFi configuration failed', 'deviceConfig.pleaseCheckNetworkConnection': 'Please check network connection', 'deviceConfig.startWifiConfigButton': 'Start Configuration', 'deviceConfig.configuring': 'Configuring...', 'deviceConfig.wifiConfigInstructions': 'WiFi Configuration Instructions', 'deviceConfig.phoneConnectXiaozhiHotspot': 'Phone connect to xiaozhi hotspot', 'deviceConfig.selectTargetWifiNetwork': 'Select target WiFi network', 'deviceConfig.enterWifiPasswordIfNeeded': 'Enter WiFi password if needed', 'deviceConfig.clickStartConfigAndWait': 'Click Start Configuration and wait', 'deviceConfig.afterConfigSuccessDeviceWillRestart': 'After successful configuration, device will automatically restart', 'deviceConfig.audioPlaybackError': 'Audio playback error', 'deviceConfig.playbackFailed': 'Playback failed', // Voiceprint page 'voiceprint.audioNotExist': 'Audio does not exist', 'voiceprint.getAudioFailed': 'Failed to get audio', 'voiceprint.audioPlayFailed': 'Audio playback failed', }