fix(frontend): translate AssignmentPolicy/ConversationWorkflow to zh_CN + fix Agent Assignment crash

- Add Chinese translations for ASSIGNMENT_POLICY, CONVERSATION_WORKFLOW
  sections and SIDEBAR labels in zh_CN settings.json
- Fix AssignmentCard.vue: v-for :key used feature.id which was always
  undefined (feature objects have no id field), causing duplicate keys
  and Vue reconciliation crash (Cannot read properties of null reading
  parentNode) when navigating to the Agent Assignment settings page
This commit is contained in:
2026-07-08 17:18:33 +08:00
parent f2a68da116
commit 3fb3126b4c
2 changed files with 146 additions and 146 deletions
@@ -34,8 +34,8 @@ const handleClick = () => {
<ul class="flex flex-col items-start gap-3 mt-3">
<li
v-for="feature in features"
:key="feature.id"
v-for="(feature, index) in features"
:key="index"
class="flex items-center gap-3 text-body-para"
>
<Icon
@@ -358,7 +358,7 @@
"REPORTS_LABEL": "标签",
"REPORTS_INBOX": "收件箱",
"REPORTS_TEAM": "团队",
"AGENT_ASSIGNMENT": "Agent Assignment",
"AGENT_ASSIGNMENT": "客服分配",
"SET_AVAILABILITY_TITLE": "将自己设置为",
"SET_YOUR_AVAILABILITY": "设置您的可用性",
"SLA": "SLA",
@@ -382,7 +382,7 @@
"DOCS": "阅读文档",
"SECURITY": "安全",
"CAPTAIN_AI": "Captain",
"CONVERSATION_WORKFLOW": "Conversation Workflow"
"CONVERSATION_WORKFLOW": "会话工作流"
},
"CAPTAIN_SETTINGS": {
"TITLE": "Captain Settings",
@@ -561,35 +561,35 @@
"CONVERSATION_WORKFLOW": {
"INDEX": {
"HEADER": {
"TITLE": "Conversation Workflows",
"DESCRIPTION": "Configure rules and required fields for conversation resolution."
"TITLE": "会话工作流",
"DESCRIPTION": "配置会话解决的规则和必填字段。"
}
},
"REQUIRED_ATTRIBUTES": {
"TITLE": "Attributes required on resolution",
"DESCRIPTION": "When resolving a conversation, agents will be prompted to fill these attributes if they haven't yet.",
"NO_ATTRIBUTES": "No attributes added yet",
"TITLE": "解决时必填属性",
"DESCRIPTION": "解决会话时,如果客服尚未填写这些属性,系统将提示他们填写。",
"NO_ATTRIBUTES": "暂未添加属性",
"ADD": {
"TITLE": "Add Attributes",
"TITLE": "添加属性",
"SEARCH_PLACEHOLDER": "搜索属性"
},
"SAVE": {
"SUCCESS": "Required attributes updated",
"ERROR": "Could not update required attributes, please try again"
"SUCCESS": "必填属性已更新",
"ERROR": "无法更新必填属性,请重试"
},
"MODAL": {
"TITLE": "解决会话",
"DESCRIPTION": "Please fill in the following custom attributes before resolving this conversation",
"DESCRIPTION": "请在解决此会话前填写以下自定义属性",
"ACTIONS": {
"RESOLVE": "解决会话",
"CANCEL": "取消"
},
"PLACEHOLDERS": {
"TEXT": "Write a note...",
"NUMBER": "Enter a number",
"LINK": "Add a link",
"DATE": "Pick a date",
"LIST": "Select an option"
"TEXT": "写备注...",
"NUMBER": "输入数字",
"LINK": "添加链接",
"DATE": "选择日期",
"LIST": "选择选项"
},
"CHECKBOX": {
"YES": "是",
@@ -597,15 +597,15 @@
}
},
"PAYWALL": {
"TITLE": "Upgrade to use required attributes",
"AVAILABLE_ON": "The required conversation attributes feature is available on the Business and Enterprise plans.",
"UPGRADE_PROMPT": "Upgrade your plan to prompt agents to fill required attributes before conversation resolution.",
"TITLE": "升级以使用必填属性",
"AVAILABLE_ON": "会话必填属性功能适用于商业版和企业版。",
"UPGRADE_PROMPT": "升级您的套餐,以在会话解决前提示客服填写必填属性。",
"UPGRADE_NOW": "立即升级",
"CANCEL_ANYTIME": "您可以随时更改或取消您的计划"
"CANCEL_ANYTIME": "您可以随时更改或取消您的套餐"
},
"ENTERPRISE_PAYWALL": {
"AVAILABLE_ON": "The required conversation attributes feature is available on the paid plans.",
"UPGRADE_PROMPT": "Upgrade to a paid plan to enforce required attributes before conversation resolution.",
"AVAILABLE_ON": "会话必填属性功能适用于付费套餐。",
"UPGRADE_PROMPT": "升级到付费套餐,以在会话解决前强制填写必填属性。",
"ASK_ADMIN": "请联系您的管理员进行升级。"
}
}
@@ -650,272 +650,272 @@
"ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent assignment",
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
"TITLE": "客服分配",
"DESCRIPTION": "定义策略以有效管理工作量,并根据收件箱和客服的需求路由会话。了解更多"
},
"ASSIGNMENT_POLICY": {
"TITLE": "Assignment policy",
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
"TITLE": "分配策略",
"DESCRIPTION": "管理会话在收件箱中的分配方式。",
"FEATURES": [
"Assign by conversations evenly or by available capacity",
"Add fair distribution rules to avoid overloading any agent",
"Add inboxes to a policy - one policy per inbox"
"按会话均匀分配或按可用容量分配",
"添加公平分配规则,避免任何客服过载",
"为策略添加收件箱 - 每个收件箱一个策略"
]
},
"AGENT_CAPACITY_POLICY": {
"TITLE": "Agent capacity policy",
"DESCRIPTION": "Manage workload for agents.",
"TITLE": "客服容量策略",
"DESCRIPTION": "管理客服的工作量。",
"FEATURES": [
"Define maximum conversations per inbox",
"Create exceptions based on labels and time",
"Add agents to a policy - one policy per agent"
"定义每个收件箱的最大会话数",
"根据标签和时间创建例外",
"为策略添加客服 - 每个客服一个策略"
]
}
},
"AGENT_ASSIGNMENT_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Assignment policy",
"CREATE_POLICY": "New policy"
"TITLE": "分配策略",
"CREATE_POLICY": "新建策略"
},
"CARD": {
"ORDER": "Order",
"ORDER": "顺序",
"PRIORITY": "优先级",
"ACTIVE": "状态",
"INACTIVE": "Inactive",
"POPOVER": "Added inboxes",
"ACTIVE": "已启用",
"INACTIVE": "已停用",
"POPOVER": "已添加的收件箱",
"EDIT": "编辑"
},
"NO_RECORDS_FOUND": "No assignment policies found"
"NO_RECORDS_FOUND": "未找到分配策略"
},
"CREATE": {
"HEADER": {
"TITLE": "Create assignment policy"
"TITLE": "创建分配策略"
},
"CREATE_BUTTON": "Create policy",
"CREATE_BUTTON": "创建策略",
"API": {
"SUCCESS_MESSAGE": "Assignment policy created successfully",
"ERROR_MESSAGE": "Failed to create assignment policy",
"INBOX_LINKED": "Inbox has been linked to the policy"
"SUCCESS_MESSAGE": "分配策略创建成功",
"ERROR_MESSAGE": "创建分配策略失败",
"INBOX_LINKED": "收件箱已关联到策略"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit assignment policy"
"TITLE": "编辑分配策略"
},
"EDIT_BUTTON": "Update policy",
"EDIT_BUTTON": "更新策略",
"CONFIRM_ADD_INBOX_DIALOG": {
"TITLE": "Add inbox",
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"TITLE": "添加收件箱",
"DESCRIPTION": "{inboxName} 收件箱已关联到其他策略。确定要将其关联到此策略吗?它将从其他策略中取消关联。",
"CONFIRM_BUTTON_LABEL": "继续",
"CANCEL_BUTTON_LABEL": "取消"
},
"INBOX_LINK_PROMPT": {
"TITLE": "Link inbox to policy",
"DESCRIPTION": "Would you like to link this inbox to the assignment policy?",
"LINK_BUTTON": "Link inbox",
"CANCEL_BUTTON": "Skip"
"TITLE": "关联收件箱到策略",
"DESCRIPTION": "是否要将此收件箱关联到分配策略?",
"LINK_BUTTON": "关联收件箱",
"CANCEL_BUTTON": "跳过"
},
"API": {
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
"ERROR_MESSAGE": "Failed to update assignment policy"
"SUCCESS_MESSAGE": "分配策略更新成功",
"ERROR_MESSAGE": "更新分配策略失败"
},
"INBOX_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
"ERROR_MESSAGE": "Failed to add inbox to policy"
"SUCCESS_MESSAGE": "收件箱已成功添加到策略",
"ERROR_MESSAGE": "添加收件箱到策略失败"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove inbox from policy"
"SUCCESS_MESSAGE": "收件箱已从策略中移除",
"ERROR_MESSAGE": "从策略中移除收件箱失败"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
"LABEL": "策略名称:",
"PLACEHOLDER": "输入策略名称"
},
"DESCRIPTION": {
"LABEL": "描述:",
"LABEL": "描述",
"PLACEHOLDER": "输入描述"
},
"STATUS": {
"LABEL": "状态:",
"LABEL": "状态",
"PLACEHOLDER": "选择状态",
"ACTIVE": "Policy is active",
"INACTIVE": "Policy is inactive"
"ACTIVE": "策略已启用",
"INACTIVE": "策略已停用"
},
"ASSIGNMENT_ORDER": {
"LABEL": "Assignment order",
"LABEL": "分配顺序",
"ROUND_ROBIN": {
"LABEL": "Round robin",
"DESCRIPTION": "Assign conversations evenly among agents."
"LABEL": "轮询分配",
"DESCRIPTION": "在客服之间均匀分配会话。"
},
"BALANCED": {
"LABEL": "Balanced",
"DESCRIPTION": "Assign conversations based on available capacity.",
"PREMIUM_MESSAGE": "Upgrade to access balanced assignment and agent capacity management.",
"PREMIUM_BADGE": "Premium"
"LABEL": "均衡分配",
"DESCRIPTION": "根据可用容量分配会话。",
"PREMIUM_MESSAGE": "升级以使用均衡分配和客服容量管理。",
"PREMIUM_BADGE": "高级"
}
},
"ASSIGNMENT_PRIORITY": {
"LABEL": "Assignment priority",
"LABEL": "分配优先级",
"EARLIEST_CREATED": {
"LABEL": "Earliest created",
"DESCRIPTION": "The conversation that was created first gets assigned first."
"LABEL": "最早创建",
"DESCRIPTION": "最先创建的会话优先分配。"
},
"LONGEST_WAITING": {
"LABEL": "Longest waiting",
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
"LABEL": "等待最久",
"DESCRIPTION": "等待时间最长的会话优先分配。"
}
},
"FAIR_DISTRIBUTION": {
"LABEL": "Fair distribution policy",
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
"INPUT_MAX": "Assign max",
"DURATION": "Conversations per agent in every"
"LABEL": "公平分配策略",
"DESCRIPTION": "设置在时间窗口内每个客服可分配的最大会话数,避免任何客服过载。此必填字段默认为每小时 100 个会话。",
"INPUT_MAX": "最大分配数",
"DURATION": "每个客服在每"
},
"INBOXES": {
"LABEL": "Added inboxes",
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
"ADD_BUTTON": "Add inbox",
"LABEL": "已添加的收件箱",
"DESCRIPTION": "添加此策略适用的收件箱。",
"ADD_BUTTON": "添加收件箱",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
"SEARCH_PLACEHOLDER": "搜索并选择要添加的收件箱",
"ADD_BUTTON": "添加"
},
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
"EMPTY_STATE": "此策略暂无收件箱,添加一个收件箱以开始",
"API": {
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
"ERROR_MESSAGE": "Failed to add inbox to policy"
"SUCCESS_MESSAGE": "收件箱已成功添加到策略",
"ERROR_MESSAGE": "添加收件箱到策略失败"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete assignment policy"
"SUCCESS_MESSAGE": "分配策略删除成功",
"ERROR_MESSAGE": "删除分配策略失败"
}
},
"AGENT_CAPACITY_POLICY": {
"INDEX": {
"HEADER": {
"TITLE": "Agent capacity",
"CREATE_POLICY": "New policy"
"TITLE": "客服容量",
"CREATE_POLICY": "新建策略"
},
"CARD": {
"POPOVER": "Added agents",
"POPOVER": "已添加的客服",
"EDIT": "编辑"
},
"NO_RECORDS_FOUND": "No agent capacity policies found"
"NO_RECORDS_FOUND": "未找到客服容量策略"
},
"CREATE": {
"HEADER": {
"TITLE": "Create agent capacity policy"
"TITLE": "创建客服容量策略"
},
"CREATE_BUTTON": "Create policy",
"CREATE_BUTTON": "创建策略",
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
"ERROR_MESSAGE": "Failed to create agent capacity policy"
"SUCCESS_MESSAGE": "客服容量策略创建成功",
"ERROR_MESSAGE": "创建客服容量策略失败"
}
},
"EDIT": {
"HEADER": {
"TITLE": "Edit agent capacity policy"
"TITLE": "编辑客服容量策略"
},
"EDIT_BUTTON": "Update policy",
"EDIT_BUTTON": "更新策略",
"CONFIRM_ADD_AGENT_DIALOG": {
"TITLE": "Add agent",
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
"CONFIRM_BUTTON_LABEL": "Continue",
"TITLE": "添加客服",
"DESCRIPTION": "{agentName} 已关联到其他策略。确定要将其关联到此策略吗?它将从其他策略中取消关联。",
"CONFIRM_BUTTON_LABEL": "继续",
"CANCEL_BUTTON_LABEL": "取消"
},
"API": {
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
"ERROR_MESSAGE": "Failed to update agent capacity policy"
"SUCCESS_MESSAGE": "客服容量策略更新成功",
"ERROR_MESSAGE": "更新客服容量策略失败"
},
"AGENT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Agent added to policy successfully",
"ERROR_MESSAGE": "Failed to add agent to policy"
"SUCCESS_MESSAGE": "客服已成功添加到策略",
"ERROR_MESSAGE": "添加客服到策略失败"
},
"REMOVE": {
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
"ERROR_MESSAGE": "Failed to remove agent from policy"
"SUCCESS_MESSAGE": "客服已从策略中移除",
"ERROR_MESSAGE": "从策略中移除客服失败"
}
},
"INBOX_LIMIT_API": {
"ADD": {
"SUCCESS_MESSAGE": "Inbox limit added successfully",
"ERROR_MESSAGE": "Failed to add inbox limit"
"SUCCESS_MESSAGE": "收件箱限制添加成功",
"ERROR_MESSAGE": "添加收件箱限制失败"
},
"UPDATE": {
"SUCCESS_MESSAGE": "Inbox limit updated successfully",
"ERROR_MESSAGE": "Failed to update inbox limit"
"SUCCESS_MESSAGE": "收件箱限制更新成功",
"ERROR_MESSAGE": "更新收件箱限制失败"
},
"DELETE": {
"SUCCESS_MESSAGE": "Inbox limit deleted successfully",
"ERROR_MESSAGE": "Failed to delete inbox limit"
"SUCCESS_MESSAGE": "收件箱限制删除成功",
"ERROR_MESSAGE": "删除收件箱限制失败"
}
}
},
"FORM": {
"NAME": {
"LABEL": "Policy name:",
"PLACEHOLDER": "Enter policy name"
"LABEL": "策略名称:",
"PLACEHOLDER": "输入策略名称"
},
"DESCRIPTION": {
"LABEL": "描述:",
"LABEL": "描述",
"PLACEHOLDER": "输入描述"
},
"INBOX_CAPACITY_LIMIT": {
"LABEL": "Inbox capacity limits",
"ADD_BUTTON": "Add inbox",
"LABEL": "收件箱容量限制",
"ADD_BUTTON": "添加收件箱",
"FIELD": {
"SELECT_INBOX": "Select inbox",
"MAX_CONVERSATIONS": "Max conversations",
"SET_LIMIT": "Set limit"
"SELECT_INBOX": "选择收件箱",
"MAX_CONVERSATIONS": "最大会话数",
"SET_LIMIT": "设置限制"
},
"EMPTY_STATE": "没有设置收件箱限制"
"EMPTY_STATE": "设置收件箱限制"
},
"EXCLUSION_RULES": {
"LABEL": "Exclusion rules",
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
"LABEL": "排除规则",
"DESCRIPTION": "满足以下条件的会话不计入客服容量",
"TAGS": {
"LABEL": "Exclude conversations tagged with specific labels",
"LABEL": "排除带有特定标签的会话",
"ADD_TAG": "添加标签",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select tags to add"
"SEARCH_PLACEHOLDER": "搜索并选择要添加的标签"
},
"EMPTY_STATE": "No tags added to this policy."
"EMPTY_STATE": "此策略暂无标签。"
},
"DURATION": {
"LABEL": "Exclude conversations older than a specified duration",
"PLACEHOLDER": "Set time"
"LABEL": "排除超过指定时长的会话",
"PLACEHOLDER": "设置时间"
}
},
"USERS": {
"LABEL": "Assigned agents",
"DESCRIPTION": "Add agents for which this policy will be applicable.",
"ADD_BUTTON": "Add agent",
"LABEL": "已分配的客服",
"DESCRIPTION": "添加此策略适用的客服。",
"ADD_BUTTON": "添加客服",
"DROPDOWN": {
"SEARCH_PLACEHOLDER": "Search and select agents to add",
"SEARCH_PLACEHOLDER": "搜索并选择要添加的客服",
"ADD_BUTTON": "添加"
},
"EMPTY_STATE": "No agents added",
"EMPTY_STATE": "未添加客服",
"API": {
"SUCCESS_MESSAGE": "Agent successfully added to policy",
"ERROR_MESSAGE": "Failed to add agent to policy"
"SUCCESS_MESSAGE": "客服已成功添加到策略",
"ERROR_MESSAGE": "添加客服到策略失败"
}
}
},
"DELETE_POLICY": {
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
"SUCCESS_MESSAGE": "客服容量策略删除成功",
"ERROR_MESSAGE": "删除客服容量策略失败"
}
},
"DELETE_POLICY": {
"TITLE": "Delete policy",
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
"TITLE": "删除策略",
"DESCRIPTION": "确定要删除此策略吗?此操作无法撤销。",
"CONFIRM_BUTTON_LABEL": "删除",
"CANCEL_BUTTON_LABEL": "取消"
}