const zn={
// 通用表单项
'component.formItem.ip': '地址',
'component.formItem.range': '范围',
'component.formItem.subnet': '子网',
'component.formItem.any': 'any',
'component.formItem.fqdn': 'FQDN',
// 地址
'component.formItem.ipList': '地址',
'component.formItem.srcIpList': '源地址',
'component.formItem.destIpList': '目的地址',
'component.formItem.ip.tooltip': '可输入单个IP{validateType}',
'component.formItem.ipList.tooltip':
'可输入IP{validateType},支持多项输入,通过{tokenSeparators}分隔',
'component.formItem.ipSelect.tooltip': '可选择对象管理的地址对象',
'component.formItem.bothV4V6': '支持IPv4和IPv6',
'component.formItem.onlyIPOrOnlyFQDN': '不可同时输入IP和FQDN',
// 服务
'component.formItem.serviceList': '服务',
'component.formItem.serviceList.tooltip': '选择对象管理的服务对象',
'component.formItem.tcpUdp.port': '端口',
'component.formItem.tcpUdp.tooltip':
'源端口可输入any/端口号/端口范围,目的端口可输入端口号/端口范围,支持多项输入,通过,分割',
// 过期时间
'component.formItem.expiredTime': '过期时间',
'component.formItem.expiredTime.unexpired': '未过期',
'component.formItem.expiredTime.1day': '今天',
'component.formItem.expiredTime.3days': '近3天',
'component.formItem.expiredTime.7days': '近7天',
'component.formItem.expiredTime.30days': '近30天',
'component.formItem.expiredTime.90days': '近90天',
'component.formItem.expiredTime.180days': '近180天',
'component.formItem.expiredTime.hasExpired': '已过期',
'component.formItem.expiredTime.neverExpired': '永久生效',
'component.formItem.expiredTime.-3days': '已过期超3天',
'component.formItem.expiredTime.-7days': '已过期超7天',
'component.formItem.expiredTime.-90days': '已过期超90天',
'component.multiPath.task.timeout': '寻路超时',
'component.recommendStrategy': '策略开通建议',
'component.recommendStrategy.noRecommendation': '暂无策略开通建议',
'component.recommendStrategy.srcZone': '源域',
'component.recommendStrategy.srcIpList': '源IP',
'component.recommendStrategy.srcInterface': '源接口',
'component.recommendStrategy.destZone': '目的域',
'component.recommendStrategy.destIpList': '目的IP',
'component.recommendStrategy.destInterface': '目的接口',
'component.recommendStrategy.serviceList': '服务',
'component.recommendStrategy.effectTimeRange': '生效时间',
'component.recommendStrategy.redundancyResult': '冗余结果',
'component.recommendStrategy.tip': '根据输入源目地址协议端口分析防火墙是否需要开通策略',
'component.sortingDrawer.tip': '字段筛选',
'component.sortingDrawer.title': '筛选',
'component.sortingDrawer.optionalFields': '可选字段',
'component.sortingDrawer.selectedFields': '已选字段',
'component.sortingDrawer.fieldName': '列表名',
// ImportExport
'component.upload.clickOrDrag': '点击或拖拽文件到当前区域,进行上传',
'component.upload.extensions': '支持扩展名: {extensions}',
'component.upload.extensions.error': '文件类型错误,请重新选择',
'component.upload.fileList.empty': '文件列表为空,请选择文件',
// GenerateCommandsButton
'component.generateCommand': '生成命令',
'component.generateCommand.start': '开始生成命令',
'component.generateCommand.config': '一键下发',
'component.generateCommand.rollback': '一键回退',
// Execution
'execution.device': '设备',
'execution.CommandType': '命令类型',
'execution.execute.Config': '执行配置',
'execution.execute.ScheduleConfig': '执行定时配置',
'execution.execute.Rollback': '执行回退',
'execution.execute.schedule.set': '设置定时执行',
'execution.execute.schedule.cancel': '取消定时执行',
'execution.execute.time': '定时时间',
'execution.schedule.success': '定时成功',
'execution.schedule.error': '定时失败',
'execution.schedule.cancel.success': '取消定时成功',
'execution.schedule.cancel.error': '取消定时失败',
'execution.device.firewallOwner.tip': '设备归属人是{firewallOwner},无权限处理',
'execution.executionStatus.noConfig': '无需配置',
'execution.executionStatus.pending': '未开始',
'execution.executionStatus.Config': '配置中',
'execution.executionStatus.ScheduleConfig': '定时配置',
'execution.executionStatus.ConfigSuccess': '配置成功',
'execution.executionStatus.ConfigFail': '配置失败',
'execution.executionStatus.Rollback': '回退中',
'execution.executionStatus.RollbackSuccess': '回退成功',
'execution.executionStatus.RollbackFail': '回退失败',
'execution.ConfigTime': '配置时间',
'execution.RollbackTime': '回退时间',
'execution.Config': '配置命令',
'execution.Rollback': '回退命令',
'execution.command.notSave': '命令内容仍是编辑状态,请先保存或取消编辑',
'execution.command.empty': '命令为空',
'execution.hasExecuted.confirm': '已存在执行结果, 原执行结果将会被清除,是否确认继续?',
'execution.deviceResult': '设备回显',
'execution.scriptResult': '脚本回显',
'execution.ConfigResult': '配置结果',
'execution.RollbackResult': '回退结果',
'execution.copy.success': '已复制命令到剪贴板',
'execution.copy.failed': '复制失败',
}
const en={
// 通用表单项
'component.formItem.ip': 'Address',
'component.formItem.range': 'Range',
'component.formItem.subnet': 'Subnet',
'component.formItem.any': 'any',
'component.formItem.fqdn': 'FQDN',
// 地址
'component.formItem.ipList': 'Address',
'component.formItem.srcIpList': 'Src Address',
'component.formItem.destIpList': 'Dst Address',
'component.formItem.ip.tooltip': 'Please enter a single IP {validateType}',
'component.formItem.ipList.tooltip':
'Please enter IP {validateType}, multiple inputs are supported, separated by ;',
'component.formItem.ipList.onlyIPOrOnlyFQDN.tooltip':
'Please enter IP {validateType}, multiple inputs are supported, IP and FQDN cannot be entered at the same time, separated by;',
'component.formItem.bothV4V6': 'Support IPv4 and IPv6',
'component.formItem.ipSelect.tooltip': 'Select the address object for object management',
// 服务
'component.formItem.serviceList': 'Service',
'component.formItem.serviceList.tooltip': 'Select service objects for object management',
'component.formItem.tcpUdp.port': 'Port',
'component.formItem.tcpUdp.tooltip':
'You can enter any source port, or you can enter a port number and port number range. You can enter a port number and port range for the destination port. It supports data input, pass, and split.',
// 过期时间
'component.formItem.expiredTime': 'Expired Time',
'component.formItem.expiredTime.unexpired': 'Unexpired',
'component.formItem.expiredTime.1day': 'today',
'component.formItem.expiredTime.1days': 'Expired today',
'component.formItem.expiredTime.3days': 'Expired in the past 3 days',
'component.formItem.expiredTime.7days': 'Expired in the past 7 days',
'component.formItem.expiredTime.30days': 'Expired in nearly 30 days',
'component.formItem.expiredTime.90days': 'Expired in nearly 90 days',
'component.formItem.expiredTime.180days': 'Expired in nearly 180 days',
'component.formItem.expiredTime.hasExpired': 'Has Expired',
'component.formItem.expiredTime.neverExpired': 'Never Expired',
'component.formItem.expiredTime.-3days': 'Has Expired 3 days',
'component.formItem.expiredTime.-7days': 'Has Expired 7 days',
'component.formItem.expiredTime.-90days': 'Has Expired 90 days',
'component.multiPath.task.timeout': 'Pathfinding timeout',
'component.recommendStrategy': 'Recommend Policy',
'component.recommendStrategy.noRecommendation': 'No Recommendation',
'component.recommendStrategy.srcZone': 'Source Zone',
'component.recommendStrategy.srcIpList': 'Source Ip',
'component.recommendStrategy.srcInterface': 'Source Interface',
'component.recommendStrategy.destZone': 'Destination Zone',
'component.recommendStrategy.destIpList': 'Destination Ip',
'component.recommendStrategy.destInterface': 'Destination Interface',
'component.recommendStrategy.serviceList': 'Service',
'component.recommendStrategy.effectTimeRange': 'Effective Date',
'component.recommendStrategy.redundancyResult': 'Redundancy Result',
'component.recommendStrategy.tip':
'Analyze whether the firewall needs to be enabled based on the input source address, protocol port, and port',
'component.sortingDrawer.tip': 'Fields Filter',
'component.sortingDrawer.title': 'Filter',
'component.sortingDrawer.optionalFields': 'Optional Fields',
'component.sortingDrawer.selectedFields': 'Selected Fields',
'component.sortingDrawer.fieldName': 'Field Name',
// ImportExport
'component.upload.clickOrDrag': 'Click or drag the file to the current area to upload it',
'component.upload.extensions': 'Supported extensions: {extensions}',
'component.upload.extensions.error': 'File type error, please select again',
'component.upload.fileList.empty': 'The file list is empty, please select a file',
// GenerateCommandsButton
'component.generateCommand': 'Generate Command',
'component.generateCommand.start': 'Generate Command Start',
'component.generateCommand.config': 'Distribution',
'component.generateCommand.rollback': 'Rollback',
// Execution
'execution.device': 'Device',
'execution.CommandType': 'Command Type',
'execution.execute.Config': 'Config',
'execution.execute.ScheduleConfig': 'Schedule Config',
'execution.execute.Rollback': 'Rollback',
'execution.execute.schedule.set': 'Set Schedule',
'execution.execute.schedule.cancel': 'Cancel Schedule',
'execution.execute.time': 'Schedule Time',
'execution.schedule.success': 'Set Schedule Success',
'execution.schedule.error': 'Set Schedule Error',
'execution.schedule.cancel.success': 'Cancel Schedule Success',
'execution.schedule.cancel.error': 'Cancel Schedule Error',
'execution.device.firewallOwner.tip':
'The device owner is {firewallOwner} and has no permission to process',
'execution.executionStatus.noConfig': 'No Config',
'execution.executionStatus.pending': 'Pending',
'execution.executionStatus.Config': 'Config',
'execution.executionStatus.ScheduleConfig': 'Schedule Config',
'execution.executionStatus.ConfigSuccess': 'Config Success',
'execution.executionStatus.ConfigFail': 'Config Fail',
'execution.executionStatus.Rollback': 'Rollback',
'execution.executionStatus.RollbackSuccess': 'Rollback Success',
'execution.executionStatus.RollbackFail': 'Rollback Fail',
'execution.ConfigTime': 'Config Time',
'execution.RollbackTime': 'Rollback Time',
'execution.Config': 'Config',
'execution.Rollback': 'Rollback',
'execution.command.notSave':
'The command content is still in editing state, please save or cancel editing first',
'execution.command.empty': 'The command is empty',
'execution.hasExecuted.confirm':
'If the execution result already exists, the original execution result will be clear. Do you want to confirm the execution?',
'execution.deviceResult': 'Device Result',
'execution.scriptResult': 'Script Result',
'execution.ConfigResult': 'Configuration result',
'execution.RollbackResult': 'Rollback result',
'execution.copy.success': 'Command copied to clipboard',
'execution.copy.failed': 'Copy failed',
}
const enKey=Object.keys(en)
const znKey=Object.keys(zn)
console.log(enKey.filter(k=>!znKey.includes(k)))
console.log(znKey.filter(k=>!enKey.includes(k)))
console