Files
lucky_shop/lang/en-us/ai-chat/index.js
2026-09-29 17:25:14 +08:00

194 lines
9.7 KiB
JavaScript

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: 'Receiving reply',
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}',
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',
// PR-AUTO-LOCATION (2026-09-28): automatic location permission prompts
locationPermissionTitle: 'Location Permission Required',
locationPermissionH5: 'Please enable location permission via the lock icon in your browser address bar, then resend the message.',
locationPermissionMp: 'To help the AI better answer location-related questions, please enable location permission.\n\nTap "Open Settings" to enable it in your system settings, then return to this page and resend the message.',
locationSettingBtn: 'Open Settings',
locationSkipBtn: 'Not Now',
locationH5GuideBtn: 'Got it',
// ====== 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: '↑ Slide up to cancel',
// PR-INPUT-PLACEHOLDER-DYNAMIC (2026-09-28): dynamic input placeholder by context
placeholderDefault: 'Type a message or hold to talk',
placeholderWithAudio: 'Add a note for your voice (optional)',
placeholderWithMedia: 'Add a caption (optional)',
slideUpToCancelHint: '↑ Release to cancel',
voiceStartFailed: 'Cannot start recording',
voiceStopFailed: 'Recording failed, please try again',
voiceNotSupported: 'Voice input is not supported on this platform',
voiceTooShort: 'Speaking time too short',
// 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'}