| | |
| | | 'home.daysAgo': 'days ago', |
| | | 'home.languageModel': 'LLM', |
| | | 'home.voiceModel': 'TTS', |
| | | 'home.noBoundDevice': 'No device bound', |
| | | 'home.onlineCount': '{online}/{total} online', |
| | | |
| | | // Agent page |
| | | 'agent.pageTitle': 'Agent', |
| | |
| | | 'agent.deviceManagement': 'Device Management', |
| | | 'agent.chatHistory': 'Chat History', |
| | | 'agent.voiceprintManagement': 'Voiceprint Management', |
| | | 'agent.parentTasks': 'Learning Tasks', |
| | | 'agent.editTitle': 'Edit Agent', |
| | | 'agent.toolsTitle': 'Edit Features', |
| | | 'agent.voiceActivityDetection': 'Voice Activity Detection', |
| | |
| | | 'device.deviceType': 'Device Type', |
| | | 'device.loading': 'Loading...', |
| | | 'device.neverConnected': 'Never connected', |
| | | 'device.checkingOnline': 'Checking device status…', |
| | | 'device.online': 'Device online', |
| | | 'device.offline': 'Device offline', |
| | | 'device.onlineHint': 'You can send immediate and scheduled tasks.', |
| | | 'device.offlineHint': 'Tasks cannot be sent. Chat history and other views still work.', |
| | | 'device.justNow': 'Just now', |
| | | 'device.minutesAgo': '{minutes} minutes ago', |
| | | 'device.hoursAgo': '{hours} hours ago', |
| | |
| | | 'voiceprint.audioNotExist': 'Audio does not exist', |
| | | 'voiceprint.getAudioFailed': 'Failed to get audio', |
| | | 'voiceprint.audioPlayFailed': 'Audio playback failed', |
| | | |
| | | 'parentTask.pageTitle': 'Learning Tasks', |
| | | 'parentTask.createTitle': 'Create Learning Task', |
| | | 'parentTask.editTitle': 'Edit Learning Task', |
| | | 'parentTask.device': 'Device', |
| | | 'parentTask.selectDevice': 'Select a device', |
| | | 'parentTask.bindDeviceFirst': 'Bind a device first', |
| | | 'parentTask.runningSection': 'Running now', |
| | | 'parentTask.scheduledSection': 'Scheduled tasks', |
| | | 'parentTask.running': 'Running', |
| | | 'parentTask.emptySchedule': 'No schedules yet. Tap + to create extensive listening, shadowing, or chat.', |
| | | 'parentTask.startNow': 'Start now', |
| | | 'parentTask.saveSchedule': 'Save schedule', |
| | | 'parentTask.started': 'Sent to the device', |
| | | 'parentTask.saved': 'Schedule synced to the device', |
| | | 'parentTask.saveFailed': 'Save failed', |
| | | 'parentTask.deviceOffline': 'Device is offline, so nothing was saved. Turn it on and connect it to the network, then try again.', |
| | | 'parentTask.online': 'Device online', |
| | | 'parentTask.offline': 'Device offline', |
| | | 'parentTask.checkingOnline': 'Checking device status…', |
| | | 'parentTask.onlineHint': 'You can send immediate and scheduled tasks.', |
| | | 'parentTask.offlineHint': 'Cannot send immediate or scheduled tasks. Turn the device on and connect it to the network.', |
| | | 'parentTask.startFailed': 'Dispatch failed. Check that the device is online.', |
| | | 'parentTask.stop': 'Stop', |
| | | 'parentTask.stopTitle': 'Stop current task', |
| | | 'parentTask.stopConfirm': 'The device will return to chat immediately.', |
| | | 'parentTask.stopped': 'Sent stop to the device', |
| | | 'parentTask.stopFailed': 'Stop failed. Check that the device is online.', |
| | | 'parentTask.deleteTitle': 'Delete task', |
| | | 'parentTask.deleteConfirm': 'This schedule will also be removed from the device.', |
| | | 'parentTask.deleted': 'Deleted', |
| | | 'parentTask.deleteFailed': 'Delete failed', |
| | | 'parentTask.scene': 'Scene', |
| | | 'parentTask.dispatchHint': 'Start now switches the device immediately. A schedule starts that mode at the set time, no voice command needed.', |
| | | 'parentTask.lesson': 'Lesson', |
| | | 'parentTask.pickScene': 'Choose a scene', |
| | | 'parentTask.pickLesson': 'Choose a lesson', |
| | | 'parentTask.repeat': 'Repeats', |
| | | 'parentTask.level': 'Level', |
| | | 'parentTask.system': 'Category', |
| | | 'parentTask.story': 'Idiom story', |
| | | 'parentTask.pickStory': 'Choose one story', |
| | | 'parentTask.noStories': 'No stories in this category yet. Add them in the lesson catalog.', |
| | | 'parentTask.sentenceCount': 'Shadowing has {n} sentences', |
| | | 'parentTask.enPassesTitle': 'How to listen in English', |
| | | 'parentTask.cnFixed': 'Chinese plays once at 1.0×, then English uses the passes below.', |
| | | 'parentTask.enPassIndex': 'English pass {n}', |
| | | 'parentTask.addEnPass': 'Add an English pass', |
| | | 'parentTask.removePass': 'Remove', |
| | | 'parentTask.shadowingSettings': 'Shadowing', |
| | | 'parentTask.shadowingLang': 'Language', |
| | | 'parentTask.shadowingLang.cn': 'Chinese', |
| | | 'parentTask.shadowingLang.en': 'English', |
| | | 'parentTask.shadowingSpeed': 'Playback speed', |
| | | 'parentTask.shadowingHint': 'Listen window = actual play time × 1.2. Current speed {speed}×; slower playback makes a longer window.', |
| | | 'parentTask.languagePair': 'Language pair', |
| | | 'parentTask.pickPair': 'Choose a language pair', |
| | | 'parentTask.pairSoon': 'coming soon', |
| | | 'parentTask.pairFallbackHint': 'Full phrase packs are still in progress. The device will practice in Chinese-English first.', |
| | | 'parentTask.duration': 'Duration (minutes, 0 = unlimited)', |
| | | 'parentTask.noDuration': 'No time limit', |
| | | 'parentTask.minutesValue': '{n} min', |
| | | 'parentTask.onComplete': 'When finished', |
| | | 'parentTask.completeChat': 'Return to chat', |
| | | 'parentTask.completePowerOff': 'Soft power off', |
| | | 'parentTask.howToRun': 'How to run', |
| | | 'parentTask.immediate': 'Run now', |
| | | 'parentTask.schedule': 'Schedule', |
| | | 'parentTask.schedule.daily': 'Daily', |
| | | 'parentTask.schedule.hourly': 'Hourly', |
| | | 'parentTask.schedule.interval': 'Interval', |
| | | 'parentTask.time': 'Time', |
| | | 'parentTask.pickTime': 'Pick a time', |
| | | 'parentTask.timeHint': 'Any hour and minute of the day', |
| | | 'parentTask.repeatDays': 'Repeat', |
| | | 'parentTask.everyDay': 'Every day', |
| | | 'parentTask.weekdays': 'Weekdays', |
| | | 'parentTask.hourlyMinute': 'Minute of each hour', |
| | | 'parentTask.hourlyOnTheHour': 'Every hour on the hour', |
| | | 'parentTask.hourlyAt': 'Every hour at :{minute}', |
| | | 'parentTask.everyMinutes': 'Every {minutes} minutes', |
| | | 'parentTask.intervalMinutes': 'Interval (minutes)', |
| | | 'parentTask.weekday.mon': 'Mon', |
| | | 'parentTask.weekday.tue': 'Tue', |
| | | 'parentTask.weekday.wed': 'Wed', |
| | | 'parentTask.weekday.thu': 'Thu', |
| | | 'parentTask.weekday.fri': 'Fri', |
| | | 'parentTask.weekday.sat': 'Sat', |
| | | 'parentTask.weekday.sun': 'Sun', |
| | | |
| | | 'parentHistory.pageTitle': 'History', |
| | | 'parentHistory.detailTitle': 'Record', |
| | | 'parentHistory.entry': 'History', |
| | | 'parentHistory.empty': 'No records yet. They appear after the child finishes a task.', |
| | | 'parentHistory.loadFailed': 'Failed to load', |
| | | 'parentHistory.status.running': 'In progress', |
| | | 'parentHistory.status.completed': 'Completed', |
| | | 'parentHistory.status.cancelled': 'Stopped', |
| | | 'parentHistory.status.preempted': 'Interrupted', |
| | | 'parentHistory.status.other': 'Incomplete', |
| | | 'parentHistory.source.immediate': 'Started now', |
| | | 'parentHistory.source.schedule': 'Scheduled', |
| | | 'parentHistory.source.voice': 'Voice command', |
| | | 'parentHistory.durationSec': '{s}s', |
| | | 'parentHistory.durationMin': '{m}m {s}s', |
| | | 'parentHistory.turns': '{n} lines', |
| | | 'parentHistory.sentence': 'Line {n}', |
| | | 'parentHistory.expected': 'Original', |
| | | 'parentHistory.asr': 'Follow-read', |
| | | 'parentHistory.noExpected': 'No original text', |
| | | 'parentHistory.noAsr': 'No follow-read recognized', |
| | | 'parentHistory.noAudio': 'No playable recording', |
| | | 'parentHistory.emptyTurns': 'No sentence records for this shadowing session.', |
| | | 'parentHistory.extensiveHint': 'Extensive listening has no per-sentence recordings. This page shows completion and duration.', |
| | | 'parentHistory.noChat': 'No chat was saved for this window.', |
| | | } |