Files
ai-agent/web/messages/en-US.json
T
mlogclub 847f688398 Refactor AI Agent configuration and workflow handling
- Removed runtime mode handling from AIAgentConfigWorkbench and related components.
- Updated tests to reflect changes in AI Agent policy copy and configuration.
- Changed terminology from "workflow" to "revision" in various components and API responses.
- Simplified agent binding logic in channel editing.
- Cleaned up unused variables and types related to runtime modes.
- Updated localization files for consistency with new terminology.
2026-07-27 23:29:02 +08:00

2370 lines
98 KiB
JSON

{
"app": {
"brand": "Agent Desk",
"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",
"ticketAssignedTitle": "Ticket assigned",
"ticketAssignedLine": "Ticket {ticketNo} has been assigned to you.",
"assignmentReason": "Assignment reason: {reason}",
"conversationTransferredTitle": "Conversation transferred",
"conversationAutoAssignedTitle": "Conversation auto-assigned",
"conversationAssignedTitle": "Conversation assigned",
"conversationAssignedLine": "Conversation #{conversationId} has been assigned to you.",
"transferReason": "Transfer reason: {reason}"
},
"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",
"loadingOptions": "Loading sign-in options...",
"optionsLoadFailed": "Could not load sign-in options.",
"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."
},
"legal": {
"terms": {
"title": "Terms of Service",
"description": "These terms describe the basic rules for accessing and using this system. This is general product text and may be replaced by formal legal terms from the service provider.",
"updatedAt": "Last updated: 2026-05-30",
"relatedLabel": "Also read",
"relatedLink": "Privacy Policy",
"sections": [
{
"title": "1. Service Description",
"body": "This system helps support teams manage conversations, tickets, knowledge bases, AI capabilities, and related operational data. You may access and use it only within your authorized business scope."
},
{
"title": "2. Accounts and Access",
"body": "You are responsible for protecting your account, password, tokens, and third-party sign-in credentials. Activity caused by shared, leaked, or misused credentials may be treated as activity by the account holder."
},
{
"title": "3. Acceptable Use",
"body": "You must not use the system for unlawful activity, rights infringement, service disruption, privilege bypassing, malicious code, unrelated data, or unauthorized sensitive information."
},
{
"title": "4. Data and Content Responsibility",
"body": "Content you create, upload, sync, or process in the system should be lawful, accurate, and aligned with internal management requirements. Necessary activity records may be retained for security, audit, operations, and compliance."
},
{
"title": "5. Service Changes and Availability",
"body": "System features may change due to product iteration, maintenance, security fixes, or third-party service changes. The service provider aims to keep the service stable but does not promise that any feature will remain unchanged or uninterrupted."
},
{
"title": "6. Disclaimer",
"body": "AI-generated content, automatic assignment, summaries, and suggestions are assistive only. Final business judgment, response content, and handling outcomes should be confirmed by authorized personnel."
},
{
"title": "7. Contact and Updates",
"body": "If you have questions about these terms, contact your system administrator or the service provider through published contact channels. The latest version displayed on this page applies after updates."
}
]
},
"privacy": {
"title": "Privacy Policy",
"description": "This policy explains the types of information this system may process when providing support administration capabilities, why it is used, and how it is protected. This is general product text and may be replaced by formal legal text from the service provider.",
"updatedAt": "Last updated: 2026-05-30",
"relatedLabel": "Also read",
"relatedLink": "Terms of Service",
"sections": [
{
"title": "1. Information We Process",
"body": "The system may process account profiles, roles and permissions, sign-in records, activity logs, support conversations, ticket content, customer contact information, knowledge base content, and operational diagnostics."
},
{
"title": "2. Purposes of Use",
"body": "This information is used for authentication, access control, support collaboration, issue follow-up, quality review, security audit, operations, feature improvement, and applicable compliance requirements."
},
{
"title": "3. Storage and Protection",
"body": "The system uses access control, audit logging, transport protection, and appropriate data isolation measures to protect information. You should also avoid entering sensitive personal information unless there is a clear business need."
},
{
"title": "4. Third-Party Services and Integrations",
"body": "When WeCom, OIDC, messaging channels, AI models, or other external integrations are enabled, relevant information may be sent to those services according to configuration. Processing is also governed by integration provider rules and organizational settings."
},
{
"title": "5. User and Administrator Rights",
"body": "Authorized administrators may query, correct, export, or delete relevant business data according to organizational rules. Other users can contact their system administrator for personal-information requests."
},
{
"title": "6. Cookies and Local Storage",
"body": "The system may use browser local storage to keep session state, language, theme, and interface preferences in order to maintain access, support security, and improve the user experience."
},
{
"title": "7. Contact and Updates",
"body": "If you have questions about privacy protection, contact your system administrator or the service provider through published contact channels. The latest version displayed on this page applies after updates."
}
]
}
},
"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",
"conversationId": "Conversation ID",
"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",
"todayAgentRunFailCount": "Agent Run 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": "Invalid avatar.",
"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",
"avatarPlaceholder": "Upload avatar",
"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": "Upload avatar",
"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",
"workflow": "Workflow",
"configure": "Configure",
"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.",
"loadMCPToolsFailed": "Could not load MCP 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",
"mcpToolsTab": "MCP 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}",
"mcpToolsHint": "Select the MCP Tools this Agent is allowed to call.",
"selectToolGroup": "Select tool group",
"searchToolGroup": "Search tool groups",
"emptyToolGroup": "No tool groups available",
"selectMCPTool": "Select MCP Tool",
"searchMCPTool": "Search MCP Tools",
"emptyMCPTool": "No MCP Tools available",
"noMCPToolsHint": "Without MCP Tools, the Agent will not call external MCP Tools.",
"removeMCPTool": "Remove MCP 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",
"searchStatus": "Search statuses",
"emptyStatus": "No matching statuses",
"query": "Search",
"status": "Status",
"updatedAt": "Last Updated",
"actions": "Actions",
"loadingRows": "Loading skills...",
"emptyRows": "No matching skills",
"nameRequired": "Enter a skill name.",
"instructionRequired": "Enter skill instructions.",
"editTitle": "Edit",
"createTitle": "New",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save",
"create": "Create",
"loading": "Loading...",
"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",
"traceData": "Trace Data",
"resumeTraceData": "Resume Trace 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 capability calls and reply inside the Agent Loop.",
"debugSummary": "Debug Summary",
"interrupted": "Interrupted",
"notInterrupted": "Not interrupted",
"skillName": "Skill Name",
"none": "None",
"errorMessage": "Error Message",
"toolView": "Tool View",
"skillToolWhitelist": "Skill Tool Allowlist",
"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"
},
"knowledge": {
"document": "Documents",
"faq": "FAQ",
"retrieveLogs": "Retrieval Logs",
"expandList": "Expand knowledge base list",
"collapseList": "Collapse knowledge base list",
"resizeList": "Resize 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",
"status": "Status",
"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.",
"loadDirectoriesFailed": "Could not load directories.",
"directoryCreated": "Directory created: {name}",
"directoryUpdated": "Directory updated: {name}",
"directoryDeleted": "Directory deleted: {name}",
"directorySaveFailed": "Could not save the directory.",
"directoryDeleteFailed": "Could not delete the directory.",
"directoryMoved": "Directory moved.",
"directoryMoveFailed": "Could not move directory.",
"directorySortUpdated": "Directory order updated.",
"directorySortUpdateFailed": "Could not update directory order.",
"directoryNameRequired": "Directory name is required.",
"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}",
"view": "View",
"edit": "Edit",
"rebuilding": "Rebuilding...",
"rebuildIndex": "Rebuild Index",
"deleting": "Deleting...",
"delete": "Delete",
"move": "Move",
"moving": "Moving...",
"selectedCount": "{count} selected",
"clearSelection": "Clear selection",
"selectCurrentPage": "Select current page",
"selectItem": "Select {name}",
"batchMove": "Move selected",
"batchMoveDescription": "Move {count} selected items to a directory.",
"batchMoved": "{count} items moved.",
"batchMoveFailed": "Could not move selected items.",
"batchDelete": "Delete selected",
"batchDeleteConfirm": "Delete {count} selected items? This cannot be undone.",
"batchDeleted": "{count} items deleted.",
"batchDeleteFailed": "Could not delete selected items.",
"targetDirectory": "Target directory",
"directory": "Directory",
"resizeDirectoryPanel": "Resize directory panel",
"allContent": "All content",
"rootContent": "Root content",
"rootDirectory": "Root directory",
"parentDirectory": "Parent directory",
"createDirectory": "New directory",
"createSubDirectory": "New subdirectory",
"editDirectory": "Edit directory",
"expandDirectory": "Expand directory",
"collapseDirectory": "Collapse directory",
"selectDirectory": "Select directory",
"searchDirectory": "Search directories",
"emptyDirectory": "No matching directories",
"directoryName": "Directory name",
"directoryNamePlaceholder": "Enter directory name",
"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",
"viewDocumentTitle": "View 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",
"indexedAtLabel": "Indexed At",
"similarQuestions": "Similar Questions",
"updatedAt": "Updated",
"createUser": "Created By",
"updateUser": "Updated By",
"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",
"viewFAQTitle": "View FAQ",
"standardQuestion": "Primary Question",
"questionPlaceholder": "Enter the primary question",
"answer": "Answer",
"answerPlaceholder": "Enter the FAQ answer",
"similarQuestionsPlaceholder": "One similar question per line",
"importRowFailed": "Row {row}: {message}",
"importFailed": "Import failed.",
"importFAQTitle": "Import FAQ",
"importFAQDescription": "Upload an Excel file to import FAQs in bulk. Required columns: primary question and answer. Put one similar question per line in the same cell.",
"downloadTemplate": "Download Template",
"downloadTemplateFailed": "Could not download the template.",
"importing": "Importing...",
"startImport": "Start Import",
"importFile": "Import File",
"chooseFile": "Choose File",
"importFileDescription": "Only .xlsx files are supported.",
"currentFile": "Current file: {name}",
"importHint": "Import Notes",
"importXlsxHint": "The template columns are primary question, answer, similar questions, and remark. Put one similar question per line inside the cell.",
"importXlsxOnly": "Only .xlsx files are supported.",
"importMode": "Import Mode",
"selectImportMode": "Select import mode",
"searchImportMode": "Search import mode",
"emptyImportMode": "No import modes found",
"importModeAppend": "Append Import",
"importModeOverwrite": "Overwrite Import",
"importModeAppendDescription": "Only creates primary questions that do not already exist. Existing primary questions are skipped.",
"importModeOverwriteDescription": "Matches by primary question and updates existing FAQs. Missing primary questions are created.",
"importResult": "Import Result",
"importTotal": "Total",
"importCreated": "Created",
"importUpdated": "Updated",
"importSkipped": "Skipped",
"importFailedCount": "Failed",
"importFAQResultToast": "Created {created}, updated {updated}, skipped {skipped}, failed {failed}",
"exportFAQ": "Export FAQ",
"exportFAQSuccess": "FAQ export download started.",
"exportFAQFailed": "Could not export FAQs.",
"none": "None",
"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"
},
"workflowRun": {
"allStatus": "All statuses",
"completed": "Completed",
"interrupted": "Interrupted",
"failed": "Failed",
"allAgents": "All agents",
"loadAgentsFailed": "Could not load AI agents.",
"loadDetailFailed": "Could not load workflow run details.",
"loadConversationFailed": "Could not load conversation details.",
"conversationId": "Conversation ID",
"messageId": "Message ID",
"workflowVersionId": "Workflow Version ID",
"agent": "Agent",
"searchAgent": "Search agents",
"emptyAgent": "No agents found",
"status": "Status",
"startedAt": "Started At",
"endedAt": "Ended At",
"workflow": "Workflow",
"version": "Version",
"message": "Message",
"conversationShort": "Conversation #{id}",
"messageShort": "Message #{id}",
"duration": "Duration",
"error": "Error",
"refresh": "Refresh",
"query": "Search",
"loading": "Loading workflow runs",
"empty": "No workflow runs yet",
"loadFailed": "Could not load workflow runs.",
"detailTitle": "Workflow Run Detail",
"detailDescription": "Inspect workflow execution path",
"close": "Close",
"loadingDetail": "Loading workflow run detail",
"interruptNode": "Interrupt Node",
"nodeDetails": "Node Run Details",
"emptyNodes": "No node records",
"notFound": "Workflow run not found",
"input": "Input",
"output": "Output"
},
"agentRun": {
"conversation": "Conversation",
"agent": "Agent",
"engine": "Engine",
"status": "Status",
"startedAt": "Started",
"duration": "Duration",
"tokens": "Input/Output Tokens",
"error": "Error",
"refresh": "Refresh",
"query": "Query",
"loading": "Loading agent runs",
"empty": "No agent runs",
"loadFailed": "Failed to load agent runs",
"loadDetailFailed": "Failed to load agent run detail",
"detailTitle": "Agent Run Detail",
"detailDescription": "View the unified run audit",
"loadingDetail": "Loading agent run detail",
"close": "Close",
"revision": "Revision",
"trace": "Trace",
"steps": "Steps",
"emptySteps": "No steps recorded",
"toolCalls": "Tool Calls",
"emptyToolCalls": "No tool calls recorded",
"input": "Input Preview",
"output": "Output Preview",
"arguments": "Arguments Preview",
"result": "Result Preview",
"notFound": "Agent run not found"
},
"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": "Human Agents",
"agentTeamSchedules": "Team Schedules",
"channels": "Channels",
"aiCapabilities": "AI Capabilities",
"knowledge": "Knowledge Base",
"aiConfigs": "Model Settings",
"aiAgents": "Agents",
"aiWorkflows": "AI Workflows",
"workflowRuns": "Workflow Audit",
"workflows": "Workflows",
"agentRuns": "Agent Audit",
"skillDefinition": "Skills",
"mcp": "MCP tools",
"system": "System",
"users": "Users",
"roles": "Roles",
"permissions": "Permissions",
"dashboardHome": "Dashboard",
"notifications": "Notifications",
"preferences": "Preferences",
"changePassword": "Change Password",
"signOut": "Sign Out"
},
"workspace": {
"dashboard": "Admin Dashboard",
"workbench": "Support Workbench",
"switchWorkspace": "Switch workspace"
},
"theme": {
"toggle": "Change theme",
"light": "Light",
"dark": "Dark",
"system": "System"
},
"palette": {
"toggle": "Change accent color",
"plain": "Default",
"green": "Service Green",
"gray": "Neutral Gray",
"blue": "Clear Blue"
}
}