2026-06-14 14:34:30 +08:00
|
|
|
import type { TranslationMap } from "./index";
|
|
|
|
|
|
|
|
|
|
export const enUS: TranslationMap = {
|
|
|
|
|
// App header
|
|
|
|
|
"app.title": "AI Vision Assistant",
|
|
|
|
|
"app.stats.requests": "requests",
|
|
|
|
|
|
|
|
|
|
// Connection status
|
|
|
|
|
"status.connected": "Connected",
|
|
|
|
|
"status.connecting": "Connecting...",
|
|
|
|
|
"status.disconnected": "Disconnected",
|
|
|
|
|
|
|
|
|
|
// Settings
|
|
|
|
|
"settings.title": "Settings",
|
|
|
|
|
"settings.appearance": "Appearance",
|
|
|
|
|
"settings.theme": "Theme",
|
|
|
|
|
"settings.theme.desc": "Switch between light and dark theme",
|
|
|
|
|
"settings.theme.dark": "Dark",
|
|
|
|
|
"settings.theme.light": "Light",
|
|
|
|
|
"settings.session": "Session",
|
|
|
|
|
"settings.tts": "Voice Response",
|
|
|
|
|
"settings.tts.desc": "Play voice along with AI response",
|
|
|
|
|
"settings.detail": "Image Quality",
|
|
|
|
|
"settings.detail.desc": "High quality for text recognition, low saves bandwidth",
|
|
|
|
|
"settings.detail.low": "Low",
|
|
|
|
|
"settings.detail.high": "High",
|
|
|
|
|
"settings.language": "Language",
|
|
|
|
|
"settings.language.desc": "Interaction language preference",
|
2026-06-14 20:32:30 +08:00
|
|
|
"settings.scenario": "Scenario",
|
|
|
|
|
"settings.scenario.desc": "Choose the AI's role",
|
|
|
|
|
|
|
|
|
|
// Scenarios
|
|
|
|
|
"scenario.choose": "Choose a scenario",
|
|
|
|
|
"scenario.freeChat": "Free Chat",
|
|
|
|
|
"scenario.freeChat.desc": "AI visual assistant, chat freely",
|
|
|
|
|
"scenario.interviewer": "Mock Interviewer",
|
|
|
|
|
"scenario.interviewer.desc": "AI plays interviewer for practice",
|
|
|
|
|
"scenario.englishTeacher": "English Tutor",
|
|
|
|
|
"scenario.englishTeacher.desc": "AI English tutor, corrects grammar",
|
|
|
|
|
"scenario.debate": "Debate Opponent",
|
|
|
|
|
"scenario.debate.desc": "AI challenges your viewpoints",
|
|
|
|
|
"scenario.interpreter": "Interpreter",
|
|
|
|
|
"scenario.interpreter.desc": "Real-time Chinese-English translation",
|
2026-06-14 14:34:30 +08:00
|
|
|
|
|
|
|
|
// Video indicators
|
|
|
|
|
"video.observing": "👁️ Observing",
|
|
|
|
|
"video.listening": "🎤 Listening...",
|
|
|
|
|
"video.playing": "🔊 Playing...",
|
|
|
|
|
"video.initVad": "Initializing voice detection...",
|
|
|
|
|
"video.clickToStart": "Click the button below to start",
|
2026-06-14 15:07:39 +08:00
|
|
|
"video.placeholder": "Type in the chat panel to start",
|
2026-06-14 14:34:30 +08:00
|
|
|
"video.cameraOff": "Camera is off",
|
|
|
|
|
"video.cameraOff.hint": "You can type in the chat panel",
|
2026-06-20 13:48:26 +08:00
|
|
|
"video.ended": "Video Ended",
|
|
|
|
|
"video.ended.hint": "You can continue chatting below",
|
2026-06-14 14:34:30 +08:00
|
|
|
|
|
|
|
|
// Controls
|
|
|
|
|
"controls.connecting": "Connecting...",
|
|
|
|
|
"controls.start": "🎙️ Start Session",
|
2026-06-14 15:07:39 +08:00
|
|
|
"controls.startVideo": "🎙️ Start Video Call",
|
2026-06-14 14:34:30 +08:00
|
|
|
"controls.cameraOff": "Turn off camera",
|
|
|
|
|
"controls.cameraOn": "Turn on camera",
|
|
|
|
|
"controls.micOff": "Turn off microphone",
|
|
|
|
|
"controls.micOn": "Turn on microphone",
|
|
|
|
|
"controls.observing": "👁️ Observing",
|
|
|
|
|
"controls.observation": "👁️ Observe",
|
|
|
|
|
"controls.interrupt": "⏹ Interrupt",
|
|
|
|
|
"controls.stop": "End Session",
|
2026-06-20 13:48:26 +08:00
|
|
|
"controls.stopVideo": "End Video",
|
|
|
|
|
"controls.endSession": "End Session",
|
|
|
|
|
"controls.resumeVideo": "📹 Resume Video",
|
2026-06-14 14:34:30 +08:00
|
|
|
|
|
|
|
|
// Chat panel
|
|
|
|
|
"chat.title": "Chat",
|
|
|
|
|
"chat.mode.observation": "Observing",
|
|
|
|
|
"chat.reconnecting": "Connection lost, reconnecting...",
|
2026-06-14 19:54:22 +08:00
|
|
|
"chat.connecting": "Connecting to server...",
|
|
|
|
|
"chat.vadInit": "Initializing voice detection...",
|
2026-06-14 15:07:39 +08:00
|
|
|
"chat.empty.prompt": "Type below to start chatting",
|
|
|
|
|
"chat.empty.hint": "Type to chat with AI, or click the button on the left to start video",
|
2026-06-14 14:34:30 +08:00
|
|
|
"chat.welcome.prompt": "Type below to start chatting",
|
|
|
|
|
"chat.welcome.hint": "Or enable microphone for voice chat",
|
|
|
|
|
"chat.userLabel": "You",
|
|
|
|
|
"chat.input.placeholder": "Type a message...",
|
|
|
|
|
"chat.send": "Send",
|
2026-06-14 20:32:30 +08:00
|
|
|
"chat.scenarioSwitched": "Switched to {name} mode",
|
2026-06-14 14:34:30 +08:00
|
|
|
|
|
|
|
|
// Session messages
|
|
|
|
|
"session.changeDetected": "👁️ Scene change detected",
|
|
|
|
|
"session.recognizing": "(Recognizing speech...)",
|
2026-06-14 19:54:22 +08:00
|
|
|
"session.sttFailed": "(Speech recognition failed, please try again)",
|
2026-06-14 14:34:30 +08:00
|
|
|
"session.noSpeech": "(No speech detected)",
|
|
|
|
|
"session.interrupted": "(Interrupted)",
|
|
|
|
|
|
|
|
|
|
// Errors
|
|
|
|
|
"error.INVALID_MESSAGE": "Invalid message format, please retry",
|
|
|
|
|
"error.SESSION_NOT_FOUND": "Session expired, please reconnect",
|
|
|
|
|
"error.RATE_LIMITED": "Too many requests, please try again later",
|
|
|
|
|
"error.IMAGE_TOO_LARGE": "Image too large, please reduce resolution",
|
|
|
|
|
"error.AUDIO_TOO_SHORT": "Audio too short, please try again",
|
|
|
|
|
"error.LLM_TIMEOUT": "AI response timed out, please retry",
|
|
|
|
|
"error.LLM_ERROR": "AI service error, please try again later",
|
|
|
|
|
"error.STT_ERROR": "Speech recognition failed, please retry",
|
|
|
|
|
"error.TTS_ERROR": "Voice synthesis failed",
|
|
|
|
|
"error.INTERNAL_ERROR": "Internal server error, please retry",
|
|
|
|
|
"error.unknown": "Unknown error",
|
|
|
|
|
|
2026-06-14 15:44:25 +08:00
|
|
|
// Sidebar
|
|
|
|
|
"sidebar.new": "New Chat",
|
|
|
|
|
"sidebar.expand": "Expand sidebar",
|
|
|
|
|
"sidebar.collapse": "Collapse sidebar",
|
|
|
|
|
"sidebar.empty": "No chat history",
|
|
|
|
|
"sidebar.messages": " messages",
|
|
|
|
|
"sidebar.rename": "Rename",
|
|
|
|
|
"sidebar.delete": "Delete",
|
2026-06-14 16:31:23 +08:00
|
|
|
"sidebar.search": "Search conversations...",
|
|
|
|
|
"sidebar.today": "Today",
|
|
|
|
|
"sidebar.yesterday": "Yesterday",
|
|
|
|
|
"sidebar.earlier": "Earlier",
|
|
|
|
|
"sidebar.pinned": "Pinned",
|
|
|
|
|
"sidebar.video": "Video",
|
|
|
|
|
"sidebar.clearHistory": "Clear History",
|
|
|
|
|
|
|
|
|
|
// Scene cards (empty state)
|
|
|
|
|
"scene.describe": "Describe my surroundings",
|
|
|
|
|
"scene.describe.desc": "Let AI observe and describe the current scene",
|
|
|
|
|
"scene.text": "Recognize text in view",
|
|
|
|
|
"scene.text.desc": "Extract and translate text from the scene",
|
|
|
|
|
"scene.object": "Analyze this object",
|
|
|
|
|
"scene.object.desc": "Identify objects and provide information",
|
|
|
|
|
"scene.suggest": "Give me suggestions",
|
|
|
|
|
"scene.suggest.desc": "Practical suggestions based on the current scene",
|
|
|
|
|
|
|
|
|
|
// Video controls (enhanced)
|
|
|
|
|
"controls.recognize": "Analyze Scene",
|
|
|
|
|
"controls.device.camera": "Camera",
|
|
|
|
|
"controls.device.mic": "Microphone",
|
|
|
|
|
"controls.device.default": "Default",
|
|
|
|
|
"controls.mode.realtime": "Realtime",
|
|
|
|
|
"controls.mode.ondemand": "On-demand",
|
|
|
|
|
"controls.mode.chat": "Chat only",
|
|
|
|
|
|
|
|
|
|
// Status bar
|
|
|
|
|
"statusbar.ready": "Ready · Select devices to start",
|
|
|
|
|
"statusbar.calling": "In call",
|
|
|
|
|
"statusbar.duration": "Duration",
|
|
|
|
|
"statusbar.recognitions": "recognitions",
|
|
|
|
|
"statusbar.tokens": "Tokens",
|
|
|
|
|
|
|
|
|
|
// Input enhanced
|
|
|
|
|
"chat.input.voice": "Voice input",
|
2026-06-14 15:44:25 +08:00
|
|
|
|
2026-06-14 14:34:30 +08:00
|
|
|
// Device errors
|
|
|
|
|
"error.vadInit": "VAD initialization failed",
|
|
|
|
|
"error.cameraAccess": "Cannot access camera",
|
|
|
|
|
"error.micAccess": "Cannot access microphone",
|
2026-06-14 18:38:45 +08:00
|
|
|
|
|
|
|
|
// Auth
|
|
|
|
|
"auth.subtitle": "AI Vision Assistant",
|
|
|
|
|
"auth.login": "Sign In",
|
|
|
|
|
"auth.register": "Sign Up",
|
|
|
|
|
"auth.username": "Username",
|
|
|
|
|
"auth.username.placeholder": "3-64 characters",
|
|
|
|
|
"auth.password": "Password",
|
|
|
|
|
"auth.password.placeholder": "8-72 characters",
|
|
|
|
|
"auth.submitting": "Please wait...",
|
|
|
|
|
"auth.noAccount": "Don't have an account?",
|
|
|
|
|
"auth.hasAccount": "Already have an account?",
|
|
|
|
|
"auth.error.usernameLength": "Username must be 3-64 characters",
|
|
|
|
|
"auth.error.passwordLength": "Password must be 8-72 characters",
|
|
|
|
|
"auth.logout": "Sign Out",
|
2026-06-14 18:42:47 +08:00
|
|
|
|
|
|
|
|
// Account (in settings)
|
|
|
|
|
"settings.account": "Account",
|
|
|
|
|
"settings.account.user": "Current user",
|
2026-06-14 14:34:30 +08:00
|
|
|
};
|