mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-27 09:33:55 +08:00
updata:移动端添加语言切换功能
This commit is contained in:
@@ -0,0 +1,406 @@
|
||||
// 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.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.forgotPassword': 'Forgot password?',
|
||||
'login.loginButton': 'Login',
|
||||
'login.loggingIn': 'Logging in...',
|
||||
'login.noAccount': 'did not have an account?',
|
||||
'login.registerNow': 'Register Now',
|
||||
'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',
|
||||
|
||||
// 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',
|
||||
|
||||
// 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.createNow': 'Create Now',
|
||||
'home.justNow': 'Just now',
|
||||
'home.minutesAgo': 'minutes ago',
|
||||
'home.hoursAgo': 'hours ago',
|
||||
'home.daysAgo': 'days ago',
|
||||
|
||||
// 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.roleDescription': 'Role Description',
|
||||
'agent.inputRoleDescription': 'Please input role description',
|
||||
'agent.modelConfig': 'Model Configuration',
|
||||
'agent.vad': 'Voice Activity Detection',
|
||||
'agent.asr': 'Speech Recognition',
|
||||
'agent.llm': 'Large Language 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.loadFail': 'Load failed',
|
||||
'agent.pleaseInputAgentName': 'Please input agent name',
|
||||
'agent.pleaseInputRoleDescription': 'Please input role description',
|
||||
'agent.pleaseSelect': 'Please select',
|
||||
|
||||
// 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',
|
||||
'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',
|
||||
|
||||
// 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 0.8.3',
|
||||
'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': 'Invalid address, please check if the server is started or network connection is normal',
|
||||
'message.languageChanged': 'Language changed',
|
||||
|
||||
// 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': 'Parameter Configuration',
|
||||
'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.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.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',
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
import { ref } from 'vue'
|
||||
import { useLangStore } from '@/store/lang'
|
||||
import type { Language } from '@/store/lang'
|
||||
|
||||
// 导入各个语言的翻译文件
|
||||
import zhCN from './zh_CN'
|
||||
import en from './en'
|
||||
import zhTW from './zh_TW'
|
||||
|
||||
// 语言包映射
|
||||
const messages = {
|
||||
zh_CN: zhCN,
|
||||
en,
|
||||
zh_TW: zhTW,
|
||||
}
|
||||
|
||||
// 当前使用的语言
|
||||
const currentLang = ref<Language>('zh_CN')
|
||||
|
||||
// 初始化语言
|
||||
export function initI18n() {
|
||||
const langStore = useLangStore()
|
||||
currentLang.value = langStore.currentLang
|
||||
}
|
||||
|
||||
// 切换语言
|
||||
export function changeLanguage(lang: Language) {
|
||||
currentLang.value = lang
|
||||
const langStore = useLangStore()
|
||||
langStore.changeLang(lang)
|
||||
}
|
||||
|
||||
// 获取翻译文本
|
||||
export function t(key: string, params?: Record<string, string | number>): string {
|
||||
const langMessages = messages[currentLang.value]
|
||||
|
||||
// 直接查找扁平键名
|
||||
if (langMessages && typeof langMessages === 'object' && key in langMessages) {
|
||||
let value = langMessages[key]
|
||||
if (typeof value === 'string') {
|
||||
// 处理参数替换
|
||||
if (params) {
|
||||
let result = value
|
||||
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
||||
const regex = new RegExp(`\{${paramKey}\}`, 'g')
|
||||
result = result.replace(regex, String(paramValue))
|
||||
})
|
||||
return result
|
||||
}
|
||||
return value
|
||||
}
|
||||
return key
|
||||
}
|
||||
|
||||
return key // 如果找不到对应的翻译,返回key本身
|
||||
}
|
||||
|
||||
// 获取当前语言
|
||||
export function getCurrentLanguage(): Language {
|
||||
return currentLang.value
|
||||
}
|
||||
|
||||
// 获取支持的语言列表
|
||||
export function getSupportedLanguages(): {code: Language, name: string}[] {
|
||||
return [
|
||||
{ code: 'zh_CN', name: '简体中文' },
|
||||
{ code: 'en', name: 'English' },
|
||||
{ code: 'zh_TW', name: '繁體中文' },
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,406 @@
|
||||
// 简体中文语言包
|
||||
export default {
|
||||
// TabBar
|
||||
'tabBar.home': '首页',
|
||||
'tabBar.deviceConfig': '配网',
|
||||
'tabBar.settings': '系统',
|
||||
// 设置页面标题
|
||||
'settings.title': '设置',
|
||||
// 登录页面
|
||||
'login.pageTitle': '登录',
|
||||
'login.navigationTitle': '登录',
|
||||
'login.fetchConfigError': '获取配置失败:',
|
||||
'login.selectLanguage': '选择语言',
|
||||
'login.welcomeBack': '欢迎回来',
|
||||
'login.pleaseLogin': '请登录您的账户',
|
||||
'login.enterUsername': '请输入用户名',
|
||||
'login.enterPassword': '请输入密码',
|
||||
'login.enterCaptcha': '请输入验证码',
|
||||
'login.forgotPassword': '忘记密码?',
|
||||
'login.loginButton': '登录',
|
||||
'login.loggingIn': '登录中...',
|
||||
'login.noAccount': '还没有账户?',
|
||||
'login.registerNow': '立即注册',
|
||||
'login.enterPhone': '请输入手机号码',
|
||||
'login.selectCountry': '选择国家/地区',
|
||||
'login.confirm': '确认',
|
||||
'login.serverSetting': '服务端设置',
|
||||
'login.requiredUsername': '用户名不能为空',
|
||||
'login.requiredPassword': '密码不能为空',
|
||||
'login.requiredCaptcha': '验证码不能为空',
|
||||
'login.requiredMobile': '请输入正确的手机号码',
|
||||
'login.captchaError': '图形验证码错误',
|
||||
|
||||
// 注册页面
|
||||
'register.pageTitle': '注册',
|
||||
'register.createAccount': '创建账户',
|
||||
'register.enterUsername': '请输入用户名',
|
||||
'register.enterPassword': '请输入密码',
|
||||
'register.confirmPassword': '请确认密码',
|
||||
'register.enterPhone': '请输入手机号码',
|
||||
'register.enterCode': '请输入验证码',
|
||||
'register.getCode': '获取验证码',
|
||||
'register.agreeTerms': '我已阅读并同意',
|
||||
'register.terms': '《用户协议》',
|
||||
'register.privacy': '《隐私政策》',
|
||||
'register.registerButton': '注册',
|
||||
'register.registering': '注册中...',
|
||||
'register.haveAccount': '已有账户?',
|
||||
'register.loginNow': '立即登录',
|
||||
'register.selectCountry': '选择国家/地区',
|
||||
'register.confirm': '确认',
|
||||
|
||||
// 首页
|
||||
'home.pageTitle': '首页',
|
||||
'home.createAgent': '创建智能体',
|
||||
'home.agentName': '智能体',
|
||||
'home.modelInfo': '模型信息',
|
||||
'home.lastActive': '最近活跃',
|
||||
'home.greeting': '你好,小智',
|
||||
'home.subtitle': '让我们度过',
|
||||
'home.wonderfulDay': '美好的一天!',
|
||||
'home.emptyState': '暂无智能体',
|
||||
'home.deviceManagement': '设备管理',
|
||||
'home.lastConversation': '最近对话:',
|
||||
'home.delete': '删除',
|
||||
'home.createFirstAgent': '点击右下角 + 号创建您的第一个智能体',
|
||||
'home.dialogTitle': '创建智能体',
|
||||
'home.inputPlaceholder': '例如:客服助手、语音助理、知识问答',
|
||||
'home.createNow': '立即创建',
|
||||
'home.justNow': '刚刚',
|
||||
'home.minutesAgo': '分钟前',
|
||||
'home.hoursAgo': '小时前',
|
||||
'home.daysAgo': '天前',
|
||||
|
||||
// Agent页面
|
||||
'agent.pageTitle': '智能体',
|
||||
'agent.roleConfig': '角色配置',
|
||||
'agent.deviceManagement': '设备管理',
|
||||
'agent.chatHistory': '聊天记录',
|
||||
'agent.voiceprintManagement': '声纹管理',
|
||||
'agent.editTitle': '编辑智能体',
|
||||
'agent.toolsTitle': '编辑功能',
|
||||
'agent.voiceActivityDetection': '语音活动检测',
|
||||
'agent.speechRecognition': '语音识别',
|
||||
'agent.largeLanguageModel': '大语言模型',
|
||||
'agent.save': '保存',
|
||||
'agent.cancel': '取消',
|
||||
// Agent编辑页面
|
||||
'agent.basicInfo': '基础信息',
|
||||
'agent.agentName': '助手昵称',
|
||||
'agent.inputAgentName': '请输入助手昵称',
|
||||
'agent.roleMode': '角色模式',
|
||||
'agent.roleDescription': '角色介绍',
|
||||
'agent.inputRoleDescription': '请输入角色介绍',
|
||||
'agent.modelConfig': '模型配置',
|
||||
'agent.vad': '语音活动检测',
|
||||
'agent.asr': '语音识别',
|
||||
'agent.llm': '大语言模型',
|
||||
'agent.vllm': '视觉大模型',
|
||||
'agent.intent': '意图识别',
|
||||
'agent.memory': '记忆',
|
||||
'agent.voiceSettings': '语音设置',
|
||||
'agent.tts': '语音合成',
|
||||
'agent.voiceprint': '角色音色',
|
||||
'agent.plugins': '插件',
|
||||
'agent.editFunctions': '编辑功能',
|
||||
'agent.historyMemory': '历史记忆',
|
||||
'agent.memoryContent': '记忆内容',
|
||||
'agent.saving': '保存中...',
|
||||
'agent.saveSuccess': '保存成功',
|
||||
'agent.saveFail': '保存失败',
|
||||
'agent.loadFail': '加载失败',
|
||||
'agent.pleaseInputAgentName': '请输入智能体名称',
|
||||
'agent.pleaseInputRoleDescription': '请输入角色介绍',
|
||||
'agent.pleaseSelect': '请选择',
|
||||
|
||||
// 聊天历史页面
|
||||
'chatHistory.getChatSessions': '获取聊天会话列表',
|
||||
'chatHistory.noSelectedAgent': '没有选中的智能体',
|
||||
'chatHistory.getChatSessionsFailed': '获取聊天会话列表失败:',
|
||||
'chatHistory.unknownTime': '未知时间',
|
||||
'chatHistory.justNow': '刚刚',
|
||||
'chatHistory.minutesAgo': '{minutes}分钟前',
|
||||
'chatHistory.hoursAgo': '{hours}小时前',
|
||||
'chatHistory.daysAgo': '{days}天前',
|
||||
'chatHistory.conversationRecord': '对话记录',
|
||||
'chatHistory.totalChats': '共 {count} 条对话',
|
||||
'chatHistory.loading': '加载中...',
|
||||
'chatHistory.noMoreData': '没有更多数据了',
|
||||
'chatHistory.noChatRecords': '暂无聊天记录',
|
||||
'chatHistory.chatRecordsDescription': '与智能体的对话记录会显示在这里',
|
||||
// 聊天详情页面
|
||||
'chatHistory.pageTitle': '聊天详情',
|
||||
'chatHistory.assistantName': '智能助手',
|
||||
'chatHistory.userName': '用户',
|
||||
'chatHistory.aiAssistantName': 'AI助手',
|
||||
'chatHistory.loadFailed': '获取聊天记录失败',
|
||||
'chatHistory.parameterError': '页面参数错误',
|
||||
'chatHistory.invalidAudioId': '音频ID无效',
|
||||
'chatHistory.audioPlayFailed': '音频播放失败',
|
||||
'chatHistory.playAudioFailed': '播放音频失败',
|
||||
|
||||
// 设备管理页面
|
||||
'device.pageTitle': '设备管理',
|
||||
'device.noDevices': '暂无设备',
|
||||
'device.macAddress': 'MAC地址',
|
||||
'device.firmwareVersion': '固件版本',
|
||||
'device.lastConnected': '最近对话',
|
||||
'device.otaUpdate': 'OTA升级',
|
||||
'device.unbind': '解绑',
|
||||
'device.confirmUnbind': '确定要解绑设备',
|
||||
'device.bindDevice': '绑定新设备',
|
||||
'device.deviceType': '设备类型',
|
||||
'device.loading': '加载中...',
|
||||
'device.neverConnected': '从未连接',
|
||||
'device.justNow': '刚刚',
|
||||
'device.minutesAgo': '{minutes}分钟前',
|
||||
'device.hoursAgo': '{hours}小时前',
|
||||
'device.daysAgo': '{days}天前',
|
||||
'device.otaAutoUpdateEnabled': 'OTA自动升级已开启',
|
||||
'device.otaAutoUpdateDisabled': 'OTA自动升级已关闭',
|
||||
'device.operationFailed': '操作失败,请重试',
|
||||
'device.deviceUnbound': '设备已解绑',
|
||||
'device.unbindFailed': '解绑失败,请重试',
|
||||
'device.unbindDevice': '解绑设备',
|
||||
'device.confirmUnbindDevice': '确定要解绑设备 "{macAddress}" 吗?',
|
||||
'device.cancel': '取消',
|
||||
'device.noDevice': '暂无设备',
|
||||
'device.pleaseSelectAgent': '请先选择智能体',
|
||||
'device.deviceBindSuccess': '设备绑定成功!',
|
||||
'device.bindFailed': '绑定失败,请检查验证码是否正确',
|
||||
'device.enterDeviceCode': '请输入设备验证码',
|
||||
'device.bindNow': '立即绑定',
|
||||
'device.lastConnection': '最近对话',
|
||||
'device.clickToBindFirstDevice': '点击右下角 + 号绑定您的第一个设备',
|
||||
|
||||
// 通用
|
||||
'common.success': '成功',
|
||||
'common.fail': '失败',
|
||||
'common.loading': '加载中...',
|
||||
'common.confirm': '确认',
|
||||
'common.cancel': '取消',
|
||||
'common.delete': '删除',
|
||||
'common.edit': '编辑',
|
||||
'common.add': '添加',
|
||||
'common.pleaseSelect': '请选择',
|
||||
'common.unknownError': '未知错误',
|
||||
'common.networkError': '网络错误',
|
||||
|
||||
// Voiceprint page
|
||||
'voiceprint.noSelectedAgent': '没有选中的智能体',
|
||||
'voiceprint.pleaseSelectAgent': '请先选择智能体',
|
||||
'voiceprint.fetchHistoryFailed': '获取对话记录失败',
|
||||
'voiceprint.clickToSelectVector': '点击选择声纹向量',
|
||||
'voiceprint.pleaseInputName': '请输入姓名',
|
||||
'voiceprint.pleaseSelectVector': '请选择声纹向量',
|
||||
'voiceprint.addSuccess': '添加成功',
|
||||
'voiceprint.addFailed': '添加说话人失败',
|
||||
'voiceprint.editSuccess': '编辑成功',
|
||||
'voiceprint.editFailed': '编辑说话人失败',
|
||||
'voiceprint.deleteConfirmMsg': '确定要删除这个说话人吗?',
|
||||
'voiceprint.deleteConfirmTitle': '确认删除',
|
||||
'voiceprint.deleteSuccess': '删除成功',
|
||||
'voiceprint.loading': '加载中...',
|
||||
'voiceprint.delete': '删除',
|
||||
'voiceprint.emptyTitle': '暂无声纹数据',
|
||||
'voiceprint.emptyDesc': '点击右下角 + 号添加您的第一个说话人',
|
||||
'voiceprint.addSpeaker': '添加说话人',
|
||||
'voiceprint.voiceVector': '声纹向量',
|
||||
'voiceprint.name': '姓名',
|
||||
'voiceprint.description': '描述',
|
||||
'voiceprint.pleaseInputDescription': '请输入描述',
|
||||
'voiceprint.cancel': '取消',
|
||||
'voiceprint.save': '保存',
|
||||
'voiceprint.editSpeaker': '编辑说话人',
|
||||
'voiceprint.selectVector': '选择声纹向量',
|
||||
'voiceprint.voiceprintInterfaceNotConfigured': '声纹接口未配置',
|
||||
|
||||
// 设置页面
|
||||
'settings.pageTitle': '设置',
|
||||
'settings.navigationTitle': '设置',
|
||||
'settings.networkSettings': '网络设置',
|
||||
'settings.serverApiUrl': '服务端接口地址',
|
||||
'settings.validServerUrl': '请输入有效的服务端地址(以 http 或 https 开头,并以 /xiaozhi 结尾)',
|
||||
'settings.saveSettings': '保存设置',
|
||||
'settings.resetDefault': '恢复默认',
|
||||
'settings.restartApp': '重启应用',
|
||||
'settings.restartNow': '立即重启',
|
||||
'settings.restartLater': '稍后',
|
||||
// 关于我们
|
||||
'settings.aboutApp': '关于小智智控台',
|
||||
'settings.aboutContent': '小智智控台\n\n基于 Vue.js 3 + uni-app 构建的跨平台移动端管理应用,为小智ESP32智能硬件提供设备管理、智能体配置等功能。\n\n© 2025 xiaozhi-esp32-server {version}',
|
||||
'settings.restartSuccess': '已保存,可稍后手动重启应用',
|
||||
'settings.serverUrlSavedAndCacheCleared': '服务端地址已保存,缓存已清除',
|
||||
'settings.resetToDefaultAndCacheCleared': '已恢复默认设置,缓存已清除',
|
||||
'settings.resetSuccess': '重置成功',
|
||||
'settings.enterServerUrl': '请输入服务端地址',
|
||||
'settings.clearCacheFailed': '清除缓存失败',
|
||||
'settings.cacheManagement': '缓存管理',
|
||||
'settings.totalCacheSize': '总缓存大小',
|
||||
'settings.appDataSize': '应用数据总大小',
|
||||
'settings.cacheClear': '缓存清理',
|
||||
'settings.clearAllCache': '清空所有缓存数据',
|
||||
'settings.clearCache': '清除缓存',
|
||||
'settings.modifyWillClearCache': '修改将清除缓存',
|
||||
'settings.appInfo': '应用信息',
|
||||
'settings.aboutUs': '关于我们',
|
||||
'settings.appVersion': '应用版本与团队信息',
|
||||
'settings.confirmClear': '确认清除',
|
||||
'settings.confirmClearMessage': '确定要清除所有缓存吗?这将删除所有数据包括登录状态,需要重新登录。',
|
||||
'settings.cacheCleared': '缓存清除成功,即将跳转到登录页',
|
||||
'settings.languageSettings': '语言设置',
|
||||
'settings.language': '语言',
|
||||
'settings.selectLanguage': '选择语言',
|
||||
'settings.languageChanged': '语言切换成功',
|
||||
|
||||
// 消息提示
|
||||
'message.loginSuccess': '登录成功!',
|
||||
'message.loginFail': '登录失败',
|
||||
'message.registerSuccess': '注册成功',
|
||||
'message.registerFail': '注册失败',
|
||||
'message.saveSuccess': '保存成功',
|
||||
'message.saveFail': '保存失败',
|
||||
'message.deleteSuccess': '删除成功',
|
||||
'message.deleteFail': '删除失败',
|
||||
'message.bindSuccess': '绑定成功',
|
||||
'message.bindFail': '绑定失败',
|
||||
'message.unbindSuccess': '解绑成功',
|
||||
'message.unbindFail': '解绑失败',
|
||||
'message.networkError': '网络错误,请检查网络连接',
|
||||
'message.serverError': '服务器错误,请稍后再试',
|
||||
'message.invalidAddress': '无效地址,请检查服务端是否启动或网络连接是否正常',
|
||||
'message.languageChanged': '语言已切换',
|
||||
|
||||
// Agent工具页面
|
||||
'agent.tools.pageTitle': 'Agent工具',
|
||||
'agent.tools.unselected': '未选',
|
||||
'agent.tools.selected': '已选',
|
||||
'agent.tools.noMorePlugins': '暂无更多插件',
|
||||
'agent.tools.pleaseSelectPlugin': '请选择插件功能',
|
||||
'agent.tools.builtInPlugins': '内置插件',
|
||||
'agent.tools.mcpAccessPoint': 'mcp接入点',
|
||||
'agent.tools.copy': '复制',
|
||||
'agent.tools.noTools': '暂无工具',
|
||||
'agent.tools.parameterConfig': '参数配置',
|
||||
'agent.tools.noParamsNeeded': '无需配置参数',
|
||||
'agent.tools.pleaseInput': '请输入',
|
||||
'agent.tools.inputOneItemPerLine': '每行输入一个项目',
|
||||
'agent.tools.pleaseInputValidJson': '请输入有效的JSON格式',
|
||||
'agent.tools.enableFunction': '启用功能',
|
||||
'agent.tools.toggleFunction': '开启或关闭此功能',
|
||||
'agent.tools.jsonFormatError': 'JSON格式错误',
|
||||
'agent.tools.noMcpAddressToCopy': '暂无MCP地址可复制',
|
||||
'agent.tools.mcpAddressCopied': 'MCP地址已复制到剪贴板',
|
||||
'agent.tools.copyFailed': '复制失败,请重试',
|
||||
'agent.tools.defaultValue': '默认值',
|
||||
'agent.tools.notSelected': '未选',
|
||||
'agent.tools.clickToConfigure': '点击配置',
|
||||
'agent.tools.mcpEndpoint': 'MCP接入点',
|
||||
'agent.tools.eachLineOneItem': '每行输入一个项目',
|
||||
|
||||
// 设备配置页面
|
||||
'deviceConfig.pageTitle': '设备配置',
|
||||
'deviceConfig.wifiConfig': 'WiFi配网',
|
||||
'deviceConfig.ultrasonicConfig': '超声波配网',
|
||||
'deviceConfig.selectConfigMethod': '选择配网方式',
|
||||
'deviceConfig.networkConfig': '网络配置',
|
||||
'deviceConfig.selectedNetwork': '选中网络',
|
||||
'deviceConfig.signal': '信号',
|
||||
'deviceConfig.openNetwork': '开放网络',
|
||||
'deviceConfig.encryptedNetwork': '加密网络',
|
||||
'deviceConfig.password': '密码',
|
||||
'deviceConfig.pleaseEnterPassword': '请输入WiFi密码',
|
||||
'deviceConfig.startConfig': '开始配网',
|
||||
'deviceConfig.connectToXiaozhiHotspot': '请先连接xiaozhi热点 (xiaozhi-XXXXXX)',
|
||||
'deviceConfig.detecting': '检测中...',
|
||||
'deviceConfig.reDetect': '重新检测',
|
||||
'deviceConfig.alreadyConnected': '已连接xiaozhi热点',
|
||||
'deviceConfig.refreshStatus': '刷新状态',
|
||||
'deviceConfig.wifiNetworks': 'WiFi网络',
|
||||
'deviceConfig.selectWifiNetwork': '选择WiFi网络',
|
||||
'deviceConfig.refreshScan': '刷新扫描',
|
||||
'deviceConfig.noWifiNetworks': '暂无WiFi网络',
|
||||
'deviceConfig.clickToRefreshScan': '请点击刷新扫描',
|
||||
'deviceConfig.signalStrong': '信号强',
|
||||
'deviceConfig.signalGood': '信号良好',
|
||||
'deviceConfig.signalFair': '信号一般',
|
||||
'deviceConfig.signalWeak': '信号弱',
|
||||
'deviceConfig.channel': '频道',
|
||||
'deviceConfig.about': '约',
|
||||
'deviceConfig.seconds': '秒',
|
||||
'deviceConfig.generating': '生成中...',
|
||||
'deviceConfig.playing': '播放中...',
|
||||
'deviceConfig.generateAndPlaySoundWave': '生成并播放声波',
|
||||
'deviceConfig.playSoundWave': '播放声波',
|
||||
'deviceConfig.stopPlaying': '停止播放',
|
||||
'deviceConfig.autoLoopPlaySoundWave': '自动循环播放声波',
|
||||
'deviceConfig.configAudioFile': '配网音频文件',
|
||||
'deviceConfig.duration': '时长',
|
||||
'deviceConfig.ultrasonicConfigInstructions': '超声波配网说明',
|
||||
'deviceConfig.ensureWifiNetworkSelectedAndPasswordEntered': '确保已选择WiFi网络并输入密码',
|
||||
'deviceConfig.clickGenerateAndPlaySoundWave': '点击生成并播放声波,系统会将配网信息编码为音频',
|
||||
'deviceConfig.bringPhoneCloseToXiaozhiDevice': '将手机靠近xiaozhi设备(距离1-2米)',
|
||||
'deviceConfig.duringAudioPlaybackXiaozhiWillReceive': '音频播放时,xiaozhi会接收并解码配网信息',
|
||||
'deviceConfig.afterConfigSuccessDeviceWillConnect': '配网成功后设备会自动连接WiFi网络',
|
||||
'deviceConfig.usesAfskModulation': '使用AFSK调制技术,通过1800Hz和1500Hz频率传输数据',
|
||||
'deviceConfig.ensureModeratePhoneVolume': '请确保手机音量适中,避免环境噪音干扰',
|
||||
'deviceConfig.generatingUltrasonicConfigAudio': '生成超声波配网音频',
|
||||
'deviceConfig.configData': '配网数据',
|
||||
'deviceConfig.dataBytesLength': '数据字节长度',
|
||||
'deviceConfig.bitStreamLength': '比特流长度',
|
||||
'deviceConfig.base64Length': 'base64长度',
|
||||
'deviceConfig.audioFileTooLarge': '音频文件过大,请缩短SSID或密码长度',
|
||||
'deviceConfig.audioGenerationSuccess': '音频生成成功',
|
||||
'deviceConfig.samplePoints': '采样点数',
|
||||
'deviceConfig.soundWaveGenerationSuccess': '声波生成成功',
|
||||
'deviceConfig.audioGenerationFailed': '音频生成失败',
|
||||
'deviceConfig.soundWaveGenerationFailed': '声波生成失败',
|
||||
'deviceConfig.pleaseGenerateAudioFirst': '请先生成音频',
|
||||
'deviceConfig.startPlayingUltrasonicConfigAudio': '开始播放超声波配网音频',
|
||||
'deviceConfig.ultrasonicAudioStartedPlaying': '超声波音频开始播放',
|
||||
'deviceConfig.startPlayingConfigSoundWave': '开始播放配网声波',
|
||||
'deviceConfig.ultrasonicAudioPlaybackEnded': '超声波音频播放结束',
|
||||
'deviceConfig.audioPlaybackFailed': '音频播放失败',
|
||||
'deviceConfig.audioResourceBusy': '音频资源繁忙,请稍后重试',
|
||||
'deviceConfig.audioFormatNotSupported': '音频格式不支持,可能是data URI问题',
|
||||
'deviceConfig.audioFileError': '音频文件错误',
|
||||
'deviceConfig.cleaningUpAudioContext': '清理音频上下文',
|
||||
'deviceConfig.cleaningUpAudioContextFailed': '清理音频上下文失败',
|
||||
'deviceConfig.stoppedPlayingUltrasonicAudio': '停止播放超声波音频',
|
||||
'deviceConfig.stoppedPlaying': '已停止播放',
|
||||
'deviceConfig.configMethod': '配网方式',
|
||||
'deviceConfig.enterWifiPassword': '请输入WiFi密码',
|
||||
'deviceConfig.xiaozhi': 'xiaozhi',
|
||||
'deviceConfig.connectXiaozhiHotspot': '请连接xiaozhi热点',
|
||||
'deviceConfig.wifiScanResponse': 'WiFi扫描响应',
|
||||
'deviceConfig.scanSuccess': '扫描成功',
|
||||
'deviceConfig.networks': '个网络',
|
||||
'deviceConfig.wifiScanFailed': 'WiFi扫描失败',
|
||||
'deviceConfig.scanFailedCheckConnection': '扫描失败,请检查连接',
|
||||
'deviceConfig.checking': '检查中',
|
||||
'deviceConfig.reCheck': '重新检查',
|
||||
'deviceConfig.connectedXiaozhiHotspot': '已连接xiaozhi热点',
|
||||
'deviceConfig.wifiNetwork': 'WiFi网络',
|
||||
'deviceConfig.scanning': '扫描中',
|
||||
'deviceConfig.cancel': '取消',
|
||||
'deviceConfig.clickRefreshScan': '请点击刷新扫描',
|
||||
'deviceConfig.esp32ConnectionCheckFailed': 'ESP32连接检查失败',
|
||||
'deviceConfig.startWifiConfig': '开始WiFi配网',
|
||||
'deviceConfig.configSuccess': '配网成功',
|
||||
'deviceConfig.deviceWillConnectTo': '设备将连接到',
|
||||
'deviceConfig.deviceWillRestart': '设备将重启',
|
||||
'deviceConfig.pleaseDisconnectXiaozhiHotspot': '请断开xiaozhi热点连接',
|
||||
'deviceConfig.configFailed': '配网失败',
|
||||
'deviceConfig.wifiConfigFailed': 'WiFi配网失败',
|
||||
'deviceConfig.pleaseCheckNetworkConnection': '请检查网络连接',
|
||||
'deviceConfig.startWifiConfigButton': '开始配网',
|
||||
'deviceConfig.wifiConfigInstructions': 'WiFi配网说明',
|
||||
'deviceConfig.phoneConnectXiaozhiHotspot': '手机连接xiaozhi热点',
|
||||
'deviceConfig.selectTargetWifiNetwork': '选择目标WiFi网络',
|
||||
'deviceConfig.enterWifiPasswordIfNeeded': '如有需要请输入WiFi密码',
|
||||
'deviceConfig.clickStartConfigAndWait': '点击开始配网并等待',
|
||||
'deviceConfig.afterConfigSuccessDeviceWillRestart': '配网成功后设备将自动重启',
|
||||
'deviceConfig.audioPlaybackError': '音频播放错误',
|
||||
'deviceConfig.playbackFailed': '播放失败',
|
||||
}
|
||||
@@ -0,0 +1,406 @@
|
||||
// 繁體中文語言包
|
||||
export default {
|
||||
// TabBar
|
||||
'tabBar.home': '首頁',
|
||||
'tabBar.deviceConfig': '配網',
|
||||
'tabBar.settings': '系統',
|
||||
// 設置頁面標題
|
||||
'settings.title': '設置',
|
||||
// 登錄頁面
|
||||
'login.pageTitle': '登錄',
|
||||
'login.navigationTitle': '登錄',
|
||||
'login.fetchConfigError': '獲取配置失敗:',
|
||||
'login.selectLanguage': '選擇語言',
|
||||
'login.welcomeBack': '歡迎回來',
|
||||
'login.pleaseLogin': '請登錄您的賬戶',
|
||||
'login.enterUsername': '請輸入用戶名',
|
||||
'login.enterPassword': '請輸入密碼',
|
||||
'login.enterCaptcha': '請輸入驗證碼',
|
||||
'login.forgotPassword': '忘記密碼?',
|
||||
'login.loginButton': '登錄',
|
||||
'login.loggingIn': '登錄中...',
|
||||
'login.noAccount': '還沒有賬戶?',
|
||||
'login.registerNow': '立即註冊',
|
||||
'login.enterPhone': '請輸入手機號碼',
|
||||
'login.selectCountry': '選擇國家/地區',
|
||||
'login.confirm': '確認',
|
||||
'login.serverSetting': '服務端設置',
|
||||
'login.requiredUsername': '用戶名不能為空',
|
||||
'login.requiredPassword': '密碼不能為空',
|
||||
'login.requiredCaptcha': '驗證碼不能為空',
|
||||
'login.requiredMobile': '請輸入正確的手機號碼',
|
||||
'login.captchaError': '圖形驗證碼錯誤',
|
||||
|
||||
// 註冊頁面
|
||||
'register.pageTitle': '註冊',
|
||||
'register.createAccount': '創建賬戶',
|
||||
'register.enterUsername': '請輸入用戶名',
|
||||
'register.enterPassword': '請輸入密碼',
|
||||
'register.confirmPassword': '請確認密碼',
|
||||
'register.enterPhone': '請輸入手機號碼',
|
||||
'register.enterCode': '請輸入驗證碼',
|
||||
'register.getCode': '獲取驗證碼',
|
||||
'register.agreeTerms': '我已閱讀並同意',
|
||||
'register.terms': '《用戶協議》',
|
||||
'register.privacy': '《隱私政策》',
|
||||
'register.registerButton': '註冊',
|
||||
'register.registering': '註冊中...',
|
||||
'register.haveAccount': '已有賬戶?',
|
||||
'register.loginNow': '立即登錄',
|
||||
'register.selectCountry': '選擇國家/地區',
|
||||
'register.confirm': '確認',
|
||||
|
||||
// 首頁
|
||||
'home.pageTitle': '首頁',
|
||||
'home.createAgent': '創建智能體',
|
||||
'home.agentName': '智能體',
|
||||
'home.modelInfo': '模型信息',
|
||||
'home.lastActive': '最近活躍',
|
||||
'home.greeting': '你好,小智',
|
||||
'home.subtitle': '讓我們度過',
|
||||
'home.wonderfulDay': '美好的一天!',
|
||||
'home.emptyState': '暫無智能體',
|
||||
'home.deviceManagement': '設備管理',
|
||||
'home.lastConversation': '最近對話:',
|
||||
'home.delete': '刪除',
|
||||
'home.createFirstAgent': '點擊右下角 + 號創建您的第一個智能體',
|
||||
'home.dialogTitle': '創建智能體',
|
||||
'home.inputPlaceholder': '例如:客服助手、語音助理、知識問答',
|
||||
'home.createNow': '立即創建',
|
||||
'home.justNow': '剛剛',
|
||||
'home.minutesAgo': '分鐘前',
|
||||
'home.hoursAgo': '小時前',
|
||||
'home.daysAgo': '天前',
|
||||
|
||||
// Agent頁面
|
||||
'agent.pageTitle': '智能體',
|
||||
'agent.roleConfig': '角色配置',
|
||||
'agent.deviceManagement': '設備管理',
|
||||
'agent.chatHistory': '聊天記錄',
|
||||
'agent.voiceprintManagement': '聲紋管理',
|
||||
'agent.editTitle': '編輯智能體',
|
||||
'agent.toolsTitle': '編輯功能',
|
||||
'agent.voiceActivityDetection': '語音活動檢測',
|
||||
'agent.speechRecognition': '語音識別',
|
||||
'agent.largeLanguageModel': '大語言模型',
|
||||
'agent.save': '保存',
|
||||
'agent.cancel': '取消',
|
||||
// Agent編輯頁面
|
||||
'agent.basicInfo': '基礎資訊',
|
||||
'agent.agentName': '助手暱稱',
|
||||
'agent.inputAgentName': '請輸入助手暱稱',
|
||||
'agent.roleMode': '角色模式',
|
||||
'agent.roleDescription': '角色介紹',
|
||||
'agent.inputRoleDescription': '請輸入角色介紹',
|
||||
'agent.modelConfig': '模型配置',
|
||||
'agent.vad': '語音活動檢測',
|
||||
'agent.asr': '語音識別',
|
||||
'agent.llm': '大語言模型',
|
||||
'agent.vllm': '視覺大模型',
|
||||
'agent.intent': '意圖識別',
|
||||
'agent.memory': '記憶',
|
||||
'agent.voiceSettings': '語音設置',
|
||||
'agent.tts': '語音合成',
|
||||
'agent.voiceprint': '角色音色',
|
||||
'agent.plugins': '外掛',
|
||||
'agent.editFunctions': '編輯功能',
|
||||
'agent.historyMemory': '歷史記憶',
|
||||
'agent.memoryContent': '記憶內容',
|
||||
'agent.saving': '儲存中...',
|
||||
'agent.saveSuccess': '儲存成功',
|
||||
'agent.saveFail': '儲存失敗',
|
||||
'agent.loadFail': '加載失敗',
|
||||
'agent.pleaseInputAgentName': '請輸入助手暱稱',
|
||||
'agent.pleaseInputRoleDescription': '請輸入角色介紹',
|
||||
'agent.pleaseSelect': '請選擇',
|
||||
|
||||
// 聊天歷史頁面
|
||||
'chatHistory.getChatSessions': '獲取聊天會話列表',
|
||||
'chatHistory.noSelectedAgent': '沒有選中的智能體',
|
||||
'chatHistory.getChatSessionsFailed': '獲取聊天會話列表失敗:',
|
||||
'chatHistory.unknownTime': '未知時間',
|
||||
'chatHistory.justNow': '剛剛',
|
||||
'chatHistory.minutesAgo': '{minutes}分鐘前',
|
||||
'chatHistory.hoursAgo': '{hours}小時前',
|
||||
'chatHistory.daysAgo': '{days}天前',
|
||||
'chatHistory.conversationRecord': '對話記錄',
|
||||
'chatHistory.totalChats': '共 {count} 條對話',
|
||||
'chatHistory.loading': '加載中...',
|
||||
'chatHistory.noMoreData': '沒有更多數據了',
|
||||
'chatHistory.noChatRecords': '暫無聊天記錄',
|
||||
'chatHistory.chatRecordsDescription': '與智能體的對話記錄會顯示在這裡',
|
||||
// 聊天詳情頁面
|
||||
'chatHistory.pageTitle': '聊天詳情',
|
||||
'chatHistory.assistantName': '智能助手',
|
||||
'chatHistory.userName': '用戶',
|
||||
'chatHistory.aiAssistantName': 'AI助手',
|
||||
'chatHistory.loadFailed': '獲取聊天記錄失敗',
|
||||
'chatHistory.parameterError': '頁面參數錯誤',
|
||||
'chatHistory.invalidAudioId': '音頻ID無效',
|
||||
'chatHistory.audioPlayFailed': '音頻播放失敗',
|
||||
'chatHistory.playAudioFailed': '播放音頻失敗',
|
||||
|
||||
// 設備管理頁面
|
||||
'device.pageTitle': '設備管理',
|
||||
'device.noDevices': '暫無設備',
|
||||
'device.macAddress': 'MAC地址',
|
||||
'device.firmwareVersion': '固件版本',
|
||||
'device.lastConnected': '最近對話',
|
||||
'device.otaUpdate': 'OTA升級',
|
||||
'device.unbind': '解除綁定',
|
||||
'device.confirmUnbind': '確定要解除綁定設備',
|
||||
'device.bindDevice': '綁定新設備',
|
||||
'device.deviceType': '設備類型',
|
||||
'device.loading': '加載中...',
|
||||
'device.neverConnected': '從未連接',
|
||||
'device.justNow': '剛剛',
|
||||
'device.minutesAgo': '{minutes}分鐘前',
|
||||
'device.hoursAgo': '{hours}小時前',
|
||||
'device.daysAgo': '{days}天前',
|
||||
'device.otaAutoUpdateEnabled': 'OTA自動升級已開啟',
|
||||
'device.otaAutoUpdateDisabled': 'OTA自動升級已關閉',
|
||||
'device.operationFailed': '操作失敗,請重試',
|
||||
'device.deviceUnbound': '設備已解除綁定',
|
||||
'device.unbindFailed': '解除綁定失敗,請重試',
|
||||
'device.unbindDevice': '解除綁定設備',
|
||||
'device.confirmUnbindDevice': '確定要解除綁定設備 "{macAddress}" 嗎?',
|
||||
'device.cancel': '取消',
|
||||
'device.noDevice': '暫無設備',
|
||||
'device.pleaseSelectAgent': '請先選擇智能體',
|
||||
'device.deviceBindSuccess': '設備綁定成功!',
|
||||
'device.bindFailed': '綁定失敗,請檢查驗證碼是否正確',
|
||||
'device.enterDeviceCode': '請輸入設備驗證碼',
|
||||
'device.bindNow': '立即綁定',
|
||||
'device.lastConnection': '最近對話',
|
||||
'device.clickToBindFirstDevice': '點擊右下角 + 號綁定您的第一個設備',
|
||||
|
||||
// 通用
|
||||
'common.success': '成功',
|
||||
'common.fail': '失敗',
|
||||
'common.loading': '加載中...',
|
||||
'common.confirm': '確認',
|
||||
'common.cancel': '取消',
|
||||
'common.delete': '刪除',
|
||||
'common.edit': '編輯',
|
||||
'common.add': '添加',
|
||||
'common.pleaseSelect': '請選擇',
|
||||
'common.unknownError': '未知錯誤',
|
||||
'common.networkError': '網路錯誤',
|
||||
|
||||
// Voiceprint page
|
||||
'voiceprint.noSelectedAgent': '沒有選中的智能體',
|
||||
'voiceprint.pleaseSelectAgent': '請先選擇智能體',
|
||||
'voiceprint.fetchHistoryFailed': '獲取對話記錄失敗',
|
||||
'voiceprint.clickToSelectVector': '點擊選擇聲紋向量',
|
||||
'voiceprint.pleaseInputName': '請輸入姓名',
|
||||
'voiceprint.pleaseSelectVector': '請選擇聲紋向量',
|
||||
'voiceprint.addSuccess': '添加成功',
|
||||
'voiceprint.addFailed': '添加說話人失敗',
|
||||
'voiceprint.editSuccess': '編輯成功',
|
||||
'voiceprint.editFailed': '編輯說話人失敗',
|
||||
'voiceprint.deleteConfirmMsg': '確定要刪除這個說話人嗎?',
|
||||
'voiceprint.deleteConfirmTitle': '確認刪除',
|
||||
'voiceprint.deleteSuccess': '刪除成功',
|
||||
'voiceprint.loading': '加載中...',
|
||||
'voiceprint.delete': '刪除',
|
||||
'voiceprint.emptyTitle': '暫無聲紋數據',
|
||||
'voiceprint.emptyDesc': '點擊右下角 + 號添加您的第一個說話人',
|
||||
'voiceprint.addSpeaker': '添加說話人',
|
||||
'voiceprint.voiceVector': '聲紋向量',
|
||||
'voiceprint.name': '姓名',
|
||||
'voiceprint.description': '描述',
|
||||
'voiceprint.pleaseInputDescription': '請輸入描述',
|
||||
'voiceprint.cancel': '取消',
|
||||
'voiceprint.save': '保存',
|
||||
'voiceprint.editSpeaker': '編輯說話人',
|
||||
'voiceprint.selectVector': '選擇聲紋向量',
|
||||
'voiceprint.voiceprintInterfaceNotConfigured': '聲紋接口未配置',
|
||||
|
||||
// 設置頁面
|
||||
'settings.pageTitle': '設置',
|
||||
'settings.navigationTitle': '設置',
|
||||
'settings.networkSettings': '網絡設置',
|
||||
'settings.serverApiUrl': '服務端接口地址',
|
||||
'settings.validServerUrl': '請輸入有效的服務端地址(以 http 或 https 開頭,並以 /xiaozhi 結尾)',
|
||||
'settings.saveSettings': '保存設置',
|
||||
'settings.resetDefault': '恢復默認',
|
||||
'settings.restartApp': '重啟應用',
|
||||
'settings.restartNow': '立即重啟',
|
||||
'settings.restartLater': '稍後',
|
||||
// 關於我們
|
||||
'settings.aboutApp': '關於小智智控台',
|
||||
'settings.aboutContent': '小智智控台\n\n基於 Vue.js 3 + uni-app 構建的跨平台移動端管理應用,為小智ESP32智能硬體提供設備管理、智能體配置等功能。\n\n© 2025 xiaozhi-esp32-server 0.8.3',
|
||||
'settings.restartSuccess': '已保存,可稍後手動重啟應用',
|
||||
'settings.serverUrlSavedAndCacheCleared': '服務端地址已保存,緩存已清除',
|
||||
'settings.resetToDefaultAndCacheCleared': '已恢復默認設置,緩存已清除',
|
||||
'settings.resetSuccess': '重置成功',
|
||||
'settings.enterServerUrl': '請輸入服務端地址',
|
||||
'settings.clearCacheFailed': '清除緩存失敗',
|
||||
'settings.cacheManagement': '緩存管理',
|
||||
'settings.totalCacheSize': '總緩存大小',
|
||||
'settings.appDataSize': '應用數據總大小',
|
||||
'settings.cacheClear': '緩存清理',
|
||||
'settings.clearAllCache': '清空所有緩存數據',
|
||||
'settings.clearCache': '清除緩存',
|
||||
'settings.modifyWillClearCache': '修改將清除緩存',
|
||||
'settings.appInfo': '應用信息',
|
||||
'settings.aboutUs': '關於我們',
|
||||
'settings.appVersion': '應用版本與團隊信息',
|
||||
'settings.confirmClear': '確認清除',
|
||||
'settings.confirmClearMessage': '確定要清除所有緩存嗎?這將刪除所有數據包括登錄狀態,需要重新登錄。',
|
||||
'settings.cacheCleared': '緩存清除成功,即將跳轉到登錄頁',
|
||||
'settings.languageSettings': '語言設置',
|
||||
'settings.language': '語言',
|
||||
'settings.selectLanguage': '選擇語言',
|
||||
'settings.languageChanged': '語言切換成功',
|
||||
|
||||
// 消息提示
|
||||
'message.loginSuccess': '登錄成功!',
|
||||
'message.loginFail': '登錄失敗',
|
||||
'message.registerSuccess': '註冊成功',
|
||||
'message.registerFail': '註冊失敗',
|
||||
'message.saveSuccess': '保存成功',
|
||||
'message.saveFail': '保存失敗',
|
||||
'message.deleteSuccess': '刪除成功',
|
||||
'message.deleteFail': '刪除失敗',
|
||||
'message.bindSuccess': '綁定成功',
|
||||
'message.bindFail': '綁定失敗',
|
||||
'message.unbindSuccess': '解除綁定成功',
|
||||
'message.unbindFail': '解除綁定失敗',
|
||||
'message.networkError': '網絡錯誤,請檢查網絡連接',
|
||||
'message.serverError': '服務器錯誤,請稍後再試',
|
||||
'message.invalidAddress': '無效地址,請檢查服務端是否啟動或網絡連接是否正常',
|
||||
'message.languageChanged': '語言已切換',
|
||||
|
||||
// Agent工具頁面
|
||||
'agent.tools.pageTitle': 'Agent工具',
|
||||
'agent.tools.unselected': '未選',
|
||||
'agent.tools.selected': '已選',
|
||||
'agent.tools.noMorePlugins': '暫無更多插件',
|
||||
'agent.tools.pleaseSelectPlugin': '請選擇插件功能',
|
||||
'agent.tools.builtInPlugins': '內置插件',
|
||||
'agent.tools.mcpAccessPoint': 'mcp接入點',
|
||||
'agent.tools.copy': '複製',
|
||||
'agent.tools.noTools': '暫無工具',
|
||||
'agent.tools.parameterConfig': '參數配置',
|
||||
'agent.tools.noParamsNeeded': '無需配置參數',
|
||||
'agent.tools.pleaseInput': '請輸入',
|
||||
'agent.tools.inputOneItemPerLine': '每行輸入一個項目',
|
||||
'agent.tools.pleaseInputValidJson': '請輸入有效的JSON格式',
|
||||
'agent.tools.enableFunction': '啟用功能',
|
||||
'agent.tools.toggleFunction': '開啟或關閉此功能',
|
||||
'agent.tools.jsonFormatError': 'JSON格式錯誤',
|
||||
'agent.tools.noMcpAddressToCopy': '暫無MCP地址可複製',
|
||||
'agent.tools.mcpAddressCopied': 'MCP地址已複製到剪貼簿',
|
||||
'agent.tools.copyFailed': '複製失敗,請重試',
|
||||
'agent.tools.defaultValue': '默認值',
|
||||
'agent.tools.notSelected': '未選',
|
||||
'agent.tools.clickToConfigure': '點擊配置',
|
||||
'agent.tools.mcpEndpoint': 'MCP接入點',
|
||||
'agent.tools.eachLineOneItem': '每行輸入一個項目',
|
||||
|
||||
// 設備配置頁面
|
||||
'deviceConfig.pageTitle': '設備配置',
|
||||
'deviceConfig.wifiConfig': 'WiFi配網',
|
||||
'deviceConfig.ultrasonicConfig': '超聲波配網',
|
||||
'deviceConfig.selectConfigMethod': '選擇配網方式',
|
||||
'deviceConfig.networkConfig': '網絡配置',
|
||||
'deviceConfig.selectedNetwork': '選中網絡',
|
||||
'deviceConfig.signal': '信號',
|
||||
'deviceConfig.openNetwork': '開放網絡',
|
||||
'deviceConfig.encryptedNetwork': '加密網絡',
|
||||
'deviceConfig.password': '密碼',
|
||||
'deviceConfig.pleaseEnterPassword': '請輸入WiFi密碼',
|
||||
'deviceConfig.startConfig': '開始配網',
|
||||
'deviceConfig.connectToXiaozhiHotspot': '請先連接xiaozhi熱點 (xiaozhi-XXXXXX)',
|
||||
'deviceConfig.detecting': '檢測中...',
|
||||
'deviceConfig.reDetect': '重新檢測',
|
||||
'deviceConfig.alreadyConnected': '已連接xiaozhi熱點',
|
||||
'deviceConfig.refreshStatus': '刷新狀態',
|
||||
'deviceConfig.wifiNetworks': 'WiFi網絡',
|
||||
'deviceConfig.selectWifiNetwork': '選擇WiFi網絡',
|
||||
'deviceConfig.refreshScan': '刷新掃描',
|
||||
'deviceConfig.noWifiNetworks': '暫無WiFi網絡',
|
||||
'deviceConfig.clickToRefreshScan': '請點擊刷新掃描',
|
||||
'deviceConfig.signalStrong': '信號強',
|
||||
'deviceConfig.signalGood': '信號良好',
|
||||
'deviceConfig.signalFair': '信號一般',
|
||||
'deviceConfig.signalWeak': '信號弱',
|
||||
'deviceConfig.channel': '頻道',
|
||||
'deviceConfig.about': '約',
|
||||
'deviceConfig.seconds': '秒',
|
||||
'deviceConfig.generating': '生成中...',
|
||||
'deviceConfig.playing': '播放中...',
|
||||
'deviceConfig.generateAndPlaySoundWave': '生成並播放聲波',
|
||||
'deviceConfig.playSoundWave': '播放聲波',
|
||||
'deviceConfig.stopPlaying': '停止播放',
|
||||
'deviceConfig.autoLoopPlaySoundWave': '自動循環播放聲波',
|
||||
'deviceConfig.configAudioFile': '配網音頻文件',
|
||||
'deviceConfig.duration': '時長',
|
||||
'deviceConfig.ultrasonicConfigInstructions': '超聲波配網說明',
|
||||
'deviceConfig.ensureWifiNetworkSelectedAndPasswordEntered': '確保已選擇WiFi網絡並輸入密碼',
|
||||
'deviceConfig.clickGenerateAndPlaySoundWave': '點擊生成並播放聲波,系統會將配網信息編碼為音頻',
|
||||
'deviceConfig.bringPhoneCloseToXiaozhiDevice': '將手機靠近xiaozhi設備(距離1-2米)',
|
||||
'deviceConfig.duringAudioPlaybackXiaozhiWillReceive': '音頻播放時,xiaozhi會接收並解碼配網信息',
|
||||
'deviceConfig.afterConfigSuccessDeviceWillConnect': '配網成功後設備會自動連接WiFi網絡',
|
||||
'deviceConfig.usesAfskModulation': '使用AFSK調制技術,通過1800Hz和1500Hz頻率傳輸數據',
|
||||
'deviceConfig.ensureModeratePhoneVolume': '請確保手機音量適中,避免環境噪音干擾',
|
||||
'deviceConfig.generatingUltrasonicConfigAudio': '生成超聲波配網音頻',
|
||||
'deviceConfig.configData': '配網數據',
|
||||
'deviceConfig.dataBytesLength': '數據字節長度',
|
||||
'deviceConfig.bitStreamLength': '比特流長度',
|
||||
'deviceConfig.base64Length': 'base64長度',
|
||||
'deviceConfig.audioFileTooLarge': '音頻文件過大,請縮短SSID或密碼長度',
|
||||
'deviceConfig.audioGenerationSuccess': '音頻生成成功',
|
||||
'deviceConfig.samplePoints': '採樣點數',
|
||||
'deviceConfig.soundWaveGenerationSuccess': '聲波生成成功',
|
||||
'deviceConfig.audioGenerationFailed': '音頻生成失敗',
|
||||
'deviceConfig.soundWaveGenerationFailed': '聲波生成失敗',
|
||||
'deviceConfig.pleaseGenerateAudioFirst': '請先生成音頻',
|
||||
'deviceConfig.startPlayingUltrasonicConfigAudio': '開始播放超聲波配網音頻',
|
||||
'deviceConfig.ultrasonicAudioStartedPlaying': '超聲波音頻開始播放',
|
||||
'deviceConfig.startPlayingConfigSoundWave': '開始播放配網聲波',
|
||||
'deviceConfig.ultrasonicAudioPlaybackEnded': '超聲波音頻播放結束',
|
||||
'deviceConfig.audioPlaybackFailed': '音頻播放失敗',
|
||||
'deviceConfig.audioResourceBusy': '音頻資源繁忙,請稍後重試',
|
||||
'deviceConfig.audioFormatNotSupported': '音頻格式不支援,可能是data URI問題',
|
||||
'deviceConfig.audioFileError': '音頻文件錯誤',
|
||||
'deviceConfig.cleaningUpAudioContext': '清理音頻上下文',
|
||||
'deviceConfig.cleaningUpAudioContextFailed': '清理音頻上下文失敗',
|
||||
'deviceConfig.stoppedPlayingUltrasonicAudio': '停止播放超聲波音頻',
|
||||
'deviceConfig.stoppedPlaying': '已停止播放',
|
||||
'deviceConfig.configMethod': '配網方式',
|
||||
'deviceConfig.enterWifiPassword': '請輸入WiFi密碼',
|
||||
'deviceConfig.xiaozhi': 'xiaozhi',
|
||||
'deviceConfig.connectXiaozhiHotspot': '請連接xiaozhi熱點',
|
||||
'deviceConfig.wifiScanResponse': 'WiFi掃描響應',
|
||||
'deviceConfig.scanSuccess': '掃描成功',
|
||||
'deviceConfig.networks': '個網絡',
|
||||
'deviceConfig.wifiScanFailed': 'WiFi掃描失敗',
|
||||
'deviceConfig.scanFailedCheckConnection': '掃描失敗,請檢查連接',
|
||||
'deviceConfig.checking': '檢查中',
|
||||
'deviceConfig.reCheck': '重新檢查',
|
||||
'deviceConfig.connectedXiaozhiHotspot': '已連接xiaozhi熱點',
|
||||
'deviceConfig.wifiNetwork': 'WiFi網絡',
|
||||
'deviceConfig.scanning': '掃描中',
|
||||
'deviceConfig.cancel': '取消',
|
||||
'deviceConfig.clickRefreshScan': '請點擊刷新掃描',
|
||||
'deviceConfig.esp32ConnectionCheckFailed': 'ESP32連接檢查失敗',
|
||||
'deviceConfig.startWifiConfig': '開始WiFi配網',
|
||||
'deviceConfig.configSuccess': '配網成功',
|
||||
'deviceConfig.deviceWillConnectTo': '設備將連接到',
|
||||
'deviceConfig.deviceWillRestart': '設備將重啟',
|
||||
'deviceConfig.pleaseDisconnectXiaozhiHotspot': '請斷開xiaozhi熱點連接',
|
||||
'deviceConfig.configFailed': '配網失敗',
|
||||
'deviceConfig.wifiConfigFailed': 'WiFi配網失敗',
|
||||
'deviceConfig.pleaseCheckNetworkConnection': '請檢查網絡連接',
|
||||
'deviceConfig.startWifiConfigButton': '開始配網',
|
||||
'deviceConfig.wifiConfigInstructions': 'WiFi配網說明',
|
||||
'deviceConfig.phoneConnectXiaozhiHotspot': '手機連接xiaozhi熱點',
|
||||
'deviceConfig.selectTargetWifiNetwork': '選擇目標WiFi網絡',
|
||||
'deviceConfig.enterWifiPasswordIfNeeded': '如有需要請輸入WiFi密碼',
|
||||
'deviceConfig.clickStartConfigAndWait': '點擊開始配網並等待',
|
||||
'deviceConfig.afterConfigSuccessDeviceWillRestart': '配網成功後設備將自動重啟',
|
||||
'deviceConfig.audioPlaybackError': '音頻播放錯誤',
|
||||
'deviceConfig.playbackFailed': '播放失敗',
|
||||
}
|
||||
Reference in New Issue
Block a user