export const lang = { //title for each page title: 'AI Customer Service', // ====== Common ====== cancel: 'Cancel', save: 'Save', send: 'Send', retry: 'Retry', // ====== Time Format ====== timeFormatToday: 'Today', timeFormatYesterday: 'Yesterday', timeFormatBeforeYesterday: 'Day before yesterday', // PR-CHAT-UI-CONFIG-V3 (2026-09-24): Humanized relative time (ui_time_humanize) timeJustNow: 'Just now', timeMinutesAgo: '{n} min ago', timeHoursAgo: '{n} h ago', timeMonthDay: '{m}/{d}', timeYearMonthDay: '{y}/{m}/{d}', // ====== ai-chat-message ====== aiNickname: 'AI Assistant', defaultNickname: 'Me', // PR-FRONTEND-VOICE-INPUT (2026-09-24): query text for attachment-only messages // audioMessage / videoMessage: short label for the user-bubble filename fallback (still used by bubble template) // *Instruction* keys: explicit directive sent to the AI as the query. // Just a label gets ignored — the AI needs an explicit "please listen/look" // to actually invoke STT/vision/file parsing on the attachment payload. audioMessage: 'Voice Message', videoMessage: 'Video Message', audioInstruction: 'I sent a voice message. Please listen to it and reply.', audioInstructionWithDuration: 'I sent a voice message ({seconds}s). Please listen to it and reply.', imageInstruction: 'I sent an image. Please look at it and reply.', videoInstruction: 'I sent a video. Please watch it and reply.', fileInstruction: 'I sent a file. Please review it and reply.', attachmentInstruction: 'I sent attachments. Please review them and reply.', inputPlaceholder: 'Please enter your question...', expandEditorTitle: 'Edit Content', loadMoreHistory: 'Load more history', loadingHistory: 'Loading history...', aiThinking: 'AI is thinking', receivingReply: 'Thinking', aiThinkingStatus1: 'AI is thinking', aiThinkingStatus2: 'AI is analyzing', aiThinkingStatus3: 'AI is searching', aiThinkingStatus4: 'AI is generating', serviceUnavailable: 'Sorry, the AI service is temporarily unavailable. Please try again later.', serviceTemporaryUnavailable: 'Sorry, the service is temporarily unavailable. Please try again later.', noContentToCopy: 'No content to copy', copySuccess: 'Copied', copySelected: 'Copied selected content', copyFail: 'Copy failed', copyFailWithReason: 'Copy failed: {reason}', copyFailPrivacyReason: 'clipboard permission not declared, copy unavailable', openingFile: 'Opening file...', openingFileName: 'Opening file: {name}', openingFileTitle: 'Opening: {title}', fileOpenFail: 'Failed to open file', loadHistoryFail: 'Failed to load history', about: '0B', // ====== ai-chat-message - Auto Reply Templates ====== autoReplyGreeting: 'Hello! I am the AI customer service assistant, glad to serve you! How can I help you?', autoReplyPrice: 'Our product prices vary by model and configuration. Please check the product detail page for specific prices.', autoReplyShipping: 'Generally, orders are shipped within 24 hours. Please check the logistics information for specific timelines.', autoReplyReturn: '7-day no-reason return is supported. Please ensure the product is in good condition.', autoReplyService: 'Our customer service hours are 9:00-18:00. Feel free to contact us if you have any questions.', autoReplyDefault: 'Thank you for your inquiry! Regarding your question about "{question}", our professional customer service will answer you as soon as possible. You can also check our help documentation for more information.', // ====== ai-chat-search ====== searchEntrance: 'Search', searchPlaceholder: 'Search chat history', searchClose: 'Done', noMatchResult: 'No matching results', searchAtTop: 'Already at top', searchAtBottom: 'Already at bottom', // ====== index.vue ====== settingsTitle: 'Settings', fallbackWelcome: 'Hello! I am an AI customer service assistant, glad to serve you!\n\nI can help you with:\n• Product-related questions\n• Order issues\n• Technical support\n• Product recommendations\n\nPlease tell me how I can assist you?', changeAvatar: 'Change Avatar', changeAvatarDesc: 'Customize your chat avatar', changeNickname: 'Change Nickname', changeNicknameDesc: 'Customize your nickname', clearChat: 'Clear Chat', exportChat: 'Export Records', help: 'Help', confirmClearChat: 'Are you sure you want to clear the chat?', chatCleared: 'Chat history has been cleared. How can I help you?', featureDeveloping: 'Feature under development', thanksFeedback: 'Thank you for your feedback!', improveService: 'We will improve our service', openLink: 'Open Link', confirmOpenLink: 'Are you sure you want to open this link: ', confirmOpenLinkText: 'Are you sure you want to open this link: {url}?', operationFailed: 'Operation failed, please try again', prompt: 'Prompt', serviceTypeNotSupported: 'Current service type does not support this page', // ====== index.vue - Help Content ====== helpContent: '# Help Guide\n\n## Basic Features\n- **Send Message**: Type in the input box and send\n- **Voice Input**: Tap the microphone icon for voice input\n- **Attachments**: Tap + to send images, files, locations\n\n## Message Types\n- **Text Message**: Regular text conversation\n- **Markdown**: Supports formatted document content\n- **File**: Supports various file format previews\n- **Audio**: Supports voice message playback\n- **Video**: Supports video playback\n- **Link**: Supports web link navigation\n- **Product**: Supports product card display\n\n## Actions\n- **Like/Dislike**: Rate AI responses\n- **Copy**: Long press a message to copy content\n- **Forward**: Supports message forwarding', // ====== index.vue - AI Response Templates ====== aiResponseTemplate1: 'I understand your needs, let me provide you with a detailed answer.', aiResponseTemplate2: 'Thank you for your question, that is a great question.', aiResponseTemplate3: 'Based on your question, I suggest you consider the following aspects:', aiResponseTemplate4: 'This is a common question, let me provide you with some solutions.', aiResponseTemplate5: 'I understand your confusion, let me help you analyze it.', aiProcessingMessage: 'I have received your question "{question}" and am working on it...', // ====== index.vue - Product Inquiry ====== productInquiryTemplate: 'I would like to learn more about the following product:\nProduct Name: {name}\nPrice: ¥{price}\nProduct ID: {id}', // ====== ai-chat-avatar-selector ====== avatarSelectorTitle: 'Change Avatar', chooseFromAlbum: 'Choose from Album', avatarChangeSuccess: 'Avatar changed successfully', enableAlbumPermission: 'Please enable album permission', // ====== ai-chat-emoji-panel ====== emojiTitle: 'Emoji', // ====== ai-chat-nickname-editor ====== editNickname: 'Edit Nickname', newNicknamePlaceholder: 'Please enter your new nickname', nicknameTip: 'Nickname length 1-12 characters, visible only to you', nicknameChangeSuccess: 'Nickname changed successfully', // ====== ai-chat-tools-panel ====== moreFunctions: 'More Features', image: 'Image', video: 'Video/Audio', file: 'File', voice: 'Voice', recordVoice: 'Record Voice', uploadAudio: 'Upload Audio', pickVideo: 'Choose Video', pickAudio: 'Choose Audio', chooseAudioFail: 'Failed to select audio', chooseVideoFail: 'Failed to select video', audioNotReady: 'Audio not ready', location: 'Location', // ====== ai-chat-voice-panel ====== voiceInputTitle: 'Voice Input', recordingTip: 'Recording, release to end', startRecordTip: 'Tap to start recording', voiceInputFailed: 'Voice input failed', // PR-FRONTEND-VOICE-INPUT (2026-09-24): press-and-hold gesture + recorder error messages holdToTalk: 'Hold to talk', releaseToSend: 'Release to send', releaseToCancel: 'Release to cancel', slideUpToCancel: '↑ Slide up to cancel', slideUpToCancelHint: '↑ Release to cancel', voiceStartFailed: 'Cannot start recording', voiceStopFailed: 'Recording failed, please try again', voiceNotSupported: 'Voice input is not supported on this platform', // PR-FRONTEND-VOICE-INPUT (2026-09-24): upload error (recorder result -> cloud) uploadFailed: 'Upload failed', uploadFailedWithReason: 'Upload failed: {reason}', // ====== index.vue - Menu ====== menuClearChat: 'Clear Chat', menuExport: 'Export Records', menuSettings: 'Settings', menuHelp: 'Help', // ====== index.vue - Console Logs (for debugging) ====== logOnShowTriggered: '[AI Chat Page] onShow triggered', logOnUnloadTriggered: '[AI Chat Page] onUnload triggered', logKeyboardChangeUnavailable: 'onKeyboardHeightChange unavailable', logEventHandleError: 'Event handling error', logInitNavbarFailed: 'Failed to initialize navigation bar', logChatComponentNotInit: 'Chat component not initialized', logServicerConfigNotLoaded: '[AI Customer Service] servicerConfig not loaded, retrying after 200ms...', // ====== AI Agent general copy (customer service is the first agent) ====== aiAgentDefaultTitle: 'AI Agent', aiAgentOpenFailed: 'Failed to open AI Agent, please try again later', aiAgentNotConfigured: 'This AI Agent is not enabled'}