"markReadFailed":"Could not mark the conversation as read.",
"emptyMessages":"No messages yet",
"loadOlder":"Load earlier messages",
"noConversationMobile":"Tap the menu in the top left to choose a conversation",
"selectConversationToChat":"Select a conversation on the left to start chatting",
"closedNotice":"This conversation is closed.",
"aiServingNotice":"AI is handling this conversation. Transfer it to a human agent before replying.",
"claim":"Claim",
"sendAttachmentFailed":"Could not send the attachment.",
"customerSender":"Customer",
"agentSender":"Agent",
"messageRecalledHtml":"This message was recalled.",
"messageRecalled":"Recalled",
"customerRead":"Read by customer",
"customerUnread":"Unread by customer",
"recallFailed":"Could not recall the message.",
"recalling":"Recalling...",
"recall":"Recall",
"loadQuickRepliesFailed":"Could not load quick replies.",
"tagRemoved":"Conversation tag removed.",
"tagAdded":"Conversation tag added.",
"tagUpdateFailed":"Could not update conversation tags.",
"editTags":"Edit conversation tags",
"edit":"Edit",
"searchTags":"Search tags",
"loadingTags":"Loading tags...",
"emptyTags":"No tags available",
"tagGroup":"Tags",
"unlinkedCustomerTitle":"No CRM Customer Linked",
"unlinkedCustomerDescription":"This conversation is not linked to a customer profile yet. Link one to manage company and contact details here.",
"linkOrCreateCustomer":"Link or Create Customer",
"missingCustomerTitle":"Customer deleted or unavailable",
"missingCustomerDescription":"The customer profile linked to this conversation is no longer available. Link an existing customer again, or create a new one and attach it to this conversation.",
"relinkOrCreateCustomer":"Relink or Create Customer",
"conversationOwner":"Conversation Ownership",
"channelId":"Channel ID",
"customerId":"Customer ID",
"selectConversationForInfo":"Select a conversation to view its details",
"selectSidebarConversationForInfo":"Select a conversation on the left to view its details",
"loadTagsFailed":"Could not load tags.",
"conversationTags":"Conversation Tags",
"noConversationTags":"No tags set for this conversation",
"loadCustomerFailed":"Could not load customer details.",
"loadingCustomer":"Loading customer details...",
"unnamedCustomer":"Unnamed customer",
"customerProfileEmpty":"A customer profile is linked, but its basic details are still empty. Click Edit to complete the profile.",
"lastActive":"Last Active",
"remark":"Notes",
"createdAt":"Created",
"updatedAt":"Updated",
"noContacts":"No contact methods yet",
"primaryContactBadge":"Primary",
"verifiedContactBadge":"Verified",
"companyUnavailable":"Company details could not be loaded, or the company was deleted.",
"saved":"Saved.",
"saveFailed":"Could not save.",
"loadTicketsFailed":"Could not load linked tickets.",
"relatedTickets":"Linked Tickets",
"loadingTickets":"Loading tickets...",
"noRelatedTickets":"No tickets linked to this conversation",
"companyNameRequired":"Enter a company name.",
"editCompany":"Edit Company",
"companyName":"Company Name",
"companyCode":"Company Code",
"cancel":"Cancel",
"saving":"Saving...",
"save":"Save",
"genderMale":"Male",
"genderFemale":"Female",
"contactMobile":"Mobile",
"contactEmail":"Email",
"contactOther":"Other",
"loadHistoryFailed":"Could not load earlier messages.",
"sendMessageFailed":"Could not send the message.",
"editorPlaceholder":"Type a message. Press Enter to send, Shift + Enter for a new line.",
"imageUploading":"Image is uploading",
"sendImage":"Send image",
"attachmentUploading":"Attachment is uploading",
"sendAttachment":"Send attachment",
"searchQuickReplies":"Search quick replies",
"emptyQuickReplies":"No quick replies yet",
"enterToSend":"Enter to send",
"send":"Send",
"uploading":"Uploading...",
"claimRequiresSignIn":"Your session has expired. Please sign in again.",
"claimReason":"Claim conversation",
"claimSuccess":"Conversation claimed.",
"claimFailed":"Could not claim the conversation.",
"claimTitle":"Claim Conversation",
"claimConfirmPrefix":"Claim \"",
"claimConfirmSuffix":"\"? It will move to your conversations.",
"claimCurrent":"Claim the current conversation?",
"customerFallbackPrefix":"Customer #",
"cancel":"Cancel",
"claiming":"Claiming...",
"confirmClaim":"Claim"
},
"kefu":{
"title":"Support",
"agentLabel":"Support",
"customerSelf":"You",
"customerFallback":"G",
"newMessage":"New message",
"justNow":"Just now",
"todayAt":"Today {time}",
"loadingOlder":"Loading...",
"loadOlder":"Load earlier messages",
"emptyPrompt":"Describe your issue and we will help as soon as possible.",
"agentRead":"Seen by support",
"agentUnread":"Not seen by support",
"imageSummary":"[Image]",
"attachmentSummary":"[Attachment]",
"messageSummary":"[Message]",
"closedTitle":"Conversation ended",
"closedDescription":"This support conversation has been closed. Thanks for chatting with us.",
"connecting":"Connecting",
"connected":"Online support",
"disconnected":"Disconnected",
"retry":"Reconnect",
"moreActions":"More actions",
"minimize":"Minimize window",
"maximize":"Maximize",
"maximizeWindow":"Maximize chat window",
"restoreWindow":"Restore window",
"closeWindow":"Close window",
"closeChatWindow":"Close chat window",
"closeDialogTitle":"End this conversation?",
"closeDialogDescription":"After ending the conversation, support agents will no longer be able to view this message history. Start a new chat if you need more help.",
"continueConversation":"Continue Chat",
"closing":"Ending...",
"confirmClose":"End Conversation",
"initFailed":"Could not start the chat.",
"loadMessagesFailed":"Could not load messages.",
"syncMessagesFailed":"Could not sync messages.",
"loadHistoryFailed":"Could not load earlier messages.",
"sendMessageFailed":"Could not send the message.",
"uploadImageFailed":"Could not upload the image.",
"sendAttachmentFailed":"Could not send the attachment.",
"closeConversationFailed":"Could not close the conversation.",
"refreshFailed":"Could not refresh the chat."
},
"dashboardHome":{
"rangeToday":"Today",
"range7d":"Last 7 days",
"range30d":"Last 30 days",
"loadFailed":"Could not load the dashboard overview.",
"title":"Dashboard",
"description":"Track support conversations, tickets, agent capacity, and AI operations.",
"updatedAt":", updated at {time}",
"refresh":"Refresh",
"conversationTrend":"Conversation Trend",
"conversationTrendDescription":"Track new and closed conversations to spot rising support pressure early.",
"riskAlertsDescription":"Prioritize issues that can affect support efficiency or AI reliability.",
"noRiskTitle":"No high-priority risks right now",
"noRiskDescription":"The dashboard will keep monitoring conversation backlogs, schedules, and AI configuration issues."
},
"placeholder":{
"nextSteps":"Recommended Next Steps",
"status":"Status",
"statusDescription":"This module currently has a page scaffold. It is ready for real APIs, form dialogs, and list queries.",
"nextPhase":"Start Next Phase"
},
"help":{
"title":"Help Center Scaffold",
"description":"The help center will collect product guidance, permission rules, channel integration workflows, and FAQs.",
"step1":"Collect project development standards and admin usage guides.",
"step2":"Add third-party integration flows and configuration checklists.",
"step3":"Connect Markdown or a documentation center later."
},
"settings":{
"title":"System Settings Scaffold",
"description":"System settings will manage authentication, uploads, basic site information, and runtime policies.",
"step1":"Add APIs for reading and saving system settings.",
"step2":"Split settings into security, storage, and sign-in policy sections.",
"step3":"Add masked display and confirmation for sensitive settings."
},
"status":{
"all":"All statuses",
"ok":"Enabled",
"disabled":"Disabled",
"deleted":"Deleted"
},
"channel":{
"allTypes":"All types",
"typeWeb":"Web",
"typeWechatMp":"WeChat Official Account",
"typeWxworkKf":"WeCom Customer Service",
"loadFailed":"Could not load channels.",
"created":"Channel created: {name}",
"updated":"Channel updated: {name}",
"saveFailed":"Could not save the channel.",
"statusEnabled":"Enabled: {name}",
"statusDisabled":"Disabled: {name}",
"statusUpdateFailed":"Could not update the channel status.",
"deleted":"Channel deleted: {name}",
"deleteFailed":"Could not delete the channel.",
"refresh":"Refresh",
"new":"New Channel",
"filterName":"Filter by channel name",
"filterChannelId":"Filter by channelId",
"searchType":"Search channel types",
"emptyType":"No channel types found",
"searchStatus":"Search statuses",
"emptyStatus":"No statuses found",
"query":"Search",
"columnChannel":"Channel",
"columnType":"Type",
"columnAgent":"AI Agent",
"columnStatus":"Status",
"columnActions":"Actions",
"loading":"Loading channels...",
"empty":"No channels yet",
"toggleStatus":"Toggle status for {name}",
"edit":"Edit",
"moreActions":"More actions for {name}",
"delete":"Delete",
"typeRequired":"Select a channel type.",
"agentRequired":"Select an AI Agent.",
"searchAiAgent":"Search AI Agents",
"emptyAiAgent":"No AI Agents found",
"nameRequired":"Enter a channel name.",
"wxworkAccountRequired":"Select a WeCom customer service account.",
"positionRight":"Bottom right",
"positionLeft":"Bottom left",
"defaultTitleWeb":"Support",
"defaultTitleWechat":"WeChat Support",
"defaultSubtitle":"How can we help?",
"loadWxworkAccountsFailed":"Could not load WeCom customer service accounts.",
"resetSecretConfirm":"Resetting this secret will invalidate old userTokens after they expire. Continue?",
"resetSecretSuccess":"User JWT Secret reset.",
"resetSecretFailed":"Could not reset the User JWT Secret.",
"copySecretSuccess":"User JWT Secret copied.",
"copyFailed":"Copy failed.",
"editTitle":"Edit Channel",
"createTitle":"New Channel",
"cancel":"Cancel",
"saving":"Saving...",
"save":"Save",
"loadingDetail":"Loading...",
"name":"Channel Name",
"channelType":"Channel Type",
"selectChannelType":"Select a channel type",
"searchChannelType":"Search channel types",
"emptyChannelType":"No channel types found",
"configTitle":"Channel Settings",
"configWxworkDescription":"Configure the WeCom customer service account used to match callbacks and send outbound messages.",
"configWechatDescription":"Configure the display settings for the WeChat menu chat page.",
"configWebDescription":"Configure how the web support widget appears on your site.",
"wxworkAccount":"WeCom Customer Service Account",
"loadingWxworkAccount":"Loading service accounts",
"selectWxworkAccount":"Select a service account",
"searchWxworkAccount":"Search service accounts",
"emptyWxworkAccount":"No WeCom customer service accounts found",
"widgetTitle":"Widget Title",
"widgetSubtitle":"Widget Subtitle",
"themeColor":"Theme Color",
"mountPosition":"Widget Position",
"selectMountPosition":"Select a position",
"searchMountPosition":"Search positions",
"emptyMountPosition":"No positions found",
"widgetWidth":"Widget Width",
"userJwtSecret":"User JWT Secret",
"userJwtSecretDescription":"Your business system uses this secret to sign userTokens. After resetting it, update your business system configuration as well.",
"secretAfterSave":"Save the channel to generate a User JWT Secret.",
"copy":"Copy",
"reset":"Reset",
"remark":"Notes",
"webAccessInfo":"Web Integration",
"webAccessReady":"Copy the link or embed code to connect this web channel.",
"webAccessPending":"Save the channel to generate an integration link.",
"newChannelPending":"This is a new channel. A channelId will be generated after you save it.",
"directAccessUrl":"Direct Chat Link",
"copyLink":"Copy link",
"openLink":"Open link",
"copiedAccessLink":"Integration link copied.",
"embeddedSnippet":"Embed Code",
"copiedSnippet":"Embed code copied.",
"copyCode":"Copy Code",
"accessGuide":"Integration Guide",
"webGuide1":"1. Make sure this channel is enabled.",
"webGuide2":"2. Paste the embed code before the closing body tag on your website.",
"webGuide3":"3. Publish the site and refresh the page. The support entry will appear with this channel's settings.",
"webGuide4":"4. For standalone pages or QR codes, use the direct chat link.",
"openTestPage":"Open Test Page",
"wechatAccessInfo":"WeChat Official Account Integration",
"wechatAccessReady":"Add this link to a WeChat custom menu so users can open the support chat directly.",
"wechatAccessPending":"Save the channel to generate the WeChat menu link.",
"wechatMenuUrl":"WeChat Menu Link",
"copiedWechatMenuUrl":"WeChat menu link copied.",
"wechatGuide2":"2. Set your WeChat custom menu URL to the link above.",
"wechatGuide3":"3. Users will open the support chat directly after tapping the menu item."
},
"upload":{
"imagePlaceholder":"Upload image",
"chooseImage":"Choose an image file.",
"imageTooLarge":"Image size must be under {maxSize} MB.",
"imageUploaded":"Image uploaded.",
"imageUploadFailed":"Could not upload the image.",
"replaceImage":"Replace image",
"uploadedImage":"Uploaded image",
"uploading":"Uploading...",
"deleteImage":"Delete image"
},
"lightbox":{
"providerError":"useImageLightbox must be used within ImageLightboxProvider",
"loadFailed":"Could not load the image.",
"openInNewTab":"Open in new tab",
"previewImage":"Preview image",
"imagePreview":"Image preview",
"zoomIn":"Zoom in",
"zoomOut":"Zoom out",
"rotateLeft":"Rotate left",
"rotateRight":"Rotate right",
"reset":"Reset zoom, position, and rotation",
"close":"Close",
"help":"Use the mouse wheel or pinch gesture to zoom. Drag to pan the image. Use the toolbar to rotate left or right."
},
"companyPicker":{
"placeholder":"Select a company",
"loadFailed":"Could not load companies.",
"fallback":"Company #{id}",
"created":"Company created: {name}",
"createFailed":"Could not create the company.",
"searchPlaceholder":"Search company name",
"loading":"Loading...",
"empty":"No matching companies found",
"results":"Search Results",
"none":"No company",
"actions":"Actions",
"create":"Create company \"{name}\""
},
"company":{
"loadFailed":"Could not load companies.",
"updated":"Company updated: {name}",
"created":"Company created: {name}",
"saveFailed":"Could not save the company.",
"enabled":"Enabled: {name}",
"disabled":"Disabled: {name}",
"statusUpdateFailed":"Could not update the status.",
"deleted":"Company deleted: {name}",
"deleteFailed":"Could not delete the company.",
"refresh":"Refresh",
"new":"New Company",
"filterName":"Filter by company name",
"filterCode":"Filter by company code",
"query":"Search",
"columnName":"Company Name",
"columnCode":"Company Code",
"columnCustomerCount":"Customers",
"columnStatus":"Status",
"columnRemark":"Notes",
"columnActions":"Actions",
"unknownStatus":"Unknown",
"loading":"Loading companies...",
"empty":"No companies yet",
"edit":"Edit",
"moreActions":"More actions for {name}",
"processing":"Working...",
"enable":"Enable",
"disable":"Disable",
"delete":"Delete",
"editTitle":"Edit Company",
"createTitle":"New Company",
"cancel":"Cancel",
"saving":"Saving...",
"save":"Save",
"create":"Create",
"loadingDetail":"Loading...",
"nameRequired":"Enter a company name.",
"namePlaceholder":"Enter company name",
"optional":"Optional",
"remarkPlaceholder":"Optional"
},
"customerForm":{
"nameRequired":"Enter a customer name.",
"genderRequired":"Select a gender.",
"companyRequired":"Select a company.",
"sectionCustomer":"Customer Details",
"name":"Customer Name",
"namePlaceholder":"Enter customer name",
"gender":"Gender",
"company":"Company",
"remark":"Notes",
"optional":"Optional",
"sectionContacts":"Contact Methods",
"type":"Type",
"contact":"Contact",
"primary":"Primary",
"actions":"Actions",
"emailPlaceholder":"Email",
"contactPlaceholder":"Phone / account",
"primaryContact":"Primary contact",
"setPrimary":"Set as primary contact",
"deleteContact":"Delete this contact method",
"addContact":"Add Contact Method",
"loading":"Loading...",
"genderUnknown":"Unknown",
"genderMale":"Male",
"genderFemale":"Female",
"contactMobile":"Mobile",
"contactEmail":"Email",
"contactOther":"Other",
"editTitle":"Edit Customer",
"createTitle":"New Customer",
"cancel":"Cancel",
"saving":"Saving...",
"save":"Save",
"create":"Create"
},
"customer":{
"allGenders":"All genders",
"allCompanies":"All companies",
"select":"Select",
"loadFailed":"Could not load customers.",
"updated":"Customer updated: {name}",
"created":"Customer created: {name}",
"saveFailed":"Could not save the customer.",
"enabled":"Enabled: {name}",
"disabled":"Disabled: {name}",
"statusUpdateFailed":"Could not update the status.",
"initialPasswordDescription":"The initial password for {username} has been generated. It will only be shown once, so copy it now and share it securely.",
"initialPassword":"Initial Password",
"copying":"Copying...",
"copyPassword":"Copy Password",
"close":"Close",
"confirmResetTitle":"Reset Password?",
"confirmResetDescription":"A new random password will be generated for {username}, and the user's current sessions will be invalidated.",
"resetting":"Resetting...",
"confirmReset":"Reset Password",
"resetSuccessTitle":"Password Reset",
"resetSuccessDescription":"A new password has been generated for {username}. Copy it now and share it securely.",
"newPassword":"New Password",
"assignedRoles":"Assigned Roles",
"unassignedRoles":"No roles assigned",
"roleList":"Role List",
"searchRoleNameOrCode":"Search role name or code",
"loadingRoleList":"Loading roles...",
"noMatchedRoles":"No matching roles",
"changes":"Changes",
"addedRoles":"Added Roles",
"removedRoles":"Removed Roles",
"noneAdded":"None added",
"noneRemoved":"None removed",
"confirmAssign":"Assign Roles"
},
"aiAgent":{
"allStatuses":"All statuses",
"enabled":"Enabled",
"disabled":"Disabled",
"loadFailed":"Could not load AI agents.",
"updated":"AI agent updated: {name}",
"created":"AI agent created: {name}",
"saveFailed":"Could not save the AI agent.",
"statusChanged":"{name} {status}",
"statusUpdateFailed":"Could not update the AI agent status.",
"fallbackMessageHint":"When the knowledge base has no strong match, the agent will use this strategy and message.",
"skillsHint":"Use skills for fixed business workflows and multi-step tasks.",
"selectSkill":"Select and add skill",
"searchSkill":"Search skills",
"emptySkill":"No skills available",
"noSkillsHint":"Without skills, routing only uses knowledge bases or human handoff.",
"removeSkill":"Remove skill {name}",
"directToolsHint":"Use only for low-risk atomic lookups through external MCP tools.",
"selectToolGroup":"Select tool group",
"searchToolGroup":"Search tool groups",
"emptyToolGroup":"No tool groups available",
"selectDirectTool":"Select Direct Tool",
"searchDirectTool":"Search Direct Tools",
"emptyDirectTool":"No Direct Tools available",
"noDirectToolsHint":"Without Direct Tools, the agent will not call external or built-in tools directly. It will rely on knowledge bases, skills, and normal replies.",
"removeDirectTool":"Remove Direct Tool {name}",
"graphToolsHint":"Use for built-in workflows such as ticket creation and human handoff. These are kept separate from Direct Tools.",
"selectGraphTool":"Select Graph Tool",
"searchGraphTool":"Search Graph Tools",
"emptyGraphTool":"No Graph Tools available",
"noGraphToolsHint":"Without Graph Tools, the agent will not expose built-in workflow tools such as ticket creation or human handoff.",
"removeGraphTool":"Remove Graph Tool {name}"
},
"aiConfig":{
"allStatuses":"All statuses",
"allProviders":"All providers",
"allTypes":"All types",
"providerOpenAI":"OpenAI",
"modelTypeLlm":"Large language model",
"modelTypeEmbedding":"Embedding model",
"modelTypeRerank":"Reranker",
"enabled":"Enabled",
"disabled":"Disabled",
"deletedStatus":"Deleted",
"loadFailed":"Could not load AI configs.",
"updated":"AI config updated: {name}",
"created":"AI config created: {name}",
"saveFailed":"Could not save the AI config.",
"statusChanged":"{name} {status}",
"statusUpdateFailed":"Could not update the status.",
"activeDeleteBlocked":"Enabled AI configs cannot be deleted.",
"faqIndexRebuildFailed":"Could not rebuild the FAQ index.",
"selectFAQBase":"Select an FAQ knowledge base to view FAQs.",
"searchFAQ":"Search FAQs by question",
"question":"Question",
"indexStatus":"Index Status",
"similarQuestions":"Similar Questions",
"updatedAt":"Updated",
"actions":"Actions",
"emptyFAQ":"This knowledge base has no FAQs yet",
"faqQuestionRequired":"Question is required.",
"faqQuestionMax":"Question can be up to 500 characters.",
"faqAnswerRequired":"Answer is required.",
"editFAQTitle":"Edit FAQ",
"createFAQTitle":"New FAQ",
"standardQuestion":"Primary Question",
"questionPlaceholder":"Enter the primary question",
"answer":"Answer",
"answerPlaceholder":"Enter the FAQ answer",
"similarQuestionsPlaceholder":"One similar question per line",
"fileEmpty":"The file is empty.",
"missingFAQColumns":"The import template must include question and answer columns.",
"skipRowMissingFAQ":"Row {row} is missing a question or answer and was skipped.",
"importNoRows":"No FAQ rows to import.",
"parsedFAQRows":"{count} FAQ rows parsed.",
"parseImportFailed":"Could not parse the import file.",
"importRowFailed":"Row {row}: {message}",
"importFailed":"Import failed.",
"importSuccess":"{count} FAQs imported.",
"importSomeFailed":"{count} FAQs failed to import.",
"importFAQTitle":"Import FAQ",
"importFAQDescription":"Upload a CSV file to import FAQs in bulk. Required columns: question and answer. Separate similarQuestions with | or line breaks.",
"downloadTemplate":"Download Template",
"importing":"Importing...",
"startImport":"Start Import",
"startImportWithCount":"Start Import ({count})",
"importFile":"Import File",
"chooseFile":"Choose File",
"importFileDescription":"Supports UTF-8 CSV or tab-delimited text files.",
"currentFile":"Current file: {name}",
"importHint":"Import Notes",
"importPreview":"Import Preview",
"rowNumber":"Row {row}",
"similarQuestionShort":"Similar: {value}",
"none":"None",
"previewAfterUpload":"Upload a file to preview the first 5 FAQs.",
"allChannels":"All channels",
"channelIM":"Support chat",
"channelAgentAssist":"Agent assist",
"channelAPI":"API",
"channelDebug":"Debug",
"allScenes":"All scenes",
"sceneFirstResponse":"First response",
"sceneAssist":"Assisted reply",
"sceneQA":"Q&A",
"allAnswerStatus":"All answer statuses",
"answerNormal":"Normal",
"answerNoAnswer":"No answer",
"answerFallback":"Fallback reply",
"answerBlocked":"Blocked",
"allChunkProviders":"All chunking strategies",
"allRerank":"All rerank",
"rerankEnabled":"Rerank enabled",
"rerankDisabled":"Rerank disabled",
"loadRetrieveLogsFailed":"Could not load retrieval logs.",
"selectBaseForLogs":"Select a knowledge base to view retrieval logs.",