Files
ai-agent/web/messages/en-US.json
T

2213 lines
91 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",
"badge": "Shell AI",
"welcome": "Welcome to Shell AI Support",
"username": "Username",
"usernamePlaceholder": "Username or email",
"password": "Password",
"passwordPlaceholder": "Enter your password",
"signingIn": "Signing in...",
"signIn": "Sign in",
"wxworkSignIn": "Sign in with WeCom",
"oidcSignIn": "Sign in with OIDC",
"heroBadge": "Secure Admin Workspace",
"heroTitle": "Shell AI Support",
"heroSubtitle": "Understand every issue, respond faster, and turn support into accountable outcomes.",
"heroPoint1": "Guide every conversation toward a trackable resolution.",
"heroPoint2": "Keep intake, routing, handoff, and review in one workflow.",
"heroPoint3": "Connect every channel, route intelligently, and help people work with AI.",
"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"
},
"kefu": {
"title": "Support",
"agentLabel": "Support",
"customerSelf": "You",
"customerFallback": "G",
"newMessage": "New message",
"justNow": "Just now",
"todayAt": "Today {time}",
"loadingOlder": "Loading...",
"loadOlder": "Load earlier messages",
"emptyPrompt": "Describe your issue and we will help as soon as possible.",
"agentRead": "Seen by support",
"agentUnread": "Not seen by support",
"imageSummary": "[Image]",
"attachmentSummary": "[Attachment]",
"messageSummary": "[Message]",
"closedTitle": "Conversation ended",
"closedDescription": "This support conversation has been closed. Thanks for chatting with us.",
"connecting": "Connecting",
"connected": "Online support",
"disconnected": "Disconnected",
"retry": "Reconnect",
"moreActions": "More actions",
"minimize": "Minimize window",
"maximize": "Maximize",
"maximizeWindow": "Maximize chat window",
"restoreWindow": "Restore window",
"closeWindow": "Close window",
"closeChatWindow": "Close chat window",
"closeDialogTitle": "End this conversation?",
"closeDialogDescription": "After ending the conversation, support agents will no longer be able to view this message history. Start a new chat if you need more help.",
"continueConversation": "Continue Chat",
"closing": "Ending...",
"confirmClose": "End Conversation",
"initFailed": "Could not start the chat.",
"loadMessagesFailed": "Could not load messages.",
"syncMessagesFailed": "Could not sync messages.",
"loadHistoryFailed": "Could not load earlier messages.",
"sendMessageFailed": "Could not send the message.",
"uploadImageFailed": "Could not upload the image.",
"sendAttachmentFailed": "Could not send the attachment.",
"closeConversationFailed": "Could not close the conversation.",
"refreshFailed": "Could not refresh the chat."
},
"dashboardHome": {
"rangeToday": "Today",
"range7d": "Last 7 days",
"range30d": "Last 30 days",
"loadFailed": "Could not load the dashboard overview.",
"title": "Dashboard",
"description": "Track support conversations, tickets, agent capacity, and AI operations.",
"updatedAt": ", updated at {time}",
"refresh": "Refresh",
"conversationTrend": "Conversation Trend",
"conversationTrendDescription": "Track new and closed conversations to spot rising support pressure early.",
"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"
}
}