2216 lines
90 KiB
JSON
2216 lines
90 KiB
JSON
{
|
|
"app": {
|
|
"brand": "Shell Agent",
|
|
"metadataTitle": "AI Customer Support Admin",
|
|
"metadataDescription": "AI Customer Support Admin"
|
|
},
|
|
"common": {
|
|
"language": "Language",
|
|
"notSignedIn": "Not signed in",
|
|
"guest": "guest",
|
|
"loading": "Loading...",
|
|
"loadingData": "Loading data...",
|
|
"emptyData": "No data",
|
|
"searchKeyword": "Search by keyword",
|
|
"emptyOptions": "No options",
|
|
"close": "Close",
|
|
"fullscreen": "Enter fullscreen",
|
|
"exitFullscreen": "Exit fullscreen"
|
|
},
|
|
"pagination": {
|
|
"pageSummary": "Page {page} of {totalPages}",
|
|
"total": "{total} records",
|
|
"pageSize": "{pageSize} per page",
|
|
"previous": "Previous",
|
|
"next": "Next"
|
|
},
|
|
"confirm": {
|
|
"title": "Confirm Action",
|
|
"description": "This action will continue after you confirm.",
|
|
"confirm": "Confirm",
|
|
"cancel": "Cancel"
|
|
},
|
|
"realtime": {
|
|
"connecting": "Realtime channel connecting",
|
|
"connected": "Realtime channel connected",
|
|
"disconnected": "Realtime channel disconnected",
|
|
"compactConnecting": "Realtime: connecting",
|
|
"compactConnected": "Realtime: online",
|
|
"compactDisconnected": "Realtime: disconnected"
|
|
},
|
|
"notification": {
|
|
"new": "New notification",
|
|
"view": "View",
|
|
"openFailed": "Could not open the notification.",
|
|
"connectFailed": "Could not connect to the notification service.",
|
|
"loadFailed": "Could not load notifications.",
|
|
"all": "All",
|
|
"unread": "Unread",
|
|
"read": "Read",
|
|
"refresh": "Refresh",
|
|
"markAllRead": "Mark All as Read",
|
|
"markAllReadSuccess": "All notifications marked as read.",
|
|
"markAllReadFailed": "Could not mark all notifications as read.",
|
|
"fallbackTitle": "Notification",
|
|
"loading": "Loading notifications",
|
|
"empty": "No notifications"
|
|
},
|
|
"json": {
|
|
"invalid": "Invalid JSON.",
|
|
"valid": "Valid",
|
|
"invalidLabel": "Invalid",
|
|
"readyHint": "Enter valid JSON to test the tool call.",
|
|
"empty": "No data"
|
|
},
|
|
"api": {
|
|
"requestFailed": "Request failed.",
|
|
"authExpired": "Your session has expired. Please sign in again.",
|
|
"customerSessionNotReady": "The support chat is not ready yet."
|
|
},
|
|
"editor": {
|
|
"placeholder": "Enter content...",
|
|
"undo": "Undo",
|
|
"redo": "Redo",
|
|
"bold": "Bold",
|
|
"underline": "Underline",
|
|
"italic": "Italic",
|
|
"strike": "Strikethrough",
|
|
"heading1": "Heading 1",
|
|
"heading2": "Heading 2",
|
|
"inlineCode": "Inline Code",
|
|
"codeBlock": "Code Block",
|
|
"bulletList": "Bulleted List",
|
|
"orderedList": "Numbered List",
|
|
"quote": "Quote",
|
|
"link": "Link",
|
|
"image": "Image",
|
|
"linkText": "link text",
|
|
"promptLinkUrl": "Enter the link URL",
|
|
"fullscreen": "Fullscreen",
|
|
"exitFullscreen": "Exit fullscreen",
|
|
"previewOnly": "Preview Only",
|
|
"modeSwitchConfirm": "Switching to {mode} will try to convert the content automatically. Complex formatting may not be preserved. Continue?"
|
|
},
|
|
"locale": {
|
|
"zh-CN": "简体中文",
|
|
"en-US": "English"
|
|
},
|
|
"auth": {
|
|
"checkingSession": "Checking your session",
|
|
"syncingProfile": "Syncing your admin profile and permissions",
|
|
"loginSuccess": "Signed in. Taking you to the dashboard.",
|
|
"loginFailed": "Sign-in failed",
|
|
"welcome": "Welcome back",
|
|
"loginDescription": "Login to your {brand} account",
|
|
"username": "Username",
|
|
"usernamePlaceholder": "Username or email",
|
|
"password": "Password",
|
|
"passwordPlaceholder": "Enter your password",
|
|
"forgotPassword": "Forgot your password?",
|
|
"signingIn": "Signing in...",
|
|
"signIn": "Login",
|
|
"continueWith": "Or continue with",
|
|
"wxworkSignIn": "Sign in with WeCom",
|
|
"oidcSignIn": "Sign in with OIDC",
|
|
"noAccount": "Don't have an account?",
|
|
"signUp": "Sign up",
|
|
"termsPrefix": "By clicking continue, you agree to our",
|
|
"termsOfService": "Terms of Service",
|
|
"termsJoiner": "and",
|
|
"privacyPolicy": "Privacy Policy",
|
|
"imageAlt": "Image",
|
|
"wxworkMissingTicket": "The WeCom sign-in ticket is missing.",
|
|
"wxworkFailed": "WeCom sign-in failed.",
|
|
"wxworkSigningIn": "Signing in with WeCom",
|
|
"oidcMissingTicket": "The OIDC sign-in ticket is missing.",
|
|
"oidcFailed": "OIDC sign-in failed.",
|
|
"oidcSigningIn": "Signing in with OIDC",
|
|
"checkingTicket": "Verifying your sign-in ticket and opening the dashboard."
|
|
},
|
|
"account": {
|
|
"passwordRequired": "Enter a new password.",
|
|
"confirmPasswordRequired": "Confirm your new password.",
|
|
"passwordMismatch": "The passwords do not match.",
|
|
"passwordChanged": "Your password has been changed. Please sign in again.",
|
|
"changePasswordFailed": "Could not change your password.",
|
|
"changePassword": "Change Password",
|
|
"changePasswordDescription": "Update the password for your current account. You will need to sign in again after submitting.",
|
|
"cancel": "Cancel",
|
|
"submitting": "Submitting...",
|
|
"confirmChange": "Change Password",
|
|
"newPassword": "New Password",
|
|
"newPasswordPlaceholder": "Enter a new password",
|
|
"confirmPassword": "Confirm Password",
|
|
"confirmPasswordPlaceholder": "Re-enter your new password"
|
|
},
|
|
"conversation": {
|
|
"syncConversationDataFailed": "Could not sync conversation data.",
|
|
"syncMessagesFailed": "Could not sync messages.",
|
|
"syncConversationListFailed": "Could not sync the conversation list.",
|
|
"realtimeConnectFailed": "Could not connect to the realtime service.",
|
|
"newMessage": "New Message",
|
|
"filterActive": "Active",
|
|
"filterPending": "Waiting",
|
|
"filterAiServing": "AI Handling",
|
|
"filterClosed": "Closed",
|
|
"filterPlaceholder": "Filter status",
|
|
"loadListFailed": "Could not load conversations.",
|
|
"loading": "Loading...",
|
|
"empty": "No conversations yet",
|
|
"customerFallback": "Customer #{id}",
|
|
"noTime": "No time yet",
|
|
"noLatestMessage": "No recent messages",
|
|
"teamOnDuty": "Team on duty: {name}",
|
|
"customerAvatar": "C",
|
|
"customerOnline": "Customer online",
|
|
"customerOffline": "Customer offline",
|
|
"channelNumber": "Channel #{id}",
|
|
"linkedCustomer": "Customer linked",
|
|
"workbenchTitle": "Conversation Workspace",
|
|
"openMenuSelectConversation": "Open the menu to choose a conversation",
|
|
"selectConversationFromSidebar": "Select a conversation on the left to start handling messages",
|
|
"conversationInfo": "Conversation Info",
|
|
"createTicket": "Create Ticket",
|
|
"transferConversation": "Transfer Conversation",
|
|
"closeConversation": "Close Conversation",
|
|
"expandConversationInfo": "Expand conversation info",
|
|
"collapseConversationInfo": "Collapse conversation info",
|
|
"closeConversationList": "Close conversation list",
|
|
"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"
|
|
},
|
|
"supportChat": {
|
|
"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.",
|
|
"enabledAiAgents": "Active AI Agents",
|
|
"enabledChannels": "Active Channels",
|
|
"todayKnowledgeRetrieves": "Knowledge Searches Today",
|
|
"todayKnowledgeRetrieveFailRate": "Search Failure Rate Today",
|
|
"todaySkillRunFailCount": "Skill Failures Today",
|
|
"todayAiHandoffCount": "AI-to-Human Handoffs Today",
|
|
"empty": "No dashboard overview data yet.",
|
|
"summaryTodayNewConversations": "New Conversations Today",
|
|
"summaryTodayNewConversationsDescription": "New customer inquiries created today.",
|
|
"summaryProcessingConversations": "Currently Active",
|
|
"summaryProcessingConversationsDescription": "Conversations currently handled by AI or human agents.",
|
|
"summaryPendingDispatchConversations": "Waiting for Assignment",
|
|
"summaryPendingDispatchConversationsDescription": "Conversations still waiting in the assignment queue.",
|
|
"summaryOnlineAgents": "Online Agents",
|
|
"summaryOnlineAgentsDescription": "Agents with an active heartbeat in the last 15 minutes.",
|
|
"summaryAiServiceRate": "AI Coverage",
|
|
"summaryAiServiceRateDescription": "Share of active conversations where AI is helping.",
|
|
"chartNew": "New",
|
|
"chartClosed": "Closed",
|
|
"chartCount": "Count",
|
|
"statusDistribution": "Status Distribution",
|
|
"statusDistributionDescription": "Current count by conversation status.",
|
|
"statusAiServing": "AI Handling",
|
|
"statusPending": "Queued",
|
|
"statusActive": "Active",
|
|
"statusClosed": "Closed",
|
|
"teamLoad": "Team Load",
|
|
"teamLoadDescription": "Online {online}, busy {busy}, offline {offline}",
|
|
"noTeamData": "No team load data yet.",
|
|
"scheduled": "On Schedule",
|
|
"notScheduled": "No Current Schedule",
|
|
"teamStats": "Total {total}, online {online}, busy {busy}, offline {offline}",
|
|
"load": "Load {processing}/{capacity}",
|
|
"waiting": "Waiting",
|
|
"processing": "Active",
|
|
"capacity": "Capacity",
|
|
"busyAgents": "Busy Agents",
|
|
"riskAlerts": "Risk Alerts",
|
|
"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.",
|
|
"deleted": "Customer deleted: {name}",
|
|
"deleteFailed": "Could not delete the customer.",
|
|
"new": "New",
|
|
"refresh": "Refresh",
|
|
"keywordPlaceholder": "Name, phone, email, company, or contact",
|
|
"searchCompany": "Search companies",
|
|
"query": "Search",
|
|
"columnName": "Customer Name",
|
|
"columnGender": "Gender",
|
|
"columnCompany": "Company",
|
|
"columnMobile": "Mobile",
|
|
"columnEmail": "Email",
|
|
"columnStatus": "Status",
|
|
"columnActions": "Actions",
|
|
"loading": "Loading customers...",
|
|
"empty": "No customers yet",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"processing": "Working...",
|
|
"enable": "Enable",
|
|
"disable": "Disable",
|
|
"delete": "Delete"
|
|
},
|
|
"customerLink": {
|
|
"keywordRequired": "Enter a keyword, such as a name, phone, email, company, or contact.",
|
|
"noMatch": "No matching customers found. You can fill out a new customer below.",
|
|
"searchFailed": "Search failed.",
|
|
"selected": "Customer selected: {name}",
|
|
"linked": "Customer linked.",
|
|
"linkFailed": "Could not link the customer.",
|
|
"createdAndLinkedConversation": "Customer created and linked to this conversation.",
|
|
"createdAndLinkedTicket": "Customer created and linked to this ticket.",
|
|
"created": "Customer created.",
|
|
"saveFailed": "Could not save the customer.",
|
|
"descriptionPrefix": "Search existing customers first. ",
|
|
"descriptionLinkConversation": "Select a customer to link it to this conversation. ",
|
|
"descriptionLinkTicket": "Select a customer to link it to this ticket. ",
|
|
"descriptionNoContext": "Without a linked context, this will only create or select a customer. ",
|
|
"descriptionCreatePrefix": "If there are no results, fill out a new customer below",
|
|
"descriptionCreateConversation": "; it will be linked to the conversation after saving.",
|
|
"descriptionCreateTicket": "; it will be linked to the ticket after saving.",
|
|
"descriptionCreateNoContext": ".",
|
|
"title": "Link or Create Customer",
|
|
"close": "Close",
|
|
"submitting": "Submitting...",
|
|
"createAndLinkConversation": "Create and Link Conversation",
|
|
"createAndLinkTicket": "Create and Link Ticket",
|
|
"createCustomer": "Create Customer",
|
|
"searchPlaceholder": "Name / phone / email / company / contact",
|
|
"searching": "Searching...",
|
|
"search": "Search",
|
|
"fallbackName": "Customer #{id}",
|
|
"processing": "Working...",
|
|
"link": "Link",
|
|
"select": "Select",
|
|
"collapseCreate": "Hide new customer form",
|
|
"showCreate": "Not found? Fill out a new customer"
|
|
},
|
|
"conversationAction": {
|
|
"closeReasonRequired": "Enter a close reason.",
|
|
"conversationMissing": "Conversation not found.",
|
|
"closed": "Conversation closed: #{id}",
|
|
"closeFailed": "Could not close the conversation.",
|
|
"closeTitle": "Close Conversation",
|
|
"closeReason": "Close Reason",
|
|
"closeReasonPlaceholder": "Enter the reason. It will be added to the activity log.",
|
|
"cancel": "Cancel",
|
|
"closing": "Closing...",
|
|
"confirmClose": "Close Conversation",
|
|
"targetAgentRequired": "Select a target agent.",
|
|
"agentFallback": "Agent #{id}",
|
|
"loadAgentsFailed": "Could not load agents.",
|
|
"assigned": "Conversation assigned: #{id}",
|
|
"transferred": "Conversation transferred: #{id}",
|
|
"assignFailed": "Could not assign the conversation.",
|
|
"transferFailed": "Could not transfer the conversation.",
|
|
"assignTitle": "Assign Conversation",
|
|
"transferTitle": "Transfer Conversation",
|
|
"targetAgent": "Target Agent",
|
|
"loading": "Loading...",
|
|
"selectTargetAgent": "Select target agent",
|
|
"searchAgent": "Search agents",
|
|
"emptyAgents": "No agents available",
|
|
"assignNote": "Assignment Note",
|
|
"transferReason": "Transfer Reason",
|
|
"assignPlaceholder": "Add a note for follow-up tracking.",
|
|
"transferPlaceholder": "Enter the transfer reason for follow-up tracking.",
|
|
"assigning": "Assigning...",
|
|
"transferring": "Transferring...",
|
|
"confirmAssign": "Assign",
|
|
"confirmTransfer": "Transfer"
|
|
},
|
|
"conversationMonitor": {
|
|
"allStatuses": "All statuses",
|
|
"unknown": "Unknown",
|
|
"serviceAi": "AI handling",
|
|
"serviceHuman": "Human handling",
|
|
"serviceAiFirst": "AI first",
|
|
"serviceUndefined": "Undefined",
|
|
"allTags": "All tags",
|
|
"allAssignees": "All assignees",
|
|
"allTeams": "All teams",
|
|
"loadListFailed": "Could not load conversations.",
|
|
"loadFiltersFailed": "Could not load filters.",
|
|
"realtimeConnectFailed": "Could not connect to the realtime service.",
|
|
"loadDetailFailed": "Could not load conversation details.",
|
|
"loadMoreMessagesFailed": "Could not load more messages.",
|
|
"markedRead": "Marked as read: {name}",
|
|
"markReadFailed": "Could not mark as read.",
|
|
"dispatchTriggered": "Automatic assignment started: {name}",
|
|
"dispatchFailed": "Automatic assignment failed.",
|
|
"refresh": "Refresh",
|
|
"keywordPlaceholder": "Filter by subject or summary",
|
|
"selectTag": "Select tag",
|
|
"searchTagPath": "Search tag path",
|
|
"emptyTags": "No matching tags",
|
|
"selectAssignee": "Select assignee",
|
|
"searchAssignee": "Search assignees",
|
|
"emptyAssignees": "No matching assignees",
|
|
"selectTeam": "Select team",
|
|
"searchTeam": "Search teams",
|
|
"emptyTeams": "No matching teams",
|
|
"query": "Search",
|
|
"columnConversation": "Conversation",
|
|
"columnStatus": "Status",
|
|
"columnServiceMode": "Service Mode",
|
|
"columnAssignee": "Current Agent",
|
|
"columnUnread": "Unread",
|
|
"columnLastActive": "Last Active",
|
|
"columnActions": "Actions",
|
|
"customerFallback": "Customer #{id}",
|
|
"channelIdValue": "Channel ID: {id}",
|
|
"noLatestSummary": "No recent message summary",
|
|
"unreadSummary": "Agent {agent} / Customer {customer}",
|
|
"view": "View",
|
|
"moreActions": "More actions for {name}",
|
|
"processing": "Working...",
|
|
"assign": "Assign Conversation",
|
|
"retryDispatch": "Retry Assignment",
|
|
"markRead": "Mark as Read",
|
|
"transfer": "Transfer Conversation",
|
|
"close": "Close Conversation",
|
|
"loadingRows": "Loading conversations...",
|
|
"emptyRows": "No matching conversations",
|
|
"detailFallbackTitle": "Conversation Details",
|
|
"lastActivePrefix": "Last active: {time}",
|
|
"noConversationInfo": "No conversation details yet",
|
|
"loadingDetail": "Loading conversation details...",
|
|
"currentAssignee": "Current Agent",
|
|
"agentUnread": "Agent Unread",
|
|
"customerUnread": "Customer Unread",
|
|
"closedAt": "Closed At",
|
|
"participants": "Participants",
|
|
"participantCount": "{count} people",
|
|
"participantIdentity": "ID: {value}",
|
|
"participantJoinedAt": "Joined: {time}",
|
|
"emptyParticipants": "No participant details yet",
|
|
"loadingOlder": "Loading earlier messages...",
|
|
"loadOlderHint": "Scroll up to load earlier messages",
|
|
"messageRecalled": "Recalled",
|
|
"messageRecalledBody": "This message was recalled.",
|
|
"readStatus": "Agent {agent} / Customer {customer}",
|
|
"read": "Read",
|
|
"unread": "Unread",
|
|
"emptyMessages": "No message history yet",
|
|
"emptyDetail": "No conversation details to show",
|
|
"imageFallback": "[Image]",
|
|
"messageImageAlt": "Message image",
|
|
"senderAgent": "Agent",
|
|
"senderCustomer": "Customer",
|
|
"senderSystem": "System"
|
|
},
|
|
"user": {
|
|
"loadFailed": "Could not load users.",
|
|
"loadRoleAssignFailed": "Could not load role assignment data.",
|
|
"created": "User created: {username}",
|
|
"createFailed": "Could not create the user.",
|
|
"updated": "Updated {username}",
|
|
"fallbackUser": "user",
|
|
"updateFailed": "Could not update the user.",
|
|
"rolesUpdated": "Roles updated for {username}",
|
|
"saveRolesFailed": "Could not save role assignments.",
|
|
"passwordReset": "Password reset for {username}",
|
|
"resetPasswordFailed": "Could not reset the password.",
|
|
"statusUpdated": "{username} {status}",
|
|
"statusUpdateFailed": "Could not update the status.",
|
|
"addUser": "Add User",
|
|
"filterUsername": "Filter by username",
|
|
"query": "Search",
|
|
"columnUser": "User",
|
|
"columnRoles": "Roles",
|
|
"columnStatus": "Status",
|
|
"columnLastLogin": "Last Login",
|
|
"columnContact": "Contact",
|
|
"columnActions": "Actions",
|
|
"unassigned": "Unassigned",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"system": "System",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {username}",
|
|
"processing": "Working...",
|
|
"assignRoles": "Assign Roles",
|
|
"resetPassword": "Reset Password",
|
|
"loadingRows": "Loading users...",
|
|
"emptyRows": "No matching users",
|
|
"nicknameRequired": "Enter a nickname.",
|
|
"usernameRequired": "Enter a username.",
|
|
"avatarInvalid": "Avatar URL must start with http or https.",
|
|
"mobileInvalid": "Enter a valid phone number.",
|
|
"emailInvalid": "Enter a valid email address.",
|
|
"editTitle": "Edit User",
|
|
"currentUser": "Current user: {username}",
|
|
"loading": "Loading...",
|
|
"nickname": "Nickname",
|
|
"nicknamePlaceholder": "Enter nickname",
|
|
"avatar": "Avatar URL",
|
|
"avatarPlaceholder": "Enter avatar URL",
|
|
"mobile": "Mobile",
|
|
"mobilePlaceholder": "Enter mobile number",
|
|
"email": "Email",
|
|
"emailPlaceholder": "Enter email",
|
|
"saving": "Saving...",
|
|
"saveEdit": "Save Changes",
|
|
"cancel": "Cancel",
|
|
"createTitle": "Add User",
|
|
"createDescription": "The system will generate an initial password after submission. It will only be shown once.",
|
|
"username": "Username",
|
|
"usernamePlaceholder": "Login name, required",
|
|
"nicknameCreatePlaceholder": "Optional, defaults to username",
|
|
"avatarCreatePlaceholder": "Optional, http(s) URL",
|
|
"optional": "Optional",
|
|
"remark": "Notes",
|
|
"rolesOptional": "Roles (optional)",
|
|
"searchRoles": "Search roles",
|
|
"loadingRoles": "Loading roles...",
|
|
"disabledBadge": "Disabled",
|
|
"emptyRoles": "No roles yet",
|
|
"creating": "Creating...",
|
|
"createUser": "Create User",
|
|
"copied": "Password copied.",
|
|
"copyFailed": "Could not copy. Copy it manually.",
|
|
"createdTitle": "User Created",
|
|
"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.",
|
|
"deleted": "AI agent deleted: {name}",
|
|
"deleteFailed": "Could not delete the AI agent.",
|
|
"sortUpdated": "AI agent order updated.",
|
|
"sortUpdateFailed": "Could not update the order.",
|
|
"refresh": "Refresh",
|
|
"new": "New AI Agent",
|
|
"filterName": "Filter by name",
|
|
"searchStatus": "Search status",
|
|
"emptyStatus": "No matching status",
|
|
"query": "Search",
|
|
"columnAiConfig": "AI Config",
|
|
"columnServiceMode": "Service Mode",
|
|
"columnKnowledge": "Knowledge Bases",
|
|
"columnSkills": "Skills",
|
|
"columnCapabilities": "Capabilities",
|
|
"columnStatus": "Status",
|
|
"columnActions": "Actions",
|
|
"dragSort": "Drag to reorder {name}",
|
|
"notConfigured": "Not configured",
|
|
"ragOnly": "RAG only",
|
|
"noMcpServer": "No MCP server linked",
|
|
"toggleStatus": "Toggle status for {name}",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"processing": "Working...",
|
|
"stop": "Disable",
|
|
"delete": "Delete",
|
|
"loadingRows": "Loading AI agents...",
|
|
"emptyRows": "No AI agents yet",
|
|
"serviceAiOnly": "AI only",
|
|
"serviceHumanOnly": "Human only",
|
|
"serviceAiFirst": "AI first",
|
|
"handoffWaitPool": "Send to waiting queue",
|
|
"handoffDefaultTeamPool": "Send to default team queue",
|
|
"handoffAiHoldAndNotify": "AI handles fallback and notifies agents",
|
|
"fallbackNoAnswer": "Say no answer is available",
|
|
"fallbackSuggestRetry": "Ask for more details",
|
|
"nameRequired": "Enter a name.",
|
|
"aiConfigRequired": "Select an AI config.",
|
|
"serviceModeRequired": "Select a service mode.",
|
|
"replyTimeoutInvalid": "Reply timeout must be an integer greater than or equal to 0.",
|
|
"handoffModeRequired": "Select a human handoff mode.",
|
|
"fallbackModeRequired": "Select a fallback strategy.",
|
|
"loadDetailFailed": "Could not load AI agent details.",
|
|
"loadAiConfigFailed": "Could not load AI configs.",
|
|
"loadTeamsFailed": "Could not load support teams.",
|
|
"loadKnowledgeFailed": "Could not load knowledge bases.",
|
|
"loadSkillsFailed": "Could not load skills.",
|
|
"loadDirectToolsFailed": "Could not load Direct Tools.",
|
|
"builtinTools": "Built-in tools",
|
|
"ungrouped": "Ungrouped",
|
|
"notSelected": "Not selected",
|
|
"createTitle": "New AI Agent",
|
|
"editTitle": "Edit AI Agent",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"loading": "Loading...",
|
|
"sectionBasic": "Basic Details",
|
|
"name": "Name",
|
|
"aiConfig": "AI Config",
|
|
"selectAiConfig": "Select AI config",
|
|
"searchAiConfig": "Search AI configs",
|
|
"emptyAiConfig": "No AI configs found",
|
|
"selectServiceMode": "Select service mode",
|
|
"searchServiceMode": "Search service modes",
|
|
"emptyServiceMode": "No service modes found",
|
|
"description": "Description",
|
|
"welcomeMessage": "Welcome Message",
|
|
"systemPrompt": "System Prompt",
|
|
"sectionStrategy": "Service Strategy",
|
|
"handoffMode": "Human Handoff Mode",
|
|
"selectHandoffMode": "Select handoff mode",
|
|
"searchHandoffMode": "Search handoff modes",
|
|
"emptyHandoffMode": "No handoff modes found",
|
|
"replyTimeoutSeconds": "Reply Timeout (seconds)",
|
|
"replyTimeoutHelp": "Timeout for async AI replies. Enter 0 to use the system default of 180 seconds.",
|
|
"teams": "Support Teams",
|
|
"currentHandoffMode": "Current handoff mode: {mode}",
|
|
"handoffNeedsTeam": ". This mode requires at least one support team.",
|
|
"handoffOnlyWhenNeeded": ". Applies only when human handoff is needed.",
|
|
"selectTeam": "Select support team",
|
|
"searchTeam": "Search support teams",
|
|
"emptyTeam": "No support teams found",
|
|
"noTeams": "No support teams configured",
|
|
"removeTeam": "Remove team {name}",
|
|
"sectionCapabilities": "Capabilities",
|
|
"knowledgeTab": "Knowledge",
|
|
"skillsTab": "Skills",
|
|
"directToolsTab": "Direct Tools",
|
|
"graphToolsTab": "Graph Tools",
|
|
"knowledgeHint": "Select at least one knowledge base. You can adjust priority order.",
|
|
"selectKnowledge": "Select and add knowledge base",
|
|
"searchKnowledge": "Search knowledge bases",
|
|
"emptyKnowledge": "No knowledge bases available",
|
|
"add": "Add",
|
|
"knowledgeRequired": "Select at least one knowledge base.",
|
|
"fallbackMode": "Fallback Strategy",
|
|
"selectFallbackMode": "Select fallback strategy",
|
|
"searchFallbackMode": "Search fallback strategies",
|
|
"emptyFallbackMode": "No fallback strategies found",
|
|
"fallbackMessage": "Fallback Message",
|
|
"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.",
|
|
"deleted": "AI config deleted: {name}",
|
|
"deleteFailed": "Could not delete the AI config.",
|
|
"sortUpdated": "AI config order updated.",
|
|
"sortUpdateFailed": "Could not update the order.",
|
|
"refresh": "Refresh",
|
|
"new": "New",
|
|
"filterName": "Filter by config name",
|
|
"searchModelType": "Search model types",
|
|
"emptyModelType": "No matching model types",
|
|
"searchProvider": "Search providers",
|
|
"emptyProvider": "No matching providers",
|
|
"searchStatus": "Search status",
|
|
"emptyStatus": "No matching status",
|
|
"query": "Search",
|
|
"columnConfig": "Config",
|
|
"columnProvider": "Provider",
|
|
"columnModel": "Model",
|
|
"columnAccess": "Access",
|
|
"columnLimits": "Limits",
|
|
"columnStatus": "Status",
|
|
"columnActions": "Actions",
|
|
"dragSort": "Drag to reorder {name}",
|
|
"dimension": "{count} dims",
|
|
"apiKey": "Key: {key}",
|
|
"contextTokens": "Context {count}",
|
|
"outputTokens": "Output {count}",
|
|
"timeoutRetry": "Timeout {timeout}ms / retries {retries}",
|
|
"toggleStatus": "Toggle status for {name}",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"deleteDisabledActive": "Cannot delete while enabled",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"loadingRows": "Loading AI configs...",
|
|
"emptyRows": "No AI configs yet",
|
|
"confirmDeleteTitle": "Delete AI Config?",
|
|
"confirmDeleteDescription": "Delete \"{name}\"? This action cannot be undone.",
|
|
"deleteIrreversible": "This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirmDelete": "Delete",
|
|
"nameRequired": "Enter a config name.",
|
|
"providerRequired": "Select a provider.",
|
|
"baseUrlRequired": "Enter a base URL.",
|
|
"modelTypeRequired": "Select a model type.",
|
|
"modelNameRequired": "Enter a model name.",
|
|
"dimensionInvalid": "Embedding dimension must be an integer greater than or equal to 0.",
|
|
"maxContextInvalid": "Max context tokens must be an integer greater than or equal to 0.",
|
|
"maxOutputInvalid": "Max output tokens must be an integer greater than or equal to 0.",
|
|
"timeoutInvalid": "Timeout must be an integer greater than or equal to 0.",
|
|
"retryInvalid": "Max retries must be an integer greater than or equal to 0.",
|
|
"rpmInvalid": "RPM limit must be an integer greater than or equal to 0.",
|
|
"tpmInvalid": "TPM limit must be an integer greater than or equal to 0.",
|
|
"editTitle": "Edit AI Config",
|
|
"createTitle": "New AI Config",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loading": "Loading...",
|
|
"name": "Config Name",
|
|
"namePlaceholder": "Example: OpenAI primary answer model",
|
|
"provider": "Provider",
|
|
"selectProvider": "Select provider",
|
|
"modelType": "Model Type",
|
|
"selectModelType": "Select model type",
|
|
"baseUrl": "Base URL",
|
|
"baseUrlPlaceholder": "Example: https://api.openai.com/v1",
|
|
"apiKeyPlaceholder": "Enter API Key",
|
|
"modelName": "Model Name",
|
|
"modelNamePlaceholder": "Example: gpt-4o-mini",
|
|
"dimensionLabel": "Embedding Dimension",
|
|
"maxContextTokens": "Max Context Tokens",
|
|
"maxOutputTokens": "Max Output Tokens",
|
|
"timeoutMs": "Timeout (ms)",
|
|
"maxRetryCount": "Max Retries",
|
|
"rpmLimit": "RPM Limit",
|
|
"tpmLimit": "TPM Limit",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Record usage, cost, or limit notes"
|
|
},
|
|
"mcp": {
|
|
"disabled": "disabled",
|
|
"loadServersFailed": "Could not load MCP servers.",
|
|
"connectSuccess": "MCP connection succeeded.",
|
|
"connectFailed": "MCP connection failed.",
|
|
"toolsLoaded": "Loaded {count} tools.",
|
|
"loadToolsFailed": "Could not load tools.",
|
|
"selectToolFirst": "Select a tool first.",
|
|
"argumentsInvalid": "Arguments JSON is invalid.",
|
|
"argumentsMustBeJson": "arguments must be valid JSON.",
|
|
"toolReturnedError": "Tool returned an error result.",
|
|
"toolCallSuccess": "Tool call succeeded.",
|
|
"toolCallFailed": "Tool call failed.",
|
|
"testConnection": "Test Connection",
|
|
"listTools": "List Tools",
|
|
"serverConfig": "Server Config",
|
|
"selectServer": "Select an MCP server",
|
|
"searchServer": "Search serverCode",
|
|
"emptyServer": "No MCP servers available",
|
|
"connected": "Connected",
|
|
"emptyToolsHint": "No tool results yet. Click List Tools above.",
|
|
"toolName": "Tool Name",
|
|
"description": "Description",
|
|
"actions": "Actions",
|
|
"view": "View",
|
|
"toolDetail": "Tool Details",
|
|
"detailDescription": "Review tool details here and run a real test call against the selected MCP server.",
|
|
"noDescription": "No description",
|
|
"testTool": "Test Tool",
|
|
"returnedError": "Returned Error",
|
|
"callSuccess": "Call Succeeded",
|
|
"close": "Close"
|
|
},
|
|
"agentProfile": {
|
|
"allStatuses": "All statuses",
|
|
"all": "All",
|
|
"statusIdle": "Idle",
|
|
"statusBusy": "Busy",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"loadFailed": "Could not load agent profiles.",
|
|
"updated": "Agent profile updated: {name}",
|
|
"created": "Agent profile created: {name}",
|
|
"saveFailed": "Could not save the agent profile.",
|
|
"deleted": "Agent profile deleted: {name}",
|
|
"deleteFailed": "Could not delete the agent profile.",
|
|
"refresh": "Refresh",
|
|
"expandTeams": "Expand team list",
|
|
"collapseTeams": "Collapse team list",
|
|
"new": "New",
|
|
"filterDisplayName": "Filter by display name",
|
|
"filterAgentCode": "Filter by agent code",
|
|
"searchStatus": "Search status",
|
|
"emptyStatus": "No matching status",
|
|
"query": "Search",
|
|
"columnAgent": "Agent",
|
|
"columnRules": "Service Rules",
|
|
"columnDispatch": "Assignment",
|
|
"columnRecent": "Recent Activity",
|
|
"columnActions": "Actions",
|
|
"userFallback": "User #{id}",
|
|
"agentCode": "Code: {code}",
|
|
"capacityPriority": "Max chats {capacity} / priority {priority}",
|
|
"autoAssign": "Auto-assign",
|
|
"noAutoAssign": "No auto-assign",
|
|
"offlineReceive": "Receives offline messages",
|
|
"noOfflineReceive": "No offline messages",
|
|
"onlineAt": "Online: {time}",
|
|
"statusAt": "Status: {time}",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"loadingRows": "Loading agent profiles...",
|
|
"emptyTeamRows": "No matching agent profiles in this team",
|
|
"emptyRows": "No matching agent profiles",
|
|
"userRequired": "Select a linked user.",
|
|
"teamRequired": "Select a support team.",
|
|
"agentCodeRequired": "Enter an agent code.",
|
|
"displayNameRequired": "Enter a display name.",
|
|
"statusRequired": "Select an agent status.",
|
|
"maxConcurrentInvalid": "Max concurrent chats must be an integer greater than or equal to 0.",
|
|
"priorityInvalid": "Priority must be an integer.",
|
|
"loadOptionsFailed": "Could not load options.",
|
|
"loadDetailFailed": "Could not load agent profile details.",
|
|
"editTitle": "Edit Agent Profile",
|
|
"createTitle": "New Agent Profile",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"loading": "Loading...",
|
|
"linkedUser": "Linked User",
|
|
"selectUser": "Select user",
|
|
"searchUser": "Search users...",
|
|
"emptyUser": "No matching users",
|
|
"displayName": "Display Name",
|
|
"displayNamePlaceholder": "Enter display name",
|
|
"agentCodeLabel": "Agent Code",
|
|
"agentCodePlaceholder": "Example: A1001",
|
|
"avatar": "Avatar",
|
|
"avatarUpload": "Upload avatar",
|
|
"serviceStatus": "Agent Status",
|
|
"maxConcurrent": "Max Concurrent Chats",
|
|
"priority": "Priority",
|
|
"autoAssignEnabled": "Include in auto-assignment",
|
|
"receiveOfflineMessage": "Receive offline messages",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Enter notes",
|
|
"teamTitle": "Support Teams",
|
|
"searchTeams": "Search teams",
|
|
"loadTeamsFailed": "Could not load support teams.",
|
|
"teamUpdated": "Support team updated: {name}",
|
|
"teamCreated": "Support team created: {name}",
|
|
"teamSaveFailed": "Could not save the support team.",
|
|
"teamDeleted": "Support team deleted: {name}",
|
|
"teamDeleteFailed": "Could not delete the support team.",
|
|
"noTeams": "No matching support teams",
|
|
"teamNameRequired": "Enter a team name.",
|
|
"leaderInvalid": "Team lead is invalid.",
|
|
"teamStatusRequired": "Select a status.",
|
|
"loadUsersFailed": "Could not load user options.",
|
|
"loadTeamDetailFailed": "Could not load support team details.",
|
|
"teamEditTitle": "Edit",
|
|
"teamCreateTitle": "New",
|
|
"teamName": "Team Name",
|
|
"teamNamePlaceholder": "Enter team name",
|
|
"leader": "Team Lead",
|
|
"noLeader": "No lead",
|
|
"selectLeader": "Select team lead",
|
|
"status": "Status",
|
|
"selectStatus": "Select status",
|
|
"description": "Responsibilities",
|
|
"descriptionPlaceholder": "Example: Handles presales questions and lead qualification"
|
|
},
|
|
"agentTeamSchedule": {
|
|
"loadFailed": "Could not load support team schedules.",
|
|
"loadCalendarFailed": "Could not load the schedule calendar.",
|
|
"loadTeamsFailed": "Could not load support team options.",
|
|
"historyReadonly": "Past schedules cannot be changed.",
|
|
"updated": "Support team schedule updated.",
|
|
"created": "Support team schedule created.",
|
|
"saveFailed": "Could not save the support team schedule.",
|
|
"deleted": "Support team schedule deleted.",
|
|
"deleteFailed": "Could not delete the support team schedule.",
|
|
"updateFailed": "Could not update the support team schedule.",
|
|
"month": "Month",
|
|
"week": "Week",
|
|
"list": "List",
|
|
"prevMonth": "Previous month",
|
|
"thisMonth": "This month",
|
|
"nextMonth": "Next month",
|
|
"prevWeek": "Previous week",
|
|
"thisWeek": "This week",
|
|
"nextWeek": "Next week",
|
|
"today": "Today",
|
|
"allTeams": "All teams",
|
|
"filterTeam": "Filter by team",
|
|
"searchTeam": "Search teams",
|
|
"emptyTeam": "No matching teams",
|
|
"query": "Search",
|
|
"refresh": "Refresh",
|
|
"batch": "Batch schedule",
|
|
"new": "New",
|
|
"team": "Team",
|
|
"timeRange": "Time Range",
|
|
"actions": "Actions",
|
|
"teamFallback": "Team #{id}",
|
|
"teamId": "Team ID: {id}",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"emptyRows": "No matching support team schedules",
|
|
"teamRequired": "Select a support team.",
|
|
"startRequired": "Start time is required.",
|
|
"endRequired": "End time is required.",
|
|
"endAfterStart": "End time must be later than start time.",
|
|
"singleDayOnly": "A single schedule cannot cross days.",
|
|
"loadOptionsFailed": "Could not load options.",
|
|
"loadDetailFailed": "Could not load schedule details.",
|
|
"editTitle": "Edit Support Team Schedule",
|
|
"createTitle": "New Support Team Schedule",
|
|
"loading": "Loading...",
|
|
"startTime": "Start Time",
|
|
"endTime": "End Time",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Enter notes",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"weekdayMon": "Mon",
|
|
"weekdayTue": "Tue",
|
|
"weekdayWed": "Wed",
|
|
"weekdayThu": "Thu",
|
|
"weekdayFri": "Fri",
|
|
"weekdaySat": "Sat",
|
|
"weekdaySun": "Sun",
|
|
"weekdayShortMon": "Mon",
|
|
"weekdayShortTue": "Tue",
|
|
"weekdayShortWed": "Wed",
|
|
"weekdayShortThu": "Thu",
|
|
"weekdayShortFri": "Fri",
|
|
"weekdayShortSat": "Sat",
|
|
"weekdayShortSun": "Sun",
|
|
"monthTitle": "{month}/{year}",
|
|
"dropInsideCalendar": "Drop onto a calendar day.",
|
|
"cannotMoveHere": "Cannot move here.",
|
|
"resizeInvalid": "Cannot cross days or be shorter than 15 minutes.",
|
|
"noTeamsCalendar": "No support teams are available for the calendar.",
|
|
"moreItems": "{count} more",
|
|
"batchDescription": "Select teams, a date range, and working hours. Preview before generating schedules.",
|
|
"addTeam": "Add team",
|
|
"loadingTeams": "Loading teams...",
|
|
"noTeams": "No teams",
|
|
"allTeamsSelected": "All teams selected",
|
|
"removeTeam": "Remove {name}",
|
|
"noSelectedTeams": "No teams selected",
|
|
"startDate": "Start Date",
|
|
"endDate": "End Date",
|
|
"weekday": "Weekday",
|
|
"previewFailed": "Could not preview batch schedules.",
|
|
"previewFirst": "Preview the batch schedule first.",
|
|
"conflictCannotSubmit": "Schedules with conflicts cannot be submitted.",
|
|
"batchCreated": "{count} support team schedules created.",
|
|
"batchRefreshFailed": "Schedules were generated, but refresh failed: {message}",
|
|
"batchRefreshFailedFallback": "Schedules were generated, but refresh failed.",
|
|
"generateFailed": "Could not generate batch schedules.",
|
|
"selectAtLeastOneTeam": "Select at least one support team.",
|
|
"selectDateRange": "Select a date range.",
|
|
"startBeforeToday": "Start date cannot be earlier than today.",
|
|
"endBeforeStart": "End date cannot be earlier than start date.",
|
|
"selectAtLeastOneWeekday": "Select at least one weekday.",
|
|
"selectStartEndTime": "Select start and end times.",
|
|
"previewSummaryConflict": "{total} schedules, with conflicts. Go back and adjust them.",
|
|
"previewSummaryReady": "{total} schedules. Generate after confirming there are no conflicts.",
|
|
"hasConflict": "Has conflicts",
|
|
"noConflict": "No conflicts",
|
|
"date": "Date",
|
|
"time": "Time",
|
|
"status": "Status",
|
|
"conflictFallback": "Schedule conflict",
|
|
"canGenerate": "Ready",
|
|
"emptyPreview": "No schedules to generate",
|
|
"backToEdit": "Back to edit",
|
|
"preview": "Preview",
|
|
"generate": "Generate schedules"
|
|
},
|
|
"ticket": {
|
|
"allAssignees": "All assignees",
|
|
"allTags": "All tags",
|
|
"hours": "{hours} hours",
|
|
"manual": "Manual",
|
|
"conversation": "Conversation",
|
|
"manualCreated": "Created manually",
|
|
"conversationGenerated": "Created from conversation",
|
|
"agentFallback": "Agent #{id}",
|
|
"customerFallback": "Customer #{id}",
|
|
"userFallback": "User #{id}",
|
|
"unassigned": "Unassigned",
|
|
"noCustomer": "No customer",
|
|
"loadFailed": "Could not load tickets.",
|
|
"loadFiltersFailed": "Could not load filters.",
|
|
"created": "Ticket created.",
|
|
"createFailed": "Could not create the ticket.",
|
|
"quickAll": "All Tickets",
|
|
"quickPending": "Pending",
|
|
"quickInProgress": "In Progress",
|
|
"quickDone": "Resolved",
|
|
"quickUnassigned": "Unassigned",
|
|
"quickMine": "My Tickets",
|
|
"quickStale": "Stale",
|
|
"refresh": "Refresh",
|
|
"newTicket": "New Ticket",
|
|
"searchPlaceholder": "Search ticket number, title, or description",
|
|
"staleThreshold": "Stale after",
|
|
"reset": "Reset",
|
|
"query": "Search",
|
|
"columnTicket": "Ticket",
|
|
"columnStatus": "Status",
|
|
"columnAssignee": "Assignee",
|
|
"columnUpdated": "Last Updated",
|
|
"columnActions": "Actions",
|
|
"loadingRows": "Loading tickets...",
|
|
"emptyRows": "No tickets yet",
|
|
"detail": "Details",
|
|
"currentStatus": "Current Status",
|
|
"statusPending": "Pending",
|
|
"statusInProgress": "In Progress",
|
|
"statusDone": "Resolved",
|
|
"titleRequired": "Enter a ticket title.",
|
|
"descriptionRequired": "Enter a problem description.",
|
|
"selectedTags": "{count} tags selected",
|
|
"selectTags": "Select ticket tags",
|
|
"searchTags": "Search tags",
|
|
"emptyTags": "No tags available",
|
|
"tags": "Tags",
|
|
"noAssignee": "No assignee",
|
|
"editTitle": "Edit Ticket",
|
|
"createTitle": "New Ticket",
|
|
"dialogDescription": "Enter the basic ticket details.",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loading": "Loading...",
|
|
"title": "Title",
|
|
"titlePlaceholder": "Enter a ticket title",
|
|
"description": "Description",
|
|
"assignee": "Assignee",
|
|
"selectAssignee": "Select assignee",
|
|
"ticketTags": "Ticket Tags",
|
|
"detailTitle": "Ticket Details",
|
|
"creator": "Created by {name}",
|
|
"loadDetailFailed": "Could not load ticket details.",
|
|
"statusUpdated": "Ticket status updated.",
|
|
"statusUpdateFailed": "Could not update ticket status.",
|
|
"statusChangeConfirmTitle": "Confirm Status Change",
|
|
"statusChangeConfirmDescription": "Change ticket status from \"{from}\" to \"{to}\"?",
|
|
"statusChangeConfirm": "Confirm Change",
|
|
"updating": "Updating...",
|
|
"progressRequired": "Enter an update.",
|
|
"progressRecorded": "Update added.",
|
|
"progressCreateFailed": "Could not add the update.",
|
|
"selectTicket": "Select a ticket.",
|
|
"updated": "Ticket updated.",
|
|
"updateFailed": "Could not update the ticket.",
|
|
"noLinkedCustomer": "This ticket is not linked to a customer.",
|
|
"saved": "Saved.",
|
|
"saveFailed": "Could not save.",
|
|
"noDescription": "No description",
|
|
"assign": "Assign",
|
|
"edit": "Edit",
|
|
"linkOrCreate": "Link or create",
|
|
"customerInfo": "Customer Info",
|
|
"customer": "Customer",
|
|
"contact": "Contact",
|
|
"ticketInfo": "Ticket Info",
|
|
"source": "Source",
|
|
"channel": "Channel",
|
|
"conversationId": "Conversation ID",
|
|
"progress": "Updates",
|
|
"addProgress": "Add Update",
|
|
"noProgress": "No updates yet",
|
|
"chooseTicket": "Select a ticket",
|
|
"progressPlaceholder": "Write this update",
|
|
"submitting": "Submitting...",
|
|
"submit": "Submit",
|
|
"assignTitle": "Assign Ticket",
|
|
"assigneeRequired": "Select an assignee.",
|
|
"loadAssigneesFailed": "Could not load assignees.",
|
|
"assigneeUpdated": "Assignee updated.",
|
|
"assignFailed": "Could not assign the ticket.",
|
|
"selectHandler": "Select assignee",
|
|
"assignReason": "Note",
|
|
"assignReasonPlaceholder": "Add an assignment note",
|
|
"confirmAssign": "Assign",
|
|
"conversationToTicket": "Create Ticket from Conversation",
|
|
"conversationToTicketDescription": "Create a ticket from the current conversation context.",
|
|
"conversationMissing": "Conversation not found.",
|
|
"createSuccess": "Ticket created."
|
|
},
|
|
"skillDefinition": {
|
|
"allStatus": "All statuses",
|
|
"statusOk": "Enabled",
|
|
"statusDisabled": "Disabled",
|
|
"statusDeleted": "Deleted",
|
|
"whitelistCount": "{count} whitelisted",
|
|
"exampleCount": "{count} examples",
|
|
"noDescription": "No description",
|
|
"toggleStatus": "Toggle status for {name}",
|
|
"debug": "Debug",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"restoring": "Restoring...",
|
|
"restore": "Restore",
|
|
"deleting": "Deleting...",
|
|
"processing": "Working...",
|
|
"delete": "Delete",
|
|
"loadFailed": "Could not load skills.",
|
|
"updated": "Skill updated: {name}",
|
|
"created": "Skill created: {name}",
|
|
"saveFailed": "Could not save the skill.",
|
|
"enabled": "Enabled: {name}",
|
|
"disabled": "Disabled: {name}",
|
|
"statusUpdateFailed": "Could not update status.",
|
|
"deleted": "Skill deleted: {name}",
|
|
"deleteFailed": "Could not delete the skill.",
|
|
"restored": "Skill restored: {name}",
|
|
"restoreFailed": "Could not restore the skill.",
|
|
"refresh": "Refresh",
|
|
"new": "New",
|
|
"filterName": "Filter by name",
|
|
"filterCode": "Filter by code",
|
|
"searchStatus": "Search statuses",
|
|
"emptyStatus": "No matching statuses",
|
|
"query": "Search",
|
|
"status": "Status",
|
|
"updatedAt": "Last Updated",
|
|
"actions": "Actions",
|
|
"loadingRows": "Loading skills...",
|
|
"emptyRows": "No matching skills",
|
|
"codeRequired": "Enter a skill code.",
|
|
"codeInvalid": "Skill codes can contain letters, numbers, underscores, and hyphens only.",
|
|
"nameRequired": "Enter a skill name.",
|
|
"instructionRequired": "Enter skill instructions.",
|
|
"editTitle": "Edit",
|
|
"createTitle": "New",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loading": "Loading...",
|
|
"code": "Code",
|
|
"codePlaceholder": "Example: refund_skill",
|
|
"name": "Name",
|
|
"namePlaceholder": "Example: Refund Handling",
|
|
"description": "Description",
|
|
"descriptionPlaceholder": "Describe what this skill does, its boundaries, and when to use it.",
|
|
"instruction": "Instructions",
|
|
"instructionPlaceholder": "Enter the skill documentation, including goals, steps, tool rules, and boundaries.",
|
|
"examples": "Example Phrases",
|
|
"examplesPlaceholder": "One typical user phrase per line, for example:\nI need a refund\nCan you check my order?",
|
|
"toolWhitelist": "Tool Allowlist",
|
|
"selectTool": "Select tools this skill may use",
|
|
"searchTool": "Search tool code or name",
|
|
"emptyTool": "No tools can be added",
|
|
"add": "Add",
|
|
"inheritAgentTools": "Leave this empty to inherit the agent's available tools.",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Add internal notes or maintenance details",
|
|
"agentRequired": "Select an AI agent.",
|
|
"messageRequired": "Enter a user message.",
|
|
"emptyData": "No data",
|
|
"confirm": "Confirm",
|
|
"reject": "Cancel",
|
|
"debugFailed": "Skill debug failed.",
|
|
"resumeMessageRequired": "Enter a resume message.",
|
|
"resumeFailed": "Could not resume debugging.",
|
|
"debugTitle": "Debug Skill · {name}",
|
|
"debugDescription": "Force this skill and inspect routing, tools, graph execution, HITL, and the final reply.",
|
|
"close": "Close",
|
|
"debugging": "Debugging...",
|
|
"startDebug": "Start Debug",
|
|
"debugInput": "Debug Input",
|
|
"selectAgent": "Select AI agent",
|
|
"searchAgent": "Search AI agents",
|
|
"emptyAgent": "No AI agents found",
|
|
"conversationPlaceholder": "Optional. Enter an existing conversation ID to reuse context.",
|
|
"matchedAgent": "Matched Agent",
|
|
"noAgentSelected": "None selected",
|
|
"userMessage": "User Message",
|
|
"userMessagePlaceholder": "Enter a user message to debug this skill's routing, tools, and reply.",
|
|
"debugSummary": "Debug Summary",
|
|
"interrupted": "Interrupted",
|
|
"notInterrupted": "Not interrupted",
|
|
"skillName": "Skill Name",
|
|
"none": "None",
|
|
"errorMessage": "Error Message",
|
|
"toolView": "Tool View",
|
|
"skillToolWhitelist": "Skill Tool Allowlist",
|
|
"exposedTools": "Tools Exposed This Run",
|
|
"invokedTools": "Tools Called This Run",
|
|
"resumeDebug": "Resume Debug",
|
|
"currentCheckpoint": "Current Checkpoint",
|
|
"resumeMessage": "Resume Message",
|
|
"resumePlaceholder": "Enter confirm, cancel, or another resume message",
|
|
"resuming": "Resuming...",
|
|
"resumeDebugAction": "Resume Debug",
|
|
"resumeResult": "Resume Result",
|
|
"stillWaiting": "Still waiting for confirmation",
|
|
"resumeCompleted": "Resume completed",
|
|
"resumeReply": "Resume Reply"
|
|
},
|
|
"agentRunLog": {
|
|
"allActions": "All actions",
|
|
"handoff": "Handoff",
|
|
"reply": "Reply",
|
|
"fallback": "Fallback",
|
|
"allStatus": "All statuses",
|
|
"allHitl": "All HITL",
|
|
"hitlPending": "Pending approval",
|
|
"hitlConfirmed": "Confirmed",
|
|
"hitlCancelled": "Cancelled",
|
|
"hitlExpired": "Expired",
|
|
"hitlTriggered": "Triggered",
|
|
"hitlPendingSummary": "A Graph Tool has requested confirmation and is waiting for the user.",
|
|
"hitlConfirmedSummary": "The user confirmed the action, execution resumed, and the follow-up flow completed.",
|
|
"hitlCancelledSummary": "The user cancelled the action, so the confirmation flow was stopped.",
|
|
"hitlExpiredSummary": "The confirmation checkpoint has expired and needs to be started again.",
|
|
"hitlTriggeredSummary": "This run involved a confirmation-based HITL flow.",
|
|
"allAgents": "All agents",
|
|
"loadFailed": "Could not load agent run logs.",
|
|
"loadAgentsFailed": "Could not load AI agents.",
|
|
"refresh": "Refresh",
|
|
"filterUserMessage": "Filter by user message",
|
|
"plannedAction": "Planned action",
|
|
"finalAction": "Final action",
|
|
"finalStatus": "Final status",
|
|
"hitlStatus": "HITL status",
|
|
"selectAgent": "Select agent",
|
|
"searchAction": "Search actions",
|
|
"emptyAction": "No matching actions",
|
|
"searchStatus": "Search statuses",
|
|
"emptyStatus": "No matching statuses",
|
|
"searchHitl": "Search HITL status",
|
|
"searchAgent": "Search agents",
|
|
"emptyAgent": "No agents found",
|
|
"query": "Search",
|
|
"emptyRows": "No agent run logs yet",
|
|
"time": "Time",
|
|
"userMessage": "User Message",
|
|
"skillTool": "Skill / Tool",
|
|
"duration": "Duration",
|
|
"actions": "Actions",
|
|
"handoffReason": "Handoff reason: {reason}",
|
|
"routingRecommendation": "Routing recommendation: {action}",
|
|
"draftReady": "draft ready",
|
|
"detail": "Details",
|
|
"imageMessage": "[Image]",
|
|
"richMessage": "[Rich text message]",
|
|
"loadDetailFailed": "Could not load log details.",
|
|
"detailTitle": "Agent Run Details",
|
|
"detailDescription": "Inspect planner selection, final action, reply content, and errors.",
|
|
"close": "Close",
|
|
"loading": "Loading...",
|
|
"logId": "Log ID",
|
|
"conversationId": "Conversation ID",
|
|
"messageId": "Message ID",
|
|
"planningStage": "Planning Stage",
|
|
"executionResult": "Execution Result",
|
|
"dynamicTools": "Dynamic Tool Selection",
|
|
"graphToolCall": "Graph Tool Call",
|
|
"botReply": "Bot Reply",
|
|
"errorMessage": "Error Message",
|
|
"trace": "Trace",
|
|
"notFound": "No details found"
|
|
},
|
|
"knowledge": {
|
|
"document": "Documents",
|
|
"faq": "FAQ",
|
|
"retrieveLogs": "Retrieval Logs",
|
|
"expandList": "Expand knowledge base list",
|
|
"collapseList": "Collapse knowledge base list",
|
|
"refreshDocuments": "Refresh documents",
|
|
"listLayout": "List layout",
|
|
"gridLayout": "Grid layout",
|
|
"openDebugPanel": "Open debug panel",
|
|
"newDocument": "New document",
|
|
"refreshFAQ": "Refresh FAQ",
|
|
"importFAQ": "Import FAQ",
|
|
"newFAQ": "New FAQ",
|
|
"ragDebug": "RAG Debug",
|
|
"title": "Knowledge Base",
|
|
"allStatus": "All statuses",
|
|
"statusOk": "Enabled",
|
|
"statusDisabled": "Disabled",
|
|
"statusDeleted": "Deleted",
|
|
"typeDocument": "Document Knowledge Base",
|
|
"typeFAQ": "FAQ Knowledge Base",
|
|
"chunkFixed": "Fixed length",
|
|
"chunkStructured": "Structured chunks",
|
|
"chunkFAQ": "Q&A chunks",
|
|
"chunkSemantic": "Semantic chunks",
|
|
"answerStrict": "Strict mode",
|
|
"answerAssist": "Assist mode",
|
|
"loadBasesFailed": "Could not load knowledge bases.",
|
|
"baseUpdated": "Knowledge base updated: {name}",
|
|
"baseCreated": "Knowledge base created: {name}",
|
|
"baseSaveFailed": "Could not save the knowledge base.",
|
|
"baseDeleted": "Knowledge base deleted: {name}",
|
|
"baseDeleteFailed": "Could not delete the knowledge base.",
|
|
"rebuildStarted": "Knowledge base reindex started: {name}",
|
|
"rebuildFailed": "Could not rebuild the knowledge base index.",
|
|
"sortUpdated": "Knowledge base order updated.",
|
|
"sortUpdateFailed": "Could not update knowledge base order.",
|
|
"moreActions": "More actions for {name}",
|
|
"edit": "Edit",
|
|
"rebuilding": "Rebuilding...",
|
|
"rebuildIndex": "Rebuild Index",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"searchBase": "Search knowledge bases",
|
|
"query": "Search",
|
|
"emptyBases": "No matching knowledge bases",
|
|
"nameRequired": "Name is required.",
|
|
"nameMax": "Name can be up to 100 characters.",
|
|
"descriptionMax": "Description can be up to 500 characters.",
|
|
"typeRequired": "Select a knowledge base type.",
|
|
"topKRequired": "Enter a Top K value.",
|
|
"scoreRequired": "Enter a score threshold.",
|
|
"rerankRequired": "Enter a rerank limit.",
|
|
"chunkProviderRequired": "Select a chunking strategy.",
|
|
"targetTokensRequired": "Enter target token count.",
|
|
"maxTokensRequired": "Enter maximum token count.",
|
|
"overlapTokensRequired": "Enter overlap token count.",
|
|
"answerModeRequired": "Select an answer mode.",
|
|
"remarkMax": "Notes can be up to 500 characters.",
|
|
"editBaseTitle": "Edit Knowledge Base",
|
|
"createBaseTitle": "New Knowledge Base",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loading": "Loading...",
|
|
"knowledgeType": "Knowledge Base Type",
|
|
"selectKnowledgeType": "Select knowledge base type",
|
|
"searchKnowledgeType": "Search knowledge base types",
|
|
"emptyKnowledgeType": "No matching knowledge base types",
|
|
"name": "Name",
|
|
"namePlaceholder": "Knowledge base name",
|
|
"description": "Description",
|
|
"descriptionPlaceholder": "Knowledge base description",
|
|
"chunkProvider": "Chunking Strategy",
|
|
"selectChunkProvider": "Select chunking strategy",
|
|
"searchChunkProvider": "Search chunking strategies",
|
|
"emptyChunkProvider": "No matching chunking strategies",
|
|
"targetToken": "Target Tokens",
|
|
"maxToken": "Max Tokens",
|
|
"overlapToken": "Overlap Tokens",
|
|
"defaultTopK": "Default Top K",
|
|
"defaultScoreThreshold": "Default Score Threshold",
|
|
"defaultRerankLimit": "Default Rerank Limit",
|
|
"answerMode": "Answer Mode",
|
|
"selectAnswerMode": "Select answer mode",
|
|
"searchAnswerMode": "Search answer modes",
|
|
"emptyAnswerMode": "No matching answer modes",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Notes",
|
|
"allIndexStatus": "All index statuses",
|
|
"searchStatus": "Search statuses",
|
|
"emptyStatus": "No matching statuses",
|
|
"indexPending": "Pending",
|
|
"indexIndexed": "Indexed",
|
|
"indexFailed": "Index failed",
|
|
"loadDocumentsFailed": "Could not load documents.",
|
|
"documentUpdated": "Document updated: {title}",
|
|
"documentCreated": "Document created: {title}",
|
|
"documentSaveFailed": "Could not save the document.",
|
|
"documentDeleted": "Document deleted: {title}",
|
|
"documentDeleteFailed": "Could not delete the document.",
|
|
"documentIndexRebuilt": "Index rebuilt: {title}",
|
|
"documentIndexRebuildFailed": "Could not rebuild the index.",
|
|
"selectKnowledgeBaseForDocuments": "Select a knowledge base to view documents.",
|
|
"searchDocumentTitle": "Search document titles",
|
|
"indexedAt": "Indexed {time}",
|
|
"indexTime": "Indexed at {time}",
|
|
"running": "Running...",
|
|
"emptyDocuments": "No matching documents",
|
|
"documentTitleRequired": "Title is required.",
|
|
"documentTitleMax": "Title can be up to 255 characters.",
|
|
"contentTypeRequired": "Select a content type.",
|
|
"contentRequired": "Content is required.",
|
|
"editDocumentTitle": "Edit Document",
|
|
"createDocumentTitle": "New Document",
|
|
"documentTitle": "Title",
|
|
"documentTitlePlaceholder": "Document title",
|
|
"content": "Content",
|
|
"contentPlaceholder": "Enter document content",
|
|
"loadFAQFailed": "Could not load FAQs.",
|
|
"loadingFAQ": "Loading FAQs...",
|
|
"faqSaved": "FAQ saved.",
|
|
"faqSaveFailed": "Could not save the FAQ.",
|
|
"faqDeleted": "FAQ deleted.",
|
|
"faqDeleteFailed": "Could not delete the FAQ.",
|
|
"faqIndexRebuilt": "FAQ index rebuilt.",
|
|
"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.",
|
|
"loadingRetrieveLogs": "Loading retrieval logs...",
|
|
"emptyRetrieveLogs": "This knowledge base has no retrieval logs yet",
|
|
"filterQuestion": "Filter by question keyword",
|
|
"selectChannel": "Select channel",
|
|
"selectScene": "Select scene",
|
|
"answerStatus": "Answer Status",
|
|
"chunkStrategy": "Chunking Strategy",
|
|
"filter": "Filter",
|
|
"time": "Time",
|
|
"hitCount": "Hits",
|
|
"citations": "Citations",
|
|
"duration": "Duration",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"loadRetrieveLogDetailFailed": "Could not load retrieval log details.",
|
|
"noCitations": "No citation sources",
|
|
"unrecordedSection": "Section not recorded",
|
|
"retrieveLogDetail": "Retrieval Log Details",
|
|
"retrieveLogNotFound": "Retrieval log not found",
|
|
"loadingDetail": "Loading details...",
|
|
"emptyDetail": "No details",
|
|
"requestInfo": "Request Info",
|
|
"createdAt": "Created At",
|
|
"channelScene": "Channel / Scene",
|
|
"originalQuestion": "Original Question",
|
|
"rewriteQuestion": "Rewritten Question",
|
|
"answerContent": "Answer",
|
|
"retrieveStrategy": "Retrieval Strategy",
|
|
"resultSummary": "Result Summary",
|
|
"contextChunks": "Context Chunks",
|
|
"retrieveMs": "Retrieval Time",
|
|
"generateMs": "Generation Time",
|
|
"totalMs": "Total Time",
|
|
"model": "Model",
|
|
"sessionId": "Session ID",
|
|
"citationSources": "Citation Sources",
|
|
"hitDetails": "Hit Details",
|
|
"itemsCount": "{count} items",
|
|
"usedInContext": "Used in context",
|
|
"notUsedInContext": "Not used in context",
|
|
"section": "Section: {section}",
|
|
"selectKnowledgeBaseFirst": "Select a knowledge base first.",
|
|
"debugQuestionRequired": "Enter a debug question.",
|
|
"searchCompleted": "Search complete. {count} hits found.",
|
|
"searchFailed": "Search failed.",
|
|
"answerCompleted": "Answer generated. Status: {status}",
|
|
"answerFailed": "Answer generation failed.",
|
|
"debugQuestionPlaceholder": "Enter a question to test retrieval and answer quality.",
|
|
"topKPlaceholder": "Number of hits",
|
|
"scoreThreshold": "Similarity Threshold",
|
|
"scoreThresholdPlaceholder": "Minimum score",
|
|
"rerankLimitLabel": "Rerank Limit",
|
|
"rerankLimitPlaceholder": "Items to rerank",
|
|
"searching": "Searching...",
|
|
"debugSearch": "Debug Search",
|
|
"generating": "Generating...",
|
|
"debugAnswer": "Debug Answer",
|
|
"answerResult": "Answer Result",
|
|
"searchHits": "Search Hits",
|
|
"hitsSummary": "{count} hits · {latency}ms"
|
|
},
|
|
"scaffold": {
|
|
"moduleBoard": "Module Delivery Board",
|
|
"moduleBoardDescription": "A first-phase admin scaffold. Replace it with real API-backed modules later.",
|
|
"searchModule": "Search modules",
|
|
"filter": "Filter",
|
|
"moduleList": "Modules",
|
|
"milestones": "Milestones",
|
|
"phaseOneModules": "Phase One Modules",
|
|
"phaseOneDescription": "Covers accounts, permissions, knowledge base, channels, and skill entry points.",
|
|
"module": "Module",
|
|
"owner": "Owner",
|
|
"status": "Status",
|
|
"progress": "Progress",
|
|
"updatedAt": "Updated",
|
|
"done": "Done",
|
|
"nextMilestone": "Next Milestone",
|
|
"nextMilestoneDescription": "The UI scaffold is ready. Next step: connect real APIs and business forms.",
|
|
"milestoneLogin": "Connect sign-in, users, roles, and permissions APIs.",
|
|
"milestoneForms": "Add form dialogs, paginated queries, and error handling.",
|
|
"milestoneKnowledge": "Wire up real knowledge base and channel configuration.",
|
|
"adminUsers": "Admin Users",
|
|
"newAdminsThisWeek": "New admins this week",
|
|
"accountSystemReady": "Account foundation is ready for real APIs",
|
|
"permissions": "Permissions",
|
|
"initialized": "Initialized",
|
|
"permissionsPending": "Menu and API permissions are pending",
|
|
"permissionModelReady": "Ready to connect the backend permission model",
|
|
"knowledgeTasks": "Knowledge Tasks",
|
|
"running": "Running",
|
|
"ragReserved": "RAG integration placeholder",
|
|
"docIndexSupport": "Supports document import and indexing flow",
|
|
"channelAccess": "Channel Access",
|
|
"pendingConfig": "Pending setup",
|
|
"channelEntrances": "WeCom, DingTalk, and IM entry points",
|
|
"waitingRealConfig": "Waiting for real connection settings",
|
|
"recentActivity": "Recent Development Activity",
|
|
"activityDescription": "Demo data showing conversation growth and knowledge base readiness.",
|
|
"activeSessions": "Active Sessions",
|
|
"indexedDocs": "Knowledge Docs",
|
|
"last14Days": "Last 14 days",
|
|
"last7Days": "Last 7 days",
|
|
"selectTimeRange": "Select time range",
|
|
"businessModules": "Business Modules",
|
|
"open": "Open",
|
|
"share": "Share",
|
|
"delete": "Delete",
|
|
"more": "More"
|
|
},
|
|
"widgetDemo": {
|
|
"defaultName": "Demo User",
|
|
"missingUserId": "Enter userId.",
|
|
"missingName": "Enter the user's name.",
|
|
"missingSecret": "Enter the JWT secret.",
|
|
"invalidTtl": "TTL must be greater than 0.",
|
|
"missingChannel": "Enter channelId.",
|
|
"mountedJwt": "Widget mounted in JWT user mode.",
|
|
"mountedGuest": "Widget mounted in guest mode.",
|
|
"mounted": "Widget mounted.",
|
|
"mountFailed": "Could not mount the widget.",
|
|
"linkFailed": "Could not generate the support link.",
|
|
"unmounted": "Widget unmounted.",
|
|
"title": "Widget Mount Test",
|
|
"authMode": "Auth Mode",
|
|
"guest": "Guest",
|
|
"jwtUser": "JWT User",
|
|
"ttlMinutes": "TTL (minutes)",
|
|
"mount": "Mount",
|
|
"unmount": "Unmount",
|
|
"snippetTitle": "Embed Code",
|
|
"jwtNotice": "This page is for local simulation only. In production, your backend should issue the userToken.",
|
|
"copiedSnippet": "Embed code copied",
|
|
"copySnippet": "Copy embed code",
|
|
"copied": "Copied",
|
|
"copyCode": "Copy code",
|
|
"directChat": "Direct Customer Chat",
|
|
"directChatPlaceholder": "Copy or open in a new window to generate the latest link",
|
|
"copy": "Copy",
|
|
"openNewWindow": "Open in New Window",
|
|
"currentToken": "Current userToken"
|
|
},
|
|
"quickReply": {
|
|
"loadFailed": "Could not load quick replies.",
|
|
"created": "Quick reply created: {title}",
|
|
"updated": "Quick reply updated: {title}",
|
|
"saveFailed": "Could not save the quick reply.",
|
|
"enabled": "Enabled: {title}",
|
|
"disabled": "Disabled: {title}",
|
|
"statusUpdateFailed": "Could not update the status.",
|
|
"deleted": "Quick reply deleted: {title}",
|
|
"deleteFailed": "Could not delete the quick reply.",
|
|
"refresh": "Refresh",
|
|
"new": "New Quick Reply",
|
|
"filterTitle": "Filter by title",
|
|
"filterGroup": "Filter by group",
|
|
"query": "Search",
|
|
"columnQuickReply": "Quick Reply",
|
|
"columnGroup": "Group",
|
|
"columnStatus": "Status",
|
|
"columnSort": "Sort",
|
|
"columnCreator": "Created By",
|
|
"columnActions": "Actions",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {title}",
|
|
"processing": "Working...",
|
|
"enable": "Enable",
|
|
"disable": "Disable",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"loading": "Loading quick replies...",
|
|
"empty": "No matching quick replies",
|
|
"editTitle": "Edit Quick Reply",
|
|
"createTitle": "New Quick Reply",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loadingDetail": "Loading...",
|
|
"groupName": "Group Name",
|
|
"groupNameRequired": "Enter a group name.",
|
|
"groupNamePlaceholder": "For example: Presales, Support, Follow-up",
|
|
"title": "Title",
|
|
"titleRequired": "Enter a title.",
|
|
"titlePlaceholder": "Enter a quick reply title",
|
|
"content": "Reply Content",
|
|
"contentRequired": "Enter reply content.",
|
|
"contentPlaceholder": "Enter the reply content",
|
|
"statusRequired": "Select a status.",
|
|
"sortRequired": "Enter a sort value.",
|
|
"sortInvalid": "Sort value must be an integer greater than or equal to 0.",
|
|
"sortPlaceholder": "Higher numbers appear first"
|
|
},
|
|
"tag": {
|
|
"loadFailed": "Could not load tags.",
|
|
"updated": "Tag updated: {name}",
|
|
"created": "Tag created: {name}",
|
|
"saveFailed": "Could not save the tag.",
|
|
"enabled": "Enabled: {name}",
|
|
"disabled": "Disabled: {name}",
|
|
"statusUpdateFailed": "Could not update the status.",
|
|
"deleted": "Tag deleted: {name}",
|
|
"deleteFailed": "Could not delete the tag.",
|
|
"sameParentOnly": "Tags can only be reordered under the same parent tag.",
|
|
"notFound": "Tag not found.",
|
|
"sortUpdated": "Tag order updated.",
|
|
"sortUpdateFailed": "Could not update tag order.",
|
|
"refresh": "Refresh",
|
|
"expandAll": "Expand All",
|
|
"collapseAll": "Collapse All",
|
|
"new": "New Tag",
|
|
"filterName": "Filter by name",
|
|
"searchStatus": "Search status",
|
|
"emptyStatus": "No statuses found",
|
|
"query": "Search",
|
|
"columnName": "Tag Name",
|
|
"columnStatus": "Status",
|
|
"columnRemark": "Notes",
|
|
"columnCreatedAt": "Created At",
|
|
"columnActions": "Actions",
|
|
"dragSort": "Drag to reorder {name}",
|
|
"toggleStatus": "Toggle status for {name}",
|
|
"edit": "Edit",
|
|
"moreActions": "More actions for {name}",
|
|
"deleting": "Deleting...",
|
|
"delete": "Delete",
|
|
"loading": "Loading tags...",
|
|
"empty": "No matching tags",
|
|
"editTitle": "Edit Tag",
|
|
"createTitle": "New Tag",
|
|
"cancel": "Cancel",
|
|
"saving": "Saving...",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"loadingDetail": "Loading...",
|
|
"parent": "Parent Tag",
|
|
"rootParent": "None (top-level tag)",
|
|
"name": "Tag Name",
|
|
"nameRequired": "Enter a tag name.",
|
|
"namePlaceholder": "Enter tag name",
|
|
"remark": "Notes",
|
|
"remarkPlaceholder": "Optional notes",
|
|
"searchParent": "Search parent tags",
|
|
"emptyParent": "No parent tags found"
|
|
},
|
|
"permission": {
|
|
"loadFailed": "Could not load permissions.",
|
|
"refresh": "Refresh",
|
|
"filterKeyword": "Filter by permission name or code",
|
|
"filterGroup": "Filter by group",
|
|
"query": "Search",
|
|
"columnPermission": "Permission",
|
|
"columnCode": "Code",
|
|
"columnGroup": "Group",
|
|
"columnApi": "API",
|
|
"columnStatus": "Status",
|
|
"loading": "Loading permissions...",
|
|
"empty": "No matching permissions"
|
|
},
|
|
"role": {
|
|
"dragSort": "Drag to reorder {name}",
|
|
"system": "System",
|
|
"processing": "Working...",
|
|
"assignPermissions": "Assign Permissions",
|
|
"loadFailed": "Could not load roles.",
|
|
"created": "Role created: {name}",
|
|
"createFailed": "Could not create the role.",
|
|
"loadAssignFailed": "Could not load permission assignment data.",
|
|
"sortUpdated": "Role order updated.",
|
|
"sortUpdateFailed": "Could not update role order.",
|
|
"permissionsUpdated": "Permissions updated for {name}.",
|
|
"savePermissionsFailed": "Could not save permission assignments.",
|
|
"add": "Add Role",
|
|
"refresh": "Refresh",
|
|
"dragHint": "Drag rows to reorder roles.",
|
|
"pageSummary": "Page {page} / {limit} per page",
|
|
"columnRole": "Role",
|
|
"columnCode": "Code",
|
|
"columnStatus": "Status",
|
|
"columnSort": "Sort",
|
|
"columnActions": "Actions",
|
|
"loading": "Loading roles...",
|
|
"empty": "No roles yet",
|
|
"assignTitle": "Assign Permissions",
|
|
"currentRole": "Current role: {name} {code}",
|
|
"permissionList": "Permissions",
|
|
"searchPermission": "Search by permission name, code, group, or API",
|
|
"loadingPermissions": "Loading permissions...",
|
|
"permissionCount": "{count} items",
|
|
"noPermissions": "No matching permissions",
|
|
"saving": "Saving...",
|
|
"savePermissions": "Save Permissions",
|
|
"cancel": "Cancel",
|
|
"nameRequired": "Enter a role name.",
|
|
"codeRequired": "Enter a role code.",
|
|
"codeInvalid": "Role code must start with a letter and can only include letters, numbers, colons, underscores, and hyphens.",
|
|
"createTitle": "Add Role",
|
|
"createDescription": "After creating a role, you can assign permissions and adjust its order in the list.",
|
|
"name": "Role Name",
|
|
"namePlaceholder": "For example: Support Manager",
|
|
"code": "Role Code",
|
|
"codePlaceholder": "For example: support_manager",
|
|
"remark": "Notes",
|
|
"optional": "Optional",
|
|
"creating": "Creating...",
|
|
"create": "Create Role"
|
|
},
|
|
"nav": {
|
|
"overview": "Overview",
|
|
"receptionCenter": "Support Desk",
|
|
"conversations": "Conversations",
|
|
"tickets": "Tickets",
|
|
"conversationMonitor": "Conversation Monitor",
|
|
"customers": "Customers",
|
|
"companies": "Companies",
|
|
"agentConfig": "Support Setup",
|
|
"tags": "Tags",
|
|
"quickReplies": "Quick Replies",
|
|
"agents": "Agent Profiles",
|
|
"agentTeamSchedules": "Team Schedules",
|
|
"channels": "Channels",
|
|
"aiCapabilities": "AI Capabilities",
|
|
"knowledge": "Knowledge Base",
|
|
"aiConfigs": "Model Settings",
|
|
"aiAgents": "AI Agents",
|
|
"skillDefinition": "Skill Orchestration",
|
|
"mcp": "Tool Debugging",
|
|
"agentRunLogs": "Run Logs",
|
|
"system": "System",
|
|
"users": "Users",
|
|
"roles": "Roles",
|
|
"permissions": "Permissions",
|
|
"dashboardHome": "Dashboard",
|
|
"notifications": "Notifications",
|
|
"changePassword": "Change Password",
|
|
"signOut": "Sign Out"
|
|
},
|
|
"theme": {
|
|
"toggle": "Change theme",
|
|
"light": "Light",
|
|
"dark": "Dark",
|
|
"system": "System"
|
|
},
|
|
"palette": {
|
|
"toggle": "Change accent color",
|
|
"green": "Service Green",
|
|
"gray": "Neutral Gray",
|
|
"blue": "Clear Blue"
|
|
}
|
|
}
|