diff --git a/tmp_additions.json b/tmp_additions.json deleted file mode 100644 index 23d13ea..0000000 --- a/tmp_additions.json +++ /dev/null @@ -1,4692 +0,0 @@ -{ - "zhAdd": { - "alerts": { - "processing": "处理中", - "alarmNo": "告警编号", - "alarmTitle": "告警title", - "alarmContent": "告警content", - "alertDetail": "告警detail", - "rootCause": "rootcause", - "recommendedAction": "recommendedaction", - "notifySubscription": "notify订阅", - "sms": "短信", - "dingTalk": "dingtalk", - "email": "邮件", - "handleSuccess": "处理成功", - "handleFail": "处理失败", - "exportFileName": "导出file名称", - "reportValue": "reportvalue", - "noAlarmToCreateOrder": "编号告警TO创建工单", - "orderFromAlarm": "工单from告警", - "orderCreated": "工单已创建", - "orderCreateFail": "工单创建失败", - "todayTotalAlerts": "今日共告警", - "trendNoChange": "趋势编号change", - "trendUp": "趋势UP", - "trendDown": "趋势down", - "trendZero": "趋势zero", - "yesterdayValue": "昨日value", - "todayCriticalAlerts": "今日严重告警", - "todayPending": "今日待处理", - "todayClosed": "今日已关闭", - "alertTypeProportion": "告警类型proportion", - "alertStatusStatistics": "告警状态统计", - "sourceDevice": "来源设备", - "occurTime": "occur时间", - "alertDescription": "告警description", - "contactHandler": "联系处理人", - "handleOperation": "处理operation", - "pleaseSelectHandleStatus": "please选择处理状态", - "pleaseSelectHandleResult": "please选择处理结果", - "pleaseInputHandleRemark": "pleaseinput处理remark", - "confirmHandle": "确认处理", - "modifyAlert": "modify告警", - "pleaseInputAlarmTitle": "pleaseinput告警title", - "pleaseSelectAlertLevel": "please选择告警级别", - "pleaseSelectAlertType": "please选择告警类型", - "pleaseInputAlarmContent": "pleaseinput告警content", - "newOrder": "NEW工单", - "planStartTime": "计划开始时间", - "pleaseSelectPlanStartTime": "please选择计划开始时间", - "confirmCreateOrder": "确认创建工单", - "mockDeviceSensor": "模拟设备传感器", - "mockTempExceed": "模拟温度exceed", - "mockDeviceCamera": "模拟设备摄像头", - "mockVideoSignalLost": "模拟视频signallost", - "mockDeviceBattery": "模拟设备电量", - "mockBatteryLow": "模拟电量LOW", - "level": "级别", - "content": "content", - "searchDeviceContent": "搜索设备content", - "mockRuleTemp": "模拟规则温度", - "mockRuleBattery": "模拟规则电量", - "deviceSensor": "设备传感器", - "deviceBattery": "设备电量", - "ruleName": "规则名称", - "triggerCondition": "triggercondition", - "ruleConfig": "规则配置", - "addRule": "新增规则", - "editRule": "编辑规则", - "ruleNamePlaceholder": "规则名称placeholder", - "relatedModel": "relatedmodel", - "monitorProperty": "monitorproperty", - "compareSymbol": "comparesymbol", - "threshold": "threshold", - "thresholdPlaceholder": "thresholdplaceholder", - "sevenDayTrend": "seven日趋势", - "criticalAlert": "严重告警", - "importantAlert": "重要告警", - "generalAlert": "一般告警", - "infoAlert": "提示告警", - "alertLevelDistribution": "告警级别分布", - "mockSubOps": "模拟SUBOPS", - "mockSubAdmin": "模拟SUBadmin", - "mockSubDevice": "模拟SUB设备", - "appPush": "APPpush", - "subscriptionName": "订阅名称", - "notifyChannel": "notifychannel", - "searchSubscription": "搜索订阅", - "addSubscription": "新增订阅", - "editAlertSubscription": "编辑告警订阅", - "addAlertSubscription": "新增告警订阅", - "pleaseInputSubscriptionName": "pleaseinput订阅名称", - "allDevices": "ALL设备", - "allLevels": "ALLlevels", - "pleaseSelectChannel": "please选择channel", - "subtitle": "subtitle", - "AlarmHistory_14": "时间范围", - "AlarmHistory_15": "右侧详情抽屉", - "AlarmHistory_16": "通知订阅模块", - "AlarmOverview_17": "刷新列表", - "AlarmOverview_18": "刷新统计", - "AlarmOverview_25": "修复:等级是字符串,不是数字", - "AlarmOverview_26": "统计卡片", - "AlarmOverview_27": "只清除首尾空格", - "AlarmOverview_28": "新增:刷新图表全量告警", - "AlarmOverview_29": "表格", - "AlarmOverview_30": "三个图表", - "AlarmOverview_31": "告警详情抽屉", - "AlarmOverview_32": "告警头部", - "AlarmOverview_33": "告警基础信息", - "AlarmOverview_34": "告警描述", - "AlarmOverview_35": "根因分析", - "AlarmOverview_36": "推荐处理措施", - "AlarmOverview_37": "处理操作", - "AlarmOverview_38": "底部按钮", - "AlarmOverview_39": "修改告警弹窗", - "AlarmOverview_40": "新增:生成工单弹窗", - "AlarmRealtime_41": "告警详情弹窗", - "AlarmSubscription_42": "短信", - "AlarmSubscription_43": "邮件", - "AlarmSubscription_44": "推送", - "AlarmSubscription_45": "新增/编辑 弹窗" - }, - "common": { - "loadFailed": "load失败", - "loadDetailFailed": "loaddetail失败", - "requestError": "请求错误", - "deviceId": "设备ID", - "pleaseInputDeviceId": "pleaseinput设备ID", - "timeRange": "时间range", - "enabled": "enabled", - "modify": "modify", - "apiCallFail": "APIcall失败", - "quantity": "quantity", - "detail": "detail", - "storeValue": "storevalue", - "operationFailed": "operation失败", - "submitFail": "submit失败", - "confirmDeleteRecord": "确认删除record", - "deleteIrreversible": "删除irreversible", - "working": "作业中", - "settings": "设置" - }, - "workOrder": { - "generateOrder": "生成工单", - "newOrders": "NEWorders", - "dispatchSuccess": "dispatch成功", - "dispatchFail": "dispatch失败", - "dispatchRequestError": "dispatch请求错误", - "todayNewOrders": "今日NEWorders", - "vsYesterday": "较昨日", - "pendingOrders": "待处理orders", - "highPriority": "highpriority", - "runningOrders": "runningorders", - "onTimeRate": "ON时间rate", - "completedOrders": "已完成orders", - "monthlyTotal": "monthly共", - "avgHandleTime": "AVG处理时间", - "hourUnit": "hour单位", - "vsLastWeek": "较last周", - "aiSuggestedOrders": "AIsuggestedorders", - "orderUnit": "工单单位", - "autoGeneratedToday": "autogenerated今日", - "getListFailed": "GET列表失败", - "pleaseSelectOrder": "please选择工单", - "completeSuccess": "完成成功", - "completeFail": "完成失败", - "getDetailFailed": "GETdetail失败", - "pleaseSelectOneOrder": "please选择ONE工单", - "modifySuccess": "modify成功", - "modifyFail": "modify失败", - "executeSuccess": "执行成功", - "executeFail": "执行失败", - "suspendSuccess": "suspend成功", - "suspendFail": "suspend失败", - "invalidOrder": "无效工单", - "pleaseSelectOrderToDelete": "please选择工单TO删除", - "batchDeleteSuccess": "batch删除成功", - "batchDeleteFail": "batch删除失败", - "orderNo": "工单编号", - "taskManagement": "任务管理", - "overview": "概览", - "timeRange": "时间range", - "keyword": "keyword", - "pleaseInputOrderNoOrTitle": "pleaseinput工单编号ORtitle", - "list": "列表", - "totalWithCount": "共with数量", - "confirmBatchDelete": "确认batch删除", - "batchExecute": "batch执行", - "statusDistribution": "状态分布", - "totalCount": "共数量", - "scheduleCalendarView": "schedulecalendar查看", - "todaySuffix": "今日suffix", - "noScheduledOrders": "编号scheduledorders", - "scheduledOrderList": "scheduled工单列表", - "planStartTime": "计划开始时间", - "detail": "detail", - "noTitle": "编号title", - "nearItems": "nearitems", - "pleaseInputTaskDesc": "pleaseinput任务desc", - "pendingDispatch": "待处理dispatch", - "pleaseSelectPerson": "please选择person", - "selectedOrders": "已选orders", - "pleaseSelectExecuteDevice": "please选择执行设备", - "pleaseInputResult": "pleaseinput结果", - "pleaseSelectResult": "please选择结果", - "handledCompleted": "已处理已完成", - "fixed": "固定", - "noActionNeeded": "编号actionneeded", - "issueClosed": "issue已关闭", - "pleaseInputHandleRemark": "pleaseinput处理remark", - "alarmNo": "告警编号", - "alarmTitle": "告警title", - "WorkOrder_1275": "批量选中", - "WorkOrder_1276": "今日新增工单", - "WorkOrder_1277": "待处理总数", - "WorkOrder_1278": "待处理高优先级", - "WorkOrder_1280": "本月已完成", - "WorkOrder_1281": "按时完成率", - "WorkOrder_1282": "平均处理时长", - "WorkOrder_1283": "今日新增对比昨日", - "WorkOrder_1284": "平均时长对比上周", - "WorkOrder_1285": "普通用户", - "WorkOrder_1286": "选中人员", - "WorkOrder_1287": "如需真实昨日对比,单独请求昨日统计接口", - "WorkOrder_1288": "已处理完成", - "WorkOrder_1289": "数字转字符串", - "WorkOrder_1290": "清空选中", - "WorkOrder_1291": "新增加载7天告警", - "WorkOrder_1292": "顶部标题和页签", - "WorkOrder_1293": "左侧:列表", - "WorkOrder_1294": "底部图表", - "WorkOrder_1295": "日期切换栏", - "WorkOrder_1296": "横向时间表头", - "WorkOrder_1297": "单一行时间画布,不再区分人员", - "WorkOrder_1298": "更多工单弹窗:弹窗内只展示当前选中日期工单", - "WorkOrder_1299": "右侧:详情", - "WorkOrder_1300": "新增:图片", - "WorkOrder_1301": "视频附件预览区域", - "WorkOrder_1302": "图片预览组,支持点击放大", - "WorkOrder_1303": "底层灰色轨道", - "WorkOrder_1304": "进度填充", - "WorkOrder_1305": "修改工单弹窗", - "WorkOrder_1306": "派单弹窗:选择人员", - "WorkOrder_1307": "工单", - "WorkOrder_1308": "执行工单弹窗", - "WorkOrder_1309": "未知设备", - "WorkOrder_1310": "机器人设备分组", - "WorkOrder_1311": "无人机分组", - "WorkOrder_1312": "请选择执行开始时间", - "WorkOrder_1313": "完成工单弹窗", - "WorkOrder_1314": "已修复", - "WorkOrder_1315": "无需处理", - "WorkOrder_1316": "问题已闭环", - "WorkOrder_1317": "近7天全部告警弹窗" - }, - "devices": { - "working": "作业中", - "videoConfigured": "视频已配置", - "noVideo": "编号视频", - "connectionFailed": "连接失败", - "permissionRequestTitle": "权限请求title", - "requestControlPermission": "请求控制权限", - "selectNoDrone": "选择编号无人机", - "commandIssued": "commandissued", - "commandFailed": "command失败", - "apiRequestError": "API请求错误", - "selectTaskFirst": "选择任务first", - "taskExecutedSuccess": "任务executed成功", - "taskSuspended": "任务suspended", - "taskResumedSuccess": "任务resumed成功", - "taskReturnedHome": "任务returnedhome", - "taskStatusUpdateSuccess": "任务状态更新成功", - "operationApiError": "operationAPI错误", - "permissionObtained": "权限obtained", - "controlRequestContent": "控制请求content", - "unknownPlatform": "未知platform", - "obstacleDetected": "obstacle检测到", - "unknownObject": "未知object", - "noTaskDetail": "编号任务detail", - "fetchDetailError": "获取detail错误", - "deviceInfoError": "设备提示错误", - "pleaseLoginFirst": "please登录first", - "loginInfoExpired": "登录提示expired", - "otherWebControlling": "otherWEBcontrolling", - "networkErrorRetry": "network错误retry", - "routeLoaded": "路线loaded", - "droneFallbackName": "无人机fallback名称", - "droneAirspace": "无人机airspace", - "droneWayline": "无人机航线", - "onStandby": "ON待机", - "permissionRequesting": "权限requesting", - "noWaylineData": "编号航线数据", - "fetchWaylineFailed": "获取航线失败", - "waypointsAdded": "waypointsadded", - "waypointDeleted": "waypointdeleted", - "allWaypointsCleared": "ALLwaypointscleared", - "pleaseSelectWayline": "please选择航线", - "selectTaskStartTime": "选择任务开始时间", - "createSuccess": "创建成功", - "apiErrorCheck": "API错误check", - "noWaypointsToSave": "编号waypointsTO保存", - "planeNoLocalRoute": "plane编号local路线", - "routeSavedLocal": "路线savedlocal", - "waylineLabel": "航线label", - "fetchWaylineListFailed": "获取航线列表失败", - "routeLoadedWithName": "路线loadedwith名称", - "gpsTaskIssued": "GPS任务issued", - "issueTaskFirst": "issue任务first", - "taskPaused": "任务paused", - "taskStarted": "任务started", - "taskStopped": "任务停用", - "viewFront": "查看front", - "viewBack": "查看back", - "viewLeft": "查看左", - "viewRight": "查看右", - "viewTop": "查看TOP", - "deviceList": "设备列表", - "onlineDevices": "在线设备", - "inspectionMachine": "巡检machine", - "supportsGpsPlan": "supportsGPS计划", - "supportsRemoteGpsPlan": "supportsremoteGPS计划", - "batteryWithValue": "电量withvalue", - "videoLinkConfigured": "视频link已配置", - "batteryCapacity": "电量容量", - "flightAltitude": "flight高度", - "signalSatellite": "signalsatellite", - "envWindSpeed": "ENVwind速度", - "rtkStatus": "RTK状态", - "fixed": "固定", - "notFixed": "NOT固定", - "remoteControlAndSituation": "remote控制ANDsituation", - "gpsPlanning": "GPSplanning", - "leftWheelDrive": "左wheeldrive", - "normalRunning": "正常running", - "realtimeSpeed": "实时速度", - "workingCurrent": "作业中current", - "rightWheelDrive": "右wheeldrive", - "gpsWaypointPlan": "GPSwaypoint计划", - "savePlan": "保存计划", - "clearRoute": "clear路线", - "droneWaylineTask": "无人机航线任务", - "taskWaitingStart": "任务waiting开始", - "taskStartFailure": "任务开始failure", - "taskTerminated": "任务terminated", - "taskTimeout": "任务timeout", - "noWaylineTask": "编号航线任务", - "robotTaskData": "机器人任务数据", - "waypointList": "waypoint列表", - "noWaypoints": "编号waypoints", - "waypoint": "waypoint", - "robotLocalRoutes": "机器人local路线", - "noSavedRoutes": "编号saved路线", - "waypointsCount": "waypoints数量", - "issueTask": "issue任务", - "suspendTask": "suspend任务", - "cancelReturnHome": "取消返航home", - "videoAndConfig": "视频AND配置", - "noVideoStream": "编号视频stream", - "waylineDetail": "航线detail", - "taskIdLabel": "任务IDlabel", - "waylineUuidLabel": "航线uuidlabel", - "airportSnLabel": "airportSNlabel", - "landingDockSnLabel": "landingdockSNlabel", - "returnHomeAltitudeLabel": "返航home高度label", - "returnHomeModeLabel": "返航homemodelabel", - "waylinePrecisionLabel": "航线precisionlabel", - "lostControlActionLabel": "lost控制actionlabel", - "resumeFromBreakpointLabel": "恢复frombreakpointlabel", - "taskTypeLabel": "任务类型label", - "repeatModeLabel": "repeatmodelabel", - "minBatteryLabel": "MIN电量label", - "currentWaypointLabel": "currentwaypointlabel", - "rthOptimal": "RTHoptimal", - "rthPreset": "RTH预设", - "gpsMode": "GPSmode", - "rtkHighPrecision": "RTKhighprecision", - "modeAuto": "modeauto", - "modeManual": "modemanual", - "taskImmediate": "任务immediate", - "taskTimed": "任务timed", - "taskRecurring": "任务recurring", - "taskContinuous": "任务continuous", - "repeatNone": "repeat无", - "repeatDaily": "repeat日", - "repeatWeekly": "repeatweekly", - "repeatMonthlyByDate": "repeatmonthlyBY日期", - "repeatMonthlyByWeek": "repeatmonthlyBY周", - "taskResumed": "任务resumed", - "taskEnded": "任务ended", - "taskTimedOut": "任务timedOUT", - "createWaylineTask": "创建航线任务", - "waylineName": "航线名称", - "inputWaylineName": "input航线名称", - "selectWayline": "选择航线", - "autoFetch": "auto获取", - "optionalEmpty": "optionalempty", - "gpsModeDesc": "GPSmodedesc", - "rtkModeDesc": "RTKmodedesc", - "autoResumeFromBreakpoint": "auto恢复frombreakpoint", - "resumeAuto": "恢复auto", - "resumeManual": "恢复manual", - "minExecBatteryLabel": "MINexec电量label", - "taskWaylineTypeLabel": "任务航线类型label", - "taskStartTimeLabel": "任务开始时间label", - "selectStartTimePlaceholder": "选择开始时间placeholder", - "taskEndTimeLabel": "任务结束时间label", - "repeatInterval": "repeatinterval", - "boundDrone": "bound无人机", - "airportCode": "airport码", - "tlStartCleaning": "时间线开始清洗", - "timelineStatusStart": "时间线状态开始", - "tlStartInspection": "时间线开始巡检", - "tlStartMowing": "时间线开始除草", - "tlStandbyReady": "时间线待机就绪", - "timelineStatusReady": "时间线状态就绪", - "tlReturnSupply": "时间线返航补给", - "timelineStatusReturn": "时间线状态返航", - "tlFinishInspection": "时间线完成巡检", - "timelineStatusComplete": "时间线状态完成", - "logCommand": "LOGcommand", - "logDesc1": "LOGdesc1", - "logDesc2": "LOGdesc2", - "logDesc3": "LOGdesc3", - "logDesc4": "LOGdesc4", - "logDesc5": "LOGdesc5", - "logEvent": "LOGevent", - "logDesc6": "LOGdesc6", - "logLevelLowBattery": "LOG级别LOW电量", - "aliasRobotOnly": "alias机器人only", - "aliasNotEmpty": "aliasNOTempty", - "aliasModifiedSuccess": "aliasmodified成功", - "aliasModifyFail": "aliasmodify失败", - "aliasApiError": "aliasAPI错误", - "noPermission": "编号权限", - "stationStatus": "基站状态", - "dispatchableCount": "dispatchable数量", - "unitTai": "单位TAI", - "robotExecutingCount": "机器人执行中数量", - "mowingRobot": "除草机器人", - "robotInTaskCount": "机器人IN任务数量", - "washDrone": "wash无人机", - "unitJia": "单位JIA", - "standbyCount": "待机数量", - "todayTaskExecute": "今日任务执行", - "completionRate": "completionrate", - "unknownDevice": "未知设备", - "modeWorking": "mode作业中", - "modeDebugLocal": "modedebuglocal", - "modeDebugRemote": "modedebugremote", - "modeUpgrading": "modeupgrading", - "positionInStation": "positionIN基站", - "taskStandby2": "任务standby2", - "commGood": "comm良好", - "taskStarted2": "任务started2", - "taskPaused2": "任务paused2", - "returnCommandSent": "返航commandsent", - "rechargeCommandSent": "rechargecommandsent", - "emergencyStopTriggered": "emergencystoptriggered", - "rainNo": "rain编号", - "equipmentOverview": "equipment概览", - "equipmentSituationMap": "equipmentsituationMAP", - "legendTitle": "legendtitle", - "inspectionRoute": "巡检路线", - "robotPath": "机器人路径", - "cleaningPath": "清洗路径", - "robotPosition": "机器人position", - "dronePosition": "无人机position", - "supplyChargePoint": "补给charge点", - "obstacleForbiddenZone": "obstacleforbiddenzone", - "equipmentScheduleList": "equipmentschedule列表", - "equipmentName": "equipment名称", - "modeLabel": "modelabel", - "commStatus": "comm状态", - "deviceParamSetting": "设备参数设置", - "controlLogTitle": "控制LOGtitle", - "allLevels": "ALLlevels", - "deviceColHeader": "设备COLheader", - "viewMoreLogs": "查看morelogs", - "deviceControlPanel": "设备控制panel", - "detailBtn": "detailBTN", - "batteryWithPercent": "电量withpercent", - "productType": "product类型", - "deviceSnLabel": "设备SNlabel", - "activatedTime": "activated时间", - "firmwareVersion": "firmware版本", - "flightWindSpeed": "flightwind速度", - "rtkCount": "RTK数量", - "startBtn": "开始BTN", - "rechargeBtn": "rechargeBTN", - "realtimePicture": "实时picture", - "stationVideo": "基站视频", - "droneVideo": "无人机视频", - "stopVideoBtn": "stop视频BTN", - "switchManual": "切换manual", - "emergencyStopBtn": "emergencystopBTN", - "aiAnalysisTitle": "AI分析title", - "hotspotSuspect": "热斑suspect", - "countUnit": "数量单位", - "weedHighZone": "weedhighzone", - "blockUnit": "block单位", - "componentRiskZone": "组件风险zone", - "fenceAbnormal": "fence异常", - "suggestAction": "suggestaction", - "aiAction1": "AIaction1", - "aiAction2": "AIaction2", - "aiAction3": "AIaction3", - "generateTask": "生成任务", - "aiOptimizePath": "AIoptimize路径", - "oneClickCoordinated": "ONEclickcoordinated", - "envFlightConditions": "ENVflightconditions", - "windSpeed": "wind速度", - "rainfall": "rainfall", - "rtkEnvLabel": "RTKENVlabel", - "fixedEnv": "固定ENV", - "notFixedEnv": "NOT固定ENV", - "suitableExec": "suitableexec", - "canWorkNormally": "CAN工作normally", - "robotWorkStatus": "机器人工作状态", - "cumWorkMileage": "CUM工作mileage", - "cumWorkArea": "CUM工作area", - "cumWorkTime": "CUM工作时间", - "taskTimelineTitle": "任务时间线title", - "viewMore": "查看more", - "editRobotInfoTitle": "编辑机器人提示title", - "deviceSnColon": "设备SNcolon", - "deviceTypeColon": "设备类型colon", - "deviceAliasLabel": "设备aliaslabel", - "inputCustomAlias": "inputcustomalias", - "aliasHint": "aliashint", - "fetchParamFail": "获取参数失败", - "paramSaveSuccess": "参数保存成功", - "paramSaveFail": "参数保存失败", - "paramSaveException": "参数保存exception", - "paramLeftForwardGain": "参数左前增益", - "paramLeftBackwardGain": "参数左后增益", - "paramRightForwardGain": "参数右前增益", - "paramRightBackwardGain": "参数右后增益", - "paramRunSpeed": "参数RUN速度", - "paramChipUidSign": "参数芯片UID标识", - "paramChipUid": "参数芯片UID", - "paramRemoteConfig": "参数remote配置", - "paramKnifeMotorMode": "参数knifemotormode", - "paramWalkMotorMode": "参数walkmotormode", - "paramLeftMotorReverse": "参数左motorreverse", - "paramRightMotorReverse": "参数右motorreverse", - "paramSwapChannel": "参数swapchannel", - "paramUse4G": "参数use4g", - "paramForwardSpeedLimit": "参数前速度limit", - "paramTurnSpeedLimit": "参数turn速度limit", - "paramKnifePolarity": "参数knifepolarity", - "paramFanPolarity": "参数FANpolarity", - "paramThrottlePolarity": "参数throttlepolarity", - "paramLiftProtectTime": "参数liftprotect时间", - "paramDualRtk": "参数dualRTK", - "paramKnifeChannel": "参数knifechannel", - "paramFanChannel": "参数FANchannel", - "paramThrottleChannel": "参数throttlechannel", - "paramRemoteType": "参数remote类型", - "paramRelayBoard": "参数relayboard", - "paramLiftChannel": "参数liftchannel", - "paramChassisChannel": "参数chassischannel", - "paramArmChannel": "参数ARMchannel", - "paramFuelPumpChannel": "参数fuelpumpchannel", - "paramWifiName": "参数wifi名称", - "paramWifiPassword": "参数wifipassword", - "paramBatteryType": "参数电量类型", - "paramDriveType": "参数drive类型", - "paramGearRatio": "参数gearratio", - "paramRobotLength": "参数机器人length", - "paramRobotWidth": "参数机器人width", - "paramRobotHeight": "参数机器人height", - "paramKnifeWidth": "参数knifewidth", - "paramTyreSize": "参数tyresize", - "paramFirmwareVersion": "参数firmware版本", - "paramDelFlag": "参数DELflag", - "paramViewEditTitle": "参数查看编辑title", - "noData": "编号数据", - "locationFail": "位置失败", - "pointMarked": "点marked", - "minThreePoints": "MINthree点", - "pathPlanDone": "路径计划done", - "pathPlanFailRetry": "路径计划失败retry", - "completePathFirst": "完成路径first", - "inputPlotName": "inputplot名称", - "pathPlanning": "路径planning", - "markedPointsCount": "marked点数量", - "workMode": "工作mode", - "bowMode": "BOWmode", - "abMode": "ABmode", - "markPoint": "mark点", - "clearMarks": "clearmarks", - "complete": "完成", - "selectDevice": "选择设备", - "unknownDrone": "未知无人机", - "situationMap": "situationMAP", - "clearPlannedRoute": "clearplanned路线", - "realtimeVideoMonitor": "实时视频monitor", - "frontView": "front查看", - "backView": "back查看", - "leftView": "左查看", - "rightView": "右查看", - "panorama": "全景", - "robotStatus": "机器人状态", - "rtBattery": "RT电量", - "rtVoltage": "RTvoltage", - "rtLeftMotor": "RT左motor", - "rtRightMotor": "RT右motor", - "rtLeftSpeed": "RT左速度", - "rtRightSpeed": "RT右速度", - "rtLeftTemp": "RT左温度", - "rtRightTemp": "RT右温度", - "rtMainTemp": "RTmain温度", - "rtHeadingAngle": "RT航向angle", - "rtPitchAngle": "RTpitchangle", - "rtHeadingStatus": "RT航向状态", - "rtInitialized": "RT已初始化", - "rtPositioning": "RTpositioning", - "gpsSingle": "GPSsingle", - "dgpsDiff": "DGPSdiff", - "rtkFixed2": "RTKfixed2", - "rtkFloat": "RTK浮点", - "rtSatellites": "RTsatellites", - "satelliteCount": "satellite数量", - "rtMode": "RTmode", - "videoStopped": "视频停用", - "clickPlayHint": "clickplayhint", - "remoteControl": "remote控制", - "savePathTitle": "保存路径title", - "plotNameLabel": "plot名称label", - "saving": "saving", - "stationCameraNotFound": "基站摄像头NOTfound", - "indoor": "室内", - "outdoor": "室外", - "switchStationCameraFail": "切换基站摄像头失败", - "switchDroneLensFail": "切换无人机镜头失败", - "wideLens": "广角镜头", - "zoomLens": "变焦镜头", - "irLens": "红外镜头", - "noVideoSignal": "编号视频signal", - "rainYes": "rainYES", - "hangar": "hangar", - "coverOpen": "coveropen", - "coverClosed": "cover已关闭", - "inDock": "INdock", - "outDock": "OUTdock", - "droneStatus": "无人机状态", - "horizontalSpeed": "horizontal速度", - "verticalSpeed": "vertical速度", - "headingAngle": "航向angle", - "gpsUnit": "GPS单位", - "taskCompletedMsg": "任务已完成消息", - "confirmDeleteTitle": "确认删除title", - "confirmDeleteContent": "确认删除content", - "confirmDeleteOk": "确认删除OK", - "routeDeletedSuccess": "路线deleted成功", - "deleteFailRetry": "删除失败retry", - "deleteFailNetwork": "删除失败network", - "taskListRefreshFail": "任务列表刷新失败", - "routeNoPathPoints": "路线编号路径点", - "checkRouteFail": "check路线失败", - "taskExecuteSuccess": "任务执行成功", - "taskExecuteFail": "任务执行失败", - "taskExecuteException": "任务执行exception", - "taskCanceledSuccess": "任务canceled成功", - "taskCancelFail": "任务取消失败", - "taskCancelException": "任务取消exception", - "taskPausedSuccess": "任务paused成功", - "taskPauseFail": "任务暂停失败", - "taskPauseException": "任务暂停exception", - "taskResumeFail": "任务恢复失败", - "taskResumeException": "任务恢复exception", - "waylineFallback": "航线fallback", - "waylineListFetchFail": "航线列表获取失败", - "fillRequiredFields": "fillrequiredfields", - "createTaskSuccess": "创建任务成功", - "createTaskFail": "创建任务失败", - "createTaskException": "创建任务exception", - "trendYesterday": "趋势昨日", - "trendFlat": "趋势flat", - "taskListFetchFail": "任务列表获取失败", - "boardTaskFetchFail": "board任务获取失败", - "statusExecSuccess": "状态exec成功", - "statusPreparing": "状态preparing", - "statusExecFailed": "状态exec失败", - "statusWaitingStart": "状态waiting开始", - "statusStartFailed": "状态开始失败", - "statusRestored": "状态已恢复", - "statusTerminated": "状态terminated", - "statusTimeout": "状态timeout", - "deviceSn": "设备SN", - "requestFail": "请求失败", - "selectExecuteDroneFirst": "选择执行无人机first", - "waylineTaskCreated": "航线任务已创建", - "waylineExecFail": "航线exec失败", - "todayWaylinePlan": "今日航线计划", - "unitTiao": "单位tiao", - "inProgressDesc": "INprogressdesc", - "executingTasks": "执行中任务", - "unitGe": "单位GE", - "pendingApprovalTasks": "待处理approval任务", - "taskCompletionRate": "任务completionrate", - "aiOptimizeGain": "AIoptimize增益", - "coverageEquipment": "coverageequipment", - "coverageValue": "coveragevalue", - "allOnline": "ALL在线", - "noDroneSelected": "编号无人机已选", - "commandSent": "commandsent", - "commandSendFail": "commandsend失败", - "apiRequestException": "API请求exception", - "noDetail": "编号detail", - "fetchDetailException": "获取detailexception", - "taskExecSuccess": "任务exec成功", - "taskSuspended2": "任务suspended2", - "taskRestored2": "任务restored2", - "taskReturnedHome2": "任务returnedhome2", - "statusUpdateSuccess": "状态更新成功", - "operationFail": "operation失败", - "operationApiException": "operationAPIexception", - "waylineEditPlan": "航线编辑计划", - "optimize": "optimize", - "inspectRoute": "巡检路线", - "mowRoute": "除草路线", - "droneAirport": "无人机airport", - "chargePoint": "charge点", - "noFlyZone": "编号FLYzone", - "deviceTaskList": "设备任务列表", - "allDrones": "ALLdrones", - "taskOrchestrationAI": "任务orchestrationAI", - "typeDroneHotspot": "类型无人机热斑", - "levelHigh": "级别high", - "statusSuggestExec": "状态suggestexec", - "typeFenceInspect": "类型fence巡检", - "typeComponentClean": "类型组件清洗", - "levelMid": "级别MID", - "statusWaitExec": "状态waitexec", - "typeArrayMow": "类型array除草", - "typeAIRecheck": "类型AIrecheck", - "levelLow": "级别LOW", - "statusPendingApproval": "状态待处理approval", - "colNo": "COL编号", - "suggestTime": "suggest时间", - "aiSuggestionColon": "AI建议colon", - "aiAdvice1": "AIadvice1", - "aiAdvice2": "AIadvice2", - "aiAdvice3": "AIadvice3", - "oneClickSchedule": "ONEclickschedule", - "smartAssign": "smartassign", - "waylineParamsTitle": "航线参数title", - "currentWayline": "current航线", - "rthMode": "RTHmode", - "waylinePrecision": "航线precision", - "resumeBreakpoint": "恢复breakpoint", - "safeRthBattery": "safeRTH电量", - "repeatTypeLabel": "repeat类型label", - "lostControlAction": "lost控制action", - "obstacleAvoidSwitch": "obstacleavoid切换", - "nightFlightLimit": "nightflightlimit", - "resumeTask": "恢复任务", - "pauseTask": "暂停任务", - "weatherWindowTitle": "weatherwindowtitle", - "suitability": "suitability", - "suitableExec2": "suitableexec2", - "suitable": "suitable", - "precipStatus": "precip状态", - "hasRain": "HASrain", - "gnssQuality": "gnssquality", - "fixed2": "fixed2", - "notFixed2": "NOTfixed2", - "weatherAdvice1": "weatheradvice1", - "weatherAdvice2": "weatheradvice2", - "waylineList": "航线列表", - "selectDrone": "选择无人机", - "searchWaylinePlaceholder": "搜索航线placeholder", - "unknownTime": "未知时间", - "executeWayline": "执行航线", - "ganttViewTitle": "gantt查看title", - "dronePortA01": "无人机portA01", - "typeHotspotInspect": "类型热斑巡检", - "typeRecheck": "类型recheck", - "inspectRobotRbt": "巡检机器人RBT", - "mowRobotGr": "除草机器人GR", - "washDroneUav": "wash无人机", - "workTaskBoard": "工作任务board", - "startLabel": "开始label", - "endLabel": "结束label", - "pendingExec": "待处理exec", - "equipmentColon": "equipmentcolon", - "startTimeColon": "开始时间colon", - "completedTimeColon": "已完成时间colon", - "createWaylineTaskTitle": "创建航线任务title", - "airportSn": "airportSN", - "landingDockSn": "landingdockSN", - "returnHomeAltitude": "返航home高度", - "returnHomeMode": "返航homemode", - "minBattery": "MIN电量", - "repeatMode": "repeatmode", - "weekdayExec": "weekdayexec", - "weekSun": "周周日", - "weekMon": "周周一", - "weekTue": "周周二", - "weekWed": "周周三", - "weekThu": "周周四", - "weekFri": "周周五", - "weekSat": "周周六", - "monthDays": "月days", - "whichWeek": "which周", - "weekNo": "周编号", - "weekday": "weekday", - "execTimePoint": "exec时间点", - "inputTimestamp": "inputtimestamp", - "confirmCreate": "确认创建", - "executeWaylineTask": "执行航线任务", - "executeNow": "执行NOW", - "selectedWaylineColon": "已选航线colon", - "executeDeviceColon": "执行设备colon", - "noDeviceSelected": "编号设备已选", - "returnHomeAltitudeColon": "返航home高度colon", - "deviceData": "设备数据", - "equipmentControl": "equipment控制", - "realtimePowerData": "实时power数据", - "communicationStatus": "communication状态", - "communicationNormal": "communication正常", - "groupOf": "groupOF", - "weatherStation": "weather基站", - "stationTopology": "基站topology", - "communicating": "communicating", - "realtimeMonitorList": "实时monitor列表", - "allTypes": "ALLtypes", - "searchDeviceName": "搜索设备名称", - "dronePort": "无人机port", - "deviceOnlineRate": "设备在线rate", - "onlineRate": "在线rate", - "totalCount": "共数量", - "device_2": "上传文件必须用 data,不能用", - "device_3": "上传文件必加", - "device_4": "修正为正确的添加接口", - "DeviceControl_47": "连接中状态", - "DeviceControl_48": "权限请求的弹窗", - "DeviceControl_49": "是否有控制权限", - "DeviceControl_50": "连接失败 重新连接", - "DeviceControl_51": "这里的return会终止整个handleMessage函数的执行", - "DeviceControl_52": "清空设备信息", - "DeviceControl_53": "秒后台保活", - "DeviceControl_54": "关键:清空上一个设备的轨迹", - "DeviceControl_55": "取list数组", - "DeviceControl_56": "加上这句", - "DeviceControl_57": "是否存在", - "DeviceControl_58": "连接是否打开", - "DeviceControl_59": "消息类型", - "DeviceControl_60": "原始手柄数据", - "DeviceControl_61": "认证令牌", - "DeviceControl_62": "割草机视角切换", - "DeviceControl_63": "巡检机器人:3路视频", - "DeviceControl_64": "紧凑横向,不滚动,全部可见", - "DeviceControl_65": "主画面:小一点", - "DeviceControl_66": "割草机单路", - "DeviceControl_67": "修复:割草机4路视频", - "DeviceControl_68": "绝不压扁,保持", - "DeviceControl_69": "其他设备", - "DeviceControl_71": "左侧设备列表", - "DeviceControl_72": "任务态势", - "DeviceControl_73": "区域", - "DeviceControl_74": "中间操作区", - "DeviceControl_75": "无人机状态概览", - "DeviceControl_76": "当前位置", - "DeviceControl_77": "当前模式", - "DeviceControl_78": "无人机待命", - "DeviceControl_79": "割草待命", - "DeviceControl_80": "待命", - "DeviceControl_81": "电量/航向", - "DeviceControl_82": "启用遥控", - "DeviceControl_83": "遥控与态势", - "DeviceControl_85": "把视频嵌入到这里", - "DeviceControl_86": "视频区域 - 独立大窗口", - "DeviceControl_87": "状态卡片行", - "DeviceControl_88": "链路", - "DeviceControl_89": "遥控接管", - "DeviceControl_90": "规划态势", - "DeviceControl_91": "控制区:左轮", - "DeviceControl_92": "右轮", - "DeviceControl_93": "紧凑布局", - "DeviceControl_94": "左轮速度面板 - 缩小", - "DeviceControl_95": "顶部标题", - "DeviceControl_96": "仪表盘(居中放大", - "DeviceControl_98": "电流 一体化卡片(核心视觉", - "DeviceControl_99": "电流", - "DeviceControl_100": "手柄 - 缩小、居中", - "DeviceControl_101": "右轮速度面板 - 缩小", - "DeviceControl_103": "仪表盘(居中优化", - "DeviceControl_104": "核心数据卡片:速度", - "DeviceControl_105": "目标值(干净对称", - "DeviceControl_106": "实时速度", - "DeviceControl_107": "速度输出", - "DeviceControl_108": "规划", - "DeviceControl_109": "状态标签(和你原版完全一样", - "DeviceControl_110": "下发任务", - "DeviceControl_113": "无人机专用任务控制按钮", - "DeviceControl_114": "动态按钮:执行中", - "DeviceControl_115": "挂起 / 已挂起", - "DeviceControl_117": "暂停 / 恢复", - "DeviceControl_118": "动态:返航 / 取消返航", - "DeviceControl_119": "右侧视频面板(遥控页隐藏)- 保持不变", - "DeviceControl_120": "设备类型:机器人", - "DeviceControl_121": "显示 4 路视频", - "DeviceControl_122": "设备类型:割草机", - "DeviceControl_123": "显示 1 路视频", - "DeviceControl_124": "设备类型:无人机", - "DeviceControl_125": "遍历显示视频流", - "DeviceControl_126": "删除原来的悬浮视频窗口代码", - "DeviceControl_127": "旋转加载圈", - "DeviceControl_128": "飞行参数", - "DeviceControl_129": "时间选择", - "DeviceControl_130": "重复任务", - "deviceController_131": "保存当前设备", - "deviceController_132": "后台保活定时器", - "deviceController_133": "其他端正在控制", - "deviceController_134": "权限校验失败", - "deviceController_135": "无控制权限", - "deviceController_136": "请求控制中", - "deviceController_137": "控制请求超时", - "deviceController_138": "控制失败", - "deviceController_139": "控制成功", - "deviceController_140": "权限请求", - "deviceController_141": "请求控制设备", - "deviceController_142": "车辆", - "deviceController_143": "围栏", - "deviceController_144": "坑洞", - "deviceController_145": "草丛", - "deviceController_146": "检测到", - "deviceController_147": "未知物", - "DeviceOverviewPage_149": "默认都算", - "DeviceOverviewPage_150": "只有切设备才变", - "DeviceOverviewPage_151": "视频不闪", - "DeviceOverviewPage_152": "作业中状态数量", - "DeviceOverviewPage_153": "左侧文字区域", - "DeviceOverviewPage_154": "底部环比/备注", - "DeviceOverviewPage_155": "右侧圆形图标区域", - "DeviceOverviewPage_156": "关键:videoDevice 绝不随MQTT更新,视频永不闪烁", - "DeviceOverviewPage_157": "机器人编辑别名弹窗", - "DeviceOverviewPage_158": "设备参数查看与修改弹窗(通用组件", - "DeviceParamModal_159": "加载时表单区域简单遮罩提示(打开弹窗拉取参数时的loading反馈", - "DeviceStatusPage_160": "持久化无人机数据", - "DeviceStatusPage_161": "持久化机场数据", - "DeviceStatusPage_162": "完成点", - "DeviceStatusPage_163": "开始时间戳", - "DeviceStatusPage_164": "结束时间戳", - "DeviceStatusPage_165": "标记的点", - "DeviceStatusPage_166": "是否完成路径规划", - "DeviceStatusPage_167": "保存的路径数据", - "DeviceStatusPage_168": "保存模态框可见性", - "DeviceStatusPage_169": "地块名称", - "DeviceStatusPage_170": "是否正在保存", - "DeviceStatusPage_171": "地图", - "DeviceStatusPage_172": "拿到路由上的", - "DeviceStatusPage_173": "持久化数据最后覆盖,确保优先显示", - "DeviceStatusPage_174": "存储返回的路径结果", - "DeviceStatusPage_175": "页面顶部按钮区域", - "DeviceStatusPage_176": "无人机专用布局", - "DeviceStatusPage_177": "左侧:机场视频", - "DeviceStatusPage_178": "无人机场视频", - "DeviceStatusPage_179": "机场状态", - "DeviceStatusPage_180": "右侧:无人机视频", - "DeviceStatusPage_181": "无人机状态", - "DeviceStatusPage_182": "无人机视频", - "DeviceStatusPage_183": "视频层:停止时不渲染 / 未播放时为空,不影响状态面板", - "DeviceStatusPage_184": "视频未加载 / 停止播放的占位", - "DeviceStatusPage_185": "单视频(非全景)模式状态叠加层:始终渲染,和视频层解耦", - "DeviceStatusPage_186": "右边 - 占1格,上部地图,下部远程控制", - "DeviceStatusPage_187": "远程控制面板", - "DeviceStatusPage_188": "保存路径模态框", - "DraggablePanel_189": "拖拽手柄", - "DraggablePanel_190": "子内容", - "DroneVideoPlayer_191": "默认选择室外", - "DroneVideoPlayer_192": "默认选择广角", - "DroneVideoPlayer_193": "目前先默认用第一个摄像头", - "DroneVideoPlayer_194": "重置另一边的加载状态", - "DroneVideoPlayer_195": "确保在双视频模式下有最小宽度", - "DroneVideoPlayer_196": "视频控制按钮", - "DroneVideoPlayer_197": "状态详情叠加层 - 左上角", - "DroneVideoPlayer_198": "底部信息叠加 - 显示经纬度", - "mowerAllView_199": "三列之间间距", - "mowerAllView_200": "左列:左视", - "mowerAllView_201": "左视", - "mowerAllView_202": "中列:上-前视 下-后视", - "mowerAllView_203": "前视", - "mowerAllView_204": "后视", - "mowerAllView_205": "右视", - "RobotTaskPage_206": "是否执行任务", - "RobotTaskPage_207": "正在执行的任务", - "RobotTaskPage_208": "控制视频组件显示", - "RobotTaskPage_212": "机器人设备", - "RobotTaskPage_213": "任务完成关闭视频", - "RobotTaskPage_214": "清空地图轨迹", - "RobotTaskPage_215": "设置当前任务", - "RobotTaskPage_216": "弓子 2 回子", - "RobotTaskPage_217": "连接成功后自动打开视频", - "RobotTaskPage_218": "加宽一点", - "RobotTaskPage_219": "原始状态值", - "RobotTaskPage_220": "子元素收缩兜底,超长时允许压缩换行", - "RobotTaskPage_221": "开启自动换行,小屏按钮自动折行", - "RobotTaskPage_222": "优化", - "RobotTaskPage_223": "机器人状态悬浮面板 - 绝对定位左上角", - "RobotTaskPage_224": "避开左侧图例面板,防止重叠", - "RobotTaskPage_225": "限制最大宽度,不会无限拉长", - "RobotTaskPage_226": "视频开关", - "RobotTaskPage_227": "机器人任务模块,带Tab切换", - "RobotTaskPage_229": "删除按钮", - "RobotTaskPage_230": "执行按钮", - "RobotTaskPage_231": "传递 routeList 给弹窗", - "RobotTaskPage_232": "执行任务弹窗", - "RobotTaskPage_237": "周选择", - "RobotTaskPage_238": "月选择", - "RobotTaskPage_239": "按天:选择日期", - "WayLinePage_242": "航线列表", - "WayLinePage_243": "航线列表默认选中第一个", - "WayLinePage_244": "使用航线列表无人机", - "WayLinePage_245": "地图卡片", - "WayLinePage_246": "独立筛选 - 设备任务列表", - "WayLinePage_247": "继续任务", - "WayLinePage_248": "底部内容区", - "WayLinePage_249": "航线列表独立无人机筛选", - "WayLinePage_250": "执行按钮改为图标", - "WayLinePage_251": "任务名称:自动换行", - "WayLinePage_252": "时间:自动换行", - "WayLinePage_253": "创建任务弹窗", - "WayLinePage_254": "重复任务配置", - "WayLinePage_255": "对象绑定", - "WayLinePage_256": "每周", - "WayLinePage_257": "按月日期", - "WayLinePage_258": "按月星期", - "WayLinePage_260": "执行航线设置返航高度", - "XboxController_261": "只有这里才发", - "XboxController_262": "空依赖", - "XboxController_263": "强制触发一次", - "XboxController_264": "页面切换依赖", - "XboxController_265": "未连接设备", - "XboxController_266": "其他 Web 端已连接", - "XboxController_267": "控制中", - "XboxController_268": "点击获取控制权限" - }, - "systemSetting": { - "pleaseSelectRoles": "please选择角色", - "batchDeleteRolesTitle": "batch删除角色title", - "confirmDeleteSelectedRoles": "确认删除已选角色", - "batchDeleteSuccess": "batch删除成功", - "resetFail": "重置失败", - "pleaseSelectUsers": "please选择users", - "batchDeleteUsersTitle": "batch删除userstitle", - "confirmDeleteSelectedUsers": "确认删除已选users", - "userAndRole": "用户AND角色", - "belongingOrg": "belongingORG", - "belongingSite": "belongingsite", - "devicePerm": "设备perm", - "hasPerm": "HASperm", - "noPerm": "编号perm", - "confirmDeleteUser": "确认删除用户", - "totalCount": "共数量", - "permissionLabel": "权限label", - "levelLabel": "级别label", - "editRole": "编辑角色", - "roleLevel": "角色级别", - "pleaseInputRoleLevel": "pleaseinput角色级别", - "account": "account", - "nicknameShort": "nicknameshort", - "phoneShort": "phoneshort", - "editPasswordPlaceholder": "编辑passwordplaceholder", - "chooseRole": "choose角色", - "pleaseSelectOrg": "please选择ORG", - "pleaseSelectSite": "please选择site", - "deviceOperatePermLabel": "设备operatepermlabel", - "has": "HAS", - "none": "无", - "AlarmSettingsManagement_294": "错误编码下拉数据源", - "AlarmSettingsManagement_295": "工单模型下拉数据源", - "AlarmSettingsManagement_296": "获取告警模型列表失败", - "AlarmSettingsManagement_297": "确认删除", - "AlarmSettingsManagement_298": "您确定要删除这条告警模型吗", - "AlarmSettingsManagement_299": "请先勾选要删除的数据", - "AlarmSettingsManagement_300": "批量删除确认", - "AlarmSettingsManagement_301": "您确定要删除选中的", - "AlarmSettingsManagement_302": "条告警模型吗", - "AlarmSettingsManagement_303": "删除后不可恢复", - "AlarmSettingsManagement_304": "批量删除成功", - "AlarmSettingsManagement_305": "批量删除失败", - "AlarmSettingsManagement_306": "更新成功", - "AlarmSettingsManagement_309": "关联工单模型", - "AlarmSettingsManagement_310": "自动生成工单", - "AlarmSettingsManagement_311": "新增告警模型", - "AlarmSettingsManagement_313": "编辑告警模型", - "AlarmSettingsManagement_314": "错误编码(关联错误管理", - "AlarmSettingsManagement_315": "请选择错误编码", - "AlarmSettingsManagement_316": "工单模型ID(关联工单模型", - "AlarmSettingsManagement_317": "请选择工单模型", - "AlarmSettingsManagement_319": "是否自动生成工单", - "AllDeviceManagement_321": "清洗机器人", - "AllDeviceManagement_324": "电表", - "AllDeviceManagement_325": "运维机器人", - "AllDeviceManagement_326": "气象站", - "AllDeviceManagement_327": "设备编码", - "AllDeviceManagement_328": "运行", - "AllDeviceManagement_329": "编辑设备", - "AllDeviceManagement_330": "确定要删除设备", - "AllDeviceManagement_331": "请输入设备名称", - "BasicSettings_332": "设置已保存", - "BasicSettings_333": "当前版本", - "BasicSettings_334": "最新版", - "BasicSettings_335": "告警通道", - "BasicSettings_336": "数据备份状态", - "BasicSettings_337": "最近更新", - "BasicSettings_338": "超级管理员", - "BasicSettings_339": "全部权限", - "BasicSettings_340": "系统管理", - "BasicSettings_341": "运维工程师", - "BasicSettings_342": "工单管理", - "BasicSettings_343": "巡检主管", - "BasicSettings_344": "巡检管理", - "BasicSettings_345": "告警处理", - "BasicSettings_346": "数据分析师", - "BasicSettings_347": "数据分析", - "BasicSettings_348": "报表查看", - "BasicSettings_349": "接口", - "BasicSettings_350": "顶部统计卡片", - "BasicSettings_351": "左侧", - "BasicSettings_352": "基础配置", - "BasicSettings_353": "默认电站", - "BasicSettings_354": "首页默认页面", - "BasicSettings_355": "数据刷新频率", - "BasicSettings_356": "分钟", - "BasicSettings_357": "地图服务", - "BasicSettings_358": "高德地图", - "BasicSettings_359": "工单自动编号", - "BasicSettings_360": "建议自动生成", - "BasicSettings_361": "移动端同步", - "BasicSettings_362": "保存设置", - "BasicSettings_363": "恢复默认", - "BasicSettings_364": "通知与告警策略", - "BasicSettings_365": "已启用", - "BasicSettings_366": "系统通知", - "BasicSettings_367": "严重告警立即通知", - "BasicSettings_368": "发电下降超过", - "BasicSettings_369": "通信中断通知", - "BasicSettings_370": "每日汇总推送", - "BasicSettings_371": "夜间免打扰", - "BasicSettings_372": "用户与权限预览", - "BasicSettings_373": "用户名", - "BasicSettings_375": "张运维", - "BasicSettings_376": "李工程师", - "BasicSettings_377": "王班长", - "BasicSettings_378": "赵分析师", - "BasicSettings_379": "右侧", - "BasicSettings_380": "角色权限概览", - "BasicSettings_381": "用户", - "BasicSettings_382": "权限", - "BasicSettings_383": "设备接入状态", - "BasicSettings_384": "详情", - "BasicSettings_386": "数据保留", - "BasicSettings_387": "登录审计", - "BasicSettings_388": "已开启", - "BasicSettings_389": "自动备份", - "BasicSettings_390": "密钥", - "BasicSettings_391": "最近备份", - "BasicSettings_392": "证书", - "BasicSettings_393": "有效期至", - "BasicSettings_394": "双因素认证", - "BasicSettings_396": "管理权限", - "BasicSettings_397": "清理缓存", - "BasicSettings_398": "重启服务", - "BasicSettings_399": "备份下载", - "BasicSettings_400": "日志导出", - "CameraManagement_401": "东门入口摄像头", - "CameraManagement_402": "园区东门", - "CameraManagement_403": "高清球机", - "CameraManagement_404": "海康威视", - "CameraManagement_405": "西门入口摄像头", - "CameraManagement_406": "园区西门", - "CameraManagement_407": "高清枪机", - "CameraManagement_408": "大华", - "CameraManagement_409": "停车场摄像头", - "CameraManagement_410": "地下停车场", - "CameraManagement_411": "办公楼大堂摄像头", - "CameraManagement_412": "办公楼1层大堂", - "CameraManagement_413": "半球摄像机", - "CameraManagement_414": "宇视", - "CameraManagement_415": "仓库监控摄像头", - "CameraManagement_416": "物料仓库", - "CameraManagement_417": "摄像头类型", - "CameraManagement_418": "品牌", - "CameraManagement_419": "分辨率", - "CameraManagement_420": "云台", - "CameraManagement_421": "支持", - "CameraManagement_422": "不支持", - "CameraManagement_423": "夜视", - "CameraManagement_424": "预览", - "CameraManagement_425": "视频预览", - "CameraManagement_426": "视频预览占位", - "CameraManagement_427": "确定要删除摄像头", - "CameraManagement_428": "摄像头总数", - "CameraManagement_429": "离线/故障", - "CameraManagement_430": "请输入名称/编码", - "CameraManagement_431": "状态筛选", - "CameraManagement_432": "新增摄像头", - "CameraManagement_433": "编辑摄像头", - "CameraManagement_434": "请输入设备编码", - "CameraManagement_435": "请输入IP地址", - "CameraManagement_436": "例如", - "CameraManagement_437": "请选择类型", - "CameraManagement_438": "全景摄像机", - "CameraManagement_439": "请选择品牌", - "CameraManagement_440": "请选择分辨率", - "CameraManagement_441": "安装位置", - "CameraManagement_442": "请输入安装位置", - "CameraManagement_443": "云台控制", - "CameraManagement_444": "夜视功能", - "DeviceAccessPage_445": "替换这行", - "DeviceAccessPage_446": "录像状态", - "DeviceAccessPage_447": "周界入侵告警", - "DeviceAccessPage_448": "湿度", - "DeviceAccessPage_449": "超温告警", - "DeviceAccessPage_450": "电压", - "DeviceAccessPage_451": "低电量告警", - "DeviceAccessPage_452": "删除后刷新", - "DeviceAccessPage_454": "行为配置回显", - "DeviceAccessPage_455": "编辑才有", - "DeviceAccessPage_457": "默认给一个", - "DeviceAccessPage_458": "阵列区监控设备", - "DeviceAccessPage_460": "编辑设备成功", - "DeviceAccessPage_461": "新增设备成功", - "DeviceAccessPage_463": "产品编辑成功", - "DeviceAccessPage_464": "产品新增成功", - "DeviceAccessPage_465": "改成", - "DeviceAccessPage_466": "产品", - "DeviceAccessPage_467": "模型", - "DeviceAccessPage_468": "端口", - "DeviceAccessPage_469": "账号", - "DeviceAccessPage_470": "模型名称", - "DeviceAccessPage_471": "连接协议", - "DeviceAccessPage_472": "属性列表", - "DeviceAccessPage_473": "无属性", - "DeviceAccessPage_474": "指令列表", - "DeviceAccessPage_475": "无指令", - "DeviceAccessPage_476": "确定要删除该物模型吗", - "DeviceAccessPage_477": "产品管理", - "DeviceAccessPage_478": "物模型管理", - "DeviceAccessPage_479": "新增设备", - "DeviceAccessPage_480": "产品编码", - "DeviceAccessPage_481": "请输入编码", - "DeviceAccessPage_482": "产品名称", - "DeviceAccessPage_483": "请输入名称", - "DeviceAccessPage_484": "生产厂家", - "DeviceAccessPage_485": "请输入厂家", - "DeviceAccessPage_486": "协议编码", - "DeviceAccessPage_487": "请选择协议", - "DeviceAccessPage_488": "传输方式", - "DeviceAccessPage_489": "禁用", - "DeviceAccessPage_490": "新增产品", - "DeviceAccessPage_491": "协议", - "DeviceAccessPage_492": "上报", - "DeviceAccessPage_493": "订阅", - "DeviceAccessPage_494": "字段映射", - "DeviceAccessPage_495": "确定要删除该产品吗", - "DeviceAccessPage_496": "新增物模型", - "DeviceAccessPage_497": "设备配置", - "DeviceAccessPage_498": "产品配置", - "DeviceAccessPage_499": "物模型配置", - "DeviceAccessPage_500": "请输入设备", - "DeviceAccessPage_501": "关联产品", - "DeviceAccessPage_502": "请选择关联产品", - "DeviceAccessPage_503": "配置", - "DeviceAccessPage_504": "地址", - "DeviceAccessPage_505": "默认", - "DeviceAccessPage_506": "登录账号", - "DeviceAccessPage_507": "设备登录账号", - "DeviceAccessPage_508": "登录密码", - "DeviceAccessPage_509": "设备登录密码", - "DeviceAccessPage_510": "服务地址", - "DeviceAccessPage_511": "客户端唯一标识", - "DeviceAccessPage_512": "账号(选填", - "DeviceAccessPage_514": "密码(选填", - "DeviceAccessPage_515": "告警阈值配置", - "DeviceAccessPage_516": "上限", - "DeviceAccessPage_517": "上限值", - "DeviceAccessPage_518": "下限", - "DeviceAccessPage_519": "下限值", - "DeviceAccessPage_520": "当前物模型未设置告警属性,无法配置阈值", - "DeviceAccessPage_521": "产品编号", - "DeviceAccessPage_522": "智能网关", - "DeviceAccessPage_523": "厂商", - "DeviceAccessPage_524": "迈步科技", - "DeviceAccessPage_525": "传输类型", - "DeviceAccessPage_526": "绑定物模型", - "DeviceAccessPage_527": "请选择要绑定的物模型", - "DeviceAccessPage_528": "协议自动配置项", - "DeviceAccessPage_529": "属性配置(你原来的", - "DeviceAccessPage_530": "物模型属性配置", - "DeviceAccessPage_533": "请选择物模型以显示属性", - "DeviceAccessPage_534": "行为(指令)配置 新增", - "DeviceAccessPage_535": "物模型行为(指令)配置", - "DeviceAccessPage_536": "默认值", - "DeviceAccessPage_537": "该物模型暂无指令", - "DeviceAccessPage_538": "属性", - "DeviceAccessPage_539": "编码", - "DeviceAccessPage_540": "单位", - "DeviceAccessPage_541": "指令", - "DeviceAccessPage_542": "指令编码", - "DeviceAccessPage_543": "指令名称", - "DeviceAccessPage_544": "参数", - "DeviceAccessPage_545": "属性弹窗", - "DeviceAccessPage_546": "配置属性", - "DeviceAccessPage_547": "属性编码", - "DeviceAccessPage_548": "属性名称", - "DeviceAccessPage_549": "如 温度", - "DeviceAccessPage_550": "告警参数", - "DeviceAccessPage_551": "指令弹窗", - "DeviceAccessPage_552": "配置指令", - "DeviceAccessPage_553": "指令参数", - "DeviceAccessPage_554": "参数名", - "DeviceAccessPage_555": "枚举", - "DeviceAccessPage_556": "分隔", - "DeviceAccessPage_557": "标准字段", - "DeviceAccessPage_558": "厂商原始字段", - "DeviceAccessPage_559": "转换规则", - "DeviceManagement_560": "无人机管理", - "DeviceManagement_561": "智能装备", - "DeviceManagement_562": "摄像头管理", - "DeviceManagement_563": "机器人生成", - "DroneManagement_564": "获取无人机列表失败", - "DroneManagement_565": "请先在列表中选中需要绑定的无人机", - "DroneManagement_566": "绑定成功", - "DroneManagement_567": "绑定失败", - "DroneManagement_568": "操作异常", - "DroneManagement_569": "未选择有效设备,无法解绑", - "DroneManagement_570": "人员", - "DroneManagement_571": "场站", - "DroneManagement_572": "组织", - "DroneManagement_573": "确认解绑", - "DroneManagement_574": "确定要为选中的无人机清除", - "DroneManagement_575": "绑定吗", - "DroneManagement_576": "解绑成功", - "DroneManagement_577": "解绑失败", - "DroneManagement_578": "机场", - "DroneManagement_579": "所属组织", - "DroneManagement_580": "未绑定", - "DroneManagement_581": "所属场站", - "DroneManagement_582": "人员解绑", - "DroneManagement_583": "场站解绑", - "DroneManagement_584": "组织解绑", - "DroneManagement_585": "绑定无人机", - "DroneManagement_586": "批量解绑(用户", - "DroneManagement_587": "批量解绑(场站", - "DroneManagement_588": "批量解绑(组", - "DroneManagement_589": "已选无人机", - "DroneManagement_591": "请选择组织", - "DroneManagement_592": "请选择场站", - "DroneManagement_593": "请先选择组织", - "DroneManagement_594": "请选择负责人", - "DroneManagement_595": "请先选择场站后选择负责人", - "ErrorManagement_596": "搜索区域完全不变", - "ErrorManagement_597": "新增/编辑/查看弹窗(核心优化区域", - "ErrorManagement_598": "第一行:基础编码名称", - "ErrorManagement_599": "第二行:来源、等级、校验字段", - "ErrorManagement_600": "第三行:对比类型", - "ErrorManagement_601": "对比值(自动切换单输入/区间双输入", - "ErrorManagement_602": "区间类型", - "ErrorManagement_603": "显示两个输入框", - "FlvPlayer_606": "当前浏览器不支持 FLV MSE播放,请下载文件查看", - "FlvPlayer_607": "适配", - "FlvPlayer_608": "关键:大文件点播不能false,否则一次性全部下载立刻关闭", - "FlvPlayer_609": "视频编码不受浏览器MSE支持,请下载文件本地播放", - "FlvPlayer_610": "媒体源不支持", - "FlvPlayer_611": "播放异常,建议下载文件本地播放", - "FlvPlayer_612": "网络错误,请检查视频地址", - "FlvPlayer_613": "媒体解码错误,该FLV文件可能不兼容浏览器", - "FlvPlayer_614": "加载超时,浏览器MSE解析失败,请下载文件本地播放", - "FlvPlayer_615": "播放器初始化失败,请重试", - "FlvPlayer_616": "视频加载失败,请检查地址或下载", - "FlvPlayer_617": "播放失败", - "FlvPlayer_618": "重试", - "FlvPlayer_619": "下载视频", - "FlvPlayer_620": "点击手动播放视频", - "FlvPlayer_621": "使用", - "FlvPlayer_622": "解码,部分特殊编码FLV浏览器无法渲染,建议下载本地播放", - "FlvPlayer_623": "非FLV使用浏览器原生播放", - "LogManagement_624": "系统", - "LogManagement_625": "机器人智慧服务系统 Alpha 三服务(接入/状态/命令)启动完成", - "LogManagement_626": "命令服务", - "LogManagement_627": "向 ROBOT-001 下发移动命令", - "LogManagement_628": "执行结果:成功", - "LogManagement_629": "新增运维工程师账号", - "LogManagement_630": "李工", - "LogManagement_631": "角色:运维工程师", - "LogManagement_632": "心跳超时", - "LogManagement_633": "已自动置为离线", - "LogManagement_634": "自主巡检", - "LogManagement_635": "超时,已自动重试 1 次后仍失败", - "LogManagement_636": "修改系统名称与数据刷新频率", - "LogManagement_637": "状态服务", - "LogManagement_638": "设备 ROBOT-001 上报状态:电量 85%,模式", - "LogManagement_639": "逆变器 INV-03 输出功率较昨日下降 16%,触发预警", - "LogManagement_640": "调整 CAM-04 热成像通道码率参数", - "LogManagement_641": "每日自动备份完成,备份文件", - "LogManagement_642": "未知设备尝试注册(secret 校验失败),已拒绝,来源", - "LogManagement_643": "角色授权", - "LogManagement_644": "报表中心-导出", - "LogManagement_645": "日志已刷新", - "LogManagement_646": "级别", - "LogManagement_648": "消息", - "LogManagement_650": "已导出", - "LogManagement_651": "条日志", - "LogManagement_652": "系统运行、设备控制与管理员操作流水,仅超级管理员可查看", - "LogManagement_653": "全部级别", - "LogManagement_654": "搜索消息 / 操作人 / 来源", - "MenuList_655": "菜单加载失败", - "MenuList_656": "新增子菜单", - "MenuList_657": "新增菜单", - "MenuList_658": "关闭分页", - "MenuList_659": "菜单弹窗", - "MenuList_660": "编辑菜单", - "MenuList_661": "无(一级菜单", - "MenuList_662": "请输入菜单名称", - "MenuList_663": "显示排序", - "MenuList_664": "数字越小越靠前", - "MenuList_665": "图标选择弹窗", - "MenuList_666": "选择菜单图标", - "OnlineUser_667": "研发部门", - "OnlineUser_668": "内网", - "OnlineUser_669": "默认选中在线用户", - "OnlineUser_670": "搜索完成", - "OnlineUser_671": "已重置搜索条件", - "OnlineUser_672": "已向会话", - "OnlineUser_673": "发送强退指令", - "OnlineUser_674": "序号", - "OnlineUser_675": "会话编号", - "OnlineUser_676": "登录名称", - "OnlineUser_677": "所属部门", - "OnlineUser_678": "主机", - "OnlineUser_679": "登录地点", - "OnlineUser_680": "操作系统", - "OnlineUser_681": "浏览器", - "OnlineUser_682": "登录时间", - "OnlineUser_683": "强退", - "OnlineUser_684": "系统监控", - "OnlineUser_685": "顶部", - "OnlineUser_686": "其他监控", - "OnlineUser_688": "搜索栏", - "OnlineUser_689": "登录地址", - "OnlineUser_690": "请输入登录地址", - "OnlineUser_691": "请输入用户名称", - "OnlineUser_694": "在线用户表格", - "OnlineUser_695": "其他页面(你可以随便改内容", - "OnlineUser_696": "其他监控内容", - "OnlineUser_697": "这里可以放服务状态、CPU监控、内存监控、接口监控等内容", - "Organization_698": "确定删除该组织", - "Organization_699": "新增组织", - "Organization_700": "统一分页", - "Organization_701": "编辑组织", - "Organization_702": "请输入组织名称", - "Organization_703": "组织编码", - "Organization_704": "请输入组织编码", - "Organization_705": "请输入负责人", - "Organization_706": "请输入联系电话", - "Organization_707": "请输入邮箱", - "Organization_708": "请输入地址", - "Organization_709": "请输入备注", - "SerialNumGenerate_710": "请选择要删除的数据", - "SerialNumGenerate_711": "请先生成", - "SerialNumGenerate_713": "未查询到数据", - "SerialNumGenerate_714": "查询失败", - "SerialNumGenerate_715": "序列号", - "SerialNumGenerate_716": "型号", - "SerialNumGenerate_717": "国家", - "SerialNumGenerate_718": "省份", - "SerialNumGenerate_719": "二维码", - "SerialNumGenerate_721": "机器人二维码管理", - "SerialNumGenerate_722": "数据管理", - "SerialNumGenerate_723": "确定删除选中项", - "SerialNumGenerate_724": "筛选栏", - "SerialNumGenerate_725": "请输入序列号", - "SerialNumGenerate_726": "列表", - "SerialNumGenerate_727": "完全自适应", - "SerialNumGenerate_728": "右侧固定", - "SerialNumGenerate_729": "不溢出", - "SerialNumGenerate_730": "新增弹窗", - "SerialNumGenerate_731": "生成机器人二维码", - "SerialNumGenerate_732": "选择型号", - "SerialNumGenerate_733": "选择配置", - "SerialNumGenerate_734": "选择类型", - "SerialNumGenerate_735": "选择国家", - "SerialNumGenerate_736": "请先选择国家", - "SerialNumGenerate_737": "生成序列号", - "SerialNumGenerate_738": "请先生成二维码", - "SerialNumGenerate_739": "查看二维码", - "SerialNumGenerate_740": "二维码详情", - "SerialNumGenerate_741": "机器人类型", - "SerialNumGenerate_742": "类型名称", - "SerialNumGenerate_743": "存储值", - "SerialNumGenerate_744": "机器人型号", - "SerialNumGenerate_745": "型号名称", - "SerialNumGenerate_746": "配置名称", - "SmartDeviceManagement_747": "获取智能装备列表失败", - "SmartDeviceManagement_748": "装备编辑成功", - "SmartDeviceManagement_749": "无权限", - "SmartDeviceManagement_750": "保存参数成功", - "SmartDeviceManagement_751": "授权失败", - "SmartDeviceManagement_752": "请先在列表中选中需要绑定的智能装备", - "SmartDeviceManagement_753": "确定要为选中的智能装备清除", - "SmartDeviceManagement_754": "设备码", - "SmartDeviceManagement_755": "清除人员绑定", - "SmartDeviceManagement_756": "清除场站绑定", - "SmartDeviceManagement_757": "清除组织绑定", - "SmartDeviceManagement_758": "授权", - "SmartDeviceManagement_759": "绑定装备", - "SmartDeviceManagement_760": "批量解绑(组织", - "SmartDeviceManagement_761": "绑定智能装备", - "SmartDeviceManagement_762": "已选智能装备", - "SmartDeviceManagement_763": "请选择装备", - "SmartDeviceManagement_764": "编辑智能装备信息", - "SmartDeviceManagement_765": "请填写设备名称", - "SmartDeviceManagement_766": "设备序列号", - "SmartDeviceManagement_767": "请填写设备码", - "SmartDeviceManagement_768": "请输入设备序列号", - "SmartDeviceManagement_769": "请选择在线状态", - "SmartDeviceManagement_770": "选择在线状态", - "SmartDeviceManagement_771": "设备授权", - "SmartDeviceManagement_772": "设置设备操作授权,授权到期后设备将失去对应操作权限", - "SmartDeviceManagement_773": "授权时间", - "SmartDeviceManagement_774": "请输入授权剩余时间", - "SmartDeviceManagement_775": "授权时间不能小于", - "SmartDeviceManagement_776": "保存授权", - "StationManage_777": "分区设置", - "StationManage_778": "边界绘制", - "StationManage_779": "请选择组织筛选", - "StationManage_780": "新增场站", - "StationManage_781": "场站弹窗", - "StationManage_782": "编辑场站", - "StationManage_783": "请选择所属组织", - "StationManage_784": "详细地址", - "StationManage_785": "消息推送配置", - "StationManage_786": "钉钉告警推送", - "StationManage_787": "开启", - "StationManage_788": "钉钉工单推送", - "StationManage_789": "邮件推送", - "StationManage_790": "告警弹窗推送", - "StationManage_791": "钉钉开关开启才显示Token、密钥", - "StationManage_792": "钉钉机器人", - "StationManage_793": "开启钉钉推送时必须填写", - "StationManage_794": "请输入钉钉机器人", - "StationManage_795": "钉钉加密密钥", - "StationManage_796": "开启钉钉推送时必须填写加密密钥", - "StationManage_797": "钉钉机器人加签密钥", - "StationManage_798": "分区弹窗", - "StationManage_799": "分区名称", - "StationManage_800": "分区编码", - "StationManage_801": "分区类型", - "StationManage_802": "清扫区", - "StationManage_803": "巡检区", - "StationManage_804": "保存分区", - "StationManage_805": "地图绘制弹窗", - "StationManage_806": "地图区域绘制(可自行接入高德/百度地图", - "StationManage_807": "开始绘制", - "StationManage_808": "保存边界", - "SystemMaintain_809": "错误管理", - "SystemMaintain_810": "告警模型管理", - "SystemMaintain_811": "工单模型管理", - "UserPage_814": "角色弹窗", - "UserPage_815": "用户弹窗", - "UserPage_816": "自动适应布局:隐藏角色时,状态自动占满一行", - "VideoManagement_817": "读取通道失败", - "VideoManagement_818": "无法连接视频服务", - "VideoManagement_819": "读取文件失败", - "VideoManagement_820": "请先选择完整的时间路径", - "VideoManagement_821": "大小", - "VideoManagement_822": "录像通道与回放管理 · 共", - "VideoManagement_823": "个通道", - "VideoManagement_824": "通道", - "VideoManagement_825": "选择设备通道", - "VideoManagement_826": "请先选择视频通道", - "VideoManagement_827": "请选择 年 / 月 / 日 加载录像", - "VideoManagement_828": "该日暂无录像文件", - "VideoManagement_829": "个文件", - "WorkOrderSettingsManagement_830": "获取工单模型列表失败", - "WorkOrderSettingsManagement_831": "您确定要删除这条工单模型吗", - "WorkOrderSettingsManagement_832": "条工单模型吗", - "WorkOrderSettingsManagement_833": "工单名称", - "WorkOrderSettingsManagement_835": "轻微", - "WorkOrderSettingsManagement_836": "路径/航线", - "WorkOrderSettingsManagement_837": "自动生成任务", - "WorkOrderSettingsManagement_838": "新增工单模型", - "WorkOrderSettingsManagement_839": "编辑工单模型", - "WorkOrderSettingsManagement_840": "请输入工单名称", - "WorkOrderSettingsManagement_842": "请选择设备", - "WorkOrderSettingsManagement_843": "根据设备类型显示不同的路径选择", - "WorkOrderSettingsManagement_844": "预设路径", - "WorkOrderSettingsManagement_845": "请选择预设路径", - "WorkOrderSettingsManagement_846": "无人机航线", - "WorkOrderSettingsManagement_847": "请选择无人机航线", - "SystemSetting_1265": "告警规则配置、用户角色、通知管理与系统参数设置" - }, - "aiAnalysis": { - "objectDetection": "objectdetection", - "detectDesc": "detectdesc", - "thermalSegmentation": "热成像segmentation", - "segmentationDesc": "segmentationdesc", - "getModelsFailed": "GETmodels失败", - "uploadFirst": "上传first", - "submitTaskFailed": "submit任务失败", - "thermalAnalysisComplete": "热成像分析完成", - "taskSuccess": "任务成功", - "taskExecutionError": "任务execution错误", - "cancelled": "cancelled", - "uploadThermalFirst": "上传热成像first", - "thermalAnalysisFailed": "热成像分析失败", - "detectTaskName": "detect任务名称", - "segmentationTaskName": "segmentation任务名称", - "algoCount": "algo数量", - "detectAndSeg": "detectANDSEG", - "onlineServices": "在线services", - "healthCheck": "healthcheck", - "modelCount": "model数量", - "detectModelRegistry": "detectmodelregistry", - "historyRecords": "历史records", - "pageDebugRecords": "页面debugrecords", - "detectModel": "detectmodel", - "default": "default", - "inputType": "input类型", - "image": "image", - "inferencePreset": "inference预设", - "quality": "quality", - "dragFile": "dragfile", - "supportedFormats": "supportedformats", - "processing": "处理中", - "submitDetectTask": "submitdetect任务", - "serverDemo": "serverdemo", - "refreshModels": "刷新models", - "thermalFileLabel": "热成像filelabel", - "uploadThermal": "上传热成像", - "arrayMask": "arraymask", - "panelGeojson": "panelgeojson", - "submitThermalAnalysis": "submit热成像分析", - "readServerHistory": "readserver历史", - "resultDisplay": "结果display", - "resultViewHint": "结果查看hint", - "inputPreview": "inputpreview", - "resultImageVideo": "结果image视频", - "showResultAfterTask": "show结果after任务", - "resultJson": "结果json", - "noResult": "编号结果", - "thermalInteractiveView": "热成像interactive查看", - "clickHotspotHint": "click热斑hint", - "hotspotCount": "热斑数量", - "panelArea": "panelarea", - "analysisId": "分析ID", - "pointDetails": "点details", - "selectHotspotPanel": "选择热斑panel", - "hotspot": "热斑", - "blockNumber": "blocknumber", - "originalPixels": "originalpixels", - "overlayPixels": "overlaypixels", - "area": "area", - "waitingSegmentation": "waitingsegmentation", - "hotspotPanelList": "热斑panel列表", - "panelLabel": "panellabel", - "centerTitle": "中心title", - "algorithmList": "algorithm列表", - "integratedCount": "integrated数量", - "detectWorkspace": "detectworkspace", - "segWorkspace": "SEGworkspace", - "asyncTask": "async任务", - "syncAnalysis": "sync分析", - "detectWorkspaceDesc": "detectworkspacedesc", - "segWorkspaceDesc": "SEGworkspacedesc", - "historyAnalysis": "历史分析", - "noHistory": "编号历史", - "detect": "detect", - "segment": "segment", - "hotspotRecognition": "热斑recognition", - "abnormalString": "异常组串", - "recommendedCleanBlock": "recommended清洗block", - "videoAbnormalEvent": "视频异常event", - "videoIntelligentAnalysis": "视频intelligent分析", - "perimeterIntrusion": "perimeterintrusion", - "perimeterIntrusionDesc": "perimeterintrusiondesc", - "personnelIntrusion": "personnelintrusion", - "personnelIntrusionDesc": "personnelintrusiondesc", - "fireSmokeDetection": "firesmokedetection", - "fireSmokeDesc": "firesmokedesc", - "areaLoitering": "arealoitering", - "areaLoiteringDesc": "arealoiteringdesc", - "motionDetection": "motiondetection", - "motionDetectionDesc": "motiondetectiondesc", - "perimeterIntrusionTimeline": "perimeterintrusion时间线", - "personnelIntrusionTimeline": "personnelintrusion时间线", - "areaLoiteringTimeline": "arealoitering时间线", - "motionDetectionTimeline": "motiondetection时间线", - "perimeterClimbTimeline": "perimeterclimb时间线", - "perimeterIntrusionType": "perimeterintrusion类型", - "AIAnalysis_983": "处理热斑组件", - "AIAnalysis_984": "排查异常组串", - "AIAnalysis_985": "清洗受遮挡区域", - "AIAnalysis_986": "跟踪衰减较大组件", - "AIAnalysis_987": "持续监控逆变器效率", - "AIAnalysis_988": "方阵", - "AIAnalysis_989": "智能诊断与分析中心", - "AIAnalysis_990": "刷新数据", - "AIAnalysis_991": "导出报告", - "AIAnalysis_992": "第一排:顶部统计卡片", - "AIAnalysis_993": "值 (性能比", - "AIAnalysis_994": "较昨日", - "AIAnalysis_995": "发电偏差率", - "AIAnalysis_996": "异常组串数量", - "AIAnalysis_997": "热斑疑似数量", - "AIAnalysis_998": "电站健康度评分", - "AIAnalysis_999": "预测发电量", - "AIAnalysis_1000": "第二排:热成像分析 和 组串异常定位", - "AIAnalysis_1001": "无人机热成像巡检分析", - "AIAnalysis_1002": "模拟热斑点", - "AIAnalysis_1003": "高危", - "AIAnalysis_1004": "注意", - "AIAnalysis_1005": "热斑疑似点", - "AIAnalysis_1006": "高温区域", - "AIAnalysis_1007": "温度分布", - "AIAnalysis_1008": "组串实时状态定位图", - "AIAnalysis_1009": "总组串", - "AIAnalysis_1012": "组串", - "AIAnalysis_1013": "严重异常 (热斑", - "AIAnalysis_1014": "严重异常 (断路", - "AIAnalysis_1015": "异常 (功率偏差", - "AIAnalysis_1016": "异常 (遮挡", - "AIAnalysis_1017": "轻微异常", - "AIAnalysis_1019": "运行正常", - "AIAnalysis_1020": "功率异常", - "AIAnalysis_1021": "严重故障", - "AIAnalysis_1022": "设备离线", - "AIAnalysis_1023": "异常类型分布", - "AIAnalysis_1024": "离线组串", - "AIAnalysis_1025": "查看详细定位表", - "AIAnalysis_1026": "第三排:三个主要分析区域", - "AIAnalysis_1027": "组件衰减趋势分析", - "AIAnalysis_1028": "衰减率趋势", - "AIAnalysis_1029": "当前均值", - "AIAnalysis_1030": "平均衰减率", - "AIAnalysis_1031": "最佳组件", - "AIAnalysis_1032": "最差组件", - "AIAnalysis_1033": "衰减预警", - "AIAnalysis_1034": "块组件衰减超标", - "AIAnalysis_1035": "建议排查", - "AIAnalysis_1036": "实时发电表现深度分析", - "AIAnalysis_1037": "发电量对比分析", - "AIAnalysis_1038": "实际发电", - "AIAnalysis_1039": "预测发电", - "AIAnalysis_1040": "理论发电", - "AIAnalysis_1041": "当日实际发电", - "AIAnalysis_1042": "当日预测发电", - "AIAnalysis_1043": "实时 PR 值", - "AIAnalysis_1044": "诊断总结", - "AIAnalysis_1046": "诊断项", - "AIAnalysis_1047": "影响", - "AIAnalysis_1048": "检测到 36 处热斑疑似点", - "AIAnalysis_1049": "组串失配", - "AIAnalysis_1050": "串组串存在异常", - "AIAnalysis_1051": "遮挡风险", - "AIAnalysis_1052": "局部遮挡影响 2% 发电量", - "AIAnalysis_1053": "组件衰减", - "AIAnalysis_1054": "逆变器异常", - "AIAnalysis_1055": "所有逆变器运行正常", - "AIAnalysis_1056": "建议与处置", - "AIAnalysis_1057": "建议措施", - "AIAnalysis_1058": "收益", - "AIAnalysis_1059": "跟踪衰减组件", - "AIAnalysis_1060": "监控逆变器效率", - "AIAnalysis_1061": "底部:数据来源", - "AIAnalysis_1062": "全栈数据融合来源", - "AIAnalysis_1063": "无人机载荷热成像", - "AIAnalysis_1064": "同步中", - "AIAnalysis_1065": "实时遥测数据", - "AIAnalysis_1066": "云端气象分析站", - "AIAnalysis_1067": "电站运维资产库", - "AIAnalysis_1068": "数据点" - }, - "video": { - "fileDetails": "filedetails", - "sourceDevice": "来源设备", - "startEndTime": "开始结束时间", - "capacity": "容量", - "videoReplayCenter": "视频replay中心", - "allRecordings": "ALLrecordings", - "todayRecordings": "今日recordings", - "timeSpan": "时间span", - "onlineSearch": "在线搜索", - "labelMainFront": "labelmainfront", - "labelRear": "labelrear", - "labelLeft": "label左", - "labelRight": "label右", - "labelFrontDrive": "labelfrontdrive", - "labelRearMount": "labelrearmount", - "labelLeftWing": "label左wing", - "labelRightWing": "label右wing", - "labelCargo": "labelcargo", - "labelMainProbe": "labelmainprobe", - "labelPanorama": "label全景", - "labelDetail": "labeldetail", - "currentDutyDevice": "currentduty设备", - "videoStreamChannels": "视频streamchannels", - "refreshSignal": "刷新signal", - "fullScreenWall": "fullscreenwall", - "ptzServoControl": "PTZservo控制", - "systemIntegratedCommand": "systemintegratedcommand", - "twoWayIntercom": "TWOWAYintercom", - "triggerRemoteRepellent": "triggerremoterepellent", - "aiVisualTracking": "AIvisualtracking", - "activeVideoStreams": "active视频streams", - "positionArray1": "positionarray1", - "domeCamera": "dome摄像头", - "recording": "recording", - "positionInverterRoom": "position逆变器room", - "positionStationGate": "position基站gate", - "positionPerimeterNorth": "positionperimeternorth", - "positionWeatherStation": "positionweather基站", - "positionEquipmentArea": "positionequipmentarea", - "positionStorageBattery": "positionstorage电量", - "positionEnergyStorage": "positionenergystorage", - "positionPerimeterSouth": "positionperimetersouth", - "positionArrayWest": "positionarraywest", - "cameraName": "摄像头名称", - "recordingStatus": "recording状态", - "lastEventTime": "lastevent时间", - "onlineCameras": "在线cameras", - "unitDevice": "单位设备", - "onlineRateTrend": "在线rate趋势", - "offlineCameras": "离线cameras", - "offlineRateTrend": "离线rate趋势", - "todayAlertEvents": "今日告警events", - "unitIncident": "单位incident", - "vsYesterdayPercent": "较昨日percent", - "perimeterAlerts": "perimeter告警", - "storageUsage": "storageusage", - "storageUsageTrend": "storageusage趋势", - "videoMonitorCenter": "视频monitor中心", - "customLayout": "customlayout", - "mainView": "main查看", - "liveLabel": "livelabel", - "cameraDeviceList": "摄像头设备列表", - "searchCameraPlaceholder": "搜索摄像头placeholder", - "allStatuses": "ALLstatuses", - "eventTimeline": "event时间线", - "allTypes": "ALLtypes", - "viewMore": "查看more", - "recentAlertSnapshots": "recent告警snapshots", - "VideoPlayer_849": "前视图", - "VideoPlayer_850": "后视图", - "VideoPlayer_851": "左视图", - "VideoPlayer_852": "右视图", - "VideoPlayer_853": "视频源连接失败", - "Video_1269": "安防型", - "Video_1270": "运输型", - "Video_1271": "巡检型", - "VideoMonitorPage_1272": "中间视频监控中心", - "VideoMonitorPage_1273": "底部三栏", - "VideoMonitorPage_1274": "模拟检测框" - }, - "login": { - "and": "AND", - "Login_1228": "左侧:表单区域", - "Login_1230": "右侧:梯形斜切", - "Login_1231": "图片铺满" - }, - "profile": { - "requestFailed": "请求失败", - "basicInfo": "basic提示", - "phoneInvalid": "phone无效", - "emailInvalid": "邮件无效", - "emailPlaceholder": "邮件placeholder", - "remarkPlaceholder": "remarkplaceholder", - "changePassword": "changepassword", - "oldPasswordPlaceholder": "OLDpasswordplaceholder", - "newPasswordPlaceholder": "NEWpasswordplaceholder", - "passwordLengthError": "passwordlength错误", - "confirmPasswordRequired": "确认passwordrequired", - "confirmPasswordPlaceholder": "确认passwordplaceholder", - "Profile_1232": "关键:给 Row 添加", - "Profile_1233": "让两列自动等高", - "Profile_1234": "左侧信息卡片", - "Profile_1236": "自动填充高度", - "Profile_1237": "右侧表单卡片", - "Profile_1238": "基本资料", - "Profile_1239": "修改密码" - }, - "home": { - "realtimePower": "实时power", - "totalPower": "共power", - "ratedPower": "ratedpower", - "gridConnection": "grid连接", - "gridConnected": "gridconnected", - "frequency": "frequency", - "gridVoltage": "gridvoltage", - "phaseA": "phaseA", - "todayAccumulated": "今日accumulated", - "currentIrradiance": "current辐照度", - "ambientTemperature": "ambient温度", - "powerCurve": "powercurve", - "today": "今日", - "inverterPowerCompare": "逆变器powercompare", - "stringCurrentHeatmap": "组串currentheatmap", - "current": "current", - "Home_1158": "江苏省", - "Home_1159": "南通市", - "Home_1160": "崇川区", - "Home_1161": "西南风", - "Home_1162": "升压站安防巡检任务", - "Home_1163": "草稿", - "Home_1164": "区清洗任务", - "Home_1166": "区巡检任务", - "Home_1167": "已派发", - "Home_1168": "分析", - "Home_1169": "发现逆变器温度与组串电流存在轻微异常,建议优先复核A区设备", - "Home_1170": "发现2处组件存在异常热斑", - "Home_1171": "散热检修建议:建议检查INV-A02散热风扇、风道和运行负载,持续高温时转维修工单", - "Home_1172": "个组串存在发电异常", - "Home_1173": "阵列热斑处置建议:建议现场复核PV-A05-018至PV-A05-020组件接线和旁路二极管状态,必要时更换异常组件", - "Home_1174": "整体发电偏差", - "Home_1176": "待开始", - "Home_1177": "主键ID(新增为空", - "Home_1178": "工单编号(后端生成", - "Home_1179": "光伏组件清洗工单", - "Home_1183": "电站", - "Home_1184": "设备类型:电站", - "Home_1185": "根据电站清洁度建议进行组件清洗,提升发电效率", - "Home_1186": "系统自动生成清洗建议,预计提升发电量", - "Home_1187": "清洗设备、水枪、抹布", - "Home_1188": "影响发电量(%) 数字", - "Home_1190": "工单生成失败", - "Home_1191": "工单生成接口调用失败", - "Home_1192": "加载失败", - "Home_1193": "必须加这个,message才能正常显示", - "Home_1198": "主体布局", - "Home_1199": "左侧图表", - "Home_1200": "今日发电功率趋势", - "Home_1201": "效率", - "Home_1203": "总任务", - "Home_1204": "中间", - "Home_1205": "外部系统", - "Home_1206": "巡检类型", - "Home_1207": "巡检时间", - "Home_1208": "巡检人员", - "Home_1210": "热点检测", - "Home_1211": "发现", - "Home_1212": "处组件存在异常热斑", - "Home_1213": "组串异常", - "Home_1214": "发电偏差分析", - "Home_1215": "告警内容", - "Home_1216": "发生时间", - "Home_1217": "组件阵列", - "Home_1218": "环境传感器", - "Home_1219": "详细", - "Home_1221": "生成工单按钮(已完善", - "Home_1222": "清洁度", - "Home_1223": "建议清洗时间", - "Home_1224": "天内", - "Home_1225": "预计提升发电量", - "Home_1226": "预计提升电量" - }, - "router": { - "realtimeMonitorCenter": "实时monitor中心", - "realtimeMonitorDesc": "实时monitordesc" - }, - "report": { - "monthlyGeneration": "monthlygeneration", - "monthOverMonthUp": "月over月UP", - "prAverage": "PRaverage", - "workOrderCompletionRate": "工作工单completionrate", - "monthlyTotalOrders": "monthly共orders", - "alertClosureRate": "告警closurerate", - "criticalAlertCount": "严重告警数量", - "cleaningRevenueImprovement": "清洗revenueimprovement", - "estimatedAdditionalGeneration": "estimatedadditionalgeneration", - "autoGeneratedReports": "autogeneratedreports", - "unitReport": "单位report", - "monthlyAccumulated": "monthlyaccumulated", - "stationMonthlyReportFile": "基站monthlyreportfile", - "generated": "generated", - "weeklyOperationSummary": "weeklyoperationsummary", - "aiDiagnosisDaily": "AI诊断日", - "generating": "生成中", - "alertClosureWeekly": "告警closureweekly", - "monthlyOperationReport": "monthlyoperationreport", - "monthlyOperationReportDesc": "monthlyoperationreportdesc", - "deviceHealthReport": "设备healthreport", - "deviceHealthReportDesc": "设备healthreportdesc", - "cleaningOptimizationReport": "清洗优化report", - "cleaningEffectReportDesc": "清洗effectreportdesc", - "inspectionRobotReport": "巡检机器人report", - "inspectionRobotReportDesc": "巡检机器人reportdesc", - "stationMonthly": "基站monthly", - "alertWeekly": "告警weekly", - "systemAuto": "systemauto", - "aiAnalysisReport": "AI分析report", - "operationSummary": "operationsummary", - "operationReport": "operationreport", - "cleaningEffectReport": "清洗effectreport", - "overview": "概览", - "reportCycle": "reportcycle", - "reportType": "report类型", - "exportPdf": "导出PDF", - "exportExcel": "导出excel", - "monthlyOperationAnalysis": "monthlyoperation分析", - "generation": "generation", - "predictedGeneration": "predictedgeneration", - "monthlyAccumulatedGeneration": "monthlyaccumulatedgeneration", - "theoreticalGeneration": "theoreticalgeneration", - "generationDeviation": "generationdeviation", - "averageIrradiance": "average辐照度", - "unitIrradiancePerDay": "单位辐照度PER日", - "generationMeteorology": "generationmeteorology", - "workOrderAlertClosure": "工作工单告警closure", - "closureRate": "closurerate", - "alarmCount": "告警数量", - "aiAnalysisStatistics": "AI分析统计", - "unitItem": "单位item", - "subscriptionDispatch": "订阅dispatch", - "subscribers": "subscribers", - "roleOmSupervisor": "角色OMsupervisor", - "roleStationEngineer": "角色基站engineer", - "roleDeviceOm": "角色设备OM", - "roleOmManager": "角色OMmanager", - "dispatchChannels": "dispatchchannels", - "email": "邮件", - "systemNotification": "systemnotification", - "sendPlan": "send计划", - "weeklyAutoSend": "weeklyautosend", - "reportDirectory": "report目录", - "reportName": "report名称", - "templateCenter": "template中心", - "generationRecords": "generationrecords", - "generateTime": "生成时间", - "generator": "generator", - "reportDownloader_5": "适配割草(植被高度)、清洗(灰损率)的不同字段", - "reportDownloader_6": "核心指标", - "reportDownloader_7": "最佳作业窗口", - "reportDownloader_8": "任务列表", - "reportDownloader_9": "算法执行流程", - "ReportCenter_1249": "王运维", - "ReportCenter_1250": "页面头部标签", - "ReportCenter_1251": "左侧主内容区", - "ReportCenter_1252": "月度综合经营分析", - "ReportCenter_1253": "第二排:三个图表", - "ReportCenter_1254": "订阅与分发", - "ReportCenter_1255": "陈经理", - "ReportCenter_1256": "右侧边栏", - "ReportCenter_1257": "报表目录 / 快捷下载", - "ReportCenter_1258": "模板中心", - "ReportCenter_1259": "报表生成记录" - }, - "roles": { - "editSuccess": "编辑成功", - "addSuccess": "新增成功", - "manageMembers": "管理members", - "confirmDeleteRole": "确认删除角色", - "permissionKey": "权限KEY", - "superAdmin": "superadmin", - "orgAdmin": "ORGadmin", - "editRole": "编辑角色", - "roleNamePlaceholder": "角色名称placeholder", - "rolePermission": "角色权限", - "roleKeyPlaceholder": "角色KEYplaceholder", - "roleSortLabel": "角色排序label", - "menuPermissionConfig": "菜单权限配置", - "Roles_1260": "统一卡片容器(和菜单管理一致", - "Roles_1261": "顶部操作栏(和菜单管理统一", - "Roles_1262": "角色卡片列表", - "Roles_1263": "分页组件(正确触发", - "Roles_1264": "新增/编辑弹窗" - }, - "users": { - "notAssigned": "NOTassigned", - "languagePlaceholder": "语言placeholder", - "rolePlaceholder": "角色placeholder", - "siteId": "siteID", - "Users_1266": "回填多选角色", - "Users_1267": "直接提交数组", - "Users_1268": "多角色选择", - "userSlice_1321": "保存用户信息", - "userSlice_1322": "刷新自动恢复" - }, - "page": { - "api_1": "只需要加这一行", - "request_10": "使用全局", - "AgoraRtc_11": "先清理上一次", - "AgoraRtc_12": "视频连接失败", - "Draggable_269": "仅标题栏可拖拽,内容区不触发拖拽", - "Draggable_270": "整体8px外边框", - "Draggable_271": "拖拽标题栏", - "Draggable_272": "关闭按钮", - "Draggable_273": "关闭按钮,阻止拖拽冒泡", - "Draggable_274": "传入的视频内容", - "Empty_275": "自定义文案", - "Empty_276": "组件高度", - "Map_278": "规划航线", - "Map_279": "完成点实时轨迹", - "Map_280": "标记点实体", - "Map_281": "跟随小车的实例", - "Map_282": "直接存 Cartesian3(性能最高", - "Map_283": "强制刷新", - "Map_284": "垂直俯视", - "Map_285": "加这个(只在需要时渲染", - "Map_286": "飞机", - "Map_288": "割草", - "Map_290": "默认车", - "recharts_291": "访问量", - "recharts_292": "浏览量", - "recharts_293": "成交量", - "useWebRTCStream_848": "必须加", - "WeatherSunny_854": "每根", - "circQueue_855": "队列容量 (最多存储项目数", - "circQueue_856": "队列存储区,使用数组存任意对象", - "circQueue_857": "队头索引", - "circQueue_858": "队尾索引", - "circQueue_859": "队满标志", - "circQueue_860": "是否启用深拷贝 (默认启用", - "circQueue_861": "队列最大内存限制 (单位:字节", - "circQueue_862": "当前已使用内存大小 (单位:字节", - "circQueue_863": "判断队列是否为空", - "circQueue_864": "判断队列是否已满", - "circQueue_865": "估算对象大小 (以 JSON 字符串的 UTF-8 编码长度作为近似值", - "circQueue_866": "中用于计算字节长度", - "circQueue_867": "若对象不可序列化,返回 0 (避免出错", - "circQueue_868": "深拷贝对象 (基于 JSON 的方式,仅支持可序列化对象", - "circQueue_869": "入队操作:将对象放入队尾", - "circQueue_870": "估算项目内存大小", - "circQueue_871": "若队满或超过内存限制则入队失败", - "circQueue_872": "深拷贝入队数据 (避免外部修改影响队列", - "circQueue_873": "存入队尾", - "circQueue_874": "环形增长", - "circQueue_875": "增加当前内存使用", - "circQueue_876": "若尾追头,表示队满", - "circQueue_877": "出队操作:从队头取出一个对象", - "circQueue_878": "返回深拷贝", - "circQueue_879": "队空返回", - "circQueue_880": "读取队头项目", - "circQueue_881": "更新内存使用", - "circQueue_882": "出队必然队不满", - "circQueue_883": "返回深拷贝,保护队列内部数据", - "circQueue_884": "丢弃数据:从队尾向前丢弃 len 项 (反向移动", - "circQueue_885": "队空则不能继续丢弃", - "circQueue_886": "定位最后一项", - "circQueue_887": "减去内存大小", - "circQueue_888": "回退", - "circQueue_889": "获取当前队列中元素个数", - "circQueue_890": "循环直到成功入队或超时", - "circQueue_891": "超时退出", - "circQueue_892": "异步轮询", - "circQueue_893": "自旋加 sleep 挂起", - "circQueue_894": "成功取出则返回", - "circQueue_895": "序列化接口,用于", - "circQueue_896": "复制每个元素", - "circQueue_897": "移动到下一个元素", - "tracePoint_898": "防止值重复", - "tracePoint_899": "成员变量(私有", - "tracePoint_900": "循环队列", - "tracePoint_901": "用于存放等待处理的点", - "tracePoint_902": "轨迹点数组", - "tracePoint_903": "存放已完成点", - "tracePoint_904": "当前点", - "tracePoint_905": "完成点索引", - "tracePoint_906": "指向当前点之前的最后一个要插入的完成点的位置", - "tracePoint_907": "用于防止多线程同时更新", - "tracePoint_908": "模式管理器", - "tracePoint_909": "构造函数", - "tracePoint_910": "限制", - "tracePoint_911": "存放轨迹", - "tracePoint_912": "已完成点", - "tracePoint_913": "默认为定位模式", - "tracePoint_914": "复位", - "tracePoint_915": "重置轨迹点", - "tracePoint_916": "清空队列", - "tracePoint_917": "清空轨迹点数组", - "tracePoint_918": "重置完成点索引", - "tracePoint_919": "重置为定位模式", - "tracePoint_920": "释放锁", - "tracePoint_921": "获取轨迹", - "tracePoint_922": "尝试锁定", - "tracePoint_923": "防止多线程同时更新", - "tracePoint_924": "深拷贝", - "tracePoint_925": "避免外部修改导致内部出错", - "tracePoint_926": "解锁", - "tracePoint_927": "锁定中", - "tracePoint_928": "返回空", - "tracePoint_929": "更新当前点", - "tracePoint_930": "只保留完成点部分", - "tracePoint_931": "再插入新的当前点", - "tracePoint_932": "触发事件", - "tracePoint_933": "驱动外部更新", - "tracePoint_934": "支持自动扩展数组", - "tracePoint_935": "如果轨迹数组正在操作", - "tracePoint_936": "先存放至队列中", - "tracePoint_937": "添加完成点", - "tracePoint_938": "先处理队列中积压的点", - "tracePoint_939": "如果队列不为空", - "tracePoint_940": "取出队列中的点", - "tracePoint_941": "错误处理", - "tracePoint_942": "可以输出到", - "tracePoint_943": "文件", - "tracePoint_944": "打印", - "tracePoint_945": "无论成功失败都解锁", - "tracePoint_946": "避免无法使用", - "tracePoint_947": "若当前点存在,说明当前数组末尾已插入一个当前点", - "tracePoint_948": "截断轨迹数组到当前点,将新完成点插入在当前点之前", - "tracePoint_949": "截断避免多添加了无效点", - "tracePoint_950": "然后再当前点之前插入完成点", - "tracePoint_951": "首次添加轨迹点需要先尾插", - "tracePoint_952": "更新当前点索引", - "tracePoint_953": "释放锁资源", - "tryLock_954": "原子尝试锁", - "tryLock_955": "非阻塞且线程安全", - "tryLock_956": "可用于异步多线程", - "utils_957": "最优", - "utils_958": "苏州", - "utils_959": "天气接口调用失败", - "utils_960": "兜底", - "utils_961": "暴雨", - "utils_962": "只取有标题", - "utils_963": "有字段的列", - "utils_964": "转义CSV引号", - "utils_965": "错误 红", - "utils_966": "警告 橙", - "utils_967": "信息 蓝", - "Agri_968": "输入预览", - "Agri_969": "结果图/视频", - "Agri_970": "结果", - "Agri_971": "左侧:结果图", - "Agri_972": "热点标记", - "Agri_973": "请上传热成像文件", - "Agri_974": "热点标记点", - "Agri_975": "右侧:点位详情", - "Agri_976": "总容器:垂直布局,占满卡片内容区", - "Agri_977": "上半部分:点位详情", - "Agri_978": "分割线", - "Agri_979": "下半部分:热点/面板列表", - "Agri_980": "左侧:算法列表", - "Agri_981": "中间:工作区", - "Agri_982": "右侧:历史记录", - "RealTimeMonitor_1240": "左侧大栏", - "RealTimeMonitor_1241": "电站拓扑图", - "RealTimeMonitor_1242": "设备实时监控列表", - "RealTimeMonitor_1243": "右侧小栏", - "RealTimeMonitor_1244": "个统计卡片", - "RealTimeMonitor_1245": "实时功率曲线", - "RealTimeMonitor_1246": "逆变器功率对比", - "RealTimeMonitor_1247": "热力图与在线率", - "RealTimeMonitor_1248": "简易地图点位", - "index_1318": "加这个", - "stationSlice_1319": "当前选中场站(完整对象", - "stationSlice_1320": "方便直接用", - "index_1323": "多租户登录时传入", - "index_1324": "过期时间(秒", - "index_1327": "按钮权限标识", - "index_1328": "不在菜单中展示" - }, - "clean": { - "CleanOptimization_1069": "计划", - "CleanOptimization_1070": "区块", - "CleanOptimization_1071": "待创建", - "CleanOptimization_1072": "王工", - "CleanOptimization_1073": "赵工", - "CleanOptimization_1074": "清洗前发电量", - "CleanOptimization_1075": "清洗后发电量", - "CleanOptimization_1076": "灰尘积累", - "CleanOptimization_1077": "鸟粪遮挡", - "CleanOptimization_1078": "沙尘沉积", - "CleanOptimization_1079": "污染指数", - "CleanOptimization_1080": "中等", - "CleanOptimization_1081": "建议清洗区块数", - "CleanOptimization_1082": "占比", - "CleanOptimization_1083": "预计发电提升", - "CleanOptimization_1084": "占当前日发电量", - "CleanOptimization_1085": "预计收益提升", - "CleanOptimization_1086": "按电价", - "CleanOptimization_1087": "元/kWh 计算", - "CleanOptimization_1088": "上次清洗时间", - "CleanOptimization_1089": "距今 12 天", - "CleanOptimization_1090": "清洗成本预估", - "CleanOptimization_1091": "预计单次清洗总成本", - "CleanOptimization_1092": "标题与操作栏", - "CleanOptimization_1093": "清洗优化管理", - "CleanOptimization_1094": "最近 7 天", - "CleanOptimization_1095": "最近 30 天", - "CleanOptimization_1096": "左侧:分析图表", - "CleanOptimization_1097": "污染趋势分析", - "CleanOptimization_1098": "阈值", - "CleanOptimization_1099": "发电损失构成", - "CleanOptimization_1100": "近 7 天", - "CleanOptimization_1101": "总损失电量", - "CleanOptimization_1102": "清洗前后对比分析", - "CleanOptimization_1103": "近一次", - "CleanOptimization_1104": "清洗收益深度测算", - "CleanOptimization_1105": "电价 (含税", - "CleanOptimization_1106": "预计净收益", - "CleanOptimization_1107": "投资回报", - "CleanOptimization_1108": "回收周期", - "CleanOptimization_1109": "中间:地图分布与工单预览", - "CleanOptimization_1110": "电站污染分布与建议清洗区块分布图", - "CleanOptimization_1111": "污染等级", - "CleanOptimization_1112": "优先清洗", - "CleanOptimization_1113": "较高", - "CleanOptimization_1114": "较低", - "CleanOptimization_1115": "清洁", - "CleanOptimization_1116": "地图背景图与浮动标签", - "CleanOptimization_1117": "模拟区块叠加层", - "CleanOptimization_1118": "具体的污染区块标签", - "CleanOptimization_1119": "右侧悬浮控制按钮", - "CleanOptimization_1120": "清洗工单智能预览", - "CleanOptimization_1121": "查看更多", - "CleanOptimization_1122": "预计工时", - "CleanOptimization_1123": "计划时间", - "CleanOptimization_1124": "创建工单", - "CleanOptimization_1125": "右侧:决策建议与参考", - "CleanOptimization_1126": "智能清洗策略建议", - "CleanOptimization_1127": "算法模型:多因子加权综合优化模型", - "CleanOptimization_1128": "推荐计划", - "CleanOptimization_1129": "建议区块", - "CleanOptimization_1130": "预计提升", - "CleanOptimization_1131": "天气适宜度", - "CleanOptimization_1132": "清洗技术方案推荐", - "CleanOptimization_1133": "智能机器人方案", - "CleanOptimization_1134": "全自动清洗,适合大面积平整区块,效率极高", - "CleanOptimization_1135": "预计用水", - "CleanOptimization_1136": "人工精细化方案", - "CleanOptimization_1137": "灵活处理遮挡及严重污垢区域,适合复杂地形", - "CleanOptimization_1138": "天气与资源环境参考", - "CleanOptimization_1142": "风速", - "CleanOptimization_1143": "适宜", - "CleanOptimization_1144": "降水", - "CleanOptimization_1145": "水源", - "CleanOptimization_1146": "充足", - "CleanOptimization_1147": "清洗作业影响综合评估", - "CleanOptimization_1148": "预计用水量", - "CleanOptimization_1149": "节水 30% (机器人", - "CleanOptimization_1150": "预计总耗时", - "CleanOptimization_1151": "小时", - "CleanOptimization_1152": "并行作业 2 组", - "CleanOptimization_1153": "碳减排贡献", - "CleanOptimization_1154": "减排量", - "CleanOptimization_1155": "作业风险评估", - "CleanOptimization_1156": "安全可控", - "CleanOptimization_1157": "以上决策建议基于历史数据、实时气象及发电损失模型综合计算。实际执行效果可能受天气骤变、现场突发障碍等不确定因素影响" - } - }, - "enAdd": { - "alerts": { - "processing": "processing", - "alarmNo": "alarm No", - "alarmTitle": "alarm Title", - "alarmContent": "alarm Content", - "alertDetail": "alert Detail", - "rootCause": "root Cause", - "recommendedAction": "recommended Action", - "notifySubscription": "notify Subscription", - "sms": "sms", - "dingTalk": "ding Talk", - "email": "email", - "handleSuccess": "handle Success", - "handleFail": "handle Fail", - "exportFileName": "export File Name", - "reportValue": "report Value", - "noAlarmToCreateOrder": "no Alarm To Create Order", - "orderFromAlarm": "order From Alarm", - "orderCreated": "order Created", - "orderCreateFail": "order Create Fail", - "todayTotalAlerts": "today Total Alerts", - "trendNoChange": "trend No Change", - "trendUp": "trend Up", - "trendDown": "trend Down", - "trendZero": "trend Zero", - "yesterdayValue": "yesterday Value", - "todayCriticalAlerts": "today Critical Alerts", - "todayPending": "today Pending", - "todayClosed": "today Closed", - "alertTypeProportion": "alert Type Proportion", - "alertStatusStatistics": "alert Status Statistics", - "sourceDevice": "source Device", - "occurTime": "occur Time", - "alertDescription": "alert Description", - "contactHandler": "contact Handler", - "handleOperation": "handle Operation", - "pleaseSelectHandleStatus": "please Select Handle Status", - "pleaseSelectHandleResult": "please Select Handle Result", - "pleaseInputHandleRemark": "please Input Handle Remark", - "confirmHandle": "confirm Handle", - "modifyAlert": "modify Alert", - "pleaseInputAlarmTitle": "please Input Alarm Title", - "pleaseSelectAlertLevel": "please Select Alert Level", - "pleaseSelectAlertType": "please Select Alert Type", - "pleaseInputAlarmContent": "please Input Alarm Content", - "newOrder": "new Order", - "planStartTime": "plan Start Time", - "pleaseSelectPlanStartTime": "please Select Plan Start Time", - "confirmCreateOrder": "confirm Create Order", - "mockDeviceSensor": "mock Device Sensor", - "mockTempExceed": "mock Temp Exceed", - "mockDeviceCamera": "mock Device Camera", - "mockVideoSignalLost": "mock Video Signal Lost", - "mockDeviceBattery": "mock Device Battery", - "mockBatteryLow": "mock Battery Low", - "level": "level", - "content": "content", - "searchDeviceContent": "search Device Content", - "mockRuleTemp": "mock Rule Temp", - "mockRuleBattery": "mock Rule Battery", - "deviceSensor": "device Sensor", - "deviceBattery": "device Battery", - "ruleName": "rule Name", - "triggerCondition": "trigger Condition", - "ruleConfig": "rule Config", - "addRule": "add Rule", - "editRule": "edit Rule", - "ruleNamePlaceholder": "rule Name Placeholder", - "relatedModel": "related Model", - "monitorProperty": "monitor Property", - "compareSymbol": "compare Symbol", - "threshold": "threshold", - "thresholdPlaceholder": "threshold Placeholder", - "sevenDayTrend": "seven Day Trend", - "criticalAlert": "critical Alert", - "importantAlert": "important Alert", - "generalAlert": "general Alert", - "infoAlert": "info Alert", - "alertLevelDistribution": "alert Level Distribution", - "mockSubOps": "mock Sub Ops", - "mockSubAdmin": "mock Sub Admin", - "mockSubDevice": "mock Sub Device", - "appPush": "app Push", - "subscriptionName": "subscription Name", - "notifyChannel": "notify Channel", - "searchSubscription": "search Subscription", - "addSubscription": "add Subscription", - "editAlertSubscription": "edit Alert Subscription", - "addAlertSubscription": "add Alert Subscription", - "pleaseInputSubscriptionName": "please Input Subscription Name", - "allDevices": "all Devices", - "allLevels": "all Levels", - "pleaseSelectChannel": "please Select Channel", - "subtitle": "subtitle", - "AlarmHistory_14": "Time 范围", - "AlarmHistory_15": "右侧详情抽屉", - "AlarmHistory_16": "通知订阅模块", - "AlarmOverview_17": "Refresh 列表", - "AlarmOverview_18": "Refresh 统计", - "AlarmOverview_25": "修复:等级是字符串,不是数字", - "AlarmOverview_26": "统计卡片", - "AlarmOverview_27": "只清除首尾空格", - "AlarmOverview_28": "Add : Refresh 图表全量告警", - "AlarmOverview_29": "表格", - "AlarmOverview_30": "三个图表", - "AlarmOverview_31": "告警详情抽屉", - "AlarmOverview_32": "告警头部", - "AlarmOverview_33": "告警基础信息", - "AlarmOverview_34": "告警 Description", - "AlarmOverview_35": "根因分析", - "AlarmOverview_36": "推荐 Handle 措施", - "AlarmOverview_37": "Handle Actions", - "AlarmOverview_38": "底部 Button", - "AlarmOverview_39": "Modify 告警弹窗", - "AlarmOverview_40": "Add : Generate Order 弹窗", - "AlarmRealtime_41": "告警详情弹窗", - "AlarmSubscription_42": "短信", - "AlarmSubscription_43": "邮件", - "AlarmSubscription_44": "推送", - "AlarmSubscription_45": "Add / Edit 弹窗" - }, - "common": { - "loadFailed": "load Failed", - "loadDetailFailed": "load Detail Failed", - "requestError": "request Error", - "deviceId": "device Id", - "pleaseInputDeviceId": "please Input Device Id", - "timeRange": "time Range", - "enabled": "enabled", - "modify": "modify", - "apiCallFail": "api Call Fail", - "quantity": "quantity", - "detail": "detail", - "storeValue": "store Value", - "operationFailed": "operation Failed", - "submitFail": "submit Fail", - "confirmDeleteRecord": "confirm Delete Record", - "deleteIrreversible": "delete Irreversible", - "working": "working", - "settings": "settings" - }, - "workOrder": { - "generateOrder": "generate Order", - "newOrders": "new Orders", - "dispatchSuccess": "dispatch Success", - "dispatchFail": "dispatch Fail", - "dispatchRequestError": "dispatch Request Error", - "todayNewOrders": "today New Orders", - "vsYesterday": "vs Yesterday", - "pendingOrders": "pending Orders", - "highPriority": "high Priority", - "runningOrders": "running Orders", - "onTimeRate": "on Time Rate", - "completedOrders": "completed Orders", - "monthlyTotal": "monthly Total", - "avgHandleTime": "avg Handle Time", - "hourUnit": "hour Unit", - "vsLastWeek": "vs Last Week", - "aiSuggestedOrders": "ai Suggested Orders", - "orderUnit": "order Unit", - "autoGeneratedToday": "auto Generated Today", - "getListFailed": "get List Failed", - "pleaseSelectOrder": "please Select Order", - "completeSuccess": "complete Success", - "completeFail": "complete Fail", - "getDetailFailed": "get Detail Failed", - "pleaseSelectOneOrder": "please Select One Order", - "modifySuccess": "modify Success", - "modifyFail": "modify Fail", - "executeSuccess": "execute Success", - "executeFail": "execute Fail", - "suspendSuccess": "suspend Success", - "suspendFail": "suspend Fail", - "invalidOrder": "invalid Order", - "pleaseSelectOrderToDelete": "please Select Order To Delete", - "batchDeleteSuccess": "batch Delete Success", - "batchDeleteFail": "batch Delete Fail", - "orderNo": "order No", - "taskManagement": "task Management", - "overview": "overview", - "timeRange": "time Range", - "keyword": "keyword", - "pleaseInputOrderNoOrTitle": "please Input Order No Or Title", - "list": "list", - "totalWithCount": "total With Count", - "confirmBatchDelete": "confirm Batch Delete", - "batchExecute": "batch Execute", - "statusDistribution": "status Distribution", - "totalCount": "total Count", - "scheduleCalendarView": "schedule Calendar View", - "todaySuffix": "today Suffix", - "noScheduledOrders": "no Scheduled Orders", - "scheduledOrderList": "scheduled Order List", - "planStartTime": "plan Start Time", - "detail": "detail", - "noTitle": "no Title", - "nearItems": "near Items", - "pleaseInputTaskDesc": "please Input Task Desc", - "pendingDispatch": "pending Dispatch", - "pleaseSelectPerson": "please Select Person", - "selectedOrders": "selected Orders", - "pleaseSelectExecuteDevice": "please Select Execute Device", - "pleaseInputResult": "please Input Result", - "pleaseSelectResult": "please Select Result", - "handledCompleted": "handled Completed", - "fixed": "fixed", - "noActionNeeded": "no Action Needed", - "issueClosed": "issue Closed", - "pleaseInputHandleRemark": "please Input Handle Remark", - "alarmNo": "alarm No", - "alarmTitle": "alarm Title", - "WorkOrder_1275": "批量选中", - "WorkOrder_1276": "今日 Add 工单", - "WorkOrder_1277": "Pending 总数", - "WorkOrder_1278": "Pending High Priority", - "WorkOrder_1280": "本月 Completed", - "WorkOrder_1281": "按时 Completion", - "WorkOrder_1282": "平均 Handle 时长", - "WorkOrder_1283": "今日 Add 对比 Yesterday", - "WorkOrder_1284": "平均时长对比上周", - "WorkOrder_1285": "普通用户", - "WorkOrder_1286": "选中人员", - "WorkOrder_1287": "如需真实 Yesterday 对比,单独请求 Yesterday 统计接口", - "WorkOrder_1288": "Handled Complete", - "WorkOrder_1289": "数字转字符串", - "WorkOrder_1290": "清空选中", - "WorkOrder_1291": "Add 加载7天告警", - "WorkOrder_1292": "顶部标题和页签", - "WorkOrder_1293": "左侧:列表", - "WorkOrder_1294": "底部图表", - "WorkOrder_1295": "Date 切换栏", - "WorkOrder_1296": "横向 Time 表头", - "WorkOrder_1297": "单一行 Time 画布,不再区分人员", - "WorkOrder_1298": "More 工单弹窗:弹窗内只展示当前选中 Date 工单", - "WorkOrder_1299": "右侧:详情", - "WorkOrder_1300": "Add :图片", - "WorkOrder_1301": "视频附件预览区域", - "WorkOrder_1302": "图片预览组,支持点击 Zoom In", - "WorkOrder_1303": "底层灰色轨道", - "WorkOrder_1304": "进度填充", - "WorkOrder_1305": "Modify Order 弹窗", - "WorkOrder_1306": "Dispatch 弹窗:选择人员", - "WorkOrder_1307": "工单", - "WorkOrder_1308": "Execute Order 弹窗", - "WorkOrder_1309": "Unknown 设备", - "WorkOrder_1310": "Robot 设备分组", - "WorkOrder_1311": "UAV 分组", - "WorkOrder_1312": "Please select Exec Start Time", - "WorkOrder_1313": "Complete 工单弹窗", - "WorkOrder_1314": "已修复", - "WorkOrder_1315": "无需 Handle", - "WorkOrder_1316": "问题已闭环", - "WorkOrder_1317": "近7天 All 告警弹窗" - }, - "devices": { - "working": "working", - "videoConfigured": "video Configured", - "noVideo": "no Video", - "connectionFailed": "connection Failed", - "permissionRequestTitle": "permission Request Title", - "requestControlPermission": "request Control Permission", - "selectNoDrone": "select No Drone", - "commandIssued": "command Issued", - "commandFailed": "command Failed", - "apiRequestError": "api Request Error", - "selectTaskFirst": "select Task First", - "taskExecutedSuccess": "task Executed Success", - "taskSuspended": "task Suspended", - "taskResumedSuccess": "task Resumed Success", - "taskReturnedHome": "task Returned Home", - "taskStatusUpdateSuccess": "task Status Update Success", - "operationApiError": "operation Api Error", - "permissionObtained": "permission Obtained", - "controlRequestContent": "control Request Content", - "unknownPlatform": "unknown Platform", - "obstacleDetected": "obstacle Detected", - "unknownObject": "unknown Object", - "noTaskDetail": "no Task Detail", - "fetchDetailError": "fetch Detail Error", - "deviceInfoError": "device Info Error", - "pleaseLoginFirst": "please Login First", - "loginInfoExpired": "login Info Expired", - "otherWebControlling": "other Web Controlling", - "networkErrorRetry": "network Error Retry", - "routeLoaded": "route Loaded", - "droneFallbackName": "drone Fallback Name", - "droneAirspace": "drone Airspace", - "droneWayline": "drone Wayline", - "onStandby": "on Standby", - "permissionRequesting": "permission Requesting", - "noWaylineData": "no Wayline Data", - "fetchWaylineFailed": "fetch Wayline Failed", - "waypointsAdded": "waypoints Added", - "waypointDeleted": "waypoint Deleted", - "allWaypointsCleared": "all Waypoints Cleared", - "pleaseSelectWayline": "please Select Wayline", - "selectTaskStartTime": "select Task Start Time", - "createSuccess": "create Success", - "apiErrorCheck": "api Error Check", - "noWaypointsToSave": "no Waypoints To Save", - "planeNoLocalRoute": "plane No Local Route", - "routeSavedLocal": "route Saved Local", - "waylineLabel": "wayline Label", - "fetchWaylineListFailed": "fetch Wayline List Failed", - "routeLoadedWithName": "route Loaded With Name", - "gpsTaskIssued": "gps Task Issued", - "issueTaskFirst": "issue Task First", - "taskPaused": "task Paused", - "taskStarted": "task Started", - "taskStopped": "task Stopped", - "viewFront": "view Front", - "viewBack": "view Back", - "viewLeft": "view Left", - "viewRight": "view Right", - "viewTop": "view Top", - "deviceList": "device List", - "onlineDevices": "online Devices", - "inspectionMachine": "inspection Machine", - "supportsGpsPlan": "supports Gps Plan", - "supportsRemoteGpsPlan": "supports Remote Gps Plan", - "batteryWithValue": "battery With Value", - "videoLinkConfigured": "video Link Configured", - "batteryCapacity": "battery Capacity", - "flightAltitude": "flight Altitude", - "signalSatellite": "signal Satellite", - "envWindSpeed": "env Wind Speed", - "rtkStatus": "rtk Status", - "fixed": "fixed", - "notFixed": "not Fixed", - "remoteControlAndSituation": "remote Control And Situation", - "gpsPlanning": "gps Planning", - "leftWheelDrive": "left Wheel Drive", - "normalRunning": "normal Running", - "realtimeSpeed": "realtime Speed", - "workingCurrent": "working Current", - "rightWheelDrive": "right Wheel Drive", - "gpsWaypointPlan": "gps Waypoint Plan", - "savePlan": "save Plan", - "clearRoute": "clear Route", - "droneWaylineTask": "drone Wayline Task", - "taskWaitingStart": "task Waiting Start", - "taskStartFailure": "task Start Failure", - "taskTerminated": "task Terminated", - "taskTimeout": "task Timeout", - "noWaylineTask": "no Wayline Task", - "robotTaskData": "robot Task Data", - "waypointList": "waypoint List", - "noWaypoints": "no Waypoints", - "waypoint": "waypoint", - "robotLocalRoutes": "robot Local Routes", - "noSavedRoutes": "no Saved Routes", - "waypointsCount": "waypoints Count", - "issueTask": "issue Task", - "suspendTask": "suspend Task", - "cancelReturnHome": "cancel Return Home", - "videoAndConfig": "video And Config", - "noVideoStream": "no Video Stream", - "waylineDetail": "wayline Detail", - "taskIdLabel": "task Id Label", - "waylineUuidLabel": "wayline Uuid Label", - "airportSnLabel": "airport Sn Label", - "landingDockSnLabel": "landing Dock Sn Label", - "returnHomeAltitudeLabel": "return Home Altitude Label", - "returnHomeModeLabel": "return Home Mode Label", - "waylinePrecisionLabel": "wayline Precision Label", - "lostControlActionLabel": "lost Control Action Label", - "resumeFromBreakpointLabel": "resume From Breakpoint Label", - "taskTypeLabel": "task Type Label", - "repeatModeLabel": "repeat Mode Label", - "minBatteryLabel": "min Battery Label", - "currentWaypointLabel": "current Waypoint Label", - "rthOptimal": "rth Optimal", - "rthPreset": "rth Preset", - "gpsMode": "gps Mode", - "rtkHighPrecision": "rtk High Precision", - "modeAuto": "mode Auto", - "modeManual": "mode Manual", - "taskImmediate": "task Immediate", - "taskTimed": "task Timed", - "taskRecurring": "task Recurring", - "taskContinuous": "task Continuous", - "repeatNone": "repeat None", - "repeatDaily": "repeat Daily", - "repeatWeekly": "repeat Weekly", - "repeatMonthlyByDate": "repeat Monthly By Date", - "repeatMonthlyByWeek": "repeat Monthly By Week", - "taskResumed": "task Resumed", - "taskEnded": "task Ended", - "taskTimedOut": "task Timed Out", - "createWaylineTask": "create Wayline Task", - "waylineName": "wayline Name", - "inputWaylineName": "input Wayline Name", - "selectWayline": "select Wayline", - "autoFetch": "auto Fetch", - "optionalEmpty": "optional Empty", - "gpsModeDesc": "gps Mode Desc", - "rtkModeDesc": "rtk Mode Desc", - "autoResumeFromBreakpoint": "auto Resume From Breakpoint", - "resumeAuto": "resume Auto", - "resumeManual": "resume Manual", - "minExecBatteryLabel": "min Exec Battery Label", - "taskWaylineTypeLabel": "task Wayline Type Label", - "taskStartTimeLabel": "task Start Time Label", - "selectStartTimePlaceholder": "select Start Time Placeholder", - "taskEndTimeLabel": "task End Time Label", - "repeatInterval": "repeat Interval", - "boundDrone": "bound Drone", - "airportCode": "airport Code", - "tlStartCleaning": "tl Start Cleaning", - "timelineStatusStart": "timeline Status Start", - "tlStartInspection": "tl Start Inspection", - "tlStartMowing": "tl Start Mowing", - "tlStandbyReady": "tl Standby Ready", - "timelineStatusReady": "timeline Status Ready", - "tlReturnSupply": "tl Return Supply", - "timelineStatusReturn": "timeline Status Return", - "tlFinishInspection": "tl Finish Inspection", - "timelineStatusComplete": "timeline Status Complete", - "logCommand": "log Command", - "logDesc1": "log Desc1", - "logDesc2": "log Desc2", - "logDesc3": "log Desc3", - "logDesc4": "log Desc4", - "logDesc5": "log Desc5", - "logEvent": "log Event", - "logDesc6": "log Desc6", - "logLevelLowBattery": "log Level Low Battery", - "aliasRobotOnly": "alias Robot Only", - "aliasNotEmpty": "alias Not Empty", - "aliasModifiedSuccess": "alias Modified Success", - "aliasModifyFail": "alias Modify Fail", - "aliasApiError": "alias Api Error", - "noPermission": "no Permission", - "stationStatus": "station Status", - "dispatchableCount": "dispatchable Count", - "unitTai": "unit Tai", - "robotExecutingCount": "robot Executing Count", - "mowingRobot": "mowing Robot", - "robotInTaskCount": "robot In Task Count", - "washDrone": "wash Drone", - "unitJia": "unit Jia", - "standbyCount": "standby Count", - "todayTaskExecute": "today Task Execute", - "completionRate": "completion Rate", - "unknownDevice": "unknown Device", - "modeWorking": "mode Working", - "modeDebugLocal": "mode Debug Local", - "modeDebugRemote": "mode Debug Remote", - "modeUpgrading": "mode Upgrading", - "positionInStation": "position In Station", - "taskStandby2": "task Standby2", - "commGood": "comm Good", - "taskStarted2": "task Started2", - "taskPaused2": "task Paused2", - "returnCommandSent": "return Command Sent", - "rechargeCommandSent": "recharge Command Sent", - "emergencyStopTriggered": "emergency Stop Triggered", - "rainNo": "rain No", - "equipmentOverview": "equipment Overview", - "equipmentSituationMap": "equipment Situation Map", - "legendTitle": "legend Title", - "inspectionRoute": "inspection Route", - "robotPath": "robot Path", - "cleaningPath": "cleaning Path", - "robotPosition": "robot Position", - "dronePosition": "drone Position", - "supplyChargePoint": "supply Charge Point", - "obstacleForbiddenZone": "obstacle Forbidden Zone", - "equipmentScheduleList": "equipment Schedule List", - "equipmentName": "equipment Name", - "modeLabel": "mode Label", - "commStatus": "comm Status", - "deviceParamSetting": "device Param Setting", - "controlLogTitle": "control Log Title", - "allLevels": "all Levels", - "deviceColHeader": "device Col Header", - "viewMoreLogs": "view More Logs", - "deviceControlPanel": "device Control Panel", - "detailBtn": "detail Btn", - "batteryWithPercent": "battery With Percent", - "productType": "product Type", - "deviceSnLabel": "device Sn Label", - "activatedTime": "activated Time", - "firmwareVersion": "firmware Version", - "flightWindSpeed": "flight Wind Speed", - "rtkCount": "rtk Count", - "startBtn": "start Btn", - "rechargeBtn": "recharge Btn", - "realtimePicture": "realtime Picture", - "stationVideo": "station Video", - "droneVideo": "drone Video", - "stopVideoBtn": "stop Video Btn", - "switchManual": "switch Manual", - "emergencyStopBtn": "emergency Stop Btn", - "aiAnalysisTitle": "ai Analysis Title", - "hotspotSuspect": "hotspot Suspect", - "countUnit": "count Unit", - "weedHighZone": "weed High Zone", - "blockUnit": "block Unit", - "componentRiskZone": "component Risk Zone", - "fenceAbnormal": "fence Abnormal", - "suggestAction": "suggest Action", - "aiAction1": "ai Action1", - "aiAction2": "ai Action2", - "aiAction3": "ai Action3", - "generateTask": "generate Task", - "aiOptimizePath": "ai Optimize Path", - "oneClickCoordinated": "one Click Coordinated", - "envFlightConditions": "env Flight Conditions", - "windSpeed": "wind Speed", - "rainfall": "rainfall", - "rtkEnvLabel": "rtk Env Label", - "fixedEnv": "fixed Env", - "notFixedEnv": "not Fixed Env", - "suitableExec": "suitable Exec", - "canWorkNormally": "can Work Normally", - "robotWorkStatus": "robot Work Status", - "cumWorkMileage": "cum Work Mileage", - "cumWorkArea": "cum Work Area", - "cumWorkTime": "cum Work Time", - "taskTimelineTitle": "task Timeline Title", - "viewMore": "view More", - "editRobotInfoTitle": "edit Robot Info Title", - "deviceSnColon": "device Sn Colon", - "deviceTypeColon": "device Type Colon", - "deviceAliasLabel": "device Alias Label", - "inputCustomAlias": "input Custom Alias", - "aliasHint": "alias Hint", - "fetchParamFail": "fetch Param Fail", - "paramSaveSuccess": "param Save Success", - "paramSaveFail": "param Save Fail", - "paramSaveException": "param Save Exception", - "paramLeftForwardGain": "param Left Forward Gain", - "paramLeftBackwardGain": "param Left Backward Gain", - "paramRightForwardGain": "param Right Forward Gain", - "paramRightBackwardGain": "param Right Backward Gain", - "paramRunSpeed": "param Run Speed", - "paramChipUidSign": "param Chip Uid Sign", - "paramChipUid": "param Chip Uid", - "paramRemoteConfig": "param Remote Config", - "paramKnifeMotorMode": "param Knife Motor Mode", - "paramWalkMotorMode": "param Walk Motor Mode", - "paramLeftMotorReverse": "param Left Motor Reverse", - "paramRightMotorReverse": "param Right Motor Reverse", - "paramSwapChannel": "param Swap Channel", - "paramUse4G": "param Use4G", - "paramForwardSpeedLimit": "param Forward Speed Limit", - "paramTurnSpeedLimit": "param Turn Speed Limit", - "paramKnifePolarity": "param Knife Polarity", - "paramFanPolarity": "param Fan Polarity", - "paramThrottlePolarity": "param Throttle Polarity", - "paramLiftProtectTime": "param Lift Protect Time", - "paramDualRtk": "param Dual Rtk", - "paramKnifeChannel": "param Knife Channel", - "paramFanChannel": "param Fan Channel", - "paramThrottleChannel": "param Throttle Channel", - "paramRemoteType": "param Remote Type", - "paramRelayBoard": "param Relay Board", - "paramLiftChannel": "param Lift Channel", - "paramChassisChannel": "param Chassis Channel", - "paramArmChannel": "param Arm Channel", - "paramFuelPumpChannel": "param Fuel Pump Channel", - "paramWifiName": "param Wifi Name", - "paramWifiPassword": "param Wifi Password", - "paramBatteryType": "param Battery Type", - "paramDriveType": "param Drive Type", - "paramGearRatio": "param Gear Ratio", - "paramRobotLength": "param Robot Length", - "paramRobotWidth": "param Robot Width", - "paramRobotHeight": "param Robot Height", - "paramKnifeWidth": "param Knife Width", - "paramTyreSize": "param Tyre Size", - "paramFirmwareVersion": "param Firmware Version", - "paramDelFlag": "param Del Flag", - "paramViewEditTitle": "param View Edit Title", - "noData": "no Data", - "locationFail": "location Fail", - "pointMarked": "point Marked", - "minThreePoints": "min Three Points", - "pathPlanDone": "path Plan Done", - "pathPlanFailRetry": "path Plan Fail Retry", - "completePathFirst": "complete Path First", - "inputPlotName": "input Plot Name", - "pathPlanning": "path Planning", - "markedPointsCount": "marked Points Count", - "workMode": "work Mode", - "bowMode": "bow Mode", - "abMode": "ab Mode", - "markPoint": "mark Point", - "clearMarks": "clear Marks", - "complete": "complete", - "selectDevice": "select Device", - "unknownDrone": "unknown Drone", - "situationMap": "situation Map", - "clearPlannedRoute": "clear Planned Route", - "realtimeVideoMonitor": "realtime Video Monitor", - "frontView": "front View", - "backView": "back View", - "leftView": "left View", - "rightView": "right View", - "panorama": "panorama", - "robotStatus": "robot Status", - "rtBattery": "rt Battery", - "rtVoltage": "rt Voltage", - "rtLeftMotor": "rt Left Motor", - "rtRightMotor": "rt Right Motor", - "rtLeftSpeed": "rt Left Speed", - "rtRightSpeed": "rt Right Speed", - "rtLeftTemp": "rt Left Temp", - "rtRightTemp": "rt Right Temp", - "rtMainTemp": "rt Main Temp", - "rtHeadingAngle": "rt Heading Angle", - "rtPitchAngle": "rt Pitch Angle", - "rtHeadingStatus": "rt Heading Status", - "rtInitialized": "rt Initialized", - "rtPositioning": "rt Positioning", - "gpsSingle": "gps Single", - "dgpsDiff": "dgps Diff", - "rtkFixed2": "rtk Fixed2", - "rtkFloat": "rtk Float", - "rtSatellites": "rt Satellites", - "satelliteCount": "satellite Count", - "rtMode": "rt Mode", - "videoStopped": "video Stopped", - "clickPlayHint": "click Play Hint", - "remoteControl": "remote Control", - "savePathTitle": "save Path Title", - "plotNameLabel": "plot Name Label", - "saving": "saving", - "stationCameraNotFound": "station Camera Not Found", - "indoor": "indoor", - "outdoor": "outdoor", - "switchStationCameraFail": "switch Station Camera Fail", - "switchDroneLensFail": "switch Drone Lens Fail", - "wideLens": "wide Lens", - "zoomLens": "zoom Lens", - "irLens": "ir Lens", - "noVideoSignal": "no Video Signal", - "rainYes": "rain Yes", - "hangar": "hangar", - "coverOpen": "cover Open", - "coverClosed": "cover Closed", - "inDock": "in Dock", - "outDock": "out Dock", - "droneStatus": "drone Status", - "horizontalSpeed": "horizontal Speed", - "verticalSpeed": "vertical Speed", - "headingAngle": "heading Angle", - "gpsUnit": "gps Unit", - "taskCompletedMsg": "task Completed Msg", - "confirmDeleteTitle": "confirm Delete Title", - "confirmDeleteContent": "confirm Delete Content", - "confirmDeleteOk": "confirm Delete Ok", - "routeDeletedSuccess": "route Deleted Success", - "deleteFailRetry": "delete Fail Retry", - "deleteFailNetwork": "delete Fail Network", - "taskListRefreshFail": "task List Refresh Fail", - "routeNoPathPoints": "route No Path Points", - "checkRouteFail": "check Route Fail", - "taskExecuteSuccess": "task Execute Success", - "taskExecuteFail": "task Execute Fail", - "taskExecuteException": "task Execute Exception", - "taskCanceledSuccess": "task Canceled Success", - "taskCancelFail": "task Cancel Fail", - "taskCancelException": "task Cancel Exception", - "taskPausedSuccess": "task Paused Success", - "taskPauseFail": "task Pause Fail", - "taskPauseException": "task Pause Exception", - "taskResumeFail": "task Resume Fail", - "taskResumeException": "task Resume Exception", - "waylineFallback": "wayline Fallback", - "waylineListFetchFail": "wayline List Fetch Fail", - "fillRequiredFields": "fill Required Fields", - "createTaskSuccess": "create Task Success", - "createTaskFail": "create Task Fail", - "createTaskException": "create Task Exception", - "trendYesterday": "trend Yesterday", - "trendFlat": "trend Flat", - "taskListFetchFail": "task List Fetch Fail", - "boardTaskFetchFail": "board Task Fetch Fail", - "statusExecSuccess": "status Exec Success", - "statusPreparing": "status Preparing", - "statusExecFailed": "status Exec Failed", - "statusWaitingStart": "status Waiting Start", - "statusStartFailed": "status Start Failed", - "statusRestored": "status Restored", - "statusTerminated": "status Terminated", - "statusTimeout": "status Timeout", - "deviceSn": "device Sn", - "requestFail": "request Fail", - "selectExecuteDroneFirst": "select Execute Drone First", - "waylineTaskCreated": "wayline Task Created", - "waylineExecFail": "wayline Exec Fail", - "todayWaylinePlan": "today Wayline Plan", - "unitTiao": "unit Tiao", - "inProgressDesc": "in Progress Desc", - "executingTasks": "executing Tasks", - "unitGe": "unit Ge", - "pendingApprovalTasks": "pending Approval Tasks", - "taskCompletionRate": "task Completion Rate", - "aiOptimizeGain": "ai Optimize Gain", - "coverageEquipment": "coverage Equipment", - "coverageValue": "coverage Value", - "allOnline": "all Online", - "noDroneSelected": "no Drone Selected", - "commandSent": "command Sent", - "commandSendFail": "command Send Fail", - "apiRequestException": "api Request Exception", - "noDetail": "no Detail", - "fetchDetailException": "fetch Detail Exception", - "taskExecSuccess": "task Exec Success", - "taskSuspended2": "task Suspended2", - "taskRestored2": "task Restored2", - "taskReturnedHome2": "task Returned Home2", - "statusUpdateSuccess": "status Update Success", - "operationFail": "operation Fail", - "operationApiException": "operation Api Exception", - "waylineEditPlan": "wayline Edit Plan", - "optimize": "optimize", - "inspectRoute": "inspect Route", - "mowRoute": "mow Route", - "droneAirport": "drone Airport", - "chargePoint": "charge Point", - "noFlyZone": "no Fly Zone", - "deviceTaskList": "device Task List", - "allDrones": "all Drones", - "taskOrchestrationAI": "task Orchestration AI", - "typeDroneHotspot": "type Drone Hotspot", - "levelHigh": "level High", - "statusSuggestExec": "status Suggest Exec", - "typeFenceInspect": "type Fence Inspect", - "typeComponentClean": "type Component Clean", - "levelMid": "level Mid", - "statusWaitExec": "status Wait Exec", - "typeArrayMow": "type Array Mow", - "typeAIRecheck": "type AI Recheck", - "levelLow": "level Low", - "statusPendingApproval": "status Pending Approval", - "colNo": "col No", - "suggestTime": "suggest Time", - "aiSuggestionColon": "ai Suggestion Colon", - "aiAdvice1": "ai Advice1", - "aiAdvice2": "ai Advice2", - "aiAdvice3": "ai Advice3", - "oneClickSchedule": "one Click Schedule", - "smartAssign": "smart Assign", - "waylineParamsTitle": "wayline Params Title", - "currentWayline": "current Wayline", - "rthMode": "rth Mode", - "waylinePrecision": "wayline Precision", - "resumeBreakpoint": "resume Breakpoint", - "safeRthBattery": "safe Rth Battery", - "repeatTypeLabel": "repeat Type Label", - "lostControlAction": "lost Control Action", - "obstacleAvoidSwitch": "obstacle Avoid Switch", - "nightFlightLimit": "night Flight Limit", - "resumeTask": "resume Task", - "pauseTask": "pause Task", - "weatherWindowTitle": "weather Window Title", - "suitability": "suitability", - "suitableExec2": "suitable Exec2", - "suitable": "suitable", - "precipStatus": "precip Status", - "hasRain": "has Rain", - "gnssQuality": "gnss Quality", - "fixed2": "fixed2", - "notFixed2": "not Fixed2", - "weatherAdvice1": "weather Advice1", - "weatherAdvice2": "weather Advice2", - "waylineList": "wayline List", - "selectDrone": "select Drone", - "searchWaylinePlaceholder": "search Wayline Placeholder", - "unknownTime": "unknown Time", - "executeWayline": "execute Wayline", - "ganttViewTitle": "gantt View Title", - "dronePortA01": "drone Port A01", - "typeHotspotInspect": "type Hotspot Inspect", - "typeRecheck": "type Recheck", - "inspectRobotRbt": "inspect Robot Rbt", - "mowRobotGr": "mow Robot Gr", - "washDroneUav": "wash Drone Uav", - "workTaskBoard": "work Task Board", - "startLabel": "start Label", - "endLabel": "end Label", - "pendingExec": "pending Exec", - "equipmentColon": "equipment Colon", - "startTimeColon": "start Time Colon", - "completedTimeColon": "completed Time Colon", - "createWaylineTaskTitle": "create Wayline Task Title", - "airportSn": "airport Sn", - "landingDockSn": "landing Dock Sn", - "returnHomeAltitude": "return Home Altitude", - "returnHomeMode": "return Home Mode", - "minBattery": "min Battery", - "repeatMode": "repeat Mode", - "weekdayExec": "weekday Exec", - "weekSun": "week Sun", - "weekMon": "week Mon", - "weekTue": "week Tue", - "weekWed": "week Wed", - "weekThu": "week Thu", - "weekFri": "week Fri", - "weekSat": "week Sat", - "monthDays": "month Days", - "whichWeek": "which Week", - "weekNo": "week No", - "weekday": "weekday", - "execTimePoint": "exec Time Point", - "inputTimestamp": "input Timestamp", - "confirmCreate": "confirm Create", - "executeWaylineTask": "execute Wayline Task", - "executeNow": "execute Now", - "selectedWaylineColon": "selected Wayline Colon", - "executeDeviceColon": "execute Device Colon", - "noDeviceSelected": "no Device Selected", - "returnHomeAltitudeColon": "return Home Altitude Colon", - "deviceData": "device Data", - "equipmentControl": "equipment Control", - "realtimePowerData": "realtime Power Data", - "communicationStatus": "communication Status", - "communicationNormal": "communication Normal", - "groupOf": "group Of", - "weatherStation": "weather Station", - "stationTopology": "station Topology", - "communicating": "communicating", - "realtimeMonitorList": "realtime Monitor List", - "allTypes": "all Types", - "searchDeviceName": "search Device Name", - "dronePort": "drone Port", - "deviceOnlineRate": "device Online Rate", - "onlineRate": "online Rate", - "totalCount": "total Count", - "device_2": "Upload 文件必须用 data,不能用", - "device_3": "Upload 文件必加", - "device_4": "修正为正确的添加接口", - "DeviceControl_47": "连接中 Status", - "DeviceControl_48": "权限请求的弹窗", - "DeviceControl_49": "是否有 Control 权限", - "DeviceControl_50": "连接 Failed 重新连接", - "DeviceControl_51": "这里的return会终止整个handleMessage函数的 Execute", - "DeviceControl_52": "清空设备信息", - "DeviceControl_53": "秒后台保活", - "DeviceControl_54": "关键:清空上一个设备的轨迹", - "DeviceControl_55": "取list数组", - "DeviceControl_56": "加上这句", - "DeviceControl_57": "是否存在", - "DeviceControl_58": "连接是否打开", - "DeviceControl_59": "消息 Type", - "DeviceControl_60": "原始手柄数据", - "DeviceControl_61": "认证令牌", - "DeviceControl_62": "Mower 视角切换", - "DeviceControl_63": "Inspection Robot :3路视频", - "DeviceControl_64": "紧凑横向,不滚动, All 可见", - "DeviceControl_65": "主画面:小一点", - "DeviceControl_66": "Mower 单路", - "DeviceControl_67": "修复: Mower 4路视频", - "DeviceControl_68": "绝不压扁,保持", - "DeviceControl_69": "Other 设备", - "DeviceControl_71": "左侧设备列表", - "DeviceControl_72": "任务态势", - "DeviceControl_73": "区域", - "DeviceControl_74": "中间 Actions 区", - "DeviceControl_75": "UAV Status 概览", - "DeviceControl_76": "当前 Location", - "DeviceControl_77": "当前模式", - "DeviceControl_78": "UAV 待命", - "DeviceControl_79": "割草待命", - "DeviceControl_80": "待命", - "DeviceControl_81": "Battery /航向", - "DeviceControl_82": "Enable 遥控", - "DeviceControl_83": "遥控与态势", - "DeviceControl_85": "把视频嵌入到这里", - "DeviceControl_86": "视频区域 - 独立大窗口", - "DeviceControl_87": "Status 卡片行", - "DeviceControl_88": "链路", - "DeviceControl_89": "遥控接管", - "DeviceControl_90": "规划态势", - "DeviceControl_91": "Control 区:左轮", - "DeviceControl_92": "右轮", - "DeviceControl_93": "紧凑布局", - "DeviceControl_94": "左轮 Speed 面板 - Zoom Out", - "DeviceControl_95": "顶部标题", - "DeviceControl_96": "仪表盘(居中 Zoom In", - "DeviceControl_98": "电流 一体化卡片(核心视觉", - "DeviceControl_99": "电流", - "DeviceControl_100": "手柄 - Zoom Out 、居中", - "DeviceControl_101": "右轮 Speed 面板 - Zoom Out", - "DeviceControl_103": "仪表盘(居中优化", - "DeviceControl_104": "核心数据卡片: Speed", - "DeviceControl_105": "目标值(干净对称", - "DeviceControl_106": "实时 Speed", - "DeviceControl_107": "Speed 输出", - "DeviceControl_108": "规划", - "DeviceControl_109": "Status 标签(和你原版完全一样", - "DeviceControl_110": "下发任务", - "DeviceControl_113": "UAV 专用任务 Control Button", - "DeviceControl_114": "动态 Button : In Progress", - "DeviceControl_115": "Suspend / Suspended", - "DeviceControl_117": "Pause / Resume", - "DeviceControl_118": "动态: Return / Cancel Return", - "DeviceControl_119": "右侧视频面板(遥控页隐藏)- 保持不变", - "DeviceControl_120": "Device Type : Robot", - "DeviceControl_121": "显示 4 路视频", - "DeviceControl_122": "Device Type : Mower", - "DeviceControl_123": "显示 1 路视频", - "DeviceControl_124": "Device Type : UAV", - "DeviceControl_125": "遍历显示视频流", - "DeviceControl_126": "Delete 原来的悬浮视频窗口代码", - "DeviceControl_127": "旋转加载圈", - "DeviceControl_128": "飞行参数", - "DeviceControl_129": "Time 选择", - "DeviceControl_130": "重复任务", - "deviceController_131": "Save 当前设备", - "deviceController_132": "后台保活定时器", - "deviceController_133": "Other 端正在 Control", - "deviceController_134": "权限校验 Failed", - "deviceController_135": "无 Control 权限", - "deviceController_136": "请求 Control Medium", - "deviceController_137": "Control 请求超时", - "deviceController_138": "Control Failed", - "deviceController_139": "Control Success", - "deviceController_140": "权限请求", - "deviceController_141": "请求 Control 设备", - "deviceController_142": "车辆", - "deviceController_143": "围栏", - "deviceController_144": "坑洞", - "deviceController_145": "草丛", - "deviceController_146": "检测到", - "deviceController_147": "Unknown 物", - "DeviceOverviewPage_149": "默认都算", - "DeviceOverviewPage_150": "只有切设备才变", - "DeviceOverviewPage_151": "视频不闪", - "DeviceOverviewPage_152": "Working Status 数量", - "DeviceOverviewPage_153": "左侧文字区域", - "DeviceOverviewPage_154": "底部环比/ Remark", - "DeviceOverviewPage_155": "右侧圆形图标区域", - "DeviceOverviewPage_156": "关键:videoDevice 绝不随MQTT更新,视频永不闪烁", - "DeviceOverviewPage_157": "Robot Edit 别名弹窗", - "DeviceOverviewPage_158": "设备参数 View 与 Modify 弹窗(通用组件", - "DeviceParamModal_159": "加载时表单区域简单遮罩 Info (打开弹窗拉取参数时的loading反馈", - "DeviceStatusPage_160": "持久化 UAV 数据", - "DeviceStatusPage_161": "持久化机场数据", - "DeviceStatusPage_162": "Complete 点", - "DeviceStatusPage_163": "Start Time 戳", - "DeviceStatusPage_164": "End Time 戳", - "DeviceStatusPage_165": "标记的点", - "DeviceStatusPage_166": "是否 Complete 路径规划", - "DeviceStatusPage_167": "Save 的路径数据", - "DeviceStatusPage_168": "Save 模态框可见性", - "DeviceStatusPage_169": "地块 Name", - "DeviceStatusPage_170": "是否正在 Save", - "DeviceStatusPage_171": "地图", - "DeviceStatusPage_172": "拿到路由上的", - "DeviceStatusPage_173": "持久化数据最后覆盖,确保优先显示", - "DeviceStatusPage_174": "存储 Back 的路径结果", - "DeviceStatusPage_175": "页面顶部 Button 区域", - "DeviceStatusPage_176": "UAV 专用布局", - "DeviceStatusPage_177": "左侧:机场视频", - "DeviceStatusPage_178": "UAV 场视频", - "DeviceStatusPage_179": "机场 Status", - "DeviceStatusPage_180": "右侧: UAV 视频", - "DeviceStatusPage_181": "UAV Status", - "DeviceStatusPage_182": "UAV 视频", - "DeviceStatusPage_183": "视频层: Stop 时不渲染 / 未 Play 时为空,不影响 Status 面板", - "DeviceStatusPage_184": "视频未加载 / Stop Play 的占位", - "DeviceStatusPage_185": "单视频(非全景)模式 Status 叠加层:始终渲染,和视频层解耦", - "DeviceStatusPage_186": "右边 - 占1格,上部地图,下部 Remote Control", - "DeviceStatusPage_187": "Remote Control 面板", - "DeviceStatusPage_188": "Save 路径模态框", - "DraggablePanel_189": "拖拽手柄", - "DraggablePanel_190": "子内容", - "DroneVideoPlayer_191": "默认选择室外", - "DroneVideoPlayer_192": "默认选择广角", - "DroneVideoPlayer_193": "目前先默认用第一个 Camera", - "DroneVideoPlayer_194": "Reset 另一边的加载 Status", - "DroneVideoPlayer_195": "确保在双视频模式下有最小宽度", - "DroneVideoPlayer_196": "视频 Control Button", - "DroneVideoPlayer_197": "Status 详情叠加层 - 左上角", - "DroneVideoPlayer_198": "底部信息叠加 - 显示经 Latitude", - "mowerAllView_199": "三列之间间距", - "mowerAllView_200": "左列:左视", - "mowerAllView_201": "左视", - "mowerAllView_202": "中列:上-前视 下-后视", - "mowerAllView_203": "前视", - "mowerAllView_204": "后视", - "mowerAllView_205": "右视", - "RobotTaskPage_206": "是否 Execute Task", - "RobotTaskPage_207": "正在 Execute 的任务", - "RobotTaskPage_208": "Control 视频组件显示", - "RobotTaskPage_212": "Robot 设备", - "RobotTaskPage_213": "任务 Complete Close 视频", - "RobotTaskPage_214": "清空地图轨迹", - "RobotTaskPage_215": "设置当前任务", - "RobotTaskPage_216": "弓子 2 回子", - "RobotTaskPage_217": "连接 Success 后自动打开视频", - "RobotTaskPage_218": "加宽一点", - "RobotTaskPage_219": "原始 Status 值", - "RobotTaskPage_220": "子元素收缩兜底,超长时允许压缩换行", - "RobotTaskPage_221": "开启自动换行,小屏 Button 自动折行", - "RobotTaskPage_222": "优化", - "RobotTaskPage_223": "Robot Status 悬浮面板 - 绝对定位左上角", - "RobotTaskPage_224": "避开左侧图例面板,防止重叠", - "RobotTaskPage_225": "限制最大宽度,不会无限拉长", - "RobotTaskPage_226": "视频开关", - "RobotTaskPage_227": "Robot Task 模块,带Tab切换", - "RobotTaskPage_229": "Delete Button", - "RobotTaskPage_230": "Execute Button", - "RobotTaskPage_231": "传递 routeList 给弹窗", - "RobotTaskPage_232": "Execute Task 弹窗", - "RobotTaskPage_237": "周选择", - "RobotTaskPage_238": "月选择", - "RobotTaskPage_239": "按天:选择 Date", - "WayLinePage_242": "航线列表", - "WayLinePage_243": "航线列表默认选中第一个", - "WayLinePage_244": "使用航线列表 UAV", - "WayLinePage_245": "地图卡片", - "WayLinePage_246": "独立筛选 - 设备任务列表", - "WayLinePage_247": "Resume 任务", - "WayLinePage_248": "底部内容区", - "WayLinePage_249": "航线列表独立 UAV 筛选", - "WayLinePage_250": "Execute Button 改为图标", - "WayLinePage_251": "Task Name :自动换行", - "WayLinePage_252": "Time :自动换行", - "WayLinePage_253": "Create Task 弹窗", - "WayLinePage_254": "重复任务配置", - "WayLinePage_255": "对象绑定", - "WayLinePage_256": "每周", - "WayLinePage_257": "按月 Date", - "WayLinePage_258": "按月星期", - "WayLinePage_260": "Execute Route 设置 Return Altitude", - "XboxController_261": "只有这里才发", - "XboxController_262": "空依赖", - "XboxController_263": "强制触发一次", - "XboxController_264": "页面切换依赖", - "XboxController_265": "未连接设备", - "XboxController_266": "Other Web 端已连接", - "XboxController_267": "Control Medium", - "XboxController_268": "点击获取 Control 权限" - }, - "systemSetting": { - "pleaseSelectRoles": "please Select Roles", - "batchDeleteRolesTitle": "batch Delete Roles Title", - "confirmDeleteSelectedRoles": "confirm Delete Selected Roles", - "batchDeleteSuccess": "batch Delete Success", - "resetFail": "reset Fail", - "pleaseSelectUsers": "please Select Users", - "batchDeleteUsersTitle": "batch Delete Users Title", - "confirmDeleteSelectedUsers": "confirm Delete Selected Users", - "userAndRole": "user And Role", - "belongingOrg": "belonging Org", - "belongingSite": "belonging Site", - "devicePerm": "device Perm", - "hasPerm": "has Perm", - "noPerm": "no Perm", - "confirmDeleteUser": "confirm Delete User", - "totalCount": "total Count", - "permissionLabel": "permission Label", - "levelLabel": "level Label", - "editRole": "edit Role", - "roleLevel": "role Level", - "pleaseInputRoleLevel": "please Input Role Level", - "account": "account", - "nicknameShort": "nickname Short", - "phoneShort": "phone Short", - "editPasswordPlaceholder": "edit Password Placeholder", - "chooseRole": "choose Role", - "pleaseSelectOrg": "please Select Org", - "pleaseSelectSite": "please Select Site", - "deviceOperatePermLabel": "device Operate Perm Label", - "has": "has", - "none": "none", - "AlarmSettingsManagement_294": "Error Code 下拉数据源", - "AlarmSettingsManagement_295": "工单模型下拉数据源", - "AlarmSettingsManagement_296": "获取告警模型列表 Failed", - "AlarmSettingsManagement_297": "Confirm Delete", - "AlarmSettingsManagement_298": "您 OK 要 Delete 这条告警模型吗", - "AlarmSettingsManagement_299": "请先勾选要 Delete 的数据", - "AlarmSettingsManagement_300": "Batch delete Confirm", - "AlarmSettingsManagement_301": "您 OK 要 Delete 选中的", - "AlarmSettingsManagement_302": "条告警模型吗", - "AlarmSettingsManagement_303": "Delete 后不可 Resume", - "AlarmSettingsManagement_304": "批量 Deleted", - "AlarmSettingsManagement_305": "批量 Delete failed", - "AlarmSettingsManagement_306": "更新 Success", - "AlarmSettingsManagement_309": "关联工单模型", - "AlarmSettingsManagement_310": "自动 Generate Order", - "AlarmSettingsManagement_311": "Add 告警模型", - "AlarmSettingsManagement_313": "Edit 告警模型", - "AlarmSettingsManagement_314": "Error Code (关联错误管理", - "AlarmSettingsManagement_315": "Please select Error Code", - "AlarmSettingsManagement_316": "工单模型ID(关联工单模型", - "AlarmSettingsManagement_317": "Please select 工单模型", - "AlarmSettingsManagement_319": "是否自动 Generate Order", - "AllDeviceManagement_321": "Clean Robot", - "AllDeviceManagement_324": "电表", - "AllDeviceManagement_325": "O&M Robot", - "AllDeviceManagement_326": "气象站", - "AllDeviceManagement_327": "设备编码", - "AllDeviceManagement_328": "运行", - "AllDeviceManagement_329": "Edit 设备", - "AllDeviceManagement_330": "OK 要 Delete 设备", - "AllDeviceManagement_331": "Please enter Device Name", - "BasicSettings_332": "设置已 Save", - "BasicSettings_333": "当前版本", - "BasicSettings_334": "最新版", - "BasicSettings_335": "告警通道", - "BasicSettings_336": "数据备份 Status", - "BasicSettings_337": "最近更新", - "BasicSettings_338": "超级管理员", - "BasicSettings_339": "All 权限", - "BasicSettings_340": "系统管理", - "BasicSettings_341": "O&M 工程师", - "BasicSettings_342": "工单管理", - "BasicSettings_343": "Inspection 主管", - "BasicSettings_344": "Inspection 管理", - "BasicSettings_345": "告警 Handle", - "BasicSettings_346": "数据分析师", - "BasicSettings_347": "数据分析", - "BasicSettings_348": "报表 View", - "BasicSettings_349": "接口", - "BasicSettings_350": "顶部统计卡片", - "BasicSettings_351": "左侧", - "BasicSettings_352": "基础配置", - "BasicSettings_353": "默认电站", - "BasicSettings_354": "首页默认页面", - "BasicSettings_355": "数据 Refresh 频率", - "BasicSettings_356": "分钟", - "BasicSettings_357": "地图服务", - "BasicSettings_358": "高德地图", - "BasicSettings_359": "工单自动编号", - "BasicSettings_360": "建议自动生成", - "BasicSettings_361": "移动端同步", - "BasicSettings_362": "Save 设置", - "BasicSettings_363": "Resume 默认", - "BasicSettings_364": "通知与告警策略", - "BasicSettings_365": "已 Enable", - "BasicSettings_366": "系统通知", - "BasicSettings_367": "Critical 告警立即通知", - "BasicSettings_368": "发电 Down 超过", - "BasicSettings_369": "通信中断通知", - "BasicSettings_370": "每日汇总推送", - "BasicSettings_371": "夜间免打扰", - "BasicSettings_372": "用户与权限预览", - "BasicSettings_373": "用户名", - "BasicSettings_375": "张 O&M", - "BasicSettings_376": "李工程师", - "BasicSettings_377": "王班长", - "BasicSettings_378": "赵分析师", - "BasicSettings_379": "右侧", - "BasicSettings_380": "Role 权限概览", - "BasicSettings_381": "用户", - "BasicSettings_382": "权限", - "BasicSettings_383": "Device Access Status", - "BasicSettings_384": "详情", - "BasicSettings_386": "数据保留", - "BasicSettings_387": "Login 审计", - "BasicSettings_388": "已开启", - "BasicSettings_389": "自动备份", - "BasicSettings_390": "密钥", - "BasicSettings_391": "最近备份", - "BasicSettings_392": "证书", - "BasicSettings_393": "有效期至", - "BasicSettings_394": "双因素认证", - "BasicSettings_396": "管理权限", - "BasicSettings_397": "清理缓存", - "BasicSettings_398": "重启服务", - "BasicSettings_399": "备份 Download", - "BasicSettings_400": "日志 Export", - "CameraManagement_401": "东门入口 Camera", - "CameraManagement_402": "园区东门", - "CameraManagement_403": "HD 球机", - "CameraManagement_404": "海康威视", - "CameraManagement_405": "西门入口 Camera", - "CameraManagement_406": "园区西门", - "CameraManagement_407": "HD 枪机", - "CameraManagement_408": "大华", - "CameraManagement_409": "停车场 Camera", - "CameraManagement_410": "地下停车场", - "CameraManagement_411": "办公楼大堂 Camera", - "CameraManagement_412": "办公楼1层大堂", - "CameraManagement_413": "半球摄像机", - "CameraManagement_414": "宇视", - "CameraManagement_415": "仓库监控 Camera", - "CameraManagement_416": "物料仓库", - "CameraManagement_417": "Camera Type", - "CameraManagement_418": "品牌", - "CameraManagement_419": "分辨率", - "CameraManagement_420": "云台", - "CameraManagement_421": "支持", - "CameraManagement_422": "不支持", - "CameraManagement_423": "夜视", - "CameraManagement_424": "预览", - "CameraManagement_425": "视频预览", - "CameraManagement_426": "视频预览占位", - "CameraManagement_427": "OK 要 Delete Camera", - "CameraManagement_428": "Camera 总数", - "CameraManagement_429": "Offline / Fault", - "CameraManagement_430": "Please enter Name /编码", - "CameraManagement_431": "Status 筛选", - "CameraManagement_432": "Add Camera", - "CameraManagement_433": "Edit Camera", - "CameraManagement_434": "Please enter 设备编码", - "CameraManagement_435": "Please enter IP", - "CameraManagement_436": "例如", - "CameraManagement_437": "Please select Type", - "CameraManagement_438": "全景摄像机", - "CameraManagement_439": "Please select 品牌", - "CameraManagement_440": "Please select 分辨率", - "CameraManagement_441": "安装 Location", - "CameraManagement_442": "Please enter 安装 Location", - "CameraManagement_443": "云台 Control", - "CameraManagement_444": "夜视功能", - "DeviceAccessPage_445": "替换这行", - "DeviceAccessPage_446": "录像 Status", - "DeviceAccessPage_447": "周界入侵告警", - "DeviceAccessPage_448": "湿度", - "DeviceAccessPage_449": "超温告警", - "DeviceAccessPage_450": "电压", - "DeviceAccessPage_451": "Low Battery 告警", - "DeviceAccessPage_452": "Delete 后 Refresh", - "DeviceAccessPage_454": "行为配置回显", - "DeviceAccessPage_455": "Edit 才有", - "DeviceAccessPage_457": "默认给一个", - "DeviceAccessPage_458": "阵列区监控设备", - "DeviceAccessPage_460": "Edit 设备 Success", - "DeviceAccessPage_461": "Add 设备 Success", - "DeviceAccessPage_463": "产品 Updated", - "DeviceAccessPage_464": "产品 Added", - "DeviceAccessPage_465": "改成", - "DeviceAccessPage_466": "产品", - "DeviceAccessPage_467": "模型", - "DeviceAccessPage_468": "端口", - "DeviceAccessPage_469": "Account", - "DeviceAccessPage_470": "模型 Name", - "DeviceAccessPage_471": "连接协议", - "DeviceAccessPage_472": "属性列表", - "DeviceAccessPage_473": "无属性", - "DeviceAccessPage_474": "指令列表", - "DeviceAccessPage_475": "无指令", - "DeviceAccessPage_476": "OK 要 Delete 该物模型吗", - "DeviceAccessPage_477": "产品管理", - "DeviceAccessPage_478": "物模型管理", - "DeviceAccessPage_479": "Add 设备", - "DeviceAccessPage_480": "产品编码", - "DeviceAccessPage_481": "Please enter 编码", - "DeviceAccessPage_482": "产品 Name", - "DeviceAccessPage_483": "Please enter Name", - "DeviceAccessPage_484": "生产厂家", - "DeviceAccessPage_485": "Please enter 厂家", - "DeviceAccessPage_486": "协议编码", - "DeviceAccessPage_487": "Please select 协议", - "DeviceAccessPage_488": "传输方式", - "DeviceAccessPage_489": "禁用", - "DeviceAccessPage_490": "Add 产品", - "DeviceAccessPage_491": "协议", - "DeviceAccessPage_492": "上报", - "DeviceAccessPage_493": "订阅", - "DeviceAccessPage_494": "字段映射", - "DeviceAccessPage_495": "OK 要 Delete 该产品吗", - "DeviceAccessPage_496": "Add 物模型", - "DeviceAccessPage_497": "设备配置", - "DeviceAccessPage_498": "产品配置", - "DeviceAccessPage_499": "物模型配置", - "DeviceAccessPage_500": "Please enter 设备", - "DeviceAccessPage_501": "关联产品", - "DeviceAccessPage_502": "Please select 关联产品", - "DeviceAccessPage_503": "配置", - "DeviceAccessPage_504": "地址", - "DeviceAccessPage_505": "默认", - "DeviceAccessPage_506": "Login Account", - "DeviceAccessPage_507": "设备 Login Account", - "DeviceAccessPage_508": "Login Password", - "DeviceAccessPage_509": "设备 Login Password", - "DeviceAccessPage_510": "服务地址", - "DeviceAccessPage_511": "客户端唯一标识", - "DeviceAccessPage_512": "Account (选填", - "DeviceAccessPage_514": "Password (选填", - "DeviceAccessPage_515": "告警阈值配置", - "DeviceAccessPage_516": "上限", - "DeviceAccessPage_517": "上限值", - "DeviceAccessPage_518": "下限", - "DeviceAccessPage_519": "下限值", - "DeviceAccessPage_520": "当前物模型 Not set 告警属性,无法配置阈值", - "DeviceAccessPage_521": "产品编号", - "DeviceAccessPage_522": "智能网关", - "DeviceAccessPage_523": "厂商", - "DeviceAccessPage_524": "迈步科技", - "DeviceAccessPage_525": "传输 Type", - "DeviceAccessPage_526": "绑定物模型", - "DeviceAccessPage_527": "Please select 要绑定的物模型", - "DeviceAccessPage_528": "协议自动配置项", - "DeviceAccessPage_529": "属性配置(你原来的", - "DeviceAccessPage_530": "物模型属性配置", - "DeviceAccessPage_533": "Please select 物模型以显示属性", - "DeviceAccessPage_534": "行为(指令)配置 Add", - "DeviceAccessPage_535": "物模型行为(指令)配置", - "DeviceAccessPage_536": "默认值", - "DeviceAccessPage_537": "该物模型暂无指令", - "DeviceAccessPage_538": "属性", - "DeviceAccessPage_539": "编码", - "DeviceAccessPage_540": "单位", - "DeviceAccessPage_541": "指令", - "DeviceAccessPage_542": "指令编码", - "DeviceAccessPage_543": "指令 Name", - "DeviceAccessPage_544": "参数", - "DeviceAccessPage_545": "属性弹窗", - "DeviceAccessPage_546": "配置属性", - "DeviceAccessPage_547": "属性编码", - "DeviceAccessPage_548": "属性 Name", - "DeviceAccessPage_549": "如 Temperature", - "DeviceAccessPage_550": "告警参数", - "DeviceAccessPage_551": "指令弹窗", - "DeviceAccessPage_552": "配置指令", - "DeviceAccessPage_553": "指令参数", - "DeviceAccessPage_554": "参数名", - "DeviceAccessPage_555": "枚举", - "DeviceAccessPage_556": "分隔", - "DeviceAccessPage_557": "标准字段", - "DeviceAccessPage_558": "厂商原始字段", - "DeviceAccessPage_559": "转换规则", - "DeviceManagement_560": "UAV 管理", - "DeviceManagement_561": "智能装备", - "DeviceManagement_562": "Camera 管理", - "DeviceManagement_563": "Robot 生成", - "DroneManagement_564": "获取 UAV 列表 Failed", - "DroneManagement_565": "请先在列表中选中需要绑定的 UAV", - "DroneManagement_566": "绑定 Success", - "DroneManagement_567": "绑定 Failed", - "DroneManagement_568": "Actions Abnormal", - "DroneManagement_569": "未选择有效设备,无法解绑", - "DroneManagement_570": "人员", - "DroneManagement_571": "场站", - "DroneManagement_572": "组织", - "DroneManagement_573": "Confirm 解绑", - "DroneManagement_574": "OK 要为选中的 UAV 清除", - "DroneManagement_575": "绑定吗", - "DroneManagement_576": "解绑 Success", - "DroneManagement_577": "解绑 Failed", - "DroneManagement_578": "机场", - "DroneManagement_579": "所属组织", - "DroneManagement_580": "未绑定", - "DroneManagement_581": "所属场站", - "DroneManagement_582": "人员解绑", - "DroneManagement_583": "场站解绑", - "DroneManagement_584": "组织解绑", - "DroneManagement_585": "绑定 UAV", - "DroneManagement_586": "批量解绑(用户", - "DroneManagement_587": "批量解绑(场站", - "DroneManagement_588": "批量解绑(组", - "DroneManagement_589": "Selected UAV", - "DroneManagement_591": "Please select 组织", - "DroneManagement_592": "Please select 场站", - "DroneManagement_593": "请先选择组织", - "DroneManagement_594": "Please select Leader", - "DroneManagement_595": "请先选择场站后选择 Leader", - "ErrorManagement_596": "Search 区域完全不变", - "ErrorManagement_597": "Add / Edit / View 弹窗(核心优化区域", - "ErrorManagement_598": "第一行:基础编码 Name", - "ErrorManagement_599": "第二行:来源、等级、 Check Field", - "ErrorManagement_600": "第三行:对比 Type", - "ErrorManagement_601": "对比值(自动切换单输入/区间双输入", - "ErrorManagement_602": "区间 Type", - "ErrorManagement_603": "显示两个输入框", - "FlvPlayer_606": "当前浏览器不支持 FLV MSE Play ,请 Download 文件 View", - "FlvPlayer_607": "适配", - "FlvPlayer_608": "关键:大文件点播不能false,否则一次性 All Download 立刻 Close", - "FlvPlayer_609": "视频编码不受浏览器MSE支持,请 Download 文件 Local Play", - "FlvPlayer_610": "媒体源不支持", - "FlvPlayer_611": "Play Abnormal ,建议 Download 文件 Local Play", - "FlvPlayer_612": "网络错误,请检查 Video URL", - "FlvPlayer_613": "媒体解码错误,该FLV文件可能不兼容浏览器", - "FlvPlayer_614": "加载超时,浏览器MSE解析 Failed ,请 Download 文件 Local Play", - "FlvPlayer_615": "Play 器初始化 Failed ,请重试", - "FlvPlayer_616": "视频加载 Failed ,请检查地址或 Download", - "FlvPlayer_617": "Play Failed", - "FlvPlayer_618": "重试", - "FlvPlayer_619": "Download 视频", - "FlvPlayer_620": "点击手动 Play 视频", - "FlvPlayer_621": "使用", - "FlvPlayer_622": "解码,部分特殊编码FLV浏览器无法渲染,建议 Download Local Play", - "FlvPlayer_623": "非FLV使用浏览器原生 Play", - "LogManagement_624": "系统", - "LogManagement_625": "Robot 智慧服务系统 Alpha 三服务(接入/ Status /命令)启动 Complete", - "LogManagement_626": "命令服务", - "LogManagement_627": "向 ROBOT-001 下发移动命令", - "LogManagement_628": "Execute 结果: Success", - "LogManagement_629": "Add O&M 工程师 Account", - "LogManagement_630": "李工", - "LogManagement_631": "Role : O&M 工程师", - "LogManagement_632": "心跳超时", - "LogManagement_633": "已自动置为 Offline", - "LogManagement_634": "自主 Inspection", - "LogManagement_635": "超时,已自动重试 1 次后仍 Failed", - "LogManagement_636": "Modify System Name 与数据 Refresh 频率", - "LogManagement_637": "Status 服务", - "LogManagement_638": "设备 ROBOT-001 上报 Status : Battery 85%,模式", - "LogManagement_639": "Inverter INV-03 输出功率 vs Yesterday Down 16%,触发预警", - "LogManagement_640": "调整 CAM-04 热成像通道码率参数", - "LogManagement_641": "每日自动备份 Complete ,备份文件", - "LogManagement_642": "Unknown 设备尝试注册(secret 校验 Failed ),已拒绝,来源", - "LogManagement_643": "Role 授权", - "LogManagement_644": "Report Center - Export", - "LogManagement_645": "日志已 Refresh", - "LogManagement_646": "级别", - "LogManagement_648": "消息", - "LogManagement_650": "已 Export", - "LogManagement_651": "条日志", - "LogManagement_652": "系统运行、 Device Control 与管理员 Actions 流水,仅超级管理员可 View", - "LogManagement_653": "All 级别", - "LogManagement_654": "Search 消息 / Operator / 来源", - "MenuList_655": "Menu 加载 Failed", - "MenuList_656": "Add 子 Menu", - "MenuList_657": "Add Menu", - "MenuList_658": "Close 分页", - "MenuList_659": "Menu 弹窗", - "MenuList_660": "Edit Menu", - "MenuList_661": "无(一级 Menu", - "MenuList_662": "Please enter Menu Name", - "MenuList_663": "显示 Sort", - "MenuList_664": "数字越小越靠前", - "MenuList_665": "图标选择弹窗", - "MenuList_666": "选择 Menu Icon", - "OnlineUser_667": "研发部门", - "OnlineUser_668": "内网", - "OnlineUser_669": "默认选中 Online Users", - "OnlineUser_670": "Search Complete", - "OnlineUser_671": "已 Reset Search 条件", - "OnlineUser_672": "已向会话", - "OnlineUser_673": "发送强退指令", - "OnlineUser_674": "序号", - "OnlineUser_675": "会话编号", - "OnlineUser_676": "Login Name", - "OnlineUser_677": "所属部门", - "OnlineUser_678": "主机", - "OnlineUser_679": "Login 地点", - "OnlineUser_680": "Actions 系统", - "OnlineUser_681": "浏览器", - "OnlineUser_682": "Login Time", - "OnlineUser_683": "强退", - "OnlineUser_684": "系统监控", - "OnlineUser_685": "顶部", - "OnlineUser_686": "Other 监控", - "OnlineUser_688": "Search 栏", - "OnlineUser_689": "Login 地址", - "OnlineUser_690": "Please enter Login 地址", - "OnlineUser_691": "Please enter Username", - "OnlineUser_694": "Online Users 表格", - "OnlineUser_695": "Other 页面(你可以随便改内容", - "OnlineUser_696": "Other 监控内容", - "OnlineUser_697": "这里可以放服务 Status 、CPU监控、内存监控、接口监控等内容", - "Organization_698": "OK Delete 该组织", - "Organization_699": "Add 组织", - "Organization_700": "统一分页", - "Organization_701": "Edit 组织", - "Organization_702": "Please enter Org Name", - "Organization_703": "组织编码", - "Organization_704": "Please enter 组织编码", - "Organization_705": "Please enter Leader", - "Organization_706": "Please enter Contact", - "Organization_707": "Please enter Email", - "Organization_708": "Please enter 地址", - "Organization_709": "Please enter Remark", - "SerialNumGenerate_710": "Please select 要 Delete 的数据", - "SerialNumGenerate_711": "请先生成", - "SerialNumGenerate_713": "未 Search 到数据", - "SerialNumGenerate_714": "Search Failed", - "SerialNumGenerate_715": "序列号", - "SerialNumGenerate_716": "型号", - "SerialNumGenerate_717": "国家", - "SerialNumGenerate_718": "省份", - "SerialNumGenerate_719": "二维码", - "SerialNumGenerate_721": "Robot 二维码管理", - "SerialNumGenerate_722": "数据管理", - "SerialNumGenerate_723": "OK Delete 选中项", - "SerialNumGenerate_724": "筛选栏", - "SerialNumGenerate_725": "Please enter 序列号", - "SerialNumGenerate_726": "列表", - "SerialNumGenerate_727": "完全自适应", - "SerialNumGenerate_728": "右侧固定", - "SerialNumGenerate_729": "不溢出", - "SerialNumGenerate_730": "Add 弹窗", - "SerialNumGenerate_731": "生成 Robot 二维码", - "SerialNumGenerate_732": "选择型号", - "SerialNumGenerate_733": "选择配置", - "SerialNumGenerate_734": "选择 Type", - "SerialNumGenerate_735": "选择国家", - "SerialNumGenerate_736": "请先选择国家", - "SerialNumGenerate_737": "生成序列号", - "SerialNumGenerate_738": "请先生成二维码", - "SerialNumGenerate_739": "View 二维码", - "SerialNumGenerate_740": "二维码详情", - "SerialNumGenerate_741": "Robot Type", - "SerialNumGenerate_742": "Type Name", - "SerialNumGenerate_743": "存储值", - "SerialNumGenerate_744": "Robot 型号", - "SerialNumGenerate_745": "型号 Name", - "SerialNumGenerate_746": "配置 Name", - "SmartDeviceManagement_747": "获取智能装备列表 Failed", - "SmartDeviceManagement_748": "装备 Updated", - "SmartDeviceManagement_749": "无权限", - "SmartDeviceManagement_750": "Save 参数 Success", - "SmartDeviceManagement_751": "授权 Failed", - "SmartDeviceManagement_752": "请先在列表中选中需要绑定的智能装备", - "SmartDeviceManagement_753": "OK 要为选中的智能装备清除", - "SmartDeviceManagement_754": "设备码", - "SmartDeviceManagement_755": "清除人员绑定", - "SmartDeviceManagement_756": "清除场站绑定", - "SmartDeviceManagement_757": "清除组织绑定", - "SmartDeviceManagement_758": "授权", - "SmartDeviceManagement_759": "绑定装备", - "SmartDeviceManagement_760": "批量解绑(组织", - "SmartDeviceManagement_761": "绑定智能装备", - "SmartDeviceManagement_762": "Selected 智能装备", - "SmartDeviceManagement_763": "Please select 装备", - "SmartDeviceManagement_764": "Edit 智能装备信息", - "SmartDeviceManagement_765": "请填写 Device Name", - "SmartDeviceManagement_766": "设备序列号", - "SmartDeviceManagement_767": "请填写设备码", - "SmartDeviceManagement_768": "Please enter 设备序列号", - "SmartDeviceManagement_769": "Please select Online Status", - "SmartDeviceManagement_770": "选择 Online Status", - "SmartDeviceManagement_771": "设备授权", - "SmartDeviceManagement_772": "设置设备 Actions 授权,授权到期后设备将失去对应 Actions 权限", - "SmartDeviceManagement_773": "授权 Time", - "SmartDeviceManagement_774": "Please enter 授权剩余 Time", - "SmartDeviceManagement_775": "授权 Time 不能小于", - "SmartDeviceManagement_776": "Save 授权", - "StationManage_777": "分区设置", - "StationManage_778": "边界绘制", - "StationManage_779": "Please select 组织筛选", - "StationManage_780": "Add 场站", - "StationManage_781": "场站弹窗", - "StationManage_782": "Edit 场站", - "StationManage_783": "Please select 所属组织", - "StationManage_784": "详细地址", - "StationManage_785": "消息推送配置", - "StationManage_786": "钉钉告警推送", - "StationManage_787": "开启", - "StationManage_788": "钉钉工单推送", - "StationManage_789": "邮件推送", - "StationManage_790": "告警弹窗推送", - "StationManage_791": "钉钉开关开启才显示Token、密钥", - "StationManage_792": "钉钉 Robot", - "StationManage_793": "开启钉钉推送时必须填写", - "StationManage_794": "Please enter 钉钉 Robot", - "StationManage_795": "钉钉加密密钥", - "StationManage_796": "开启钉钉推送时必须填写加密密钥", - "StationManage_797": "钉钉 Robot 加签密钥", - "StationManage_798": "分区弹窗", - "StationManage_799": "分区 Name", - "StationManage_800": "分区编码", - "StationManage_801": "分区 Type", - "StationManage_802": "清扫区", - "StationManage_803": "Inspection 区", - "StationManage_804": "Save 分区", - "StationManage_805": "地图绘制弹窗", - "StationManage_806": "地图区域绘制(可自行接入高德/百度地图", - "StationManage_807": "开始绘制", - "StationManage_808": "Save 边界", - "SystemMaintain_809": "错误管理", - "SystemMaintain_810": "告警模型管理", - "SystemMaintain_811": "工单模型管理", - "UserPage_814": "Role 弹窗", - "UserPage_815": "用户弹窗", - "UserPage_816": "自动适应布局:隐藏 Role 时, Status 自动占满一行", - "VideoManagement_817": "读取通道 Failed", - "VideoManagement_818": "无法连接视频服务", - "VideoManagement_819": "读取文件 Failed", - "VideoManagement_820": "请先选择完整的 Time 路径", - "VideoManagement_821": "大小", - "VideoManagement_822": "录像通道与 Replay 管理 · 共", - "VideoManagement_823": "个通道", - "VideoManagement_824": "通道", - "VideoManagement_825": "Select Device 通道", - "VideoManagement_826": "请先选择视频通道", - "VideoManagement_827": "Please select 年 / 月 / 日 加载录像", - "VideoManagement_828": "该日暂无录像文件", - "VideoManagement_829": "个文件", - "WorkOrderSettingsManagement_830": "获取工单模型列表 Failed", - "WorkOrderSettingsManagement_831": "您 OK 要 Delete 这条工单模型吗", - "WorkOrderSettingsManagement_832": "条工单模型吗", - "WorkOrderSettingsManagement_833": "工单 Name", - "WorkOrderSettingsManagement_835": "轻微", - "WorkOrderSettingsManagement_836": "路径/航线", - "WorkOrderSettingsManagement_837": "自动生成任务", - "WorkOrderSettingsManagement_838": "Add 工单模型", - "WorkOrderSettingsManagement_839": "Edit 工单模型", - "WorkOrderSettingsManagement_840": "Please enter 工单 Name", - "WorkOrderSettingsManagement_842": "请 Select Device", - "WorkOrderSettingsManagement_843": "根据 Device Type 显示不同的路径选择", - "WorkOrderSettingsManagement_844": "预设路径", - "WorkOrderSettingsManagement_845": "Please select 预设路径", - "WorkOrderSettingsManagement_846": "UAV 航线", - "WorkOrderSettingsManagement_847": "Please select UAV 航线", - "SystemSetting_1265": "Alert Rules 配置、用户 Role 、通知管理与系统参数设置" - }, - "aiAnalysis": { - "objectDetection": "object Detection", - "detectDesc": "detect Desc", - "thermalSegmentation": "thermal Segmentation", - "segmentationDesc": "segmentation Desc", - "getModelsFailed": "get Models Failed", - "uploadFirst": "upload First", - "submitTaskFailed": "submit Task Failed", - "thermalAnalysisComplete": "thermal Analysis Complete", - "taskSuccess": "task Success", - "taskExecutionError": "task Execution Error", - "cancelled": "cancelled", - "uploadThermalFirst": "upload Thermal First", - "thermalAnalysisFailed": "thermal Analysis Failed", - "detectTaskName": "detect Task Name", - "segmentationTaskName": "segmentation Task Name", - "algoCount": "algo Count", - "detectAndSeg": "detect And Seg", - "onlineServices": "online Services", - "healthCheck": "health Check", - "modelCount": "model Count", - "detectModelRegistry": "detect Model Registry", - "historyRecords": "history Records", - "pageDebugRecords": "page Debug Records", - "detectModel": "detect Model", - "default": "default", - "inputType": "input Type", - "image": "image", - "inferencePreset": "inference Preset", - "quality": "quality", - "dragFile": "drag File", - "supportedFormats": "supported Formats", - "processing": "processing", - "submitDetectTask": "submit Detect Task", - "serverDemo": "server Demo", - "refreshModels": "refresh Models", - "thermalFileLabel": "thermal File Label", - "uploadThermal": "upload Thermal", - "arrayMask": "array Mask", - "panelGeojson": "panel Geojson", - "submitThermalAnalysis": "submit Thermal Analysis", - "readServerHistory": "read Server History", - "resultDisplay": "result Display", - "resultViewHint": "result View Hint", - "inputPreview": "input Preview", - "resultImageVideo": "result Image Video", - "showResultAfterTask": "show Result After Task", - "resultJson": "result Json", - "noResult": "no Result", - "thermalInteractiveView": "thermal Interactive View", - "clickHotspotHint": "click Hotspot Hint", - "hotspotCount": "hotspot Count", - "panelArea": "panel Area", - "analysisId": "analysis Id", - "pointDetails": "point Details", - "selectHotspotPanel": "select Hotspot Panel", - "hotspot": "hotspot", - "blockNumber": "block Number", - "originalPixels": "original Pixels", - "overlayPixels": "overlay Pixels", - "area": "area", - "waitingSegmentation": "waiting Segmentation", - "hotspotPanelList": "hotspot Panel List", - "panelLabel": "panel Label", - "centerTitle": "center Title", - "algorithmList": "algorithm List", - "integratedCount": "integrated Count", - "detectWorkspace": "detect Workspace", - "segWorkspace": "seg Workspace", - "asyncTask": "async Task", - "syncAnalysis": "sync Analysis", - "detectWorkspaceDesc": "detect Workspace Desc", - "segWorkspaceDesc": "seg Workspace Desc", - "historyAnalysis": "history Analysis", - "noHistory": "no History", - "detect": "detect", - "segment": "segment", - "hotspotRecognition": "hotspot Recognition", - "abnormalString": "abnormal String", - "recommendedCleanBlock": "recommended Clean Block", - "videoAbnormalEvent": "video Abnormal Event", - "videoIntelligentAnalysis": "video Intelligent Analysis", - "perimeterIntrusion": "perimeter Intrusion", - "perimeterIntrusionDesc": "perimeter Intrusion Desc", - "personnelIntrusion": "personnel Intrusion", - "personnelIntrusionDesc": "personnel Intrusion Desc", - "fireSmokeDetection": "fire Smoke Detection", - "fireSmokeDesc": "fire Smoke Desc", - "areaLoitering": "area Loitering", - "areaLoiteringDesc": "area Loitering Desc", - "motionDetection": "motion Detection", - "motionDetectionDesc": "motion Detection Desc", - "perimeterIntrusionTimeline": "perimeter Intrusion Timeline", - "personnelIntrusionTimeline": "personnel Intrusion Timeline", - "areaLoiteringTimeline": "area Loitering Timeline", - "motionDetectionTimeline": "motion Detection Timeline", - "perimeterClimbTimeline": "perimeter Climb Timeline", - "perimeterIntrusionType": "perimeter Intrusion Type", - "AIAnalysis_983": "Handle 热斑组件", - "AIAnalysis_984": "排查 Abnormal 组串", - "AIAnalysis_985": "Clean 受遮挡区域", - "AIAnalysis_986": "跟踪衰减较大组件", - "AIAnalysis_987": "持续监控 Inverter 效率", - "AIAnalysis_988": "方阵", - "AIAnalysis_989": "智能诊断与分析中心", - "AIAnalysis_990": "Refresh 数据", - "AIAnalysis_991": "Export 报告", - "AIAnalysis_992": "第一排:顶部统计卡片", - "AIAnalysis_993": "值 (性能比", - "AIAnalysis_994": "vs Yesterday", - "AIAnalysis_995": "发电偏差率", - "AIAnalysis_996": "Abnormal 组串数量", - "AIAnalysis_997": "热斑疑似数量", - "AIAnalysis_998": "电站健康度评分", - "AIAnalysis_999": "Predicted 发 Battery", - "AIAnalysis_1000": "第二排: Thermal Analysis 和 组串 Abnormal 定位", - "AIAnalysis_1001": "UAV 热成像 Inspection 分析", - "AIAnalysis_1002": "模拟热斑点", - "AIAnalysis_1003": "高危", - "AIAnalysis_1004": "注意", - "AIAnalysis_1005": "热斑疑似点", - "AIAnalysis_1006": "高温区域", - "AIAnalysis_1007": "Temperature 分布", - "AIAnalysis_1008": "组串实时 Status 定位图", - "AIAnalysis_1009": "总组串", - "AIAnalysis_1012": "组串", - "AIAnalysis_1013": "Critical Abnormal (热斑", - "AIAnalysis_1014": "Critical Abnormal (断路", - "AIAnalysis_1015": "Abnormal (功率偏差", - "AIAnalysis_1016": "Abnormal (遮挡", - "AIAnalysis_1017": "轻微 Abnormal", - "AIAnalysis_1019": "运行 Normal", - "AIAnalysis_1020": "功率 Abnormal", - "AIAnalysis_1021": "Critical Fault", - "AIAnalysis_1022": "设备 Offline", - "AIAnalysis_1023": "Abnormal Type 分布", - "AIAnalysis_1024": "Offline 组串", - "AIAnalysis_1025": "View 详细定位表", - "AIAnalysis_1026": "第三排:三个主要分析区域", - "AIAnalysis_1027": "组件衰减趋势分析", - "AIAnalysis_1028": "衰减率趋势", - "AIAnalysis_1029": "当前均值", - "AIAnalysis_1030": "平均衰减率", - "AIAnalysis_1031": "最佳组件", - "AIAnalysis_1032": "最差组件", - "AIAnalysis_1033": "衰减预警", - "AIAnalysis_1034": "块组件衰减超标", - "AIAnalysis_1035": "建议排查", - "AIAnalysis_1036": "实时发电表现深度分析", - "AIAnalysis_1037": "发 Battery 对比分析", - "AIAnalysis_1038": "Actual 发电", - "AIAnalysis_1039": "Predicted 发电", - "AIAnalysis_1040": "理论发电", - "AIAnalysis_1041": "当日 Actual 发电", - "AIAnalysis_1042": "当日 Predicted 发电", - "AIAnalysis_1043": "实时 PR 值", - "AIAnalysis_1044": "诊断总结", - "AIAnalysis_1046": "诊断项", - "AIAnalysis_1047": "影响", - "AIAnalysis_1048": "检测到 36 处热斑疑似点", - "AIAnalysis_1049": "组串失配", - "AIAnalysis_1050": "串组串存在 Abnormal", - "AIAnalysis_1051": "遮挡风险", - "AIAnalysis_1052": "局部遮挡影响 2% 发 Battery", - "AIAnalysis_1053": "组件衰减", - "AIAnalysis_1054": "Inverter Abnormal", - "AIAnalysis_1055": "所有 Inverter 运行 Normal", - "AIAnalysis_1056": "建议与处置", - "AIAnalysis_1057": "建议措施", - "AIAnalysis_1058": "收益", - "AIAnalysis_1059": "跟踪衰减组件", - "AIAnalysis_1060": "监控 Inverter 效率", - "AIAnalysis_1061": "底部:数据来源", - "AIAnalysis_1062": "全栈数据融合来源", - "AIAnalysis_1063": "UAV 载荷热成像", - "AIAnalysis_1064": "同步中", - "AIAnalysis_1065": "实时遥测数据", - "AIAnalysis_1066": "云端气象分析站", - "AIAnalysis_1067": "电站 O&M 资产库", - "AIAnalysis_1068": "数据点" - }, - "video": { - "fileDetails": "file Details", - "sourceDevice": "source Device", - "startEndTime": "start End Time", - "capacity": "capacity", - "videoReplayCenter": "video Replay Center", - "allRecordings": "all Recordings", - "todayRecordings": "today Recordings", - "timeSpan": "time Span", - "onlineSearch": "online Search", - "labelMainFront": "label Main Front", - "labelRear": "label Rear", - "labelLeft": "label Left", - "labelRight": "label Right", - "labelFrontDrive": "label Front Drive", - "labelRearMount": "label Rear Mount", - "labelLeftWing": "label Left Wing", - "labelRightWing": "label Right Wing", - "labelCargo": "label Cargo", - "labelMainProbe": "label Main Probe", - "labelPanorama": "label Panorama", - "labelDetail": "label Detail", - "currentDutyDevice": "current Duty Device", - "videoStreamChannels": "video Stream Channels", - "refreshSignal": "refresh Signal", - "fullScreenWall": "full Screen Wall", - "ptzServoControl": "ptz Servo Control", - "systemIntegratedCommand": "system Integrated Command", - "twoWayIntercom": "two Way Intercom", - "triggerRemoteRepellent": "trigger Remote Repellent", - "aiVisualTracking": "ai Visual Tracking", - "activeVideoStreams": "active Video Streams", - "positionArray1": "position Array1", - "domeCamera": "dome Camera", - "recording": "recording", - "positionInverterRoom": "position Inverter Room", - "positionStationGate": "position Station Gate", - "positionPerimeterNorth": "position Perimeter North", - "positionWeatherStation": "position Weather Station", - "positionEquipmentArea": "position Equipment Area", - "positionStorageBattery": "position Storage Battery", - "positionEnergyStorage": "position Energy Storage", - "positionPerimeterSouth": "position Perimeter South", - "positionArrayWest": "position Array West", - "cameraName": "camera Name", - "recordingStatus": "recording Status", - "lastEventTime": "last Event Time", - "onlineCameras": "online Cameras", - "unitDevice": "unit Device", - "onlineRateTrend": "online Rate Trend", - "offlineCameras": "offline Cameras", - "offlineRateTrend": "offline Rate Trend", - "todayAlertEvents": "today Alert Events", - "unitIncident": "unit Incident", - "vsYesterdayPercent": "vs Yesterday Percent", - "perimeterAlerts": "perimeter Alerts", - "storageUsage": "storage Usage", - "storageUsageTrend": "storage Usage Trend", - "videoMonitorCenter": "video Monitor Center", - "customLayout": "custom Layout", - "mainView": "main View", - "liveLabel": "live Label", - "cameraDeviceList": "camera Device List", - "searchCameraPlaceholder": "search Camera Placeholder", - "allStatuses": "all Statuses", - "eventTimeline": "event Timeline", - "allTypes": "all Types", - "viewMore": "view More", - "recentAlertSnapshots": "recent Alert Snapshots", - "VideoPlayer_849": "前视图", - "VideoPlayer_850": "后视图", - "VideoPlayer_851": "左视图", - "VideoPlayer_852": "右视图", - "VideoPlayer_853": "视频源连接 Failed", - "Video_1269": "安防型", - "Video_1270": "运输型", - "Video_1271": "Inspection 型", - "VideoMonitorPage_1272": "中间 Video Monitor 中心", - "VideoMonitorPage_1273": "底部三栏", - "VideoMonitorPage_1274": "模拟检测框" - }, - "login": { - "and": "and", - "Login_1228": "左侧:表单区域", - "Login_1230": "右侧:梯形斜切", - "Login_1231": "图片铺满" - }, - "profile": { - "requestFailed": "request Failed", - "basicInfo": "basic Info", - "phoneInvalid": "phone Invalid", - "emailInvalid": "email Invalid", - "emailPlaceholder": "email Placeholder", - "remarkPlaceholder": "remark Placeholder", - "changePassword": "change Password", - "oldPasswordPlaceholder": "old Password Placeholder", - "newPasswordPlaceholder": "new Password Placeholder", - "passwordLengthError": "password Length Error", - "confirmPasswordRequired": "confirm Password Required", - "confirmPasswordPlaceholder": "confirm Password Placeholder", - "Profile_1232": "关键:给 Row 添加", - "Profile_1233": "让两列自动等高", - "Profile_1234": "左侧信息卡片", - "Profile_1236": "自动填充 Altitude", - "Profile_1237": "右侧表单卡片", - "Profile_1238": "基本资料", - "Profile_1239": "Modify Password" - }, - "home": { - "realtimePower": "realtime Power", - "totalPower": "total Power", - "ratedPower": "rated Power", - "gridConnection": "grid Connection", - "gridConnected": "grid Connected", - "frequency": "frequency", - "gridVoltage": "grid Voltage", - "phaseA": "phase A", - "todayAccumulated": "today Accumulated", - "currentIrradiance": "current Irradiance", - "ambientTemperature": "ambient Temperature", - "powerCurve": "power Curve", - "today": "today", - "inverterPowerCompare": "inverter Power Compare", - "stringCurrentHeatmap": "string Current Heatmap", - "current": "current", - "Home_1158": "江苏省", - "Home_1159": "南通市", - "Home_1160": "崇川区", - "Home_1161": "西南风", - "Home_1162": "升压站安防 Inspection 任务", - "Home_1163": "草稿", - "Home_1164": "区 Cleaning Task", - "Home_1166": "区 Inspection 任务", - "Home_1167": "已派发", - "Home_1168": "分析", - "Home_1169": "发现 Inverter Temperature 与组串电流存在轻微 Abnormal ,建议优先复核A区设备", - "Home_1170": "发现2处组件存在 Abnormal 热斑", - "Home_1171": "散热 Maintenance 建议:建议检查INV-A02散热风扇、风道和运行负载,持续高温时转 Repair 工单", - "Home_1172": "个组串存在发电 Abnormal", - "Home_1173": "阵列热斑处置建议:建议现场复核PV-A05-018至PV-A05-020组件接线和旁路二极管 Status ,必要时更换 Abnormal 组件", - "Home_1174": "整体发电偏差", - "Home_1176": "待开始", - "Home_1177": "主键ID( Add 为空", - "Home_1178": "工单编号(后端生成", - "Home_1179": "光伏组件 Clean 工单", - "Home_1183": "电站", - "Home_1184": "Device Type :电站", - "Home_1185": "根据电站清洁度建议进行组件 Clean ,提升发电效率", - "Home_1186": "系统自动生成 Cleaning Suggestion ,预计提升发 Battery", - "Home_1187": "Clean 设备、水枪、抹布", - "Home_1188": "影响发 Battery (%) 数字", - "Home_1190": "工单生成 Failed", - "Home_1191": "工单生成接口调用 Failed", - "Home_1192": "加载 Failed", - "Home_1193": "必须加这个,message才能 Normal 显示", - "Home_1198": "主体布局", - "Home_1199": "左侧图表", - "Home_1200": "今日发电功率趋势", - "Home_1201": "效率", - "Home_1203": "总任务", - "Home_1204": "中间", - "Home_1205": "外部系统", - "Home_1206": "Inspection Type", - "Home_1207": "Inspection Time", - "Home_1208": "Inspection 人员", - "Home_1210": "热点检测", - "Home_1211": "发现", - "Home_1212": "处组件存在 Abnormal 热斑", - "Home_1213": "组串 Abnormal", - "Home_1214": "发电偏差分析", - "Home_1215": "告警内容", - "Home_1216": "发生 Time", - "Home_1217": "组件阵列", - "Home_1218": "环境传感器", - "Home_1219": "详细", - "Home_1221": "Generate Order Button (已完善", - "Home_1222": "清洁度", - "Home_1223": "建议 Clean Time", - "Home_1224": "天内", - "Home_1225": "预计提升发 Battery", - "Home_1226": "预计提升 Battery" - }, - "router": { - "realtimeMonitorCenter": "realtime Monitor Center", - "realtimeMonitorDesc": "realtime Monitor Desc" - }, - "report": { - "monthlyGeneration": "monthly Generation", - "monthOverMonthUp": "month Over Month Up", - "prAverage": "pr Average", - "workOrderCompletionRate": "work Order Completion Rate", - "monthlyTotalOrders": "monthly Total Orders", - "alertClosureRate": "alert Closure Rate", - "criticalAlertCount": "critical Alert Count", - "cleaningRevenueImprovement": "cleaning Revenue Improvement", - "estimatedAdditionalGeneration": "estimated Additional Generation", - "autoGeneratedReports": "auto Generated Reports", - "unitReport": "unit Report", - "monthlyAccumulated": "monthly Accumulated", - "stationMonthlyReportFile": "station Monthly Report File", - "generated": "generated", - "weeklyOperationSummary": "weekly Operation Summary", - "aiDiagnosisDaily": "ai Diagnosis Daily", - "generating": "generating", - "alertClosureWeekly": "alert Closure Weekly", - "monthlyOperationReport": "monthly Operation Report", - "monthlyOperationReportDesc": "monthly Operation Report Desc", - "deviceHealthReport": "device Health Report", - "deviceHealthReportDesc": "device Health Report Desc", - "cleaningOptimizationReport": "cleaning Optimization Report", - "cleaningEffectReportDesc": "cleaning Effect Report Desc", - "inspectionRobotReport": "inspection Robot Report", - "inspectionRobotReportDesc": "inspection Robot Report Desc", - "stationMonthly": "station Monthly", - "alertWeekly": "alert Weekly", - "systemAuto": "system Auto", - "aiAnalysisReport": "ai Analysis Report", - "operationSummary": "operation Summary", - "operationReport": "operation Report", - "cleaningEffectReport": "cleaning Effect Report", - "overview": "overview", - "reportCycle": "report Cycle", - "reportType": "report Type", - "exportPdf": "export Pdf", - "exportExcel": "export Excel", - "monthlyOperationAnalysis": "monthly Operation Analysis", - "generation": "generation", - "predictedGeneration": "predicted Generation", - "monthlyAccumulatedGeneration": "monthly Accumulated Generation", - "theoreticalGeneration": "theoretical Generation", - "generationDeviation": "generation Deviation", - "averageIrradiance": "average Irradiance", - "unitIrradiancePerDay": "unit Irradiance Per Day", - "generationMeteorology": "generation Meteorology", - "workOrderAlertClosure": "work Order Alert Closure", - "closureRate": "closure Rate", - "alarmCount": "alarm Count", - "aiAnalysisStatistics": "ai Analysis Statistics", - "unitItem": "unit Item", - "subscriptionDispatch": "subscription Dispatch", - "subscribers": "subscribers", - "roleOmSupervisor": "role Om Supervisor", - "roleStationEngineer": "role Station Engineer", - "roleDeviceOm": "role Device Om", - "roleOmManager": "role Om Manager", - "dispatchChannels": "dispatch Channels", - "email": "email", - "systemNotification": "system Notification", - "sendPlan": "send Plan", - "weeklyAutoSend": "weekly Auto Send", - "reportDirectory": "report Directory", - "reportName": "report Name", - "templateCenter": "template Center", - "generationRecords": "generation Records", - "generateTime": "generate Time", - "generator": "generator", - "reportDownloader_5": "适配割草(植被 Altitude )、 Clean (灰损率)的不同字段", - "reportDownloader_6": "核心指标", - "reportDownloader_7": "最佳作业窗口", - "reportDownloader_8": "任务列表", - "reportDownloader_9": "算法 Execute 流程", - "ReportCenter_1249": "王 O&M", - "ReportCenter_1250": "页面头部标签", - "ReportCenter_1251": "左侧主内容区", - "ReportCenter_1252": "月度综合经营分析", - "ReportCenter_1253": "第二排:三个图表", - "ReportCenter_1254": "订阅与分发", - "ReportCenter_1255": "陈经理", - "ReportCenter_1256": "右侧边栏", - "ReportCenter_1257": "报表 Directory / 快捷 Download", - "ReportCenter_1258": "模板中心", - "ReportCenter_1259": "报表生成记录" - }, - "roles": { - "editSuccess": "edit Success", - "addSuccess": "add Success", - "manageMembers": "manage Members", - "confirmDeleteRole": "confirm Delete Role", - "permissionKey": "permission Key", - "superAdmin": "super Admin", - "orgAdmin": "org Admin", - "editRole": "edit Role", - "roleNamePlaceholder": "role Name Placeholder", - "rolePermission": "role Permission", - "roleKeyPlaceholder": "role Key Placeholder", - "roleSortLabel": "role Sort Label", - "menuPermissionConfig": "menu Permission Config", - "Roles_1260": "统一卡片容器(和 Menu Management 一致", - "Roles_1261": "顶部 Actions 栏(和 Menu Management 统一", - "Roles_1262": "Role 卡片列表", - "Roles_1263": "分页组件(正确触发", - "Roles_1264": "Add / Edit 弹窗" - }, - "users": { - "notAssigned": "not Assigned", - "languagePlaceholder": "language Placeholder", - "rolePlaceholder": "role Placeholder", - "siteId": "site Id", - "Users_1266": "回填多选 Role", - "Users_1267": "直接 Submit 数组", - "Users_1268": "多 Role 选择", - "userSlice_1321": "Save 用户信息", - "userSlice_1322": "Refresh 自动 Resume" - }, - "page": { - "api_1": "只需要加这一行", - "request_10": "使用全局", - "AgoraRtc_11": "先清理上一次", - "AgoraRtc_12": "视频连接 Failed", - "Draggable_269": "仅标题栏可拖拽,内容区不触发拖拽", - "Draggable_270": "整体8px外边框", - "Draggable_271": "拖拽标题栏", - "Draggable_272": "Close Button", - "Draggable_273": "Close Button ,阻止拖拽冒泡", - "Draggable_274": "传入的视频内容", - "Empty_275": "自定义文案", - "Empty_276": "组件 Altitude", - "Map_278": "规划航线", - "Map_279": "Complete 点实时轨迹", - "Map_280": "标记点实体", - "Map_281": "跟随小车的实例", - "Map_282": "直接存 Cartesian3(性能最高", - "Map_283": "强制 Refresh", - "Map_284": "垂直俯视", - "Map_285": "加这个(只在需要时渲染", - "Map_286": "飞机", - "Map_288": "割草", - "Map_290": "默认车", - "recharts_291": "访问量", - "recharts_292": "浏览量", - "recharts_293": "成交量", - "useWebRTCStream_848": "必须加", - "WeatherSunny_854": "每根", - "circQueue_855": "队列容量 (最多存储项目数", - "circQueue_856": "队列存储区,使用数组存任意对象", - "circQueue_857": "队头索引", - "circQueue_858": "队尾索引", - "circQueue_859": "队满标志", - "circQueue_860": "是否 Enable 深拷贝 (默认 Enable", - "circQueue_861": "队列最大内存限制 (单位:字节", - "circQueue_862": "当前已使用内存大小 (单位:字节", - "circQueue_863": "判断队列是否为空", - "circQueue_864": "判断队列是否已满", - "circQueue_865": "估算对象大小 (以 JSON 字符串的 UTF-8 编码长度作为近似值", - "circQueue_866": "中用于计算字节长度", - "circQueue_867": "若对象不可序列化, Back 0 (避免出错", - "circQueue_868": "深拷贝对象 (基于 JSON 的方式,仅支持可序列化对象", - "circQueue_869": "入队 Actions :将对象放入队尾", - "circQueue_870": "估算项目内存大小", - "circQueue_871": "若队满或超过内存限制则入队 Failed", - "circQueue_872": "深拷贝入队数据 (避免外部 Modify 影响队列", - "circQueue_873": "存入队尾", - "circQueue_874": "环形增长", - "circQueue_875": "增加当前 Memory", - "circQueue_876": "若尾追头,表示队满", - "circQueue_877": "出队 Actions :从队头取出一个对象", - "circQueue_878": "Back 深拷贝", - "circQueue_879": "队空 Back", - "circQueue_880": "读取队头项目", - "circQueue_881": "更新 Memory", - "circQueue_882": "出队必然队不满", - "circQueue_883": "Back 深拷贝,保护队列内部数据", - "circQueue_884": "丢弃数据:从队尾向前丢弃 len 项 (反向移动", - "circQueue_885": "队空则不能 Resume 丢弃", - "circQueue_886": "定位最后一项", - "circQueue_887": "减去内存大小", - "circQueue_888": "回退", - "circQueue_889": "获取当前队列中元素个数", - "circQueue_890": "循环直到 Success 入队或超时", - "circQueue_891": "超时退出", - "circQueue_892": "异步轮询", - "circQueue_893": "自旋加 sleep Suspend", - "circQueue_894": "Success 取出则 Back", - "circQueue_895": "序列化接口,用于", - "circQueue_896": "复制每个元素", - "circQueue_897": "移动到下一个元素", - "tracePoint_898": "防止值重复", - "tracePoint_899": "成员变量(私有", - "tracePoint_900": "循环队列", - "tracePoint_901": "用于存放等 Pending 的点", - "tracePoint_902": "轨迹点数组", - "tracePoint_903": "存放 Completed 点", - "tracePoint_904": "当前点", - "tracePoint_905": "Complete 点索引", - "tracePoint_906": "指向当前点之前的最后一个要插入的 Complete 点的 Location", - "tracePoint_907": "用于防止多线程同时更新", - "tracePoint_908": "模式管理器", - "tracePoint_909": "构造函数", - "tracePoint_910": "限制", - "tracePoint_911": "存放轨迹", - "tracePoint_912": "Completed 点", - "tracePoint_913": "默认为定位模式", - "tracePoint_914": "复位", - "tracePoint_915": "Reset 轨迹点", - "tracePoint_916": "清空队列", - "tracePoint_917": "清空轨迹点数组", - "tracePoint_918": "Reset Complete 点索引", - "tracePoint_919": "Reset 为定位模式", - "tracePoint_920": "释放锁", - "tracePoint_921": "获取轨迹", - "tracePoint_922": "尝试锁定", - "tracePoint_923": "防止多线程同时更新", - "tracePoint_924": "深拷贝", - "tracePoint_925": "避免外部 Modify 导致内部出错", - "tracePoint_926": "解锁", - "tracePoint_927": "锁定中", - "tracePoint_928": "Back 空", - "tracePoint_929": "更新当前点", - "tracePoint_930": "只保留 Complete 点部分", - "tracePoint_931": "再插入新的当前点", - "tracePoint_932": "触发事件", - "tracePoint_933": "驱动外部更新", - "tracePoint_934": "支持自动扩展数组", - "tracePoint_935": "如果轨迹数组正在 Actions", - "tracePoint_936": "先存放至队列中", - "tracePoint_937": "添加 Complete 点", - "tracePoint_938": "先 Handle 队列中积压的点", - "tracePoint_939": "如果队列不为空", - "tracePoint_940": "取出队列中的点", - "tracePoint_941": "错误 Handle", - "tracePoint_942": "可以输出到", - "tracePoint_943": "文件", - "tracePoint_944": "打印", - "tracePoint_945": "无论 Success Failed 都解锁", - "tracePoint_946": "避免无法使用", - "tracePoint_947": "若当前点存在,说明当前数组末尾已插入一个当前点", - "tracePoint_948": "截断轨迹数组到当前点,将新 Complete 点插入在当前点之前", - "tracePoint_949": "截断避免多添加了无效点", - "tracePoint_950": "然后再当前点之前插入 Complete 点", - "tracePoint_951": "首次添加轨迹点需要先尾插", - "tracePoint_952": "更新当前点索引", - "tracePoint_953": "释放锁资源", - "tryLock_954": "原子尝试锁", - "tryLock_955": "非阻塞且线程安全", - "tryLock_956": "可用于异步多线程", - "utils_957": "最优", - "utils_958": "苏州", - "utils_959": "天气接口调用 Failed", - "utils_960": "兜底", - "utils_961": "暴雨", - "utils_962": "只取有标题", - "utils_963": "有字段的列", - "utils_964": "转义CSV引号", - "utils_965": "错误 红", - "utils_966": "警告 橙", - "utils_967": "信息 蓝", - "Agri_968": "输入预览", - "Agri_969": "结果图/视频", - "Agri_970": "结果", - "Agri_971": "左侧:结果图", - "Agri_972": "热点标记", - "Agri_973": "请 Upload 热成像文件", - "Agri_974": "热点标记点", - "Agri_975": "右侧:点位详情", - "Agri_976": "总容器:垂直布局,占满卡片内容区", - "Agri_977": "上半部分:点位详情", - "Agri_978": "分割线", - "Agri_979": "下半部分:热点/面板列表", - "Agri_980": "左侧:算法列表", - "Agri_981": "中间:工作区", - "Agri_982": "右侧:历史记录", - "RealTimeMonitor_1240": "左侧大栏", - "RealTimeMonitor_1241": "电站拓扑图", - "RealTimeMonitor_1242": "设备 Real-time Monitor 列表", - "RealTimeMonitor_1243": "右侧小栏", - "RealTimeMonitor_1244": "个统计卡片", - "RealTimeMonitor_1245": "实时功率曲线", - "RealTimeMonitor_1246": "Inverter 功率对比", - "RealTimeMonitor_1247": "热力图与 Online Rate", - "RealTimeMonitor_1248": "简易地图点位", - "index_1318": "加这个", - "stationSlice_1319": "当前选中场站(完整对象", - "stationSlice_1320": "方便直接用", - "index_1323": "多租户 Login 时传入", - "index_1324": "过期 Time (秒", - "index_1327": "Button Permission", - "index_1328": "不在 Menu 中展示" - }, - "clean": { - "CleanOptimization_1069": "计划", - "CleanOptimization_1070": "区块", - "CleanOptimization_1071": "待创建", - "CleanOptimization_1072": "王工", - "CleanOptimization_1073": "赵工", - "CleanOptimization_1074": "Clean 前发 Battery", - "CleanOptimization_1075": "Clean 后发 Battery", - "CleanOptimization_1076": "灰尘积累", - "CleanOptimization_1077": "鸟粪遮挡", - "CleanOptimization_1078": "沙尘沉积", - "CleanOptimization_1079": "污染指数", - "CleanOptimization_1080": "中等", - "CleanOptimization_1081": "建议 Clean 区块数", - "CleanOptimization_1082": "占比", - "CleanOptimization_1083": "预计发电提升", - "CleanOptimization_1084": "占当前日发 Battery", - "CleanOptimization_1085": "Est Revenue 提升", - "CleanOptimization_1086": "按电价", - "CleanOptimization_1087": "元/ kWh 计算", - "CleanOptimization_1088": "上次 Clean Time", - "CleanOptimization_1089": "距今 12 天", - "CleanOptimization_1090": "Clean Cost 预估", - "CleanOptimization_1091": "预计单次 Clean 总成本", - "CleanOptimization_1092": "标题与 Actions 栏", - "CleanOptimization_1093": "Cleaning Optimization 管理", - "CleanOptimization_1094": "最 (7d)", - "CleanOptimization_1095": "最近 30 天", - "CleanOptimization_1096": "左侧:分析图表", - "CleanOptimization_1097": "污染趋势分析", - "CleanOptimization_1098": "阈值", - "CleanOptimization_1099": "发电损失构成", - "CleanOptimization_1100": "(7d)", - "CleanOptimization_1101": "总损失 Battery", - "CleanOptimization_1102": "Clean 前后对比分析", - "CleanOptimization_1103": "近一次", - "CleanOptimization_1104": "Clean 收益深度测算", - "CleanOptimization_1105": "电价 (含税", - "CleanOptimization_1106": "预计 Net Revenue", - "CleanOptimization_1107": "投资回报", - "CleanOptimization_1108": "回收周期", - "CleanOptimization_1109": "中间:地图分布与工单预览", - "CleanOptimization_1110": "电站污染分布与建议 Clean 区块分布图", - "CleanOptimization_1111": "污染等级", - "CleanOptimization_1112": "优先 Clean", - "CleanOptimization_1113": "较高", - "CleanOptimization_1114": "较低", - "CleanOptimization_1115": "清洁", - "CleanOptimization_1116": "地图背景图与浮动标签", - "CleanOptimization_1117": "模拟区块叠加层", - "CleanOptimization_1118": "具体的污染区块标签", - "CleanOptimization_1119": "右侧悬浮 Control Button", - "CleanOptimization_1120": "Clean 工单智能预览", - "CleanOptimization_1121": "View More", - "CleanOptimization_1122": "预计工时", - "CleanOptimization_1123": "计划 Time", - "CleanOptimization_1124": "创建工单", - "CleanOptimization_1125": "右侧:决策建议与参考", - "CleanOptimization_1126": "智能 Clean 策略建议", - "CleanOptimization_1127": "算法模型:多因子加权综合优化模型", - "CleanOptimization_1128": "推荐计划", - "CleanOptimization_1129": "建议区块", - "CleanOptimization_1130": "预计提升", - "CleanOptimization_1131": "天气适宜度", - "CleanOptimization_1132": "Clean 技术方案推荐", - "CleanOptimization_1133": "智能 Robot 方案", - "CleanOptimization_1134": "全自动 Clean ,适合大面积平整区块,效率极高", - "CleanOptimization_1135": "预计用水", - "CleanOptimization_1136": "人工精细化方案", - "CleanOptimization_1137": "灵活 Handle 遮挡及 Critical 污垢区域,适合复杂地形", - "CleanOptimization_1138": "天气与资源环境参考", - "CleanOptimization_1142": "风速", - "CleanOptimization_1143": "适宜", - "CleanOptimization_1144": "降水", - "CleanOptimization_1145": "水源", - "CleanOptimization_1146": "充足", - "CleanOptimization_1147": "Clean 作业影响综合评估", - "CleanOptimization_1148": "预计用水量", - "CleanOptimization_1149": "节水 30% ( Robot", - "CleanOptimization_1150": "预计总耗时", - "CleanOptimization_1151": "小时", - "CleanOptimization_1152": "并行作业 2 组", - "CleanOptimization_1153": "碳减排贡献", - "CleanOptimization_1154": "减排量", - "CleanOptimization_1155": "作业风险评估", - "CleanOptimization_1156": "安全可控", - "CleanOptimization_1157": "以上决策建议基于历史数据、实时气象及发电损失模型综合计算。 Actual Execute 效果可能受天气骤变、现场突发障碍等不 OK 因素影响" - } - } -} \ No newline at end of file diff --git a/tmp_analyze2.cjs b/tmp_analyze2.cjs deleted file mode 100644 index 18cda70..0000000 --- a/tmp_analyze2.cjs +++ /dev/null @@ -1,80 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules']; -const cjk = /[\u4e00-\u9fff]/; - -function walk(dir) { - const out = []; - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - if (excludeDirs.includes(entry.name)) continue; - out.push(...walk(full)); - } else if (exts.includes(path.extname(entry.name))) { - out.push(full); - } - } - return out; -} - -// Load locale keys (flattened) -function load(localePath) { - let src = fs.readFileSync(localePath, 'utf8'); - src = src.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - src = src.replace(/export\s+default\s+\w+;?/, ''); - src = src.replace(/\bconst\b/g, 'var'); - return new Function(src + '\nreturn obj;')(); -} -function flatten(obj, prefix = '', res = {}) { - for (const k of Object.keys(obj)) { - const key = prefix ? prefix + '.' + k : k; - if (obj[k] && typeof obj[k] === 'object' && !Array.isArray(obj[k])) flatten(obj[k], key, res); - else res[key] = obj[k]; - } - return res; -} -const zhF = flatten(load('src/locales/zh/index.ts')); -const enF = flatten(load('src/locales/en/index.ts')); - -// 1) Find all t('...') / i18n.t('...') referenced keys -const files = walk(root); -const refKeys = new Set(); -const refRegex = /(?:i18n\.t|[^a-zA-Z]t)\(\s*['"`]([a-zA-Z][a-zA-Z0-9_.]*?)['"`]/g; -for (const f of files) { - const content = fs.readFileSync(f, 'utf8'); - let m; - while ((m = refRegex.exec(content))) { - refKeys.add(m[1]); - } -} -const refArr = [...refKeys].sort(); -const missingInZh = refArr.filter(k => !(k in zhF)); -const missingInEn = refArr.filter(k => !(k in enF)); -console.log('=== t() referenced keys missing in ZH (' + missingInZh.length + ') ==='); -console.log(missingInZh.join('\n')); -console.log('\n=== t() referenced keys missing in EN (' + missingInEn.length + ') ==='); -console.log(missingInEn.join('\n')); -console.log('\nTotal referenced keys:', refArr.length); - -// 2) Find user-facing hardcoded Chinese strings. -// Exclude lines that are only comments or console.* (developer-facing). -const userHits = []; -for (const f of files) { - const lines = fs.readFileSync(f, 'utf8').split('\n'); - lines.forEach((line, i) => { - const t = line.trim(); - if (!cjk.test(line)) return; - if (t.startsWith('//') || t.startsWith('*') || t.startsWith('/*')) return; - if (/^\{\/\*/.test(t)) return; // {/* ... */} - // exclude console.* (browser console only) - if (/\bconsole\.(log|error|warn|info|debug)\s*\(/.test(line)) return; - userHits.push({ file: f, line: i + 1, text: t.slice(0, 220) }); - }); -} -console.log('\n=== USER-FACING hardcoded CJK lines (' + userHits.length + ') ==='); -for (const h of userHits) { - console.log(h.file + ':' + h.line + ' | ' + h.text); -} diff --git a/tmp_analyze2_output.txt b/tmp_analyze2_output.txt deleted file mode 100644 index 3f6ce93..0000000 Binary files a/tmp_analyze2_output.txt and /dev/null differ diff --git a/tmp_cjk.json b/tmp_cjk.json deleted file mode 100644 index 1969d93..0000000 --- a/tmp_cjk.json +++ /dev/null @@ -1,2544 +0,0 @@ -{ - "zhCjk": { - "page": { - "api_1": "只需要加这一行", - "request_10": "使用全局", - "AgoraRtc_11": "先清理上一次", - "AgoraRtc_12": "视频连接失败", - "Draggable_269": "仅标题栏可拖拽,内容区不触发拖拽", - "Draggable_270": "整体8px外边框", - "Draggable_271": "拖拽标题栏", - "Draggable_272": "关闭按钮", - "Draggable_273": "关闭按钮,阻止拖拽冒泡", - "Draggable_274": "传入的视频内容", - "Empty_275": "自定义文案", - "Empty_276": "组件高度", - "Map_278": "规划航线", - "Map_279": "完成点实时轨迹", - "Map_280": "标记点实体", - "Map_281": "跟随小车的实例", - "Map_282": "直接存 Cartesian3(性能最高", - "Map_283": "强制刷新", - "Map_284": "垂直俯视", - "Map_285": "加这个(只在需要时渲染", - "Map_286": "飞机", - "Map_288": "割草", - "Map_290": "默认车", - "recharts_291": "访问量", - "recharts_292": "浏览量", - "recharts_293": "成交量", - "useWebRTCStream_848": "必须加", - "WeatherSunny_854": "每根", - "circQueue_855": "队列容量 (最多存储项目数", - "circQueue_856": "队列存储区,使用数组存任意对象", - "circQueue_857": "队头索引", - "circQueue_858": "队尾索引", - "circQueue_859": "队满标志", - "circQueue_860": "是否启用深拷贝 (默认启用", - "circQueue_861": "队列最大内存限制 (单位:字节", - "circQueue_862": "当前已使用内存大小 (单位:字节", - "circQueue_863": "判断队列是否为空", - "circQueue_864": "判断队列是否已满", - "circQueue_865": "估算对象大小 (以 JSON 字符串的 UTF-8 编码长度作为近似值", - "circQueue_866": "中用于计算字节长度", - "circQueue_867": "若对象不可序列化,返回 0 (避免出错", - "circQueue_868": "深拷贝对象 (基于 JSON 的方式,仅支持可序列化对象", - "circQueue_869": "入队操作:将对象放入队尾", - "circQueue_870": "估算项目内存大小", - "circQueue_871": "若队满或超过内存限制则入队失败", - "circQueue_872": "深拷贝入队数据 (避免外部修改影响队列", - "circQueue_873": "存入队尾", - "circQueue_874": "环形增长", - "circQueue_875": "增加当前内存使用", - "circQueue_876": "若尾追头,表示队满", - "circQueue_877": "出队操作:从队头取出一个对象", - "circQueue_878": "返回深拷贝", - "circQueue_879": "队空返回", - "circQueue_880": "读取队头项目", - "circQueue_881": "更新内存使用", - "circQueue_882": "出队必然队不满", - "circQueue_883": "返回深拷贝,保护队列内部数据", - "circQueue_884": "丢弃数据:从队尾向前丢弃 len 项 (反向移动", - "circQueue_885": "队空则不能继续丢弃", - "circQueue_886": "定位最后一项", - "circQueue_887": "减去内存大小", - "circQueue_888": "回退", - "circQueue_889": "获取当前队列中元素个数", - "circQueue_890": "循环直到成功入队或超时", - "circQueue_891": "超时退出", - "circQueue_892": "异步轮询", - "circQueue_893": "自旋加 sleep 挂起", - "circQueue_894": "成功取出则返回", - "circQueue_895": "序列化接口,用于", - "circQueue_896": "复制每个元素", - "circQueue_897": "移动到下一个元素", - "tracePoint_898": "防止值重复", - "tracePoint_899": "成员变量(私有", - "tracePoint_900": "循环队列", - "tracePoint_901": "用于存放等待处理的点", - "tracePoint_902": "轨迹点数组", - "tracePoint_903": "存放已完成点", - "tracePoint_904": "当前点", - "tracePoint_905": "完成点索引", - "tracePoint_906": "指向当前点之前的最后一个要插入的完成点的位置", - "tracePoint_907": "用于防止多线程同时更新", - "tracePoint_908": "模式管理器", - "tracePoint_909": "构造函数", - "tracePoint_910": "限制", - "tracePoint_911": "存放轨迹", - "tracePoint_912": "已完成点", - "tracePoint_913": "默认为定位模式", - "tracePoint_914": "复位", - "tracePoint_915": "重置轨迹点", - "tracePoint_916": "清空队列", - "tracePoint_917": "清空轨迹点数组", - "tracePoint_918": "重置完成点索引", - "tracePoint_919": "重置为定位模式", - "tracePoint_920": "释放锁", - "tracePoint_921": "获取轨迹", - "tracePoint_922": "尝试锁定", - "tracePoint_923": "防止多线程同时更新", - "tracePoint_924": "深拷贝", - "tracePoint_925": "避免外部修改导致内部出错", - "tracePoint_926": "解锁", - "tracePoint_927": "锁定中", - "tracePoint_928": "返回空", - "tracePoint_929": "更新当前点", - "tracePoint_930": "只保留完成点部分", - "tracePoint_931": "再插入新的当前点", - "tracePoint_932": "触发事件", - "tracePoint_933": "驱动外部更新", - "tracePoint_934": "支持自动扩展数组", - "tracePoint_935": "如果轨迹数组正在操作", - "tracePoint_936": "先存放至队列中", - "tracePoint_937": "添加完成点", - "tracePoint_938": "先处理队列中积压的点", - "tracePoint_939": "如果队列不为空", - "tracePoint_940": "取出队列中的点", - "tracePoint_941": "错误处理", - "tracePoint_942": "可以输出到", - "tracePoint_943": "文件", - "tracePoint_944": "打印", - "tracePoint_945": "无论成功失败都解锁", - "tracePoint_946": "避免无法使用", - "tracePoint_947": "若当前点存在,说明当前数组末尾已插入一个当前点", - "tracePoint_948": "截断轨迹数组到当前点,将新完成点插入在当前点之前", - "tracePoint_949": "截断避免多添加了无效点", - "tracePoint_950": "然后再当前点之前插入完成点", - "tracePoint_951": "首次添加轨迹点需要先尾插", - "tracePoint_952": "更新当前点索引", - "tracePoint_953": "释放锁资源", - "tryLock_954": "原子尝试锁", - "tryLock_955": "非阻塞且线程安全", - "tryLock_956": "可用于异步多线程", - "utils_957": "最优", - "utils_958": "苏州", - "utils_959": "天气接口调用失败", - "utils_960": "兜底", - "utils_961": "暴雨", - "utils_962": "只取有标题", - "utils_963": "有字段的列", - "utils_964": "转义CSV引号", - "utils_965": "错误 红", - "utils_966": "警告 橙", - "utils_967": "信息 蓝", - "Agri_968": "输入预览", - "Agri_969": "结果图/视频", - "Agri_970": "结果", - "Agri_971": "左侧:结果图", - "Agri_972": "热点标记", - "Agri_973": "请上传热成像文件", - "Agri_974": "热点标记点", - "Agri_975": "右侧:点位详情", - "Agri_976": "总容器:垂直布局,占满卡片内容区", - "Agri_977": "上半部分:点位详情", - "Agri_978": "分割线", - "Agri_979": "下半部分:热点/面板列表", - "Agri_980": "左侧:算法列表", - "Agri_981": "中间:工作区", - "Agri_982": "右侧:历史记录", - "RealTimeMonitor_1240": "左侧大栏", - "RealTimeMonitor_1241": "电站拓扑图", - "RealTimeMonitor_1242": "设备实时监控列表", - "RealTimeMonitor_1243": "右侧小栏", - "RealTimeMonitor_1244": "个统计卡片", - "RealTimeMonitor_1245": "实时功率曲线", - "RealTimeMonitor_1246": "逆变器功率对比", - "RealTimeMonitor_1247": "热力图与在线率", - "RealTimeMonitor_1248": "简易地图点位", - "index_1318": "加这个", - "stationSlice_1319": "当前选中场站(完整对象", - "stationSlice_1320": "方便直接用", - "index_1323": "多租户登录时传入", - "index_1324": "过期时间(秒", - "index_1327": "按钮权限标识", - "index_1328": "不在菜单中展示" - }, - "devices": { - "device_2": "上传文件必须用 data,不能用", - "device_3": "上传文件必加", - "device_4": "修正为正确的添加接口", - "DeviceControl_47": "连接中状态", - "DeviceControl_48": "权限请求的弹窗", - "DeviceControl_49": "是否有控制权限", - "DeviceControl_50": "连接失败 重新连接", - "DeviceControl_51": "这里的return会终止整个handleMessage函数的执行", - "DeviceControl_52": "清空设备信息", - "DeviceControl_53": "秒后台保活", - "DeviceControl_54": "关键:清空上一个设备的轨迹", - "DeviceControl_55": "取list数组", - "DeviceControl_56": "加上这句", - "DeviceControl_57": "是否存在", - "DeviceControl_58": "连接是否打开", - "DeviceControl_59": "消息类型", - "DeviceControl_60": "原始手柄数据", - "DeviceControl_61": "认证令牌", - "DeviceControl_62": "割草机视角切换", - "DeviceControl_63": "巡检机器人:3路视频", - "DeviceControl_64": "紧凑横向,不滚动,全部可见", - "DeviceControl_65": "主画面:小一点", - "DeviceControl_66": "割草机单路", - "DeviceControl_67": "修复:割草机4路视频", - "DeviceControl_68": "绝不压扁,保持", - "DeviceControl_69": "其他设备", - "DeviceControl_71": "左侧设备列表", - "DeviceControl_72": "任务态势", - "DeviceControl_73": "区域", - "DeviceControl_74": "中间操作区", - "DeviceControl_75": "无人机状态概览", - "DeviceControl_76": "当前位置", - "DeviceControl_77": "当前模式", - "DeviceControl_78": "无人机待命", - "DeviceControl_79": "割草待命", - "DeviceControl_80": "待命", - "DeviceControl_81": "电量/航向", - "DeviceControl_82": "启用遥控", - "DeviceControl_83": "遥控与态势", - "DeviceControl_85": "把视频嵌入到这里", - "DeviceControl_86": "视频区域 - 独立大窗口", - "DeviceControl_87": "状态卡片行", - "DeviceControl_88": "链路", - "DeviceControl_89": "遥控接管", - "DeviceControl_90": "规划态势", - "DeviceControl_91": "控制区:左轮", - "DeviceControl_92": "右轮", - "DeviceControl_93": "紧凑布局", - "DeviceControl_94": "左轮速度面板 - 缩小", - "DeviceControl_95": "顶部标题", - "DeviceControl_96": "仪表盘(居中放大", - "DeviceControl_98": "电流 一体化卡片(核心视觉", - "DeviceControl_99": "电流", - "DeviceControl_100": "手柄 - 缩小、居中", - "DeviceControl_101": "右轮速度面板 - 缩小", - "DeviceControl_103": "仪表盘(居中优化", - "DeviceControl_104": "核心数据卡片:速度", - "DeviceControl_105": "目标值(干净对称", - "DeviceControl_106": "实时速度", - "DeviceControl_107": "速度输出", - "DeviceControl_108": "规划", - "DeviceControl_109": "状态标签(和你原版完全一样", - "DeviceControl_110": "下发任务", - "DeviceControl_113": "无人机专用任务控制按钮", - "DeviceControl_114": "动态按钮:执行中", - "DeviceControl_115": "挂起 / 已挂起", - "DeviceControl_117": "暂停 / 恢复", - "DeviceControl_118": "动态:返航 / 取消返航", - "DeviceControl_119": "右侧视频面板(遥控页隐藏)- 保持不变", - "DeviceControl_120": "设备类型:机器人", - "DeviceControl_121": "显示 4 路视频", - "DeviceControl_122": "设备类型:割草机", - "DeviceControl_123": "显示 1 路视频", - "DeviceControl_124": "设备类型:无人机", - "DeviceControl_125": "遍历显示视频流", - "DeviceControl_126": "删除原来的悬浮视频窗口代码", - "DeviceControl_127": "旋转加载圈", - "DeviceControl_128": "飞行参数", - "DeviceControl_129": "时间选择", - "DeviceControl_130": "重复任务", - "deviceController_131": "保存当前设备", - "deviceController_132": "后台保活定时器", - "deviceController_133": "其他端正在控制", - "deviceController_134": "权限校验失败", - "deviceController_135": "无控制权限", - "deviceController_136": "请求控制中", - "deviceController_137": "控制请求超时", - "deviceController_138": "控制失败", - "deviceController_139": "控制成功", - "deviceController_140": "权限请求", - "deviceController_141": "请求控制设备", - "deviceController_142": "车辆", - "deviceController_143": "围栏", - "deviceController_144": "坑洞", - "deviceController_145": "草丛", - "deviceController_146": "检测到", - "deviceController_147": "未知物", - "DeviceOverviewPage_149": "默认都算", - "DeviceOverviewPage_150": "只有切设备才变", - "DeviceOverviewPage_151": "视频不闪", - "DeviceOverviewPage_152": "作业中状态数量", - "DeviceOverviewPage_153": "左侧文字区域", - "DeviceOverviewPage_154": "底部环比/备注", - "DeviceOverviewPage_155": "右侧圆形图标区域", - "DeviceOverviewPage_156": "关键:videoDevice 绝不随MQTT更新,视频永不闪烁", - "DeviceOverviewPage_157": "机器人编辑别名弹窗", - "DeviceOverviewPage_158": "设备参数查看与修改弹窗(通用组件", - "DeviceParamModal_159": "加载时表单区域简单遮罩提示(打开弹窗拉取参数时的loading反馈", - "DeviceStatusPage_160": "持久化无人机数据", - "DeviceStatusPage_161": "持久化机场数据", - "DeviceStatusPage_162": "完成点", - "DeviceStatusPage_163": "开始时间戳", - "DeviceStatusPage_164": "结束时间戳", - "DeviceStatusPage_165": "标记的点", - "DeviceStatusPage_166": "是否完成路径规划", - "DeviceStatusPage_167": "保存的路径数据", - "DeviceStatusPage_168": "保存模态框可见性", - "DeviceStatusPage_169": "地块名称", - "DeviceStatusPage_170": "是否正在保存", - "DeviceStatusPage_171": "地图", - "DeviceStatusPage_172": "拿到路由上的", - "DeviceStatusPage_173": "持久化数据最后覆盖,确保优先显示", - "DeviceStatusPage_174": "存储返回的路径结果", - "DeviceStatusPage_175": "页面顶部按钮区域", - "DeviceStatusPage_176": "无人机专用布局", - "DeviceStatusPage_177": "左侧:机场视频", - "DeviceStatusPage_178": "无人机场视频", - "DeviceStatusPage_179": "机场状态", - "DeviceStatusPage_180": "右侧:无人机视频", - "DeviceStatusPage_181": "无人机状态", - "DeviceStatusPage_182": "无人机视频", - "DeviceStatusPage_183": "视频层:停止时不渲染 / 未播放时为空,不影响状态面板", - "DeviceStatusPage_184": "视频未加载 / 停止播放的占位", - "DeviceStatusPage_185": "单视频(非全景)模式状态叠加层:始终渲染,和视频层解耦", - "DeviceStatusPage_186": "右边 - 占1格,上部地图,下部远程控制", - "DeviceStatusPage_187": "远程控制面板", - "DeviceStatusPage_188": "保存路径模态框", - "DraggablePanel_189": "拖拽手柄", - "DraggablePanel_190": "子内容", - "DroneVideoPlayer_191": "默认选择室外", - "DroneVideoPlayer_192": "默认选择广角", - "DroneVideoPlayer_193": "目前先默认用第一个摄像头", - "DroneVideoPlayer_194": "重置另一边的加载状态", - "DroneVideoPlayer_195": "确保在双视频模式下有最小宽度", - "DroneVideoPlayer_196": "视频控制按钮", - "DroneVideoPlayer_197": "状态详情叠加层 - 左上角", - "DroneVideoPlayer_198": "底部信息叠加 - 显示经纬度", - "mowerAllView_199": "三列之间间距", - "mowerAllView_200": "左列:左视", - "mowerAllView_201": "左视", - "mowerAllView_202": "中列:上-前视 下-后视", - "mowerAllView_203": "前视", - "mowerAllView_204": "后视", - "mowerAllView_205": "右视", - "RobotTaskPage_206": "是否执行任务", - "RobotTaskPage_207": "正在执行的任务", - "RobotTaskPage_208": "控制视频组件显示", - "RobotTaskPage_212": "机器人设备", - "RobotTaskPage_213": "任务完成关闭视频", - "RobotTaskPage_214": "清空地图轨迹", - "RobotTaskPage_215": "设置当前任务", - "RobotTaskPage_216": "弓子 2 回子", - "RobotTaskPage_217": "连接成功后自动打开视频", - "RobotTaskPage_218": "加宽一点", - "RobotTaskPage_219": "原始状态值", - "RobotTaskPage_220": "子元素收缩兜底,超长时允许压缩换行", - "RobotTaskPage_221": "开启自动换行,小屏按钮自动折行", - "RobotTaskPage_222": "优化", - "RobotTaskPage_223": "机器人状态悬浮面板 - 绝对定位左上角", - "RobotTaskPage_224": "避开左侧图例面板,防止重叠", - "RobotTaskPage_225": "限制最大宽度,不会无限拉长", - "RobotTaskPage_226": "视频开关", - "RobotTaskPage_227": "机器人任务模块,带Tab切换", - "RobotTaskPage_229": "删除按钮", - "RobotTaskPage_230": "执行按钮", - "RobotTaskPage_231": "传递 routeList 给弹窗", - "RobotTaskPage_232": "执行任务弹窗", - "RobotTaskPage_237": "周选择", - "RobotTaskPage_238": "月选择", - "RobotTaskPage_239": "按天:选择日期", - "WayLinePage_242": "航线列表", - "WayLinePage_243": "航线列表默认选中第一个", - "WayLinePage_244": "使用航线列表无人机", - "WayLinePage_245": "地图卡片", - "WayLinePage_246": "独立筛选 - 设备任务列表", - "WayLinePage_247": "继续任务", - "WayLinePage_248": "底部内容区", - "WayLinePage_249": "航线列表独立无人机筛选", - "WayLinePage_250": "执行按钮改为图标", - "WayLinePage_251": "任务名称:自动换行", - "WayLinePage_252": "时间:自动换行", - "WayLinePage_253": "创建任务弹窗", - "WayLinePage_254": "重复任务配置", - "WayLinePage_255": "对象绑定", - "WayLinePage_256": "每周", - "WayLinePage_257": "按月日期", - "WayLinePage_258": "按月星期", - "WayLinePage_260": "执行航线设置返航高度", - "XboxController_261": "只有这里才发", - "XboxController_262": "空依赖", - "XboxController_263": "强制触发一次", - "XboxController_264": "页面切换依赖", - "XboxController_265": "未连接设备", - "XboxController_266": "其他 Web 端已连接", - "XboxController_267": "控制中", - "XboxController_268": "点击获取控制权限" - }, - "report": { - "reportDownloader_5": "适配割草(植被高度)、清洗(灰损率)的不同字段", - "reportDownloader_6": "核心指标", - "reportDownloader_7": "最佳作业窗口", - "reportDownloader_8": "任务列表", - "reportDownloader_9": "算法执行流程", - "ReportCenter_1249": "王运维", - "ReportCenter_1250": "页面头部标签", - "ReportCenter_1251": "左侧主内容区", - "ReportCenter_1252": "月度综合经营分析", - "ReportCenter_1253": "第二排:三个图表", - "ReportCenter_1254": "订阅与分发", - "ReportCenter_1255": "陈经理", - "ReportCenter_1256": "右侧边栏", - "ReportCenter_1257": "报表目录 / 快捷下载", - "ReportCenter_1258": "模板中心", - "ReportCenter_1259": "报表生成记录" - }, - "alerts": { - "AlarmHistory_14": "时间范围", - "AlarmHistory_15": "右侧详情抽屉", - "AlarmHistory_16": "通知订阅模块", - "AlarmOverview_17": "刷新列表", - "AlarmOverview_18": "刷新统计", - "AlarmOverview_25": "修复:等级是字符串,不是数字", - "AlarmOverview_26": "统计卡片", - "AlarmOverview_27": "只清除首尾空格", - "AlarmOverview_28": "新增:刷新图表全量告警", - "AlarmOverview_29": "表格", - "AlarmOverview_30": "三个图表", - "AlarmOverview_31": "告警详情抽屉", - "AlarmOverview_32": "告警头部", - "AlarmOverview_33": "告警基础信息", - "AlarmOverview_34": "告警描述", - "AlarmOverview_35": "根因分析", - "AlarmOverview_36": "推荐处理措施", - "AlarmOverview_37": "处理操作", - "AlarmOverview_38": "底部按钮", - "AlarmOverview_39": "修改告警弹窗", - "AlarmOverview_40": "新增:生成工单弹窗", - "AlarmRealtime_41": "告警详情弹窗", - "AlarmSubscription_42": "短信", - "AlarmSubscription_43": "邮件", - "AlarmSubscription_44": "推送", - "AlarmSubscription_45": "新增/编辑 弹窗" - }, - "systemSetting": { - "AlarmSettingsManagement_294": "错误编码下拉数据源", - "AlarmSettingsManagement_295": "工单模型下拉数据源", - "AlarmSettingsManagement_296": "获取告警模型列表失败", - "AlarmSettingsManagement_297": "确认删除", - "AlarmSettingsManagement_298": "您确定要删除这条告警模型吗", - "AlarmSettingsManagement_299": "请先勾选要删除的数据", - "AlarmSettingsManagement_300": "批量删除确认", - "AlarmSettingsManagement_301": "您确定要删除选中的", - "AlarmSettingsManagement_302": "条告警模型吗", - "AlarmSettingsManagement_303": "删除后不可恢复", - "AlarmSettingsManagement_304": "批量删除成功", - "AlarmSettingsManagement_305": "批量删除失败", - "AlarmSettingsManagement_306": "更新成功", - "AlarmSettingsManagement_309": "关联工单模型", - "AlarmSettingsManagement_310": "自动生成工单", - "AlarmSettingsManagement_311": "新增告警模型", - "AlarmSettingsManagement_313": "编辑告警模型", - "AlarmSettingsManagement_314": "错误编码(关联错误管理", - "AlarmSettingsManagement_315": "请选择错误编码", - "AlarmSettingsManagement_316": "工单模型ID(关联工单模型", - "AlarmSettingsManagement_317": "请选择工单模型", - "AlarmSettingsManagement_319": "是否自动生成工单", - "AllDeviceManagement_321": "清洗机器人", - "AllDeviceManagement_324": "电表", - "AllDeviceManagement_325": "运维机器人", - "AllDeviceManagement_326": "气象站", - "AllDeviceManagement_327": "设备编码", - "AllDeviceManagement_328": "运行", - "AllDeviceManagement_329": "编辑设备", - "AllDeviceManagement_330": "确定要删除设备", - "AllDeviceManagement_331": "请输入设备名称", - "BasicSettings_332": "设置已保存", - "BasicSettings_333": "当前版本", - "BasicSettings_334": "最新版", - "BasicSettings_335": "告警通道", - "BasicSettings_336": "数据备份状态", - "BasicSettings_337": "最近更新", - "BasicSettings_338": "超级管理员", - "BasicSettings_339": "全部权限", - "BasicSettings_340": "系统管理", - "BasicSettings_341": "运维工程师", - "BasicSettings_342": "工单管理", - "BasicSettings_343": "巡检主管", - "BasicSettings_344": "巡检管理", - "BasicSettings_345": "告警处理", - "BasicSettings_346": "数据分析师", - "BasicSettings_347": "数据分析", - "BasicSettings_348": "报表查看", - "BasicSettings_349": "接口", - "BasicSettings_350": "顶部统计卡片", - "BasicSettings_351": "左侧", - "BasicSettings_352": "基础配置", - "BasicSettings_353": "默认电站", - "BasicSettings_354": "首页默认页面", - "BasicSettings_355": "数据刷新频率", - "BasicSettings_356": "分钟", - "BasicSettings_357": "地图服务", - "BasicSettings_358": "高德地图", - "BasicSettings_359": "工单自动编号", - "BasicSettings_360": "建议自动生成", - "BasicSettings_361": "移动端同步", - "BasicSettings_362": "保存设置", - "BasicSettings_363": "恢复默认", - "BasicSettings_364": "通知与告警策略", - "BasicSettings_365": "已启用", - "BasicSettings_366": "系统通知", - "BasicSettings_367": "严重告警立即通知", - "BasicSettings_368": "发电下降超过", - "BasicSettings_369": "通信中断通知", - "BasicSettings_370": "每日汇总推送", - "BasicSettings_371": "夜间免打扰", - "BasicSettings_372": "用户与权限预览", - "BasicSettings_373": "用户名", - "BasicSettings_375": "张运维", - "BasicSettings_376": "李工程师", - "BasicSettings_377": "王班长", - "BasicSettings_378": "赵分析师", - "BasicSettings_379": "右侧", - "BasicSettings_380": "角色权限概览", - "BasicSettings_381": "用户", - "BasicSettings_382": "权限", - "BasicSettings_383": "设备接入状态", - "BasicSettings_384": "详情", - "BasicSettings_386": "数据保留", - "BasicSettings_387": "登录审计", - "BasicSettings_388": "已开启", - "BasicSettings_389": "自动备份", - "BasicSettings_390": "密钥", - "BasicSettings_391": "最近备份", - "BasicSettings_392": "证书", - "BasicSettings_393": "有效期至", - "BasicSettings_394": "双因素认证", - "BasicSettings_396": "管理权限", - "BasicSettings_397": "清理缓存", - "BasicSettings_398": "重启服务", - "BasicSettings_399": "备份下载", - "BasicSettings_400": "日志导出", - "CameraManagement_401": "东门入口摄像头", - "CameraManagement_402": "园区东门", - "CameraManagement_403": "高清球机", - "CameraManagement_404": "海康威视", - "CameraManagement_405": "西门入口摄像头", - "CameraManagement_406": "园区西门", - "CameraManagement_407": "高清枪机", - "CameraManagement_408": "大华", - "CameraManagement_409": "停车场摄像头", - "CameraManagement_410": "地下停车场", - "CameraManagement_411": "办公楼大堂摄像头", - "CameraManagement_412": "办公楼1层大堂", - "CameraManagement_413": "半球摄像机", - "CameraManagement_414": "宇视", - "CameraManagement_415": "仓库监控摄像头", - "CameraManagement_416": "物料仓库", - "CameraManagement_417": "摄像头类型", - "CameraManagement_418": "品牌", - "CameraManagement_419": "分辨率", - "CameraManagement_420": "云台", - "CameraManagement_421": "支持", - "CameraManagement_422": "不支持", - "CameraManagement_423": "夜视", - "CameraManagement_424": "预览", - "CameraManagement_425": "视频预览", - "CameraManagement_426": "视频预览占位", - "CameraManagement_427": "确定要删除摄像头", - "CameraManagement_428": "摄像头总数", - "CameraManagement_429": "离线/故障", - "CameraManagement_430": "请输入名称/编码", - "CameraManagement_431": "状态筛选", - "CameraManagement_432": "新增摄像头", - "CameraManagement_433": "编辑摄像头", - "CameraManagement_434": "请输入设备编码", - "CameraManagement_435": "请输入IP地址", - "CameraManagement_436": "例如", - "CameraManagement_437": "请选择类型", - "CameraManagement_438": "全景摄像机", - "CameraManagement_439": "请选择品牌", - "CameraManagement_440": "请选择分辨率", - "CameraManagement_441": "安装位置", - "CameraManagement_442": "请输入安装位置", - "CameraManagement_443": "云台控制", - "CameraManagement_444": "夜视功能", - "DeviceAccessPage_445": "替换这行", - "DeviceAccessPage_446": "录像状态", - "DeviceAccessPage_447": "周界入侵告警", - "DeviceAccessPage_448": "湿度", - "DeviceAccessPage_449": "超温告警", - "DeviceAccessPage_450": "电压", - "DeviceAccessPage_451": "低电量告警", - "DeviceAccessPage_452": "删除后刷新", - "DeviceAccessPage_454": "行为配置回显", - "DeviceAccessPage_455": "编辑才有", - "DeviceAccessPage_457": "默认给一个", - "DeviceAccessPage_458": "阵列区监控设备", - "DeviceAccessPage_460": "编辑设备成功", - "DeviceAccessPage_461": "新增设备成功", - "DeviceAccessPage_463": "产品编辑成功", - "DeviceAccessPage_464": "产品新增成功", - "DeviceAccessPage_465": "改成", - "DeviceAccessPage_466": "产品", - "DeviceAccessPage_467": "模型", - "DeviceAccessPage_468": "端口", - "DeviceAccessPage_469": "账号", - "DeviceAccessPage_470": "模型名称", - "DeviceAccessPage_471": "连接协议", - "DeviceAccessPage_472": "属性列表", - "DeviceAccessPage_473": "无属性", - "DeviceAccessPage_474": "指令列表", - "DeviceAccessPage_475": "无指令", - "DeviceAccessPage_476": "确定要删除该物模型吗", - "DeviceAccessPage_477": "产品管理", - "DeviceAccessPage_478": "物模型管理", - "DeviceAccessPage_479": "新增设备", - "DeviceAccessPage_480": "产品编码", - "DeviceAccessPage_481": "请输入编码", - "DeviceAccessPage_482": "产品名称", - "DeviceAccessPage_483": "请输入名称", - "DeviceAccessPage_484": "生产厂家", - "DeviceAccessPage_485": "请输入厂家", - "DeviceAccessPage_486": "协议编码", - "DeviceAccessPage_487": "请选择协议", - "DeviceAccessPage_488": "传输方式", - "DeviceAccessPage_489": "禁用", - "DeviceAccessPage_490": "新增产品", - "DeviceAccessPage_491": "协议", - "DeviceAccessPage_492": "上报", - "DeviceAccessPage_493": "订阅", - "DeviceAccessPage_494": "字段映射", - "DeviceAccessPage_495": "确定要删除该产品吗", - "DeviceAccessPage_496": "新增物模型", - "DeviceAccessPage_497": "设备配置", - "DeviceAccessPage_498": "产品配置", - "DeviceAccessPage_499": "物模型配置", - "DeviceAccessPage_500": "请输入设备", - "DeviceAccessPage_501": "关联产品", - "DeviceAccessPage_502": "请选择关联产品", - "DeviceAccessPage_503": "配置", - "DeviceAccessPage_504": "地址", - "DeviceAccessPage_505": "默认", - "DeviceAccessPage_506": "登录账号", - "DeviceAccessPage_507": "设备登录账号", - "DeviceAccessPage_508": "登录密码", - "DeviceAccessPage_509": "设备登录密码", - "DeviceAccessPage_510": "服务地址", - "DeviceAccessPage_511": "客户端唯一标识", - "DeviceAccessPage_512": "账号(选填", - "DeviceAccessPage_514": "密码(选填", - "DeviceAccessPage_515": "告警阈值配置", - "DeviceAccessPage_516": "上限", - "DeviceAccessPage_517": "上限值", - "DeviceAccessPage_518": "下限", - "DeviceAccessPage_519": "下限值", - "DeviceAccessPage_520": "当前物模型未设置告警属性,无法配置阈值", - "DeviceAccessPage_521": "产品编号", - "DeviceAccessPage_522": "智能网关", - "DeviceAccessPage_523": "厂商", - "DeviceAccessPage_524": "迈步科技", - "DeviceAccessPage_525": "传输类型", - "DeviceAccessPage_526": "绑定物模型", - "DeviceAccessPage_527": "请选择要绑定的物模型", - "DeviceAccessPage_528": "协议自动配置项", - "DeviceAccessPage_529": "属性配置(你原来的", - "DeviceAccessPage_530": "物模型属性配置", - "DeviceAccessPage_533": "请选择物模型以显示属性", - "DeviceAccessPage_534": "行为(指令)配置 新增", - "DeviceAccessPage_535": "物模型行为(指令)配置", - "DeviceAccessPage_536": "默认值", - "DeviceAccessPage_537": "该物模型暂无指令", - "DeviceAccessPage_538": "属性", - "DeviceAccessPage_539": "编码", - "DeviceAccessPage_540": "单位", - "DeviceAccessPage_541": "指令", - "DeviceAccessPage_542": "指令编码", - "DeviceAccessPage_543": "指令名称", - "DeviceAccessPage_544": "参数", - "DeviceAccessPage_545": "属性弹窗", - "DeviceAccessPage_546": "配置属性", - "DeviceAccessPage_547": "属性编码", - "DeviceAccessPage_548": "属性名称", - "DeviceAccessPage_549": "如 温度", - "DeviceAccessPage_550": "告警参数", - "DeviceAccessPage_551": "指令弹窗", - "DeviceAccessPage_552": "配置指令", - "DeviceAccessPage_553": "指令参数", - "DeviceAccessPage_554": "参数名", - "DeviceAccessPage_555": "枚举", - "DeviceAccessPage_556": "分隔", - "DeviceAccessPage_557": "标准字段", - "DeviceAccessPage_558": "厂商原始字段", - "DeviceAccessPage_559": "转换规则", - "DeviceManagement_560": "无人机管理", - "DeviceManagement_561": "智能装备", - "DeviceManagement_562": "摄像头管理", - "DeviceManagement_563": "机器人生成", - "DroneManagement_564": "获取无人机列表失败", - "DroneManagement_565": "请先在列表中选中需要绑定的无人机", - "DroneManagement_566": "绑定成功", - "DroneManagement_567": "绑定失败", - "DroneManagement_568": "操作异常", - "DroneManagement_569": "未选择有效设备,无法解绑", - "DroneManagement_570": "人员", - "DroneManagement_571": "场站", - "DroneManagement_572": "组织", - "DroneManagement_573": "确认解绑", - "DroneManagement_574": "确定要为选中的无人机清除", - "DroneManagement_575": "绑定吗", - "DroneManagement_576": "解绑成功", - "DroneManagement_577": "解绑失败", - "DroneManagement_578": "机场", - "DroneManagement_579": "所属组织", - "DroneManagement_580": "未绑定", - "DroneManagement_581": "所属场站", - "DroneManagement_582": "人员解绑", - "DroneManagement_583": "场站解绑", - "DroneManagement_584": "组织解绑", - "DroneManagement_585": "绑定无人机", - "DroneManagement_586": "批量解绑(用户", - "DroneManagement_587": "批量解绑(场站", - "DroneManagement_588": "批量解绑(组", - "DroneManagement_589": "已选无人机", - "DroneManagement_591": "请选择组织", - "DroneManagement_592": "请选择场站", - "DroneManagement_593": "请先选择组织", - "DroneManagement_594": "请选择负责人", - "DroneManagement_595": "请先选择场站后选择负责人", - "ErrorManagement_596": "搜索区域完全不变", - "ErrorManagement_597": "新增/编辑/查看弹窗(核心优化区域", - "ErrorManagement_598": "第一行:基础编码名称", - "ErrorManagement_599": "第二行:来源、等级、校验字段", - "ErrorManagement_600": "第三行:对比类型", - "ErrorManagement_601": "对比值(自动切换单输入/区间双输入", - "ErrorManagement_602": "区间类型", - "ErrorManagement_603": "显示两个输入框", - "FlvPlayer_606": "当前浏览器不支持 FLV MSE播放,请下载文件查看", - "FlvPlayer_607": "适配", - "FlvPlayer_608": "关键:大文件点播不能false,否则一次性全部下载立刻关闭", - "FlvPlayer_609": "视频编码不受浏览器MSE支持,请下载文件本地播放", - "FlvPlayer_610": "媒体源不支持", - "FlvPlayer_611": "播放异常,建议下载文件本地播放", - "FlvPlayer_612": "网络错误,请检查视频地址", - "FlvPlayer_613": "媒体解码错误,该FLV文件可能不兼容浏览器", - "FlvPlayer_614": "加载超时,浏览器MSE解析失败,请下载文件本地播放", - "FlvPlayer_615": "播放器初始化失败,请重试", - "FlvPlayer_616": "视频加载失败,请检查地址或下载", - "FlvPlayer_617": "播放失败", - "FlvPlayer_618": "重试", - "FlvPlayer_619": "下载视频", - "FlvPlayer_620": "点击手动播放视频", - "FlvPlayer_621": "使用", - "FlvPlayer_622": "解码,部分特殊编码FLV浏览器无法渲染,建议下载本地播放", - "FlvPlayer_623": "非FLV使用浏览器原生播放", - "LogManagement_624": "系统", - "LogManagement_625": "机器人智慧服务系统 Alpha 三服务(接入/状态/命令)启动完成", - "LogManagement_626": "命令服务", - "LogManagement_627": "向 ROBOT-001 下发移动命令", - "LogManagement_628": "执行结果:成功", - "LogManagement_629": "新增运维工程师账号", - "LogManagement_630": "李工", - "LogManagement_631": "角色:运维工程师", - "LogManagement_632": "心跳超时", - "LogManagement_633": "已自动置为离线", - "LogManagement_634": "自主巡检", - "LogManagement_635": "超时,已自动重试 1 次后仍失败", - "LogManagement_636": "修改系统名称与数据刷新频率", - "LogManagement_637": "状态服务", - "LogManagement_638": "设备 ROBOT-001 上报状态:电量 85%,模式", - "LogManagement_639": "逆变器 INV-03 输出功率较昨日下降 16%,触发预警", - "LogManagement_640": "调整 CAM-04 热成像通道码率参数", - "LogManagement_641": "每日自动备份完成,备份文件", - "LogManagement_642": "未知设备尝试注册(secret 校验失败),已拒绝,来源", - "LogManagement_643": "角色授权", - "LogManagement_644": "报表中心-导出", - "LogManagement_645": "日志已刷新", - "LogManagement_646": "级别", - "LogManagement_648": "消息", - "LogManagement_650": "已导出", - "LogManagement_651": "条日志", - "LogManagement_652": "系统运行、设备控制与管理员操作流水,仅超级管理员可查看", - "LogManagement_653": "全部级别", - "LogManagement_654": "搜索消息 / 操作人 / 来源", - "MenuList_655": "菜单加载失败", - "MenuList_656": "新增子菜单", - "MenuList_657": "新增菜单", - "MenuList_658": "关闭分页", - "MenuList_659": "菜单弹窗", - "MenuList_660": "编辑菜单", - "MenuList_661": "无(一级菜单", - "MenuList_662": "请输入菜单名称", - "MenuList_663": "显示排序", - "MenuList_664": "数字越小越靠前", - "MenuList_665": "图标选择弹窗", - "MenuList_666": "选择菜单图标", - "OnlineUser_667": "研发部门", - "OnlineUser_668": "内网", - "OnlineUser_669": "默认选中在线用户", - "OnlineUser_670": "搜索完成", - "OnlineUser_671": "已重置搜索条件", - "OnlineUser_672": "已向会话", - "OnlineUser_673": "发送强退指令", - "OnlineUser_674": "序号", - "OnlineUser_675": "会话编号", - "OnlineUser_676": "登录名称", - "OnlineUser_677": "所属部门", - "OnlineUser_678": "主机", - "OnlineUser_679": "登录地点", - "OnlineUser_680": "操作系统", - "OnlineUser_681": "浏览器", - "OnlineUser_682": "登录时间", - "OnlineUser_683": "强退", - "OnlineUser_684": "系统监控", - "OnlineUser_685": "顶部", - "OnlineUser_686": "其他监控", - "OnlineUser_688": "搜索栏", - "OnlineUser_689": "登录地址", - "OnlineUser_690": "请输入登录地址", - "OnlineUser_691": "请输入用户名称", - "OnlineUser_694": "在线用户表格", - "OnlineUser_695": "其他页面(你可以随便改内容", - "OnlineUser_696": "其他监控内容", - "OnlineUser_697": "这里可以放服务状态、CPU监控、内存监控、接口监控等内容", - "Organization_698": "确定删除该组织", - "Organization_699": "新增组织", - "Organization_700": "统一分页", - "Organization_701": "编辑组织", - "Organization_702": "请输入组织名称", - "Organization_703": "组织编码", - "Organization_704": "请输入组织编码", - "Organization_705": "请输入负责人", - "Organization_706": "请输入联系电话", - "Organization_707": "请输入邮箱", - "Organization_708": "请输入地址", - "Organization_709": "请输入备注", - "SerialNumGenerate_710": "请选择要删除的数据", - "SerialNumGenerate_711": "请先生成", - "SerialNumGenerate_713": "未查询到数据", - "SerialNumGenerate_714": "查询失败", - "SerialNumGenerate_715": "序列号", - "SerialNumGenerate_716": "型号", - "SerialNumGenerate_717": "国家", - "SerialNumGenerate_718": "省份", - "SerialNumGenerate_719": "二维码", - "SerialNumGenerate_721": "机器人二维码管理", - "SerialNumGenerate_722": "数据管理", - "SerialNumGenerate_723": "确定删除选中项", - "SerialNumGenerate_724": "筛选栏", - "SerialNumGenerate_725": "请输入序列号", - "SerialNumGenerate_726": "列表", - "SerialNumGenerate_727": "完全自适应", - "SerialNumGenerate_728": "右侧固定", - "SerialNumGenerate_729": "不溢出", - "SerialNumGenerate_730": "新增弹窗", - "SerialNumGenerate_731": "生成机器人二维码", - "SerialNumGenerate_732": "选择型号", - "SerialNumGenerate_733": "选择配置", - "SerialNumGenerate_734": "选择类型", - "SerialNumGenerate_735": "选择国家", - "SerialNumGenerate_736": "请先选择国家", - "SerialNumGenerate_737": "生成序列号", - "SerialNumGenerate_738": "请先生成二维码", - "SerialNumGenerate_739": "查看二维码", - "SerialNumGenerate_740": "二维码详情", - "SerialNumGenerate_741": "机器人类型", - "SerialNumGenerate_742": "类型名称", - "SerialNumGenerate_743": "存储值", - "SerialNumGenerate_744": "机器人型号", - "SerialNumGenerate_745": "型号名称", - "SerialNumGenerate_746": "配置名称", - "SmartDeviceManagement_747": "获取智能装备列表失败", - "SmartDeviceManagement_748": "装备编辑成功", - "SmartDeviceManagement_749": "无权限", - "SmartDeviceManagement_750": "保存参数成功", - "SmartDeviceManagement_751": "授权失败", - "SmartDeviceManagement_752": "请先在列表中选中需要绑定的智能装备", - "SmartDeviceManagement_753": "确定要为选中的智能装备清除", - "SmartDeviceManagement_754": "设备码", - "SmartDeviceManagement_755": "清除人员绑定", - "SmartDeviceManagement_756": "清除场站绑定", - "SmartDeviceManagement_757": "清除组织绑定", - "SmartDeviceManagement_758": "授权", - "SmartDeviceManagement_759": "绑定装备", - "SmartDeviceManagement_760": "批量解绑(组织", - "SmartDeviceManagement_761": "绑定智能装备", - "SmartDeviceManagement_762": "已选智能装备", - "SmartDeviceManagement_763": "请选择装备", - "SmartDeviceManagement_764": "编辑智能装备信息", - "SmartDeviceManagement_765": "请填写设备名称", - "SmartDeviceManagement_766": "设备序列号", - "SmartDeviceManagement_767": "请填写设备码", - "SmartDeviceManagement_768": "请输入设备序列号", - "SmartDeviceManagement_769": "请选择在线状态", - "SmartDeviceManagement_770": "选择在线状态", - "SmartDeviceManagement_771": "设备授权", - "SmartDeviceManagement_772": "设置设备操作授权,授权到期后设备将失去对应操作权限", - "SmartDeviceManagement_773": "授权时间", - "SmartDeviceManagement_774": "请输入授权剩余时间", - "SmartDeviceManagement_775": "授权时间不能小于", - "SmartDeviceManagement_776": "保存授权", - "StationManage_777": "分区设置", - "StationManage_778": "边界绘制", - "StationManage_779": "请选择组织筛选", - "StationManage_780": "新增场站", - "StationManage_781": "场站弹窗", - "StationManage_782": "编辑场站", - "StationManage_783": "请选择所属组织", - "StationManage_784": "详细地址", - "StationManage_785": "消息推送配置", - "StationManage_786": "钉钉告警推送", - "StationManage_787": "开启", - "StationManage_788": "钉钉工单推送", - "StationManage_789": "邮件推送", - "StationManage_790": "告警弹窗推送", - "StationManage_791": "钉钉开关开启才显示Token、密钥", - "StationManage_792": "钉钉机器人", - "StationManage_793": "开启钉钉推送时必须填写", - "StationManage_794": "请输入钉钉机器人", - "StationManage_795": "钉钉加密密钥", - "StationManage_796": "开启钉钉推送时必须填写加密密钥", - "StationManage_797": "钉钉机器人加签密钥", - "StationManage_798": "分区弹窗", - "StationManage_799": "分区名称", - "StationManage_800": "分区编码", - "StationManage_801": "分区类型", - "StationManage_802": "清扫区", - "StationManage_803": "巡检区", - "StationManage_804": "保存分区", - "StationManage_805": "地图绘制弹窗", - "StationManage_806": "地图区域绘制(可自行接入高德/百度地图", - "StationManage_807": "开始绘制", - "StationManage_808": "保存边界", - "SystemMaintain_809": "错误管理", - "SystemMaintain_810": "告警模型管理", - "SystemMaintain_811": "工单模型管理", - "UserPage_814": "角色弹窗", - "UserPage_815": "用户弹窗", - "UserPage_816": "自动适应布局:隐藏角色时,状态自动占满一行", - "VideoManagement_817": "读取通道失败", - "VideoManagement_818": "无法连接视频服务", - "VideoManagement_819": "读取文件失败", - "VideoManagement_820": "请先选择完整的时间路径", - "VideoManagement_821": "大小", - "VideoManagement_822": "录像通道与回放管理 · 共", - "VideoManagement_823": "个通道", - "VideoManagement_824": "通道", - "VideoManagement_825": "选择设备通道", - "VideoManagement_826": "请先选择视频通道", - "VideoManagement_827": "请选择 年 / 月 / 日 加载录像", - "VideoManagement_828": "该日暂无录像文件", - "VideoManagement_829": "个文件", - "WorkOrderSettingsManagement_830": "获取工单模型列表失败", - "WorkOrderSettingsManagement_831": "您确定要删除这条工单模型吗", - "WorkOrderSettingsManagement_832": "条工单模型吗", - "WorkOrderSettingsManagement_833": "工单名称", - "WorkOrderSettingsManagement_835": "轻微", - "WorkOrderSettingsManagement_836": "路径/航线", - "WorkOrderSettingsManagement_837": "自动生成任务", - "WorkOrderSettingsManagement_838": "新增工单模型", - "WorkOrderSettingsManagement_839": "编辑工单模型", - "WorkOrderSettingsManagement_840": "请输入工单名称", - "WorkOrderSettingsManagement_842": "请选择设备", - "WorkOrderSettingsManagement_843": "根据设备类型显示不同的路径选择", - "WorkOrderSettingsManagement_844": "预设路径", - "WorkOrderSettingsManagement_845": "请选择预设路径", - "WorkOrderSettingsManagement_846": "无人机航线", - "WorkOrderSettingsManagement_847": "请选择无人机航线", - "SystemSetting_1265": "告警规则配置、用户角色、通知管理与系统参数设置" - }, - "video": { - "VideoPlayer_849": "前视图", - "VideoPlayer_850": "后视图", - "VideoPlayer_851": "左视图", - "VideoPlayer_852": "右视图", - "VideoPlayer_853": "视频源连接失败", - "Video_1269": "安防型", - "Video_1270": "运输型", - "Video_1271": "巡检型", - "VideoMonitorPage_1272": "中间视频监控中心", - "VideoMonitorPage_1273": "底部三栏", - "VideoMonitorPage_1274": "模拟检测框" - }, - "aiAnalysis": { - "AIAnalysis_983": "处理热斑组件", - "AIAnalysis_984": "排查异常组串", - "AIAnalysis_985": "清洗受遮挡区域", - "AIAnalysis_986": "跟踪衰减较大组件", - "AIAnalysis_987": "持续监控逆变器效率", - "AIAnalysis_988": "方阵", - "AIAnalysis_989": "智能诊断与分析中心", - "AIAnalysis_990": "刷新数据", - "AIAnalysis_991": "导出报告", - "AIAnalysis_992": "第一排:顶部统计卡片", - "AIAnalysis_993": "值 (性能比", - "AIAnalysis_994": "较昨日", - "AIAnalysis_995": "发电偏差率", - "AIAnalysis_996": "异常组串数量", - "AIAnalysis_997": "热斑疑似数量", - "AIAnalysis_998": "电站健康度评分", - "AIAnalysis_999": "预测发电量", - "AIAnalysis_1000": "第二排:热成像分析 和 组串异常定位", - "AIAnalysis_1001": "无人机热成像巡检分析", - "AIAnalysis_1002": "模拟热斑点", - "AIAnalysis_1003": "高危", - "AIAnalysis_1004": "注意", - "AIAnalysis_1005": "热斑疑似点", - "AIAnalysis_1006": "高温区域", - "AIAnalysis_1007": "温度分布", - "AIAnalysis_1008": "组串实时状态定位图", - "AIAnalysis_1009": "总组串", - "AIAnalysis_1012": "组串", - "AIAnalysis_1013": "严重异常 (热斑", - "AIAnalysis_1014": "严重异常 (断路", - "AIAnalysis_1015": "异常 (功率偏差", - "AIAnalysis_1016": "异常 (遮挡", - "AIAnalysis_1017": "轻微异常", - "AIAnalysis_1019": "运行正常", - "AIAnalysis_1020": "功率异常", - "AIAnalysis_1021": "严重故障", - "AIAnalysis_1022": "设备离线", - "AIAnalysis_1023": "异常类型分布", - "AIAnalysis_1024": "离线组串", - "AIAnalysis_1025": "查看详细定位表", - "AIAnalysis_1026": "第三排:三个主要分析区域", - "AIAnalysis_1027": "组件衰减趋势分析", - "AIAnalysis_1028": "衰减率趋势", - "AIAnalysis_1029": "当前均值", - "AIAnalysis_1030": "平均衰减率", - "AIAnalysis_1031": "最佳组件", - "AIAnalysis_1032": "最差组件", - "AIAnalysis_1033": "衰减预警", - "AIAnalysis_1034": "块组件衰减超标", - "AIAnalysis_1035": "建议排查", - "AIAnalysis_1036": "实时发电表现深度分析", - "AIAnalysis_1037": "发电量对比分析", - "AIAnalysis_1038": "实际发电", - "AIAnalysis_1039": "预测发电", - "AIAnalysis_1040": "理论发电", - "AIAnalysis_1041": "当日实际发电", - "AIAnalysis_1042": "当日预测发电", - "AIAnalysis_1043": "实时 PR 值", - "AIAnalysis_1044": "诊断总结", - "AIAnalysis_1046": "诊断项", - "AIAnalysis_1047": "影响", - "AIAnalysis_1048": "检测到 36 处热斑疑似点", - "AIAnalysis_1049": "组串失配", - "AIAnalysis_1050": "串组串存在异常", - "AIAnalysis_1051": "遮挡风险", - "AIAnalysis_1052": "局部遮挡影响 2% 发电量", - "AIAnalysis_1053": "组件衰减", - "AIAnalysis_1054": "逆变器异常", - "AIAnalysis_1055": "所有逆变器运行正常", - "AIAnalysis_1056": "建议与处置", - "AIAnalysis_1057": "建议措施", - "AIAnalysis_1058": "收益", - "AIAnalysis_1059": "跟踪衰减组件", - "AIAnalysis_1060": "监控逆变器效率", - "AIAnalysis_1061": "底部:数据来源", - "AIAnalysis_1062": "全栈数据融合来源", - "AIAnalysis_1063": "无人机载荷热成像", - "AIAnalysis_1064": "同步中", - "AIAnalysis_1065": "实时遥测数据", - "AIAnalysis_1066": "云端气象分析站", - "AIAnalysis_1067": "电站运维资产库", - "AIAnalysis_1068": "数据点" - }, - "clean": { - "CleanOptimization_1069": "计划", - "CleanOptimization_1070": "区块", - "CleanOptimization_1071": "待创建", - "CleanOptimization_1072": "王工", - "CleanOptimization_1073": "赵工", - "CleanOptimization_1074": "清洗前发电量", - "CleanOptimization_1075": "清洗后发电量", - "CleanOptimization_1076": "灰尘积累", - "CleanOptimization_1077": "鸟粪遮挡", - "CleanOptimization_1078": "沙尘沉积", - "CleanOptimization_1079": "污染指数", - "CleanOptimization_1080": "中等", - "CleanOptimization_1081": "建议清洗区块数", - "CleanOptimization_1082": "占比", - "CleanOptimization_1083": "预计发电提升", - "CleanOptimization_1084": "占当前日发电量", - "CleanOptimization_1085": "预计收益提升", - "CleanOptimization_1086": "按电价", - "CleanOptimization_1087": "元/kWh 计算", - "CleanOptimization_1088": "上次清洗时间", - "CleanOptimization_1089": "距今 12 天", - "CleanOptimization_1090": "清洗成本预估", - "CleanOptimization_1091": "预计单次清洗总成本", - "CleanOptimization_1092": "标题与操作栏", - "CleanOptimization_1093": "清洗优化管理", - "CleanOptimization_1094": "最近 7 天", - "CleanOptimization_1095": "最近 30 天", - "CleanOptimization_1096": "左侧:分析图表", - "CleanOptimization_1097": "污染趋势分析", - "CleanOptimization_1098": "阈值", - "CleanOptimization_1099": "发电损失构成", - "CleanOptimization_1100": "近 7 天", - "CleanOptimization_1101": "总损失电量", - "CleanOptimization_1102": "清洗前后对比分析", - "CleanOptimization_1103": "近一次", - "CleanOptimization_1104": "清洗收益深度测算", - "CleanOptimization_1105": "电价 (含税", - "CleanOptimization_1106": "预计净收益", - "CleanOptimization_1107": "投资回报", - "CleanOptimization_1108": "回收周期", - "CleanOptimization_1109": "中间:地图分布与工单预览", - "CleanOptimization_1110": "电站污染分布与建议清洗区块分布图", - "CleanOptimization_1111": "污染等级", - "CleanOptimization_1112": "优先清洗", - "CleanOptimization_1113": "较高", - "CleanOptimization_1114": "较低", - "CleanOptimization_1115": "清洁", - "CleanOptimization_1116": "地图背景图与浮动标签", - "CleanOptimization_1117": "模拟区块叠加层", - "CleanOptimization_1118": "具体的污染区块标签", - "CleanOptimization_1119": "右侧悬浮控制按钮", - "CleanOptimization_1120": "清洗工单智能预览", - "CleanOptimization_1121": "查看更多", - "CleanOptimization_1122": "预计工时", - "CleanOptimization_1123": "计划时间", - "CleanOptimization_1124": "创建工单", - "CleanOptimization_1125": "右侧:决策建议与参考", - "CleanOptimization_1126": "智能清洗策略建议", - "CleanOptimization_1127": "算法模型:多因子加权综合优化模型", - "CleanOptimization_1128": "推荐计划", - "CleanOptimization_1129": "建议区块", - "CleanOptimization_1130": "预计提升", - "CleanOptimization_1131": "天气适宜度", - "CleanOptimization_1132": "清洗技术方案推荐", - "CleanOptimization_1133": "智能机器人方案", - "CleanOptimization_1134": "全自动清洗,适合大面积平整区块,效率极高", - "CleanOptimization_1135": "预计用水", - "CleanOptimization_1136": "人工精细化方案", - "CleanOptimization_1137": "灵活处理遮挡及严重污垢区域,适合复杂地形", - "CleanOptimization_1138": "天气与资源环境参考", - "CleanOptimization_1142": "风速", - "CleanOptimization_1143": "适宜", - "CleanOptimization_1144": "降水", - "CleanOptimization_1145": "水源", - "CleanOptimization_1146": "充足", - "CleanOptimization_1147": "清洗作业影响综合评估", - "CleanOptimization_1148": "预计用水量", - "CleanOptimization_1149": "节水 30% (机器人", - "CleanOptimization_1150": "预计总耗时", - "CleanOptimization_1151": "小时", - "CleanOptimization_1152": "并行作业 2 组", - "CleanOptimization_1153": "碳减排贡献", - "CleanOptimization_1154": "减排量", - "CleanOptimization_1155": "作业风险评估", - "CleanOptimization_1156": "安全可控", - "CleanOptimization_1157": "以上决策建议基于历史数据、实时气象及发电损失模型综合计算。实际执行效果可能受天气骤变、现场突发障碍等不确定因素影响" - }, - "home": { - "Home_1158": "江苏省", - "Home_1159": "南通市", - "Home_1160": "崇川区", - "Home_1161": "西南风", - "Home_1162": "升压站安防巡检任务", - "Home_1163": "草稿", - "Home_1164": "区清洗任务", - "Home_1166": "区巡检任务", - "Home_1167": "已派发", - "Home_1168": "分析", - "Home_1169": "发现逆变器温度与组串电流存在轻微异常,建议优先复核A区设备", - "Home_1170": "发现2处组件存在异常热斑", - "Home_1171": "散热检修建议:建议检查INV-A02散热风扇、风道和运行负载,持续高温时转维修工单", - "Home_1172": "个组串存在发电异常", - "Home_1173": "阵列热斑处置建议:建议现场复核PV-A05-018至PV-A05-020组件接线和旁路二极管状态,必要时更换异常组件", - "Home_1174": "整体发电偏差", - "Home_1176": "待开始", - "Home_1177": "主键ID(新增为空", - "Home_1178": "工单编号(后端生成", - "Home_1179": "光伏组件清洗工单", - "Home_1183": "电站", - "Home_1184": "设备类型:电站", - "Home_1185": "根据电站清洁度建议进行组件清洗,提升发电效率", - "Home_1186": "系统自动生成清洗建议,预计提升发电量", - "Home_1187": "清洗设备、水枪、抹布", - "Home_1188": "影响发电量(%) 数字", - "Home_1190": "工单生成失败", - "Home_1191": "工单生成接口调用失败", - "Home_1192": "加载失败", - "Home_1193": "必须加这个,message才能正常显示", - "Home_1198": "主体布局", - "Home_1199": "左侧图表", - "Home_1200": "今日发电功率趋势", - "Home_1201": "效率", - "Home_1203": "总任务", - "Home_1204": "中间", - "Home_1205": "外部系统", - "Home_1206": "巡检类型", - "Home_1207": "巡检时间", - "Home_1208": "巡检人员", - "Home_1210": "热点检测", - "Home_1211": "发现", - "Home_1212": "处组件存在异常热斑", - "Home_1213": "组串异常", - "Home_1214": "发电偏差分析", - "Home_1215": "告警内容", - "Home_1216": "发生时间", - "Home_1217": "组件阵列", - "Home_1218": "环境传感器", - "Home_1219": "详细", - "Home_1221": "生成工单按钮(已完善", - "Home_1222": "清洁度", - "Home_1223": "建议清洗时间", - "Home_1224": "天内", - "Home_1225": "预计提升发电量", - "Home_1226": "预计提升电量" - }, - "login": { - "Login_1228": "左侧:表单区域", - "Login_1230": "右侧:梯形斜切", - "Login_1231": "图片铺满" - }, - "profile": { - "Profile_1232": "关键:给 Row 添加", - "Profile_1233": "让两列自动等高", - "Profile_1234": "左侧信息卡片", - "Profile_1236": "自动填充高度", - "Profile_1237": "右侧表单卡片", - "Profile_1238": "基本资料", - "Profile_1239": "修改密码" - }, - "roles": { - "Roles_1260": "统一卡片容器(和菜单管理一致", - "Roles_1261": "顶部操作栏(和菜单管理统一", - "Roles_1262": "角色卡片列表", - "Roles_1263": "分页组件(正确触发", - "Roles_1264": "新增/编辑弹窗" - }, - "users": { - "Users_1266": "回填多选角色", - "Users_1267": "直接提交数组", - "Users_1268": "多角色选择", - "userSlice_1321": "保存用户信息", - "userSlice_1322": "刷新自动恢复" - }, - "workOrder": { - "WorkOrder_1275": "批量选中", - "WorkOrder_1276": "今日新增工单", - "WorkOrder_1277": "待处理总数", - "WorkOrder_1278": "待处理高优先级", - "WorkOrder_1280": "本月已完成", - "WorkOrder_1281": "按时完成率", - "WorkOrder_1282": "平均处理时长", - "WorkOrder_1283": "今日新增对比昨日", - "WorkOrder_1284": "平均时长对比上周", - "WorkOrder_1285": "普通用户", - "WorkOrder_1286": "选中人员", - "WorkOrder_1287": "如需真实昨日对比,单独请求昨日统计接口", - "WorkOrder_1288": "已处理完成", - "WorkOrder_1289": "数字转字符串", - "WorkOrder_1290": "清空选中", - "WorkOrder_1291": "新增加载7天告警", - "WorkOrder_1292": "顶部标题和页签", - "WorkOrder_1293": "左侧:列表", - "WorkOrder_1294": "底部图表", - "WorkOrder_1295": "日期切换栏", - "WorkOrder_1296": "横向时间表头", - "WorkOrder_1297": "单一行时间画布,不再区分人员", - "WorkOrder_1298": "更多工单弹窗:弹窗内只展示当前选中日期工单", - "WorkOrder_1299": "右侧:详情", - "WorkOrder_1300": "新增:图片", - "WorkOrder_1301": "视频附件预览区域", - "WorkOrder_1302": "图片预览组,支持点击放大", - "WorkOrder_1303": "底层灰色轨道", - "WorkOrder_1304": "进度填充", - "WorkOrder_1305": "修改工单弹窗", - "WorkOrder_1306": "派单弹窗:选择人员", - "WorkOrder_1307": "工单", - "WorkOrder_1308": "执行工单弹窗", - "WorkOrder_1309": "未知设备", - "WorkOrder_1310": "机器人设备分组", - "WorkOrder_1311": "无人机分组", - "WorkOrder_1312": "请选择执行开始时间", - "WorkOrder_1313": "完成工单弹窗", - "WorkOrder_1314": "已修复", - "WorkOrder_1315": "无需处理", - "WorkOrder_1316": "问题已闭环", - "WorkOrder_1317": "近7天全部告警弹窗" - } - }, - "enCjk": { - "page": { - "api_1": "只需要加这一行", - "request_10": "使用全局", - "AgoraRtc_11": "先清理上一次", - "AgoraRtc_12": "视频连接 Failed", - "Draggable_269": "仅标题栏可拖拽,内容区不触发拖拽", - "Draggable_270": "整体8px外边框", - "Draggable_271": "拖拽标题栏", - "Draggable_272": "Close Button", - "Draggable_273": "Close Button ,阻止拖拽冒泡", - "Draggable_274": "传入的视频内容", - "Empty_275": "自定义文案", - "Empty_276": "组件 Altitude", - "Map_278": "规划航线", - "Map_279": "Complete 点实时轨迹", - "Map_280": "标记点实体", - "Map_281": "跟随小车的实例", - "Map_282": "直接存 Cartesian3(性能最高", - "Map_283": "强制 Refresh", - "Map_284": "垂直俯视", - "Map_285": "加这个(只在需要时渲染", - "Map_286": "飞机", - "Map_288": "割草", - "Map_290": "默认车", - "recharts_291": "访问量", - "recharts_292": "浏览量", - "recharts_293": "成交量", - "useWebRTCStream_848": "必须加", - "WeatherSunny_854": "每根", - "circQueue_855": "队列容量 (最多存储项目数", - "circQueue_856": "队列存储区,使用数组存任意对象", - "circQueue_857": "队头索引", - "circQueue_858": "队尾索引", - "circQueue_859": "队满标志", - "circQueue_860": "是否 Enable 深拷贝 (默认 Enable", - "circQueue_861": "队列最大内存限制 (单位:字节", - "circQueue_862": "当前已使用内存大小 (单位:字节", - "circQueue_863": "判断队列是否为空", - "circQueue_864": "判断队列是否已满", - "circQueue_865": "估算对象大小 (以 JSON 字符串的 UTF-8 编码长度作为近似值", - "circQueue_866": "中用于计算字节长度", - "circQueue_867": "若对象不可序列化, Back 0 (避免出错", - "circQueue_868": "深拷贝对象 (基于 JSON 的方式,仅支持可序列化对象", - "circQueue_869": "入队 Actions :将对象放入队尾", - "circQueue_870": "估算项目内存大小", - "circQueue_871": "若队满或超过内存限制则入队 Failed", - "circQueue_872": "深拷贝入队数据 (避免外部 Modify 影响队列", - "circQueue_873": "存入队尾", - "circQueue_874": "环形增长", - "circQueue_875": "增加当前 Memory", - "circQueue_876": "若尾追头,表示队满", - "circQueue_877": "出队 Actions :从队头取出一个对象", - "circQueue_878": "Back 深拷贝", - "circQueue_879": "队空 Back", - "circQueue_880": "读取队头项目", - "circQueue_881": "更新 Memory", - "circQueue_882": "出队必然队不满", - "circQueue_883": "Back 深拷贝,保护队列内部数据", - "circQueue_884": "丢弃数据:从队尾向前丢弃 len 项 (反向移动", - "circQueue_885": "队空则不能 Resume 丢弃", - "circQueue_886": "定位最后一项", - "circQueue_887": "减去内存大小", - "circQueue_888": "回退", - "circQueue_889": "获取当前队列中元素个数", - "circQueue_890": "循环直到 Success 入队或超时", - "circQueue_891": "超时退出", - "circQueue_892": "异步轮询", - "circQueue_893": "自旋加 sleep Suspend", - "circQueue_894": "Success 取出则 Back", - "circQueue_895": "序列化接口,用于", - "circQueue_896": "复制每个元素", - "circQueue_897": "移动到下一个元素", - "tracePoint_898": "防止值重复", - "tracePoint_899": "成员变量(私有", - "tracePoint_900": "循环队列", - "tracePoint_901": "用于存放等 Pending 的点", - "tracePoint_902": "轨迹点数组", - "tracePoint_903": "存放 Completed 点", - "tracePoint_904": "当前点", - "tracePoint_905": "Complete 点索引", - "tracePoint_906": "指向当前点之前的最后一个要插入的 Complete 点的 Location", - "tracePoint_907": "用于防止多线程同时更新", - "tracePoint_908": "模式管理器", - "tracePoint_909": "构造函数", - "tracePoint_910": "限制", - "tracePoint_911": "存放轨迹", - "tracePoint_912": "Completed 点", - "tracePoint_913": "默认为定位模式", - "tracePoint_914": "复位", - "tracePoint_915": "Reset 轨迹点", - "tracePoint_916": "清空队列", - "tracePoint_917": "清空轨迹点数组", - "tracePoint_918": "Reset Complete 点索引", - "tracePoint_919": "Reset 为定位模式", - "tracePoint_920": "释放锁", - "tracePoint_921": "获取轨迹", - "tracePoint_922": "尝试锁定", - "tracePoint_923": "防止多线程同时更新", - "tracePoint_924": "深拷贝", - "tracePoint_925": "避免外部 Modify 导致内部出错", - "tracePoint_926": "解锁", - "tracePoint_927": "锁定中", - "tracePoint_928": "Back 空", - "tracePoint_929": "更新当前点", - "tracePoint_930": "只保留 Complete 点部分", - "tracePoint_931": "再插入新的当前点", - "tracePoint_932": "触发事件", - "tracePoint_933": "驱动外部更新", - "tracePoint_934": "支持自动扩展数组", - "tracePoint_935": "如果轨迹数组正在 Actions", - "tracePoint_936": "先存放至队列中", - "tracePoint_937": "添加 Complete 点", - "tracePoint_938": "先 Handle 队列中积压的点", - "tracePoint_939": "如果队列不为空", - "tracePoint_940": "取出队列中的点", - "tracePoint_941": "错误 Handle", - "tracePoint_942": "可以输出到", - "tracePoint_943": "文件", - "tracePoint_944": "打印", - "tracePoint_945": "无论 Success Failed 都解锁", - "tracePoint_946": "避免无法使用", - "tracePoint_947": "若当前点存在,说明当前数组末尾已插入一个当前点", - "tracePoint_948": "截断轨迹数组到当前点,将新 Complete 点插入在当前点之前", - "tracePoint_949": "截断避免多添加了无效点", - "tracePoint_950": "然后再当前点之前插入 Complete 点", - "tracePoint_951": "首次添加轨迹点需要先尾插", - "tracePoint_952": "更新当前点索引", - "tracePoint_953": "释放锁资源", - "tryLock_954": "原子尝试锁", - "tryLock_955": "非阻塞且线程安全", - "tryLock_956": "可用于异步多线程", - "utils_957": "最优", - "utils_958": "苏州", - "utils_959": "天气接口调用 Failed", - "utils_960": "兜底", - "utils_961": "暴雨", - "utils_962": "只取有标题", - "utils_963": "有字段的列", - "utils_964": "转义CSV引号", - "utils_965": "错误 红", - "utils_966": "警告 橙", - "utils_967": "信息 蓝", - "Agri_968": "输入预览", - "Agri_969": "结果图/视频", - "Agri_970": "结果", - "Agri_971": "左侧:结果图", - "Agri_972": "热点标记", - "Agri_973": "请 Upload 热成像文件", - "Agri_974": "热点标记点", - "Agri_975": "右侧:点位详情", - "Agri_976": "总容器:垂直布局,占满卡片内容区", - "Agri_977": "上半部分:点位详情", - "Agri_978": "分割线", - "Agri_979": "下半部分:热点/面板列表", - "Agri_980": "左侧:算法列表", - "Agri_981": "中间:工作区", - "Agri_982": "右侧:历史记录", - "RealTimeMonitor_1240": "左侧大栏", - "RealTimeMonitor_1241": "电站拓扑图", - "RealTimeMonitor_1242": "设备 Real-time Monitor 列表", - "RealTimeMonitor_1243": "右侧小栏", - "RealTimeMonitor_1244": "个统计卡片", - "RealTimeMonitor_1245": "实时功率曲线", - "RealTimeMonitor_1246": "Inverter 功率对比", - "RealTimeMonitor_1247": "热力图与 Online Rate", - "RealTimeMonitor_1248": "简易地图点位", - "index_1318": "加这个", - "stationSlice_1319": "当前选中场站(完整对象", - "stationSlice_1320": "方便直接用", - "index_1323": "多租户 Login 时传入", - "index_1324": "过期 Time (秒", - "index_1327": "Button Permission", - "index_1328": "不在 Menu 中展示" - }, - "devices": { - "device_2": "Upload 文件必须用 data,不能用", - "device_3": "Upload 文件必加", - "device_4": "修正为正确的添加接口", - "DeviceControl_47": "连接中 Status", - "DeviceControl_48": "权限请求的弹窗", - "DeviceControl_49": "是否有 Control 权限", - "DeviceControl_50": "连接 Failed 重新连接", - "DeviceControl_51": "这里的return会终止整个handleMessage函数的 Execute", - "DeviceControl_52": "清空设备信息", - "DeviceControl_53": "秒后台保活", - "DeviceControl_54": "关键:清空上一个设备的轨迹", - "DeviceControl_55": "取list数组", - "DeviceControl_56": "加上这句", - "DeviceControl_57": "是否存在", - "DeviceControl_58": "连接是否打开", - "DeviceControl_59": "消息 Type", - "DeviceControl_60": "原始手柄数据", - "DeviceControl_61": "认证令牌", - "DeviceControl_62": "Mower 视角切换", - "DeviceControl_63": "Inspection Robot :3路视频", - "DeviceControl_64": "紧凑横向,不滚动, All 可见", - "DeviceControl_65": "主画面:小一点", - "DeviceControl_66": "Mower 单路", - "DeviceControl_67": "修复: Mower 4路视频", - "DeviceControl_68": "绝不压扁,保持", - "DeviceControl_69": "Other 设备", - "DeviceControl_71": "左侧设备列表", - "DeviceControl_72": "任务态势", - "DeviceControl_73": "区域", - "DeviceControl_74": "中间 Actions 区", - "DeviceControl_75": "UAV Status 概览", - "DeviceControl_76": "当前 Location", - "DeviceControl_77": "当前模式", - "DeviceControl_78": "UAV 待命", - "DeviceControl_79": "割草待命", - "DeviceControl_80": "待命", - "DeviceControl_81": "Battery /航向", - "DeviceControl_82": "Enable 遥控", - "DeviceControl_83": "遥控与态势", - "DeviceControl_85": "把视频嵌入到这里", - "DeviceControl_86": "视频区域 - 独立大窗口", - "DeviceControl_87": "Status 卡片行", - "DeviceControl_88": "链路", - "DeviceControl_89": "遥控接管", - "DeviceControl_90": "规划态势", - "DeviceControl_91": "Control 区:左轮", - "DeviceControl_92": "右轮", - "DeviceControl_93": "紧凑布局", - "DeviceControl_94": "左轮 Speed 面板 - Zoom Out", - "DeviceControl_95": "顶部标题", - "DeviceControl_96": "仪表盘(居中 Zoom In", - "DeviceControl_98": "电流 一体化卡片(核心视觉", - "DeviceControl_99": "电流", - "DeviceControl_100": "手柄 - Zoom Out 、居中", - "DeviceControl_101": "右轮 Speed 面板 - Zoom Out", - "DeviceControl_103": "仪表盘(居中优化", - "DeviceControl_104": "核心数据卡片: Speed", - "DeviceControl_105": "目标值(干净对称", - "DeviceControl_106": "实时 Speed", - "DeviceControl_107": "Speed 输出", - "DeviceControl_108": "规划", - "DeviceControl_109": "Status 标签(和你原版完全一样", - "DeviceControl_110": "下发任务", - "DeviceControl_113": "UAV 专用任务 Control Button", - "DeviceControl_114": "动态 Button : In Progress", - "DeviceControl_115": "Suspend / Suspended", - "DeviceControl_117": "Pause / Resume", - "DeviceControl_118": "动态: Return / Cancel Return", - "DeviceControl_119": "右侧视频面板(遥控页隐藏)- 保持不变", - "DeviceControl_120": "Device Type : Robot", - "DeviceControl_121": "显示 4 路视频", - "DeviceControl_122": "Device Type : Mower", - "DeviceControl_123": "显示 1 路视频", - "DeviceControl_124": "Device Type : UAV", - "DeviceControl_125": "遍历显示视频流", - "DeviceControl_126": "Delete 原来的悬浮视频窗口代码", - "DeviceControl_127": "旋转加载圈", - "DeviceControl_128": "飞行参数", - "DeviceControl_129": "Time 选择", - "DeviceControl_130": "重复任务", - "deviceController_131": "Save 当前设备", - "deviceController_132": "后台保活定时器", - "deviceController_133": "Other 端正在 Control", - "deviceController_134": "权限校验 Failed", - "deviceController_135": "无 Control 权限", - "deviceController_136": "请求 Control Medium", - "deviceController_137": "Control 请求超时", - "deviceController_138": "Control Failed", - "deviceController_139": "Control Success", - "deviceController_140": "权限请求", - "deviceController_141": "请求 Control 设备", - "deviceController_142": "车辆", - "deviceController_143": "围栏", - "deviceController_144": "坑洞", - "deviceController_145": "草丛", - "deviceController_146": "检测到", - "deviceController_147": "Unknown 物", - "DeviceOverviewPage_149": "默认都算", - "DeviceOverviewPage_150": "只有切设备才变", - "DeviceOverviewPage_151": "视频不闪", - "DeviceOverviewPage_152": "Working Status 数量", - "DeviceOverviewPage_153": "左侧文字区域", - "DeviceOverviewPage_154": "底部环比/ Remark", - "DeviceOverviewPage_155": "右侧圆形图标区域", - "DeviceOverviewPage_156": "关键:videoDevice 绝不随MQTT更新,视频永不闪烁", - "DeviceOverviewPage_157": "Robot Edit 别名弹窗", - "DeviceOverviewPage_158": "设备参数 View 与 Modify 弹窗(通用组件", - "DeviceParamModal_159": "加载时表单区域简单遮罩 Info (打开弹窗拉取参数时的loading反馈", - "DeviceStatusPage_160": "持久化 UAV 数据", - "DeviceStatusPage_161": "持久化机场数据", - "DeviceStatusPage_162": "Complete 点", - "DeviceStatusPage_163": "Start Time 戳", - "DeviceStatusPage_164": "End Time 戳", - "DeviceStatusPage_165": "标记的点", - "DeviceStatusPage_166": "是否 Complete 路径规划", - "DeviceStatusPage_167": "Save 的路径数据", - "DeviceStatusPage_168": "Save 模态框可见性", - "DeviceStatusPage_169": "地块 Name", - "DeviceStatusPage_170": "是否正在 Save", - "DeviceStatusPage_171": "地图", - "DeviceStatusPage_172": "拿到路由上的", - "DeviceStatusPage_173": "持久化数据最后覆盖,确保优先显示", - "DeviceStatusPage_174": "存储 Back 的路径结果", - "DeviceStatusPage_175": "页面顶部 Button 区域", - "DeviceStatusPage_176": "UAV 专用布局", - "DeviceStatusPage_177": "左侧:机场视频", - "DeviceStatusPage_178": "UAV 场视频", - "DeviceStatusPage_179": "机场 Status", - "DeviceStatusPage_180": "右侧: UAV 视频", - "DeviceStatusPage_181": "UAV Status", - "DeviceStatusPage_182": "UAV 视频", - "DeviceStatusPage_183": "视频层: Stop 时不渲染 / 未 Play 时为空,不影响 Status 面板", - "DeviceStatusPage_184": "视频未加载 / Stop Play 的占位", - "DeviceStatusPage_185": "单视频(非全景)模式 Status 叠加层:始终渲染,和视频层解耦", - "DeviceStatusPage_186": "右边 - 占1格,上部地图,下部 Remote Control", - "DeviceStatusPage_187": "Remote Control 面板", - "DeviceStatusPage_188": "Save 路径模态框", - "DraggablePanel_189": "拖拽手柄", - "DraggablePanel_190": "子内容", - "DroneVideoPlayer_191": "默认选择室外", - "DroneVideoPlayer_192": "默认选择广角", - "DroneVideoPlayer_193": "目前先默认用第一个 Camera", - "DroneVideoPlayer_194": "Reset 另一边的加载 Status", - "DroneVideoPlayer_195": "确保在双视频模式下有最小宽度", - "DroneVideoPlayer_196": "视频 Control Button", - "DroneVideoPlayer_197": "Status 详情叠加层 - 左上角", - "DroneVideoPlayer_198": "底部信息叠加 - 显示经 Latitude", - "mowerAllView_199": "三列之间间距", - "mowerAllView_200": "左列:左视", - "mowerAllView_201": "左视", - "mowerAllView_202": "中列:上-前视 下-后视", - "mowerAllView_203": "前视", - "mowerAllView_204": "后视", - "mowerAllView_205": "右视", - "RobotTaskPage_206": "是否 Execute Task", - "RobotTaskPage_207": "正在 Execute 的任务", - "RobotTaskPage_208": "Control 视频组件显示", - "RobotTaskPage_212": "Robot 设备", - "RobotTaskPage_213": "任务 Complete Close 视频", - "RobotTaskPage_214": "清空地图轨迹", - "RobotTaskPage_215": "设置当前任务", - "RobotTaskPage_216": "弓子 2 回子", - "RobotTaskPage_217": "连接 Success 后自动打开视频", - "RobotTaskPage_218": "加宽一点", - "RobotTaskPage_219": "原始 Status 值", - "RobotTaskPage_220": "子元素收缩兜底,超长时允许压缩换行", - "RobotTaskPage_221": "开启自动换行,小屏 Button 自动折行", - "RobotTaskPage_222": "优化", - "RobotTaskPage_223": "Robot Status 悬浮面板 - 绝对定位左上角", - "RobotTaskPage_224": "避开左侧图例面板,防止重叠", - "RobotTaskPage_225": "限制最大宽度,不会无限拉长", - "RobotTaskPage_226": "视频开关", - "RobotTaskPage_227": "Robot Task 模块,带Tab切换", - "RobotTaskPage_229": "Delete Button", - "RobotTaskPage_230": "Execute Button", - "RobotTaskPage_231": "传递 routeList 给弹窗", - "RobotTaskPage_232": "Execute Task 弹窗", - "RobotTaskPage_237": "周选择", - "RobotTaskPage_238": "月选择", - "RobotTaskPage_239": "按天:选择 Date", - "WayLinePage_242": "航线列表", - "WayLinePage_243": "航线列表默认选中第一个", - "WayLinePage_244": "使用航线列表 UAV", - "WayLinePage_245": "地图卡片", - "WayLinePage_246": "独立筛选 - 设备任务列表", - "WayLinePage_247": "Resume 任务", - "WayLinePage_248": "底部内容区", - "WayLinePage_249": "航线列表独立 UAV 筛选", - "WayLinePage_250": "Execute Button 改为图标", - "WayLinePage_251": "Task Name :自动换行", - "WayLinePage_252": "Time :自动换行", - "WayLinePage_253": "Create Task 弹窗", - "WayLinePage_254": "重复任务配置", - "WayLinePage_255": "对象绑定", - "WayLinePage_256": "每周", - "WayLinePage_257": "按月 Date", - "WayLinePage_258": "按月星期", - "WayLinePage_260": "Execute Route 设置 Return Altitude", - "XboxController_261": "只有这里才发", - "XboxController_262": "空依赖", - "XboxController_263": "强制触发一次", - "XboxController_264": "页面切换依赖", - "XboxController_265": "未连接设备", - "XboxController_266": "Other Web 端已连接", - "XboxController_267": "Control Medium", - "XboxController_268": "点击获取 Control 权限" - }, - "report": { - "reportDownloader_5": "适配割草(植被 Altitude )、 Clean (灰损率)的不同字段", - "reportDownloader_6": "核心指标", - "reportDownloader_7": "最佳作业窗口", - "reportDownloader_8": "任务列表", - "reportDownloader_9": "算法 Execute 流程", - "ReportCenter_1249": "王 O&M", - "ReportCenter_1250": "页面头部标签", - "ReportCenter_1251": "左侧主内容区", - "ReportCenter_1252": "月度综合经营分析", - "ReportCenter_1253": "第二排:三个图表", - "ReportCenter_1254": "订阅与分发", - "ReportCenter_1255": "陈经理", - "ReportCenter_1256": "右侧边栏", - "ReportCenter_1257": "报表 Directory / 快捷 Download", - "ReportCenter_1258": "模板中心", - "ReportCenter_1259": "报表生成记录" - }, - "alerts": { - "AlarmHistory_14": "Time 范围", - "AlarmHistory_15": "右侧详情抽屉", - "AlarmHistory_16": "通知订阅模块", - "AlarmOverview_17": "Refresh 列表", - "AlarmOverview_18": "Refresh 统计", - "AlarmOverview_25": "修复:等级是字符串,不是数字", - "AlarmOverview_26": "统计卡片", - "AlarmOverview_27": "只清除首尾空格", - "AlarmOverview_28": "Add : Refresh 图表全量告警", - "AlarmOverview_29": "表格", - "AlarmOverview_30": "三个图表", - "AlarmOverview_31": "告警详情抽屉", - "AlarmOverview_32": "告警头部", - "AlarmOverview_33": "告警基础信息", - "AlarmOverview_34": "告警 Description", - "AlarmOverview_35": "根因分析", - "AlarmOverview_36": "推荐 Handle 措施", - "AlarmOverview_37": "Handle Actions", - "AlarmOverview_38": "底部 Button", - "AlarmOverview_39": "Modify 告警弹窗", - "AlarmOverview_40": "Add : Generate Order 弹窗", - "AlarmRealtime_41": "告警详情弹窗", - "AlarmSubscription_42": "短信", - "AlarmSubscription_43": "邮件", - "AlarmSubscription_44": "推送", - "AlarmSubscription_45": "Add / Edit 弹窗" - }, - "systemSetting": { - "AlarmSettingsManagement_294": "Error Code 下拉数据源", - "AlarmSettingsManagement_295": "工单模型下拉数据源", - "AlarmSettingsManagement_296": "获取告警模型列表 Failed", - "AlarmSettingsManagement_297": "Confirm Delete", - "AlarmSettingsManagement_298": "您 OK 要 Delete 这条告警模型吗", - "AlarmSettingsManagement_299": "请先勾选要 Delete 的数据", - "AlarmSettingsManagement_300": "Batch delete Confirm", - "AlarmSettingsManagement_301": "您 OK 要 Delete 选中的", - "AlarmSettingsManagement_302": "条告警模型吗", - "AlarmSettingsManagement_303": "Delete 后不可 Resume", - "AlarmSettingsManagement_304": "批量 Deleted", - "AlarmSettingsManagement_305": "批量 Delete failed", - "AlarmSettingsManagement_306": "更新 Success", - "AlarmSettingsManagement_309": "关联工单模型", - "AlarmSettingsManagement_310": "自动 Generate Order", - "AlarmSettingsManagement_311": "Add 告警模型", - "AlarmSettingsManagement_313": "Edit 告警模型", - "AlarmSettingsManagement_314": "Error Code (关联错误管理", - "AlarmSettingsManagement_315": "Please select Error Code", - "AlarmSettingsManagement_316": "工单模型ID(关联工单模型", - "AlarmSettingsManagement_317": "Please select 工单模型", - "AlarmSettingsManagement_319": "是否自动 Generate Order", - "AllDeviceManagement_321": "Clean Robot", - "AllDeviceManagement_324": "电表", - "AllDeviceManagement_325": "O&M Robot", - "AllDeviceManagement_326": "气象站", - "AllDeviceManagement_327": "设备编码", - "AllDeviceManagement_328": "运行", - "AllDeviceManagement_329": "Edit 设备", - "AllDeviceManagement_330": "OK 要 Delete 设备", - "AllDeviceManagement_331": "Please enter Device Name", - "BasicSettings_332": "设置已 Save", - "BasicSettings_333": "当前版本", - "BasicSettings_334": "最新版", - "BasicSettings_335": "告警通道", - "BasicSettings_336": "数据备份 Status", - "BasicSettings_337": "最近更新", - "BasicSettings_338": "超级管理员", - "BasicSettings_339": "All 权限", - "BasicSettings_340": "系统管理", - "BasicSettings_341": "O&M 工程师", - "BasicSettings_342": "工单管理", - "BasicSettings_343": "Inspection 主管", - "BasicSettings_344": "Inspection 管理", - "BasicSettings_345": "告警 Handle", - "BasicSettings_346": "数据分析师", - "BasicSettings_347": "数据分析", - "BasicSettings_348": "报表 View", - "BasicSettings_349": "接口", - "BasicSettings_350": "顶部统计卡片", - "BasicSettings_351": "左侧", - "BasicSettings_352": "基础配置", - "BasicSettings_353": "默认电站", - "BasicSettings_354": "首页默认页面", - "BasicSettings_355": "数据 Refresh 频率", - "BasicSettings_356": "分钟", - "BasicSettings_357": "地图服务", - "BasicSettings_358": "高德地图", - "BasicSettings_359": "工单自动编号", - "BasicSettings_360": "建议自动生成", - "BasicSettings_361": "移动端同步", - "BasicSettings_362": "Save 设置", - "BasicSettings_363": "Resume 默认", - "BasicSettings_364": "通知与告警策略", - "BasicSettings_365": "已 Enable", - "BasicSettings_366": "系统通知", - "BasicSettings_367": "Critical 告警立即通知", - "BasicSettings_368": "发电 Down 超过", - "BasicSettings_369": "通信中断通知", - "BasicSettings_370": "每日汇总推送", - "BasicSettings_371": "夜间免打扰", - "BasicSettings_372": "用户与权限预览", - "BasicSettings_373": "用户名", - "BasicSettings_375": "张 O&M", - "BasicSettings_376": "李工程师", - "BasicSettings_377": "王班长", - "BasicSettings_378": "赵分析师", - "BasicSettings_379": "右侧", - "BasicSettings_380": "Role 权限概览", - "BasicSettings_381": "用户", - "BasicSettings_382": "权限", - "BasicSettings_383": "Device Access Status", - "BasicSettings_384": "详情", - "BasicSettings_386": "数据保留", - "BasicSettings_387": "Login 审计", - "BasicSettings_388": "已开启", - "BasicSettings_389": "自动备份", - "BasicSettings_390": "密钥", - "BasicSettings_391": "最近备份", - "BasicSettings_392": "证书", - "BasicSettings_393": "有效期至", - "BasicSettings_394": "双因素认证", - "BasicSettings_396": "管理权限", - "BasicSettings_397": "清理缓存", - "BasicSettings_398": "重启服务", - "BasicSettings_399": "备份 Download", - "BasicSettings_400": "日志 Export", - "CameraManagement_401": "东门入口 Camera", - "CameraManagement_402": "园区东门", - "CameraManagement_403": "HD 球机", - "CameraManagement_404": "海康威视", - "CameraManagement_405": "西门入口 Camera", - "CameraManagement_406": "园区西门", - "CameraManagement_407": "HD 枪机", - "CameraManagement_408": "大华", - "CameraManagement_409": "停车场 Camera", - "CameraManagement_410": "地下停车场", - "CameraManagement_411": "办公楼大堂 Camera", - "CameraManagement_412": "办公楼1层大堂", - "CameraManagement_413": "半球摄像机", - "CameraManagement_414": "宇视", - "CameraManagement_415": "仓库监控 Camera", - "CameraManagement_416": "物料仓库", - "CameraManagement_417": "Camera Type", - "CameraManagement_418": "品牌", - "CameraManagement_419": "分辨率", - "CameraManagement_420": "云台", - "CameraManagement_421": "支持", - "CameraManagement_422": "不支持", - "CameraManagement_423": "夜视", - "CameraManagement_424": "预览", - "CameraManagement_425": "视频预览", - "CameraManagement_426": "视频预览占位", - "CameraManagement_427": "OK 要 Delete Camera", - "CameraManagement_428": "Camera 总数", - "CameraManagement_429": "Offline / Fault", - "CameraManagement_430": "Please enter Name /编码", - "CameraManagement_431": "Status 筛选", - "CameraManagement_432": "Add Camera", - "CameraManagement_433": "Edit Camera", - "CameraManagement_434": "Please enter 设备编码", - "CameraManagement_435": "Please enter IP", - "CameraManagement_436": "例如", - "CameraManagement_437": "Please select Type", - "CameraManagement_438": "全景摄像机", - "CameraManagement_439": "Please select 品牌", - "CameraManagement_440": "Please select 分辨率", - "CameraManagement_441": "安装 Location", - "CameraManagement_442": "Please enter 安装 Location", - "CameraManagement_443": "云台 Control", - "CameraManagement_444": "夜视功能", - "DeviceAccessPage_445": "替换这行", - "DeviceAccessPage_446": "录像 Status", - "DeviceAccessPage_447": "周界入侵告警", - "DeviceAccessPage_448": "湿度", - "DeviceAccessPage_449": "超温告警", - "DeviceAccessPage_450": "电压", - "DeviceAccessPage_451": "Low Battery 告警", - "DeviceAccessPage_452": "Delete 后 Refresh", - "DeviceAccessPage_454": "行为配置回显", - "DeviceAccessPage_455": "Edit 才有", - "DeviceAccessPage_457": "默认给一个", - "DeviceAccessPage_458": "阵列区监控设备", - "DeviceAccessPage_460": "Edit 设备 Success", - "DeviceAccessPage_461": "Add 设备 Success", - "DeviceAccessPage_463": "产品 Updated", - "DeviceAccessPage_464": "产品 Added", - "DeviceAccessPage_465": "改成", - "DeviceAccessPage_466": "产品", - "DeviceAccessPage_467": "模型", - "DeviceAccessPage_468": "端口", - "DeviceAccessPage_469": "Account", - "DeviceAccessPage_470": "模型 Name", - "DeviceAccessPage_471": "连接协议", - "DeviceAccessPage_472": "属性列表", - "DeviceAccessPage_473": "无属性", - "DeviceAccessPage_474": "指令列表", - "DeviceAccessPage_475": "无指令", - "DeviceAccessPage_476": "OK 要 Delete 该物模型吗", - "DeviceAccessPage_477": "产品管理", - "DeviceAccessPage_478": "物模型管理", - "DeviceAccessPage_479": "Add 设备", - "DeviceAccessPage_480": "产品编码", - "DeviceAccessPage_481": "Please enter 编码", - "DeviceAccessPage_482": "产品 Name", - "DeviceAccessPage_483": "Please enter Name", - "DeviceAccessPage_484": "生产厂家", - "DeviceAccessPage_485": "Please enter 厂家", - "DeviceAccessPage_486": "协议编码", - "DeviceAccessPage_487": "Please select 协议", - "DeviceAccessPage_488": "传输方式", - "DeviceAccessPage_489": "禁用", - "DeviceAccessPage_490": "Add 产品", - "DeviceAccessPage_491": "协议", - "DeviceAccessPage_492": "上报", - "DeviceAccessPage_493": "订阅", - "DeviceAccessPage_494": "字段映射", - "DeviceAccessPage_495": "OK 要 Delete 该产品吗", - "DeviceAccessPage_496": "Add 物模型", - "DeviceAccessPage_497": "设备配置", - "DeviceAccessPage_498": "产品配置", - "DeviceAccessPage_499": "物模型配置", - "DeviceAccessPage_500": "Please enter 设备", - "DeviceAccessPage_501": "关联产品", - "DeviceAccessPage_502": "Please select 关联产品", - "DeviceAccessPage_503": "配置", - "DeviceAccessPage_504": "地址", - "DeviceAccessPage_505": "默认", - "DeviceAccessPage_506": "Login Account", - "DeviceAccessPage_507": "设备 Login Account", - "DeviceAccessPage_508": "Login Password", - "DeviceAccessPage_509": "设备 Login Password", - "DeviceAccessPage_510": "服务地址", - "DeviceAccessPage_511": "客户端唯一标识", - "DeviceAccessPage_512": "Account (选填", - "DeviceAccessPage_514": "Password (选填", - "DeviceAccessPage_515": "告警阈值配置", - "DeviceAccessPage_516": "上限", - "DeviceAccessPage_517": "上限值", - "DeviceAccessPage_518": "下限", - "DeviceAccessPage_519": "下限值", - "DeviceAccessPage_520": "当前物模型 Not set 告警属性,无法配置阈值", - "DeviceAccessPage_521": "产品编号", - "DeviceAccessPage_522": "智能网关", - "DeviceAccessPage_523": "厂商", - "DeviceAccessPage_524": "迈步科技", - "DeviceAccessPage_525": "传输 Type", - "DeviceAccessPage_526": "绑定物模型", - "DeviceAccessPage_527": "Please select 要绑定的物模型", - "DeviceAccessPage_528": "协议自动配置项", - "DeviceAccessPage_529": "属性配置(你原来的", - "DeviceAccessPage_530": "物模型属性配置", - "DeviceAccessPage_533": "Please select 物模型以显示属性", - "DeviceAccessPage_534": "行为(指令)配置 Add", - "DeviceAccessPage_535": "物模型行为(指令)配置", - "DeviceAccessPage_536": "默认值", - "DeviceAccessPage_537": "该物模型暂无指令", - "DeviceAccessPage_538": "属性", - "DeviceAccessPage_539": "编码", - "DeviceAccessPage_540": "单位", - "DeviceAccessPage_541": "指令", - "DeviceAccessPage_542": "指令编码", - "DeviceAccessPage_543": "指令 Name", - "DeviceAccessPage_544": "参数", - "DeviceAccessPage_545": "属性弹窗", - "DeviceAccessPage_546": "配置属性", - "DeviceAccessPage_547": "属性编码", - "DeviceAccessPage_548": "属性 Name", - "DeviceAccessPage_549": "如 Temperature", - "DeviceAccessPage_550": "告警参数", - "DeviceAccessPage_551": "指令弹窗", - "DeviceAccessPage_552": "配置指令", - "DeviceAccessPage_553": "指令参数", - "DeviceAccessPage_554": "参数名", - "DeviceAccessPage_555": "枚举", - "DeviceAccessPage_556": "分隔", - "DeviceAccessPage_557": "标准字段", - "DeviceAccessPage_558": "厂商原始字段", - "DeviceAccessPage_559": "转换规则", - "DeviceManagement_560": "UAV 管理", - "DeviceManagement_561": "智能装备", - "DeviceManagement_562": "Camera 管理", - "DeviceManagement_563": "Robot 生成", - "DroneManagement_564": "获取 UAV 列表 Failed", - "DroneManagement_565": "请先在列表中选中需要绑定的 UAV", - "DroneManagement_566": "绑定 Success", - "DroneManagement_567": "绑定 Failed", - "DroneManagement_568": "Actions Abnormal", - "DroneManagement_569": "未选择有效设备,无法解绑", - "DroneManagement_570": "人员", - "DroneManagement_571": "场站", - "DroneManagement_572": "组织", - "DroneManagement_573": "Confirm 解绑", - "DroneManagement_574": "OK 要为选中的 UAV 清除", - "DroneManagement_575": "绑定吗", - "DroneManagement_576": "解绑 Success", - "DroneManagement_577": "解绑 Failed", - "DroneManagement_578": "机场", - "DroneManagement_579": "所属组织", - "DroneManagement_580": "未绑定", - "DroneManagement_581": "所属场站", - "DroneManagement_582": "人员解绑", - "DroneManagement_583": "场站解绑", - "DroneManagement_584": "组织解绑", - "DroneManagement_585": "绑定 UAV", - "DroneManagement_586": "批量解绑(用户", - "DroneManagement_587": "批量解绑(场站", - "DroneManagement_588": "批量解绑(组", - "DroneManagement_589": "Selected UAV", - "DroneManagement_591": "Please select 组织", - "DroneManagement_592": "Please select 场站", - "DroneManagement_593": "请先选择组织", - "DroneManagement_594": "Please select Leader", - "DroneManagement_595": "请先选择场站后选择 Leader", - "ErrorManagement_596": "Search 区域完全不变", - "ErrorManagement_597": "Add / Edit / View 弹窗(核心优化区域", - "ErrorManagement_598": "第一行:基础编码 Name", - "ErrorManagement_599": "第二行:来源、等级、 Check Field", - "ErrorManagement_600": "第三行:对比 Type", - "ErrorManagement_601": "对比值(自动切换单输入/区间双输入", - "ErrorManagement_602": "区间 Type", - "ErrorManagement_603": "显示两个输入框", - "FlvPlayer_606": "当前浏览器不支持 FLV MSE Play ,请 Download 文件 View", - "FlvPlayer_607": "适配", - "FlvPlayer_608": "关键:大文件点播不能false,否则一次性 All Download 立刻 Close", - "FlvPlayer_609": "视频编码不受浏览器MSE支持,请 Download 文件 Local Play", - "FlvPlayer_610": "媒体源不支持", - "FlvPlayer_611": "Play Abnormal ,建议 Download 文件 Local Play", - "FlvPlayer_612": "网络错误,请检查 Video URL", - "FlvPlayer_613": "媒体解码错误,该FLV文件可能不兼容浏览器", - "FlvPlayer_614": "加载超时,浏览器MSE解析 Failed ,请 Download 文件 Local Play", - "FlvPlayer_615": "Play 器初始化 Failed ,请重试", - "FlvPlayer_616": "视频加载 Failed ,请检查地址或 Download", - "FlvPlayer_617": "Play Failed", - "FlvPlayer_618": "重试", - "FlvPlayer_619": "Download 视频", - "FlvPlayer_620": "点击手动 Play 视频", - "FlvPlayer_621": "使用", - "FlvPlayer_622": "解码,部分特殊编码FLV浏览器无法渲染,建议 Download Local Play", - "FlvPlayer_623": "非FLV使用浏览器原生 Play", - "LogManagement_624": "系统", - "LogManagement_625": "Robot 智慧服务系统 Alpha 三服务(接入/ Status /命令)启动 Complete", - "LogManagement_626": "命令服务", - "LogManagement_627": "向 ROBOT-001 下发移动命令", - "LogManagement_628": "Execute 结果: Success", - "LogManagement_629": "Add O&M 工程师 Account", - "LogManagement_630": "李工", - "LogManagement_631": "Role : O&M 工程师", - "LogManagement_632": "心跳超时", - "LogManagement_633": "已自动置为 Offline", - "LogManagement_634": "自主 Inspection", - "LogManagement_635": "超时,已自动重试 1 次后仍 Failed", - "LogManagement_636": "Modify System Name 与数据 Refresh 频率", - "LogManagement_637": "Status 服务", - "LogManagement_638": "设备 ROBOT-001 上报 Status : Battery 85%,模式", - "LogManagement_639": "Inverter INV-03 输出功率 vs Yesterday Down 16%,触发预警", - "LogManagement_640": "调整 CAM-04 热成像通道码率参数", - "LogManagement_641": "每日自动备份 Complete ,备份文件", - "LogManagement_642": "Unknown 设备尝试注册(secret 校验 Failed ),已拒绝,来源", - "LogManagement_643": "Role 授权", - "LogManagement_644": "Report Center - Export", - "LogManagement_645": "日志已 Refresh", - "LogManagement_646": "级别", - "LogManagement_648": "消息", - "LogManagement_650": "已 Export", - "LogManagement_651": "条日志", - "LogManagement_652": "系统运行、 Device Control 与管理员 Actions 流水,仅超级管理员可 View", - "LogManagement_653": "All 级别", - "LogManagement_654": "Search 消息 / Operator / 来源", - "MenuList_655": "Menu 加载 Failed", - "MenuList_656": "Add 子 Menu", - "MenuList_657": "Add Menu", - "MenuList_658": "Close 分页", - "MenuList_659": "Menu 弹窗", - "MenuList_660": "Edit Menu", - "MenuList_661": "无(一级 Menu", - "MenuList_662": "Please enter Menu Name", - "MenuList_663": "显示 Sort", - "MenuList_664": "数字越小越靠前", - "MenuList_665": "图标选择弹窗", - "MenuList_666": "选择 Menu Icon", - "OnlineUser_667": "研发部门", - "OnlineUser_668": "内网", - "OnlineUser_669": "默认选中 Online Users", - "OnlineUser_670": "Search Complete", - "OnlineUser_671": "已 Reset Search 条件", - "OnlineUser_672": "已向会话", - "OnlineUser_673": "发送强退指令", - "OnlineUser_674": "序号", - "OnlineUser_675": "会话编号", - "OnlineUser_676": "Login Name", - "OnlineUser_677": "所属部门", - "OnlineUser_678": "主机", - "OnlineUser_679": "Login 地点", - "OnlineUser_680": "Actions 系统", - "OnlineUser_681": "浏览器", - "OnlineUser_682": "Login Time", - "OnlineUser_683": "强退", - "OnlineUser_684": "系统监控", - "OnlineUser_685": "顶部", - "OnlineUser_686": "Other 监控", - "OnlineUser_688": "Search 栏", - "OnlineUser_689": "Login 地址", - "OnlineUser_690": "Please enter Login 地址", - "OnlineUser_691": "Please enter Username", - "OnlineUser_694": "Online Users 表格", - "OnlineUser_695": "Other 页面(你可以随便改内容", - "OnlineUser_696": "Other 监控内容", - "OnlineUser_697": "这里可以放服务 Status 、CPU监控、内存监控、接口监控等内容", - "Organization_698": "OK Delete 该组织", - "Organization_699": "Add 组织", - "Organization_700": "统一分页", - "Organization_701": "Edit 组织", - "Organization_702": "Please enter Org Name", - "Organization_703": "组织编码", - "Organization_704": "Please enter 组织编码", - "Organization_705": "Please enter Leader", - "Organization_706": "Please enter Contact", - "Organization_707": "Please enter Email", - "Organization_708": "Please enter 地址", - "Organization_709": "Please enter Remark", - "SerialNumGenerate_710": "Please select 要 Delete 的数据", - "SerialNumGenerate_711": "请先生成", - "SerialNumGenerate_713": "未 Search 到数据", - "SerialNumGenerate_714": "Search Failed", - "SerialNumGenerate_715": "序列号", - "SerialNumGenerate_716": "型号", - "SerialNumGenerate_717": "国家", - "SerialNumGenerate_718": "省份", - "SerialNumGenerate_719": "二维码", - "SerialNumGenerate_721": "Robot 二维码管理", - "SerialNumGenerate_722": "数据管理", - "SerialNumGenerate_723": "OK Delete 选中项", - "SerialNumGenerate_724": "筛选栏", - "SerialNumGenerate_725": "Please enter 序列号", - "SerialNumGenerate_726": "列表", - "SerialNumGenerate_727": "完全自适应", - "SerialNumGenerate_728": "右侧固定", - "SerialNumGenerate_729": "不溢出", - "SerialNumGenerate_730": "Add 弹窗", - "SerialNumGenerate_731": "生成 Robot 二维码", - "SerialNumGenerate_732": "选择型号", - "SerialNumGenerate_733": "选择配置", - "SerialNumGenerate_734": "选择 Type", - "SerialNumGenerate_735": "选择国家", - "SerialNumGenerate_736": "请先选择国家", - "SerialNumGenerate_737": "生成序列号", - "SerialNumGenerate_738": "请先生成二维码", - "SerialNumGenerate_739": "View 二维码", - "SerialNumGenerate_740": "二维码详情", - "SerialNumGenerate_741": "Robot Type", - "SerialNumGenerate_742": "Type Name", - "SerialNumGenerate_743": "存储值", - "SerialNumGenerate_744": "Robot 型号", - "SerialNumGenerate_745": "型号 Name", - "SerialNumGenerate_746": "配置 Name", - "SmartDeviceManagement_747": "获取智能装备列表 Failed", - "SmartDeviceManagement_748": "装备 Updated", - "SmartDeviceManagement_749": "无权限", - "SmartDeviceManagement_750": "Save 参数 Success", - "SmartDeviceManagement_751": "授权 Failed", - "SmartDeviceManagement_752": "请先在列表中选中需要绑定的智能装备", - "SmartDeviceManagement_753": "OK 要为选中的智能装备清除", - "SmartDeviceManagement_754": "设备码", - "SmartDeviceManagement_755": "清除人员绑定", - "SmartDeviceManagement_756": "清除场站绑定", - "SmartDeviceManagement_757": "清除组织绑定", - "SmartDeviceManagement_758": "授权", - "SmartDeviceManagement_759": "绑定装备", - "SmartDeviceManagement_760": "批量解绑(组织", - "SmartDeviceManagement_761": "绑定智能装备", - "SmartDeviceManagement_762": "Selected 智能装备", - "SmartDeviceManagement_763": "Please select 装备", - "SmartDeviceManagement_764": "Edit 智能装备信息", - "SmartDeviceManagement_765": "请填写 Device Name", - "SmartDeviceManagement_766": "设备序列号", - "SmartDeviceManagement_767": "请填写设备码", - "SmartDeviceManagement_768": "Please enter 设备序列号", - "SmartDeviceManagement_769": "Please select Online Status", - "SmartDeviceManagement_770": "选择 Online Status", - "SmartDeviceManagement_771": "设备授权", - "SmartDeviceManagement_772": "设置设备 Actions 授权,授权到期后设备将失去对应 Actions 权限", - "SmartDeviceManagement_773": "授权 Time", - "SmartDeviceManagement_774": "Please enter 授权剩余 Time", - "SmartDeviceManagement_775": "授权 Time 不能小于", - "SmartDeviceManagement_776": "Save 授权", - "StationManage_777": "分区设置", - "StationManage_778": "边界绘制", - "StationManage_779": "Please select 组织筛选", - "StationManage_780": "Add 场站", - "StationManage_781": "场站弹窗", - "StationManage_782": "Edit 场站", - "StationManage_783": "Please select 所属组织", - "StationManage_784": "详细地址", - "StationManage_785": "消息推送配置", - "StationManage_786": "钉钉告警推送", - "StationManage_787": "开启", - "StationManage_788": "钉钉工单推送", - "StationManage_789": "邮件推送", - "StationManage_790": "告警弹窗推送", - "StationManage_791": "钉钉开关开启才显示Token、密钥", - "StationManage_792": "钉钉 Robot", - "StationManage_793": "开启钉钉推送时必须填写", - "StationManage_794": "Please enter 钉钉 Robot", - "StationManage_795": "钉钉加密密钥", - "StationManage_796": "开启钉钉推送时必须填写加密密钥", - "StationManage_797": "钉钉 Robot 加签密钥", - "StationManage_798": "分区弹窗", - "StationManage_799": "分区 Name", - "StationManage_800": "分区编码", - "StationManage_801": "分区 Type", - "StationManage_802": "清扫区", - "StationManage_803": "Inspection 区", - "StationManage_804": "Save 分区", - "StationManage_805": "地图绘制弹窗", - "StationManage_806": "地图区域绘制(可自行接入高德/百度地图", - "StationManage_807": "开始绘制", - "StationManage_808": "Save 边界", - "SystemMaintain_809": "错误管理", - "SystemMaintain_810": "告警模型管理", - "SystemMaintain_811": "工单模型管理", - "UserPage_814": "Role 弹窗", - "UserPage_815": "用户弹窗", - "UserPage_816": "自动适应布局:隐藏 Role 时, Status 自动占满一行", - "VideoManagement_817": "读取通道 Failed", - "VideoManagement_818": "无法连接视频服务", - "VideoManagement_819": "读取文件 Failed", - "VideoManagement_820": "请先选择完整的 Time 路径", - "VideoManagement_821": "大小", - "VideoManagement_822": "录像通道与 Replay 管理 · 共", - "VideoManagement_823": "个通道", - "VideoManagement_824": "通道", - "VideoManagement_825": "Select Device 通道", - "VideoManagement_826": "请先选择视频通道", - "VideoManagement_827": "Please select 年 / 月 / 日 加载录像", - "VideoManagement_828": "该日暂无录像文件", - "VideoManagement_829": "个文件", - "WorkOrderSettingsManagement_830": "获取工单模型列表 Failed", - "WorkOrderSettingsManagement_831": "您 OK 要 Delete 这条工单模型吗", - "WorkOrderSettingsManagement_832": "条工单模型吗", - "WorkOrderSettingsManagement_833": "工单 Name", - "WorkOrderSettingsManagement_835": "轻微", - "WorkOrderSettingsManagement_836": "路径/航线", - "WorkOrderSettingsManagement_837": "自动生成任务", - "WorkOrderSettingsManagement_838": "Add 工单模型", - "WorkOrderSettingsManagement_839": "Edit 工单模型", - "WorkOrderSettingsManagement_840": "Please enter 工单 Name", - "WorkOrderSettingsManagement_842": "请 Select Device", - "WorkOrderSettingsManagement_843": "根据 Device Type 显示不同的路径选择", - "WorkOrderSettingsManagement_844": "预设路径", - "WorkOrderSettingsManagement_845": "Please select 预设路径", - "WorkOrderSettingsManagement_846": "UAV 航线", - "WorkOrderSettingsManagement_847": "Please select UAV 航线", - "SystemSetting_1265": "Alert Rules 配置、用户 Role 、通知管理与系统参数设置" - }, - "video": { - "VideoPlayer_849": "前视图", - "VideoPlayer_850": "后视图", - "VideoPlayer_851": "左视图", - "VideoPlayer_852": "右视图", - "VideoPlayer_853": "视频源连接 Failed", - "Video_1269": "安防型", - "Video_1270": "运输型", - "Video_1271": "Inspection 型", - "VideoMonitorPage_1272": "中间 Video Monitor 中心", - "VideoMonitorPage_1273": "底部三栏", - "VideoMonitorPage_1274": "模拟检测框" - }, - "aiAnalysis": { - "AIAnalysis_983": "Handle 热斑组件", - "AIAnalysis_984": "排查 Abnormal 组串", - "AIAnalysis_985": "Clean 受遮挡区域", - "AIAnalysis_986": "跟踪衰减较大组件", - "AIAnalysis_987": "持续监控 Inverter 效率", - "AIAnalysis_988": "方阵", - "AIAnalysis_989": "智能诊断与分析中心", - "AIAnalysis_990": "Refresh 数据", - "AIAnalysis_991": "Export 报告", - "AIAnalysis_992": "第一排:顶部统计卡片", - "AIAnalysis_993": "值 (性能比", - "AIAnalysis_994": "vs Yesterday", - "AIAnalysis_995": "发电偏差率", - "AIAnalysis_996": "Abnormal 组串数量", - "AIAnalysis_997": "热斑疑似数量", - "AIAnalysis_998": "电站健康度评分", - "AIAnalysis_999": "Predicted 发 Battery", - "AIAnalysis_1000": "第二排: Thermal Analysis 和 组串 Abnormal 定位", - "AIAnalysis_1001": "UAV 热成像 Inspection 分析", - "AIAnalysis_1002": "模拟热斑点", - "AIAnalysis_1003": "高危", - "AIAnalysis_1004": "注意", - "AIAnalysis_1005": "热斑疑似点", - "AIAnalysis_1006": "高温区域", - "AIAnalysis_1007": "Temperature 分布", - "AIAnalysis_1008": "组串实时 Status 定位图", - "AIAnalysis_1009": "总组串", - "AIAnalysis_1012": "组串", - "AIAnalysis_1013": "Critical Abnormal (热斑", - "AIAnalysis_1014": "Critical Abnormal (断路", - "AIAnalysis_1015": "Abnormal (功率偏差", - "AIAnalysis_1016": "Abnormal (遮挡", - "AIAnalysis_1017": "轻微 Abnormal", - "AIAnalysis_1019": "运行 Normal", - "AIAnalysis_1020": "功率 Abnormal", - "AIAnalysis_1021": "Critical Fault", - "AIAnalysis_1022": "设备 Offline", - "AIAnalysis_1023": "Abnormal Type 分布", - "AIAnalysis_1024": "Offline 组串", - "AIAnalysis_1025": "View 详细定位表", - "AIAnalysis_1026": "第三排:三个主要分析区域", - "AIAnalysis_1027": "组件衰减趋势分析", - "AIAnalysis_1028": "衰减率趋势", - "AIAnalysis_1029": "当前均值", - "AIAnalysis_1030": "平均衰减率", - "AIAnalysis_1031": "最佳组件", - "AIAnalysis_1032": "最差组件", - "AIAnalysis_1033": "衰减预警", - "AIAnalysis_1034": "块组件衰减超标", - "AIAnalysis_1035": "建议排查", - "AIAnalysis_1036": "实时发电表现深度分析", - "AIAnalysis_1037": "发 Battery 对比分析", - "AIAnalysis_1038": "Actual 发电", - "AIAnalysis_1039": "Predicted 发电", - "AIAnalysis_1040": "理论发电", - "AIAnalysis_1041": "当日 Actual 发电", - "AIAnalysis_1042": "当日 Predicted 发电", - "AIAnalysis_1043": "实时 PR 值", - "AIAnalysis_1044": "诊断总结", - "AIAnalysis_1046": "诊断项", - "AIAnalysis_1047": "影响", - "AIAnalysis_1048": "检测到 36 处热斑疑似点", - "AIAnalysis_1049": "组串失配", - "AIAnalysis_1050": "串组串存在 Abnormal", - "AIAnalysis_1051": "遮挡风险", - "AIAnalysis_1052": "局部遮挡影响 2% 发 Battery", - "AIAnalysis_1053": "组件衰减", - "AIAnalysis_1054": "Inverter Abnormal", - "AIAnalysis_1055": "所有 Inverter 运行 Normal", - "AIAnalysis_1056": "建议与处置", - "AIAnalysis_1057": "建议措施", - "AIAnalysis_1058": "收益", - "AIAnalysis_1059": "跟踪衰减组件", - "AIAnalysis_1060": "监控 Inverter 效率", - "AIAnalysis_1061": "底部:数据来源", - "AIAnalysis_1062": "全栈数据融合来源", - "AIAnalysis_1063": "UAV 载荷热成像", - "AIAnalysis_1064": "同步中", - "AIAnalysis_1065": "实时遥测数据", - "AIAnalysis_1066": "云端气象分析站", - "AIAnalysis_1067": "电站 O&M 资产库", - "AIAnalysis_1068": "数据点" - }, - "clean": { - "CleanOptimization_1069": "计划", - "CleanOptimization_1070": "区块", - "CleanOptimization_1071": "待创建", - "CleanOptimization_1072": "王工", - "CleanOptimization_1073": "赵工", - "CleanOptimization_1074": "Clean 前发 Battery", - "CleanOptimization_1075": "Clean 后发 Battery", - "CleanOptimization_1076": "灰尘积累", - "CleanOptimization_1077": "鸟粪遮挡", - "CleanOptimization_1078": "沙尘沉积", - "CleanOptimization_1079": "污染指数", - "CleanOptimization_1080": "中等", - "CleanOptimization_1081": "建议 Clean 区块数", - "CleanOptimization_1082": "占比", - "CleanOptimization_1083": "预计发电提升", - "CleanOptimization_1084": "占当前日发 Battery", - "CleanOptimization_1085": "Est Revenue 提升", - "CleanOptimization_1086": "按电价", - "CleanOptimization_1087": "元/ kWh 计算", - "CleanOptimization_1088": "上次 Clean Time", - "CleanOptimization_1089": "距今 12 天", - "CleanOptimization_1090": "Clean Cost 预估", - "CleanOptimization_1091": "预计单次 Clean 总成本", - "CleanOptimization_1092": "标题与 Actions 栏", - "CleanOptimization_1093": "Cleaning Optimization 管理", - "CleanOptimization_1094": "最 (7d)", - "CleanOptimization_1095": "最近 30 天", - "CleanOptimization_1096": "左侧:分析图表", - "CleanOptimization_1097": "污染趋势分析", - "CleanOptimization_1098": "阈值", - "CleanOptimization_1099": "发电损失构成", - "CleanOptimization_1100": "(7d)", - "CleanOptimization_1101": "总损失 Battery", - "CleanOptimization_1102": "Clean 前后对比分析", - "CleanOptimization_1103": "近一次", - "CleanOptimization_1104": "Clean 收益深度测算", - "CleanOptimization_1105": "电价 (含税", - "CleanOptimization_1106": "预计 Net Revenue", - "CleanOptimization_1107": "投资回报", - "CleanOptimization_1108": "回收周期", - "CleanOptimization_1109": "中间:地图分布与工单预览", - "CleanOptimization_1110": "电站污染分布与建议 Clean 区块分布图", - "CleanOptimization_1111": "污染等级", - "CleanOptimization_1112": "优先 Clean", - "CleanOptimization_1113": "较高", - "CleanOptimization_1114": "较低", - "CleanOptimization_1115": "清洁", - "CleanOptimization_1116": "地图背景图与浮动标签", - "CleanOptimization_1117": "模拟区块叠加层", - "CleanOptimization_1118": "具体的污染区块标签", - "CleanOptimization_1119": "右侧悬浮 Control Button", - "CleanOptimization_1120": "Clean 工单智能预览", - "CleanOptimization_1121": "View More", - "CleanOptimization_1122": "预计工时", - "CleanOptimization_1123": "计划 Time", - "CleanOptimization_1124": "创建工单", - "CleanOptimization_1125": "右侧:决策建议与参考", - "CleanOptimization_1126": "智能 Clean 策略建议", - "CleanOptimization_1127": "算法模型:多因子加权综合优化模型", - "CleanOptimization_1128": "推荐计划", - "CleanOptimization_1129": "建议区块", - "CleanOptimization_1130": "预计提升", - "CleanOptimization_1131": "天气适宜度", - "CleanOptimization_1132": "Clean 技术方案推荐", - "CleanOptimization_1133": "智能 Robot 方案", - "CleanOptimization_1134": "全自动 Clean ,适合大面积平整区块,效率极高", - "CleanOptimization_1135": "预计用水", - "CleanOptimization_1136": "人工精细化方案", - "CleanOptimization_1137": "灵活 Handle 遮挡及 Critical 污垢区域,适合复杂地形", - "CleanOptimization_1138": "天气与资源环境参考", - "CleanOptimization_1142": "风速", - "CleanOptimization_1143": "适宜", - "CleanOptimization_1144": "降水", - "CleanOptimization_1145": "水源", - "CleanOptimization_1146": "充足", - "CleanOptimization_1147": "Clean 作业影响综合评估", - "CleanOptimization_1148": "预计用水量", - "CleanOptimization_1149": "节水 30% ( Robot", - "CleanOptimization_1150": "预计总耗时", - "CleanOptimization_1151": "小时", - "CleanOptimization_1152": "并行作业 2 组", - "CleanOptimization_1153": "碳减排贡献", - "CleanOptimization_1154": "减排量", - "CleanOptimization_1155": "作业风险评估", - "CleanOptimization_1156": "安全可控", - "CleanOptimization_1157": "以上决策建议基于历史数据、实时气象及发电损失模型综合计算。 Actual Execute 效果可能受天气骤变、现场突发障碍等不 OK 因素影响" - }, - "home": { - "Home_1158": "江苏省", - "Home_1159": "南通市", - "Home_1160": "崇川区", - "Home_1161": "西南风", - "Home_1162": "升压站安防 Inspection 任务", - "Home_1163": "草稿", - "Home_1164": "区 Cleaning Task", - "Home_1166": "区 Inspection 任务", - "Home_1167": "已派发", - "Home_1168": "分析", - "Home_1169": "发现 Inverter Temperature 与组串电流存在轻微 Abnormal ,建议优先复核A区设备", - "Home_1170": "发现2处组件存在 Abnormal 热斑", - "Home_1171": "散热 Maintenance 建议:建议检查INV-A02散热风扇、风道和运行负载,持续高温时转 Repair 工单", - "Home_1172": "个组串存在发电 Abnormal", - "Home_1173": "阵列热斑处置建议:建议现场复核PV-A05-018至PV-A05-020组件接线和旁路二极管 Status ,必要时更换 Abnormal 组件", - "Home_1174": "整体发电偏差", - "Home_1176": "待开始", - "Home_1177": "主键ID( Add 为空", - "Home_1178": "工单编号(后端生成", - "Home_1179": "光伏组件 Clean 工单", - "Home_1183": "电站", - "Home_1184": "Device Type :电站", - "Home_1185": "根据电站清洁度建议进行组件 Clean ,提升发电效率", - "Home_1186": "系统自动生成 Cleaning Suggestion ,预计提升发 Battery", - "Home_1187": "Clean 设备、水枪、抹布", - "Home_1188": "影响发 Battery (%) 数字", - "Home_1190": "工单生成 Failed", - "Home_1191": "工单生成接口调用 Failed", - "Home_1192": "加载 Failed", - "Home_1193": "必须加这个,message才能 Normal 显示", - "Home_1198": "主体布局", - "Home_1199": "左侧图表", - "Home_1200": "今日发电功率趋势", - "Home_1201": "效率", - "Home_1203": "总任务", - "Home_1204": "中间", - "Home_1205": "外部系统", - "Home_1206": "Inspection Type", - "Home_1207": "Inspection Time", - "Home_1208": "Inspection 人员", - "Home_1210": "热点检测", - "Home_1211": "发现", - "Home_1212": "处组件存在 Abnormal 热斑", - "Home_1213": "组串 Abnormal", - "Home_1214": "发电偏差分析", - "Home_1215": "告警内容", - "Home_1216": "发生 Time", - "Home_1217": "组件阵列", - "Home_1218": "环境传感器", - "Home_1219": "详细", - "Home_1221": "Generate Order Button (已完善", - "Home_1222": "清洁度", - "Home_1223": "建议 Clean Time", - "Home_1224": "天内", - "Home_1225": "预计提升发 Battery", - "Home_1226": "预计提升 Battery" - }, - "login": { - "Login_1228": "左侧:表单区域", - "Login_1230": "右侧:梯形斜切", - "Login_1231": "图片铺满" - }, - "profile": { - "Profile_1232": "关键:给 Row 添加", - "Profile_1233": "让两列自动等高", - "Profile_1234": "左侧信息卡片", - "Profile_1236": "自动填充 Altitude", - "Profile_1237": "右侧表单卡片", - "Profile_1238": "基本资料", - "Profile_1239": "Modify Password" - }, - "roles": { - "Roles_1260": "统一卡片容器(和 Menu Management 一致", - "Roles_1261": "顶部 Actions 栏(和 Menu Management 统一", - "Roles_1262": "Role 卡片列表", - "Roles_1263": "分页组件(正确触发", - "Roles_1264": "Add / Edit 弹窗" - }, - "users": { - "Users_1266": "回填多选 Role", - "Users_1267": "直接 Submit 数组", - "Users_1268": "多 Role 选择", - "userSlice_1321": "Save 用户信息", - "userSlice_1322": "Refresh 自动 Resume" - }, - "workOrder": { - "WorkOrder_1275": "批量选中", - "WorkOrder_1276": "今日 Add 工单", - "WorkOrder_1277": "Pending 总数", - "WorkOrder_1278": "Pending High Priority", - "WorkOrder_1280": "本月 Completed", - "WorkOrder_1281": "按时 Completion", - "WorkOrder_1282": "平均 Handle 时长", - "WorkOrder_1283": "今日 Add 对比 Yesterday", - "WorkOrder_1284": "平均时长对比上周", - "WorkOrder_1285": "普通用户", - "WorkOrder_1286": "选中人员", - "WorkOrder_1287": "如需真实 Yesterday 对比,单独请求 Yesterday 统计接口", - "WorkOrder_1288": "Handled Complete", - "WorkOrder_1289": "数字转字符串", - "WorkOrder_1290": "清空选中", - "WorkOrder_1291": "Add 加载7天告警", - "WorkOrder_1292": "顶部标题和页签", - "WorkOrder_1293": "左侧:列表", - "WorkOrder_1294": "底部图表", - "WorkOrder_1295": "Date 切换栏", - "WorkOrder_1296": "横向 Time 表头", - "WorkOrder_1297": "单一行 Time 画布,不再区分人员", - "WorkOrder_1298": "More 工单弹窗:弹窗内只展示当前选中 Date 工单", - "WorkOrder_1299": "右侧:详情", - "WorkOrder_1300": "Add :图片", - "WorkOrder_1301": "视频附件预览区域", - "WorkOrder_1302": "图片预览组,支持点击 Zoom In", - "WorkOrder_1303": "底层灰色轨道", - "WorkOrder_1304": "进度填充", - "WorkOrder_1305": "Modify Order 弹窗", - "WorkOrder_1306": "Dispatch 弹窗:选择人员", - "WorkOrder_1307": "工单", - "WorkOrder_1308": "Execute Order 弹窗", - "WorkOrder_1309": "Unknown 设备", - "WorkOrder_1310": "Robot 设备分组", - "WorkOrder_1311": "UAV 分组", - "WorkOrder_1312": "Please select Exec Start Time", - "WorkOrder_1313": "Complete 工单弹窗", - "WorkOrder_1314": "已修复", - "WorkOrder_1315": "无需 Handle", - "WorkOrder_1316": "问题已闭环", - "WorkOrder_1317": "近7天 All 告警弹窗" - } - } -} \ No newline at end of file diff --git a/tmp_cjk_output.txt b/tmp_cjk_output.txt deleted file mode 100644 index 86a5f8f..0000000 Binary files a/tmp_cjk_output.txt and /dev/null differ diff --git a/tmp_compare.cjs b/tmp_compare.cjs deleted file mode 100644 index 15e95eb..0000000 --- a/tmp_compare.cjs +++ /dev/null @@ -1,45 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -function load(localePath) { - let src = fs.readFileSync(localePath, 'utf8'); - // strip TS type annotations and the const/export lines to a plain object - // replace "const zh = {" -> "var obj = {", remove "export default zh;" - src = src.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - src = src.replace(/export\s+default\s+\w+;?/, ''); - src = src.replace(/\bconst\b/g, 'var'); - const moduleWrap = new Function(src + '\nreturn obj;'); - return moduleWrap(); -} - -function flatten(obj, prefix = '', res = {}) { - for (const k of Object.keys(obj)) { - const key = prefix ? prefix + '.' + k : k; - if (obj[k] && typeof obj[k] === 'object' && !Array.isArray(obj[k])) { - flatten(obj[k], key, res); - } else { - res[key] = obj[k]; - } - } - return res; -} - -const zhRaw = load('src/locales/zh/index.ts'); -const enRaw = load('src/locales/en/index.ts'); - -const zhF = flatten(zhRaw); -const enF = flatten(enRaw); - -const zhKeys = Object.keys(zhF).sort(); -const enKeys = Object.keys(enF).sort(); - -const onlyZh = zhKeys.filter(k => !(k in enF)); -const onlyEn = enKeys.filter(k => !(k in zhF)); - -console.log('=== Keys in ZH but MISSING in EN (' + onlyZh.length + ') ==='); -console.log(onlyZh.join('\n')); -console.log(''); -console.log('=== Keys in EN but MISSING in ZH (' + onlyEn.length + ') ==='); -console.log(onlyEn.join('\n')); -console.log(''); -console.log('ZH total keys:', zhKeys.length, ' EN total keys:', enKeys.length); diff --git a/tmp_dbg.cjs b/tmp_dbg.cjs deleted file mode 100644 index 27c9464..0000000 --- a/tmp_dbg.cjs +++ /dev/null @@ -1,34 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules']; -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!excludeDirs.includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} -const refRegex = /(?:i18n\.t|[^a-zA-Z]t)\(\s*['"`]([a-zA-Z][a-zA-Z0-9_.]*?)['"`]/g; -const files = walk(root); -let count = 0; -const byFile = {}; -for (const f of files) { - const content = fs.readFileSync(f, 'utf8'); - let m; - const found = []; - while ((m = refRegex.exec(content))) { found.push(m[1]); } - if (found.length) { byFile[f] = found; count += found.length; } -} -console.log('Total raw t() matches:', count); -// show a few files with their matches -let shown = 0; -for (const f of Object.keys(byFile)) { - if (shown > 25) break; - console.log('\n' + f + ' (' + byFile[f].length + '):'); - console.log(' ' + byFile[f].slice(0, 12).join(', ')); - shown++; -} diff --git a/tmp_dbg3.cjs b/tmp_dbg3.cjs deleted file mode 100644 index b0d24d1..0000000 --- a/tmp_dbg3.cjs +++ /dev/null @@ -1,15 +0,0 @@ -const fs = require('fs'); -const rxJSX = />([^<>`{}()]*[一-鿿][^<>`{}()]*)'>{t(\''+'NS.'+inner.trim()+'\')}<'); -s = s.replace(rxAttr, (m,attr,q,val)=>{ if(SKIP_ATTR.has(attr)) return m; if(val.includes('${')) return m; return attr+'={t(\'NS.'+val.trim()+'\')}'; }); -s = s.replace(rxMsg, (m,fn,q,val)=> fn+"(t('NS."+val.trim()+"'))"); -s = s.replace(rxProp, (m,pre,prop,q,val)=>{ if(!UI_PROP.has(prop)) return m; return pre+prop+": t('NS."+val.trim()+"')"; }); -const lines = s.split('\n'); -for (let i=68;i<82;i++){ console.log((i+1)+': '+lines[i]); } diff --git a/tmp_finalcheck.cjs b/tmp_finalcheck.cjs deleted file mode 100644 index 292cbec..0000000 --- a/tmp_finalcheck.cjs +++ /dev/null @@ -1,23 +0,0 @@ -const fs = require('fs'); -function load(p){let s=fs.readFileSync(p,'utf8');s=s.replace(/const\s+\w+\s*=\s*\{/,'var obj = {');s=s.replace(/export\s+default\s+\w+;?/,'');s=s.replace(/\bconst\b/g,'var');return new Function(s+'\nreturn obj;')();} -const zh=load('src/locales/zh/index.ts'); const en=load('src/locales/en/index.ts'); -function flat(o,p,r){p=p||'';r=r||{};for(const k of Object.keys(o)){const key=p?p+'.'+k:k;if(o[k]&&typeof o[k]==='object'&&!Array.isArray(o[k]))flat(o[k],key,r);else r[key]=o[k];}return r;} -const zf=flat(zh), ef=flat(en); -console.log('zh flat keys:',Object.keys(zf).length,' en flat keys:',Object.keys(ef).length); -for(const k of ['common.completed','home.underMaintenance','roles.abnormal']) console.log(' en has '+k+':',k in ef,' (zh:',k in zf,')'); -// duplicate base-key detection per namespace (text scan) -function dupScan(file){ - const text=fs.readFileSync(file,'utf8'); - const re=/^\t([A-Za-z]+):\s*\{/gm; let m; const dups=[]; - while((m=re.exec(text))){ - const ns=m[1]; const start=m.index+m[0].length; - // find matching closing brace - let depth=1,i=start; while(i0){const c=text[i];if(c==='{')depth++;else if(c==='}')depth--;i++;} - const block=text.slice(start,i-1); - const keys={}; let dm; const kr=/^\s*([A-Za-z0-9_'"][A-Za-z0-9_'"]*):/gm; - while((dm=kr.exec(block))){const key=dm[1].replace(/'/g,''); if(key in keys) dups.push(ns+'.'+key); keys[key]=1;} - } - return dups; -} -const dz=dupScan('src/locales/zh/index.ts'); const de=dupScan('src/locales/en/index.ts'); -console.log('zh duplicate base keys:',dz.length, dz.slice(0,10)); console.log('en duplicate base keys:',de.length, de.slice(0,10)); diff --git a/tmp_findcjk.cjs b/tmp_findcjk.cjs deleted file mode 100644 index b7056da..0000000 --- a/tmp_findcjk.cjs +++ /dev/null @@ -1,51 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules']; - -// Regex to match a run of CJK characters (and surrounding simple chars) inside a string-ish -// We capture any quoted string (single/double/backtick) containing CJK. -const cjk = /[\u4e00-\u9fff]/; - -function walk(dir) { - const out = []; - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - if (excludeDirs.includes(entry.name)) continue; - out.push(...walk(full)); - } else if (exts.includes(path.extname(entry.name))) { - out.push(full); - } - } - return out; -} - -const files = walk(root); -let total = 0; -const perFile = []; -for (const f of files) { - const lines = fs.readFileSync(f, 'utf8').split('\n'); - const hits = []; - lines.forEach((line, i) => { - // skip pure comment lines (// ... or * ...) - const trimmed = line.trim(); - if (trimmed.startsWith('//') || trimmed.startsWith('*')) return; - if (!cjk.test(line)) return; - hits.push({ line: i + 1, text: line.trim() }); - }); - if (hits.length) { - perFile.push({ file: f, hits }); - total += hits.length; - } -} - -console.log('Total files with CJK:', perFile.length, 'Total CJK lines:', total); -for (const pf of perFile) { - console.log('\n### ' + pf.file + ' (' + pf.hits.length + ')'); - for (const h of pf.hits) { - console.log(' L' + h.line + ': ' + h.text.slice(0, 200)); - } -} diff --git a/tmp_fixkeys.cjs b/tmp_fixkeys.cjs deleted file mode 100644 index 411b23a..0000000 --- a/tmp_fixkeys.cjs +++ /dev/null @@ -1,25 +0,0 @@ -// Quote any object key that starts with a digit (invalid as unquoted JS key). -// Flat key string (ns.123abc) is unchanged, so t('ns.123abc') still resolves. -const fs = require('fs'); -function fix(file) { - let s = fs.readFileSync(file, 'utf8'); - let n = 0; - s = s.replace(/^(\s*)([0-9][A-Za-z0-9_]*)(:\s)/gm, (m, ind, key, colon) => { n++; return ind + "'" + key + "'" + colon; }); - fs.writeFileSync(file, s, 'utf8'); - console.log(file + ' -> quoted ' + n + ' digit-leading keys'); -} -fix('src/locales/zh/index.ts'); -fix('src/locales/en/index.ts'); - -// verify both parse -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -try { const z = load('src/locales/zh/index.ts'); console.log('zh parses OK, top keys:', Object.keys(z).length); } -catch (e) { console.log('zh PARSE FAIL:', e.message.split('\n')[0]); } -try { const e2 = load('src/locales/en/index.ts'); console.log('en parses OK, top keys:', Object.keys(e2).length); } -catch (e) { console.log('en PARSE FAIL:', e.message.split('\n')[0]); } diff --git a/tmp_gen.cjs b/tmp_gen.cjs deleted file mode 100644 index 506d7d4..0000000 --- a/tmp_gen.cjs +++ /dev/null @@ -1,563 +0,0 @@ -// Generaate missing locale keys (best-effort) for zh + en. -const fs = require('fs'); -const path = require('path'); - -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules', 'i18n']; - -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!excludeDirs.includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} - -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { - p = p || ''; r = r || {}; - for (const k of Object.keys(o)) { - const key = p ? p + '.' + k : k; - if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); - else r[key] = o[k]; - } - return r; -} -function unflat() { return {}; } - -const zhObj = load('src/locales/zh/index.ts'); -const enObj = load('src/locales/en/index.ts'); -const zhMap = flat(zhObj); -const enMap = flat(enObj); - -// ---- token dictionaries ---- -// camelCase token -> Chinese (for inferring zh of missing keys) -const tokZh = { - tl: '时间线', timeline: '时间线', mock: '模拟', device: '设备', devices: '设备', - sensor: '传感器', camera: '摄像头', station: '基站', battery: '电量', temp: '温度', temperature: '温度', - uav: '无人机', drone: '无人机', mower: '割草机', robot: '机器人', video: '视频', - status: '状态', task: '任务', tasks: '任务', complete: '完成', completed: '已完成', completing: '完成中', - start: '开始', end: '结束', startcleaning: '开始清洗', startinspection: '开始巡检', startmowing: '开始除草', - standby: '待机', ready: '就绪', return: '返航', supply: '补给', finish: '完成', inspection: '巡检', inspect: '巡检', - mow: '除草', maintenance: '维护', repair: '维修', clean: '清洗', cleaning: '清洗', - msg: '消息', message: '消息', no: '编号', alarm: '告警', rule: '规则', rules: '规则', - param: '参数', params: '参数', left: '左', right: '右', forward: '前', backward: '后', gain: '增益', - speed: '速度', chip: '芯片', uid: 'UID', sign: '标识', route: '路线', routes: '路线', path: '路径', point: '点', points: '点', - indoor: '室内', outdoor: '室外', wide: '广角', zoom: '变焦', lens: '镜头', ir: '红外', switch: '切换', - fail: '失败', failed: '失败', success: '成功', fetch: '获取', save: '保存', create: '创建', created: '已创建', - generate: '生成', export: '导出', import: '导入', download: '下载', upload: '上传', search: '搜索', reset: '重置', - confirm: '确认', cancel: '取消', view: '查看', select: '选择', selected: '已选', name: '名称', type: '类型', - time: '时间', date: '日期', total: '共', count: '数量', today: '今日', yesterday: '昨日', - week: '周', month: '月', day: '日', year: '年', online: '在线', offline: '离线', - error: '错误', errors: '错误', warning: '警告', info: '提示', critical: '严重', important: '重要', general: '一般', - pending: '待处理', closed: '已关闭', handled: '已处理', restored: '已恢复', ignored: '已忽略', falsealarm: '误报', - level: '级别', source: '来源', result: '结果', trend: '趋势', distribution: '分布', statistics: '统计', - subscription: '订阅', history: '历史', realtime: '实时', overview: '概览', analysis: '分析', diagnosis: '诊断', - defect: '缺陷', thermal: '热成像', component: '组件', string: '组串', inverter: '逆变器', efficiency: '效率', - risk: '风险', confidence: '置信度', location: '位置', suggestion: '建议', plan: '计划', execute: '执行', - mowing: '除草', inspect: '巡检', work: '工作', order: '工单', user: '用户', role: '角色', roles: '角色', - permission: '权限', menu: '菜单', organization: '组织', notice: '通知', data: '数据', safety: '安全', - access: '接入', protocol: '协议', longitude: '经度', latitude: '纬度', timezone: '时区', capacity: '容量', - address: '地址', leader: '负责人', contact: '联系', icon: '图标', sort: '排序', parent: '上级', - directory: '目录', button: '按钮', theme: '主题', light: '浅色', dark: '深色', language: '语言', version: '版本', - serial: '序列', verify: '验证', bind: '绑定', code: '码', list: '列表', refresh: '刷新', delete: '删除', - edit: '编辑', add: '新增', update: '更新', enable: '启用', disable: '停用', normal: '正常', abnormal: '异常', - loading: '加载中', generating: '生成中', processing: '处理中', exported: '已导出', uploadfile: '上传文件', - uploadimage: '上传图片', startanalysis: '开始分析', analysisresult: '分析结果', detected: '检测到', - noresult: '无结果', none: '无', unknown: '未知', invalid: '无效', gps: 'GPS', dgps: 'DGPS', rtk: 'RTK', - fixed: '固定', float: '浮点', config: '配置', configured: '已配置', connection: '连接', connect: '连接', - request: '请求', permissionreq: '权限请求', recover: '恢复', resume: '恢复', pause: '暂停', stopped: '停用', - working: '作业中', workingrobots: '作业中机器人', stat: '统计', alert: '告警', alerts: '告警', - deviceenvironment: '设备环境', currenttemp: '当前温度', humidity: '环境湿度', positionaccuracy: '定位精度', - networklatency: '网络延迟', waterrisk: '积水风险', preset: '预设', searchplaceholder: '搜索', unnamed: '未命名', - deleteroute: '删除航线', executeroute: '执行航线', taskboard: '任务看板', pendingtask: '待执行任务', - executing: '执行中', executingellipsis: '执行中', pausedtask: '已暂停任务', executeroutetask: '执行路线任务', - routeinfo: '路线信息', routename: '路线名称', selectexecdevice: '选择执行设备', panorama: '全景', - wdsun: '日', wdmon: '一', wtue: '二', wdwend: '三', wdthu: '四', wdfri: '五', wdsat: '六', - deviceserial: '设备编号', fillrequired: '请填写', selectexectime: '选择执行时间', taskcreated: '任务创建成功', - createfailed: '创建失败', createtaskerror: '创建任务异常', newtask: '新建任务', inputtaskname: '请输入任务名称', - executeroutelabel: '执行路线', selectroute: '选择路线', repeatplan: '重复计划', execdate: '执行日期', - selectexecdate: '选择执行日期', exectime: '执行时间', savetask: '保存任务', devicecontrol: '设备控制', - realtimevideo: '实时视频', takeoff: '起飞', land: '降落', returnhome: '返航', emergencystop: '紧急停止', - rotateleft: '左旋', rotateright: '右旋', gimbalpitch: '云台俯仰', gimbályaw: '云台偏航', zoomin: '放大', zoomout: '缩小', - wayline: '航线', waylinetask: '航线任务', robottask: '机器人任务', devicename: '设备名称', devicetype: '设备类型', - devicemodel: '设备型号', onlinestatus: '在线状态', lastheartbeat: '最后心跳', batterylevel: '电量', - signalstrength: '信号强度', control: '控制', uploadwayline: '上传航线', downloadwayline: '下载航线', - executetask: '执行任务', taskname: '任务名称', taskstatus: '任务状态', flighttime: '飞行时间', altitude: '高度', - distance: '距离', starttime: '开始时间', endtime: '结束时间', drone: '无人机', camera2: '摄像头', - creator: '创建者', executionplan: '执行计划', executioncycle: '执行周期', statusnew: '新建', - statuspaused: '暂停中', statusfinished: '执行成功', statusfailed: '执行失败', confirmdeletetask: '确定要删除该任务吗', - confirmcanceltask: '确定要取消该任务吗', confirmpausetask: '确定要暂停该任务吗', clearrealtime: '清空实时', - cleartrack: '清空实时轨迹', clearplanroute: '清空规划航线', controlmode: '控制模式', localmode: '本地', - remotemode: '远程', heading: '航向', initialized: '已初始化', uninitialized: '未初始化', taskpool: '任务池', - taskexecutionplan: '任务执行计划', taskhistory: '历史任务', createtask: '创建任务', startdate: '开始日期', - enddate: '结束日期', allrobots: '全部机器人', operationsuggestion: '作业编排建议', good: '良好', - devicelocation: '设备定位', devicevideo: '设备视频', robotpanorama: '机器人全景', - dayplan: '按天计划', weekplan: '按周计划', monthplan: '按月计划', daysuffix: '日', unknownplan: '未知计划', - mon: '周一', tue: '周二', wed: '周三', thu: '周四', fri: '周五', sat: '周六', sun: '周日', - vs: '较', unit: '单位', unitplan: '条', unitrobot: '台', unittimes: '次', completionrate: '完成率', - alertscount: '告警数量', costsaving: '节省成本', monthlyaccumulated: '本月累计', daily: '日', target: '目标', - installedcapacity: '装机容量', generationtrend: '发电趋势', irradiance: '辐照度', actual: '实际', predict: '预测', - invertterefficiency: '逆变器效率', maintenanceprogress: '运维进度', stationoverview: '电站概览', - recentinspection: '近期巡检', aianalysissummary: 'AI分析摘要', realtimealerts: '实时告警', - deviceonlinestatus: '设备在线状态', weatherinfo: '天气信息', cleaningsuggestion: '清洗建议', - cleanordergenerated: '清洗工单生成成功', pleaseelectstation: '请选择电站', generatecleanorder: '生成清洗工单', - kwh: 'kWh', kwp: 'kWp', undermaintenance: '维护中', abnormal2: '异常', normal2: '正常', - moduleinfo: '模块信息', heat: '热', hotspot: '热斑', component0: '组件', datapoint: '数据点', datapoints: '数据点', - exportfilename: '导出文件', processing2: '处理中', loadfailed: '加载失败', loaddetailfailed: '加载详情失败', - requesterror: '请求错误', handlesuccess: '处理成功', handlefail: '处理失败', alarmno: '告警编号', - devicedatas: '设备数据', working2: '作业中', mockdevice: '模拟设备', mocksensor: '模拟传感器', - mocktemp: '模拟温度', mocktempexceed: '模拟温度超限', mockbattery: '模拟电量', mockbatterylow: '模拟电量低', - mockvideosignal: '模拟视频信号', mockvideosignallost: '模拟视频信号丢失', mockrule: '模拟规则', - mocksub: '模拟订阅', mocksubops: '模拟运维', mocksubadmin: '模拟管理员', mocksubdevice: '模拟设备', - sms: '短信', email: '邮件', apppush: 'App推送', subscriptionname: '订阅名称', notifychannel: '通知渠道', - devicesensor: '设备传感器', devicebattery: '设备电量', alarmlevel: '告警级别', alarmtype: '告警类型', - alarmsource: '告警来源', alarmtime: '告警时间', handlestatus: '处理状态', handleresult: '处理结果', - handletime: '处理时间', handler: '处理人', handleremark: '处理备注', handle: '处理', closealert: '关闭告警', - confirmalert: '确认告警', exportalert: '导出告警', critical2: '严重', important2: '重要', general2: '一般', - info2: '提示', reopen: '重新打开', sevenDayTrend: '近7天趋势', sevenDayTrend2: '近7天趋势', - criticalAlert: '严重告警', importantAlert: '重要告警', generalAlert: '一般告警', infoAlert: '提示告警', - daySuffix2: '日', daySuffix3: '日', exported2: '已导出', loadDetailFailed2: '加载详情失败', - requestError2: '请求错误', handleSuccess2: '处理成功', handleFail2: '处理失败', alarmNo2: '告警编号', - locationUnknown: '未知位置', none2: '无', good2: '良好', - taskCompletedMsg: '任务完成消息', confirmDeleteTitle: '确认删除', confirmDeleteContent: '确认删除内容', - confirmDeleteOk: '确认删除', routeDeletedSuccess: '路线删除成功', deleteFailRetry: '删除失败重试', - deleteFailNetwork: '删除失败网络', taskListRefreshFail: '任务列表刷新失败', routeNoPathPoints: '路线无路径点', - waylineFallback: '航线兜底', waylineListFetchFail: '航线列表获取失败', fillRequiredFields: '请填写必填项', - createTaskSuccess: '创建任务成功', createTaskFail: '创建任务失败', createTaskException: '创建任务异常', - trendYesterday: '较昨日', trendFlat: '持平', taskListFetchFail: '任务列表获取失败', - fetchParamFail: '参数获取失败', paramSaveSuccess: '参数保存成功', paramSaveFail: '参数保存失败', - paramSaveException: '参数保存异常', paramLeftForwardGain: '左前增益', paramLeftBackwardGain: '左后增益', - paramRightForwardGain: '右前增益', paramRightBackwardGain: '右后增益', paramRunSpeed: '运行速度', - paramChipUidSign: '芯片UID标识', timelineStatusStart: '开始', timelineStatusReady: '就绪', - timelineStatusReturn: '返航', timelineStatusComplete: '完成', tlStartCleaning: '开始清洗', - tlStartInspection: '开始巡检', tlStartMowing: '开始除草', tlStandbyReady: '待机就绪', - tlReturnSupply: '返航补给', tlFinishInspection: '完成巡检', tlFinishMowing: '完成除草', - stationCameraNotFound: '基站摄像头未找到', switchStationCameraFail: '切换基站摄像头失败', - switchDroneLensFail: '切换无人机镜头失败', wideLens: '广角镜头', zoomLens: '变焦镜头', irLens: '红外镜头', - rainNo: '无雨', pointMarked: '已标记点', minThreePoints: '至少三个点', pathPlanDone: '路径规划完成', - pathPlanFailRetry: '路径规划失败重试', completePathFirst: '请先完成路径', inputPlotName: '输入区域名称', - connectionFailed: '连接失败', permissionRequestTitle: '权限请求', requestControlPermission: '请求控制权限', - selectNoDrone: '未选择无人机', commandIssued: '指令已下发', commandFailed: '指令下发失败', - videoConfigured: '视频已配置', noVideo: '无视频', working3: '作业中', online2: '在线', offline2: '离线', - // generic fallbacks - page: '页面', setting: '设置', settings: '设置', manage: '管理', management: '管理', center: '中心', - report2: '报表', log2: '日志', profile: '个人中心', login: '登录', logout: '退出', station2: '电站', - monitor2: '监控', ai: 'AI', optimization: '优化', task2: '任务', order2: '工单', alert2: '告警', - device2: '设备', system2: '系统', user2: '用户', role2: '角色', -}; - -// Comprehensive English-token -> Chinese lexicon (covers tokens from missing keys) -const lex = { - a01: '', ab: '', abnormal: '异常', account: '账号', accumulated: '累计', action: '操作', activated: '已激活', active: '启用', - add: '新增', added: '已添加', additional: '额外', admin: '管理员', advice: '建议', after: '之后', ai: 'AI', airport: '机场', airspace: '空域', - alarm: '告警', alert: '告警', alerts: '告警', algo: '算法', algorithm: '算法', alias: '别名', all: '全部', altitude: '高度', ambient: '环境', - analysis: '分析', and: '与', angle: '角度', api: 'API', app: '应用', approval: '审批', area: '区域', arm: '布防', array: '阵列', assign: '分配', - assigned: '已分配', async: '异步', auto: '自动', average: '平均', avg: '平均', avoid: '避开', back: '返回', backward: '后退', basic: '基础', - batch: '批量', battery: '电量', belonging: '所属', block: '区块', board: '看板', bound: '边界', bow: '船首', breakpoint: '断点', btn: '按钮', - by: '按', calendar: '日历', call: '呼叫', camera: '摄像头', cameras: '摄像头', can: '可', cancel: '取消', canceled: '已取消', cancelled: '已取消', - capacity: '容量', cargo: '货物', cause: '原因', center: '中心', change: '变更', channel: '渠道', channels: '渠道', charge: '充电', chassis: '底盘', - check: '检查', chip: '芯片', choose: '选择', clean: '清洗', cleaning: '清洗', clear: '清空', cleared: '已清空', click: '点击', climb: '爬升', - closed: '已关闭', closure: '闭合', code: '码', col: '列', colon: '冒号', comm: '通信', command: '指令', communicating: '通信中', communication: '通信', - compare: '对比', complete: '完成', completed: '已完成', completion: '完成', component: '组件', condition: '条件', conditions: '条件', - config: '配置', configured: '已配置', confirm: '确认', connected: '已连接', connection: '连接', contact: '联系', content: '内容', continuous: '连续', - control: '控制', controlling: '控制中', coordinated: '协同', count: '数量', cover: '覆盖', coverage: '覆盖', create: '创建', created: '已创建', - critical: '严重', cum: '累计', current: '当前', curve: '曲线', custom: '自定义', cycle: '周期', daily: '每日', data: '数据', date: '日期', - day: '日', days: '天', debug: '调试', default: '默认', del: '删除', delete: '删除', deleted: '已删除', demo: '演示', desc: '描述', description: '描述', - detail: '详情', details: '详情', detect: '检测', detected: '已检测', detection: '检测', deviation: '偏差', device: '设备', devices: '设备', - dgps: 'DGPS', diagnosis: '诊断', diff: '差异', ding: '钉钉', directory: '目录', dispatch: '派单', dispatchable: '可派单', display: '显示', - distribution: '分布', dock: '停靠', dome: '穹顶', done: '已完成', down: '下降', drag: '拖拽', drive: '驱动', drone: '无人机', drones: '无人机', - dual: '双', duty: '值班', edit: '编辑', effect: '效果', email: '邮件', emergency: '紧急', empty: '空', enabled: '已启用', end: '结束', ended: '已结束', - energy: '能量', engineer: '工程师', env: '环境', equipment: '设备', error: '错误', estimated: '预计', event: '事件', events: '事件', exceed: '超限', - excel: 'Excel', exception: '异常', exec: '执行', execute: '执行', executed: '已执行', executing: '执行中', execution: '执行', expired: '已过期', - export: '导出', fail: '失败', failed: '失败', failure: '失败', fallback: '兜底', fan: '风扇', fence: '围栏', fetch: '获取', fields: '字段', file: '文件', - fill: '填写', finish: '完成', fire: '火警', firmware: '固件', first: '先', fixed: '固定', flag: '标志', flat: '持平', flight: '飞行', float: '浮点', - fly: '飞行', forbidden: '禁止', formats: '格式', forward: '前进', found: '找到', frequency: '频率', fri: '周五', from: '从', front: '前', fuel: '燃料', - full: '全', gain: '增益', gantt: '甘特', gate: '闸门', ge: '地理', gear: '档位', general: '一般', generate: '生成', generated: '已生成', - generating: '生成中', generation: '发电', generator: '发电机', geojson: 'GeoJSON', get: '获取', gnss: 'GNSS', good: '良好', gps: 'GPS', gr: '电网', - grid: '电网', group: '分组', handle: '处理', handled: '已处理', handler: '处理人', hangar: '机库', has: '有', header: '表头', heading: '航向', - health: '健康', heatmap: '热力图', height: '高度', high: '高', hint: '提示', history: '历史', home: '首页', home2: '首页', horizontal: '水平', - hotspot: '热斑', hour: '小时', id: 'ID', image: '图片', immediate: '立即', important: '重要', improvement: '提升', in: '内', incident: '事件', - indoor: '室内', inference: '推理', info: '提示', initialized: '已初始化', input: '输入', inspect: '巡检', inspection: '巡检', integrated: '集成', - intelligent: '智能', interactive: '交互', intercom: '对讲', interval: '间隔', intrusion: '入侵', invalid: '无效', inverter: '逆变器', ir: '红外', - irradiance: '辐照度', irreversible: '不可逆', issue: '问题', issued: '已下发', item: '项', items: '项', json: 'JSON', key: '键', keyword: '关键词', - knife: '刀', label: '标签', landing: '降落', language: '语言', last: '最后', layout: '布局', left: '左', legend: '图例', length: '长度', lens: '镜头', - level: '级别', levels: '级别', lift: '抬升', limit: '限制', link: '链接', list: '列表', live: '直播', load: '加载', loaded: '已加载', local: '本地', - location: '位置', log: '日志', login: '登录', logs: '日志', loitering: '徘徊', lost: '丢失', low: '低', machine: '机器', main: '主', manage: '管理', - management: '管理', manager: '管理员', manual: '手动', map: '地图', mark: '标记', marked: '已标记', marks: '标记', mask: '掩码', members: '成员', - menu: '菜单', meteorology: '气象', mid: '中间', mileage: '里程', min: '最小', mock: '模拟', mode: '模式', model: '模型', models: '模型', - modified: '已修改', modify: '修改', mon: '周一', monitor: '监控', month: '月', monthly: '每月', more: '更多', motion: '运动', motor: '电机', mount: '挂载', - mow: '除草', mowing: '除草', msg: '消息', name: '名称', near: '附近', needed: '需要', network: '网络', new: '新', nickname: '昵称', night: '夜间', - no: '无', none: '无', normal: '正常', normally: '正常', north: '北', not: '未', notification: '通知', notify: '通知', now: '现在', number: '编号', - object: '对象', obstacle: '障碍', obtained: '已获取', occur: '发生', of: '的', offline: '离线', ok: '确定', old: '旧', om: '运维', on: '开', one: '一', - online: '在线', only: '仅', open: '打开', operate: '操作', operation: '操作', ops: '运维', optimal: '最优', optimization: '优化', optimize: '优化', - optional: '可选', or: '或', orchestration: '编排', order: '工单', orders: '工单', org: '组织', original: '原始', other: '其他', out: '外', outdoor: '室外', - over: '超过', overlay: '叠加', overview: '概览', page: '页面', panel: '面板', panorama: '全景', param: '参数', params: '参数', password: '密码', - path: '路径', pause: '暂停', paused: '已暂停', pdf: 'PDF', pending: '待处理', per: '每', percent: '百分比', perimeter: '周长', perm: '权限', - permission: '权限', person: '人员', personnel: '人员', phase: '相', phone: '电话', picture: '图片', pitch: '俯仰', pixels: '像素', placeholder: '占位', - plan: '计划', plane: '飞机', planned: '已计划', planning: '规划', platform: '平台', play: '播放', please: '请', plot: '区域', point: '点', points: '点', - polarity: '极性', port: '端口', position: '位置', positioning: '定位', power: '功率', pr: '光伏', precip: '降水', precision: '精度', predicted: '预测', - preparing: '准备中', preset: '预设', preview: '预览', priority: '优先级', probe: '探测', processing: '处理中', product: '产品', progress: '进度', - property: '属性', proportion: '比例', protect: '保护', ptz: '云台', pump: '泵', push: '推送', quality: '质量', quantity: '数量', rain: '雨', - rainfall: '降雨', range: '范围', rate: '率', rated: '额定', ratio: '比例', rbt: '机器人', read: '读取', ready: '就绪', realtime: '实时', rear: '后', - recent: '近期', recharge: '充电', recheck: '复检', recognition: '识别', recommended: '建议', record: '记录', recording: '录制', records: '记录', - recurring: '重复', refresh: '刷新', registry: '注册', related: '关联', relay: '中继', remark: '备注', remote: '远程', repeat: '重复', repellent: '驱避', - replay: '回放', report: '报表', reports: '报表', request: '请求', requesting: '请求中', required: '必填', reset: '重置', restored: '已恢复', result: '结果', - resume: '恢复', resumed: '已恢复', retry: '重试', return: '返航', returned: '已返航', revenue: '收益', reverse: '反向', right: '右', risk: '风险', - robot: '机器人', role: '角色', roles: '角色', room: '房间', root: '根', route: '路线', routes: '路线', rt: '实时', rth: '返航', rtk: 'RTK', rule: '规则', - run: '运行', running: '运行中', safe: '安全', sat: '卫星', satellite: '卫星', satellites: '卫星', save: '保存', saved: '已保存', saving: '节省', - schedule: '计划', scheduled: '已计划', screen: '屏幕', search: '搜索', seg: '分割', segment: '段', segmentation: '分割', select: '选择', selected: '已选', - send: '发送', sensor: '传感器', sent: '已发送', server: '服务器', services: '服务', servo: '伺服', setting: '设置', settings: '设置', seven: '七', - short: '短', show: '显示', sign: '标识', signal: '信号', single: '单', site: '站点', situation: '态势', size: '大小', smart: '智能', smoke: '烟', sms: '短信', - sn: '序列号', snapshots: '快照', sort: '排序', source: '来源', south: '南', span: '跨度', speed: '速度', standby: '待机', start: '开始', started: '已开始', - station: '电站', statistics: '统计', status: '状态', statuses: '状态', stop: '停止', stopped: '已停止', storage: '存储', store: '存储', stream: '流', - streams: '流', string: '组串', sub: '订阅', submit: '提交', subscribers: '订阅者', subscription: '订阅', subtitle: '字幕', success: '成功', suffix: '后缀', - suggest: '建议', suggested: '建议', suggestion: '建议', suitability: '适宜性', suitable: '适宜', summary: '摘要', sun: '太阳', super: '超级', - supervisor: '主管', supply: '补给', supported: '支持', supports: '支持', suspect: '疑似', suspend: '暂停', suspended: '已暂停', swap: '切换', - switch: '切换', symbol: '符号', sync: '同步', system: '系统', tai: '台', talk: '通话', task: '任务', tasks: '任务', temp: '温度', temperature: '温度', - template: '模板', terminated: '已终止', theoretical: '理论', thermal: '热成像', three: '三', threshold: '阈值', throttle: '油门', thu: '周四', - tiao: '条', time: '时间', timed: '定时', timeline: '时间线', timeout: '超时', timestamp: '时间戳', title: '标题', tl: '时间线', to: '到', today: '今日', - top: '顶部', topology: '拓扑', total: '总', tracking: '跟踪', trend: '趋势', trigger: '触发', triggered: '已触发', tue: '周二', turn: '转向', two: '二', - type: '类型', types: '类型', tyre: '轮胎', uav: '无人机', uid: 'UID', unit: '单位', unknown: '未知', up: '上升', update: '更新', upgrading: '升级中', - upload: '上传', usage: '用量', use4g: '4G', user: '用户', users: '用户', uuid: 'UUID', value: '值', version: '版本', vertical: '垂直', video: '视频', - view: '查看', visual: '可视', voltage: '电压', vs: '较', wait: '等待', waiting: '等待中', walk: '行走', wall: '墙', wash: '清洗', way: '路径', - wayline: '航线', waypoint: '航点', waypoints: '航点', weather: '天气', web: '网页', wed: '周三', weed: '杂草', week: '周', weekday: '工作日', - weekly: '每周', west: '西', wheel: '轮', which: '哪个', wide: '广角', width: '宽度', wifi: 'WiFi', wind: '风', window: '窗口', wing: '机翼', with: '带', - work: '工作', working: '作业中', workspace: '工作区', yes: '是', yesterday: '昨日', zero: '零', zone: '区域', zoom: '缩放', -}; -const NOUNS_WITH_NO = new Set(['alarm', 'device', 'order', 'task', 'route', 'serial', 'station', 'work', 'user', 'role', 'id', 'sn', 'uav', 'drone', 'robot']); - -// Chinese phrase/char -> English (for translating hardcoded chinese strings) -const zhEn = { - '保存': 'Save', '保存修改': 'Save Changes', '取消': 'Cancel', '确认': 'Confirm', '确定': 'OK', '删除': 'Delete', - '编辑': 'Edit', '新增': 'Add', '查询': 'Search', '搜索': 'Search', '重置': 'Reset', '提交': 'Submit', '关闭': 'Close', - '返回': 'Back', '导出': 'Export', '导入': 'Import', '下载': 'Download', '上传': 'Upload', '刷新': 'Refresh', - '查看': 'View', '查看全部': 'View All', '查看详情': 'View Details', '操作': 'Action', '状态': 'Status', '类型': 'Type', - '名称': 'Name', '描述': 'Description', '备注': 'Remark', '时间': 'Time', '日期': 'Date', '创建时间': 'Created At', - '更新时间': 'Updated At', '启用': 'Enable', '停用': 'Disable', '正常': 'Normal', '加载中': 'Loading', - '加载中...': 'Loading...', '暂无数据': 'No Data', '成功': 'Success', '失败': 'Failed', '删除成功': 'Deleted', - '删除失败': 'Delete failed', '编辑成功': 'Updated', '编辑失败': 'Update failed', '新增成功': 'Added', - '新增失败': 'Add failed', '保存成功': 'Saved', '保存失败': 'Save failed', '确定删除?': 'Are you sure to delete?', - '请选择': 'Please select', '请输入': 'Please enter', '全部': 'All', '是': 'Yes', '否': 'No', '男': 'Male', '女': 'Female', - '未知': 'Unknown', '未设置': 'Not set', '共': 'Total', '条': 'Items', '全选': 'Select all', '批量删除': 'Batch delete', - '已选': 'Selected', '更多': 'More', '展开': 'Expand', '收起': 'Collapse', '已完成': 'Completed', - '星期一': 'Monday', '星期二': 'Tuesday', '星期三': 'Wednesday', '星期四': 'Thursday', '星期五': 'Friday', - '星期六': 'Saturday', '星期日': 'Sunday', - '光伏机器人环境感知服务平台': 'PV Plant Intelligent Monitoring & O&M System', - '请选择电站': 'Please select a station', '全屏': 'Full Screen', '退出全屏': 'Exit Full Screen', '退出登录': 'Logout', - '电站地址': 'Station Address', '电站类型': 'Station Type', '运行状态': 'Running Status', '正常运行': 'Normal Running', - '地面电站': 'Ground Station', '1MW 光伏电站': '1MW PV Plant', '河南省林州': 'Linzhou, Henan', - '模块开发中': 'Module Developing', - '请输入账号': 'Enter account', '请输入密码': 'Enter password', '账号': 'Account', '密码': 'Password', - '登录': 'Login', '登录成功': 'Login success', '登录失败': 'Login failed', '欢迎': 'Welcome', - '用户协议': 'User Agreement', '隐私政策': 'Privacy Policy', '我已阅读并同意': 'I have read and agree', - '请阅读并同意用户协议': 'Please read and agree to the user agreement', - '总览首页': 'Overview', '设备管理': 'Device Management', '设备总览': 'Device Overview', '设备状态': 'Device Status', - '航线任务': 'Wayline Task', '机器人任务': 'Robot Task', '在线视频': 'Online Video', '实时监控': 'Real-time Monitor', - '告警中心': 'Alert Center', 'AI诊断分析': 'AI Diagnosis', '清洗优化': 'Cleaning Optimization', '工单任务': 'Work Order', - '报表中心': 'Report Center', '系统设置': 'System Settings', '日志管理': 'Log Management', '视频管理': 'Video Management', - '视频下载': 'Video Download', '用户管理': 'User Management', '角色管理': 'Role Management', '菜单管理': 'Menu Management', - '组织管理': 'Organization Management', '场站管理': 'Station Management', '通知策略页面': 'Notice Policy', - '数据与安全页面': 'Data & Safety', '个人中心': 'Profile', '请选择菜单': 'Please select a menu', - '当前功率': 'Current Power', '系统可用率': 'System Availability', '告警数量': 'Alert Count', - '节省运维成本': 'O&M Cost Saving', '日目标': 'Daily Target', '装机容量': 'Installed Capacity', '昨日': 'Yesterday', - '未处理': 'Unhandled', '已关闭': 'Closed', '本月累计节省': 'Monthly Accumulated Saving', '发电趋势': 'Generation Trend', - '辐照度与温度趋势': 'Irradiance & Temperature Trend', '逆变器效率对比': 'Inverter Efficiency', '运维任务进度': 'O&M Progress', - '电站概览': 'Station Overview', '近期巡检记录': 'Recent Inspection', 'AI 分析摘要': 'AI Analysis Summary', - '实时告警': 'Real-time Alerts', '设备在线状态': 'Device Online Status', '天气信息': 'Weather Info', - '清洗建议': 'Cleaning Suggestion', '实际': 'Actual', '预测': 'Predicted', '辐照度': 'Irradiance', '温度': 'Temperature', - '汇流箱': 'Combiner Box', '逆变器': 'Inverter', '巡检机器人': 'Inspection Robot', '异常': 'Abnormal', '维护中': 'Under Maintenance', - '生成清洗工单': 'Generate Cleaning Order', '请先选择电站': 'Please select station first', '清洗工单生成成功': 'Cleaning order created', - 'kWh': 'kWh', 'kWp': 'kWp', - '设备名称': 'Device Name', '设备类型': 'Device Type', '设备型号': 'Device Model', '在线状态': 'Online Status', - '最后心跳': 'Last Heartbeat', '电量': 'Battery', '信号强度': 'Signal Strength', '位置': 'Location', '控制': 'Control', - '上传航线': 'Upload Wayline', '下载航线': 'Download Wayline', '执行任务': 'Execute Task', '任务名称': 'Task Name', - '任务状态': 'Task Status', '飞行时间': 'Flight Time', '高度': 'Altitude', '速度': 'Speed', '距离': 'Distance', - '开始时间': 'Start Time', '结束时间': 'End Time', '无人机': 'UAV', '割草机': 'Mower', '机器人': 'Robot', '摄像头': 'Camera', - '在线': 'Online', '离线': 'Offline', '待机': 'Standby', '运行中': 'Running', '充电中': 'Charging', '空闲': 'Idle', - '忙碌': 'Busy', '故障': 'Fault', '设备控制': 'Device Control', '实时视频': 'Real-time Video', '起飞': 'Takeoff', - '降落': 'Land', '返航': 'Return', '暂停': 'Pause', '继续': 'Resume', '紧急停止': 'Emergency Stop', '前进': 'Forward', - '后退': 'Backward', '左转': 'Turn Left', '右转': 'Turn Right', '上升': 'Up', '下降': 'Down', '左旋': 'Rotate Left', - '右旋': 'Rotate Right', '云台俯仰': 'Gimbal Pitch', '云台偏航': 'Gimbal Yaw', '放大': 'Zoom In', '缩小': 'Zoom Out', - '创建者': 'Creator', '执行计划': 'Execution Plan', '周日': 'Sun', '周一': 'Mon', '周二': 'Tue', '周三': 'Wed', - '周四': 'Thu', '周五': 'Fri', '周六': 'Sat', '执行周期': 'Execution Cycle', '新建': 'New', '暂停中': 'Paused', - '执行成功': 'Finished', '执行失败': 'Failed', '确定要删除该任务吗?': 'Delete this task?', '确定要取消该任务吗?': 'Cancel this task?', - '确定要暂停该任务吗?': 'Pause this task?', '恢复': 'Resume', '今日机器人计划': 'Today Robot Plan', - '进行中': 'In Progress', '作业中机器人': 'Working Robots', '台': 'Units', '作业中': 'Working', '累计作业里程': 'Total Distance', - '较昨日': 'vs Yesterday', '任务完成率': 'Task Completion Rate', '异常告警': 'Abnormal Alerts', '次': 'Times', - '在线率': 'Online Rate', '良好': 'Good', '机器人路径规划与监控': 'Robot Path Planning & Monitor', - '清空实时轨迹': 'Clear Track', '清空规划航线': 'Clear Plan', '控制模式:': 'Control Mode:', '本地': 'Local', '远程': 'Remote', - '航向:': 'Heading:', '已初始化': 'Initialized', '未初始化': 'Uninitialized', '定位:': 'Location:', '视频:': 'Video:', - '任务池': 'Task Pool', '任务执行计划': 'Task Execution Plan', '历史任务': 'Task History', '创建任务': 'Create Task', - '开始日期': 'Start Date', '结束日期': 'End Date', '全部机器人': 'All Robots', '作业编排建议': 'Operation Suggestion', - '开始除草任务': 'Start Mowing', '预计耗时 2 小时,当前进度 45%': 'ETA 2h, progress 45%', '预定巡检任务': 'Scheduled Inspection', - '待审批,建议执行区域 C': 'Pending, suggest area C', '设备例行维护': 'Routine Maintenance', '所有割草机返回充电站': 'All mowers return', - '智能生成今日计划': 'Auto-generate Today Plan', '设备环境与状态': 'Device Environment & Status', '当前温度': 'Current Temp', - '环境湿度': 'Humidity', '定位精度': 'Position Accuracy', 'RTK 固定': 'RTK Fixed', '网络延迟': 'Network Latency', - '注意:区域 B 存在积水风险,建议避开': 'Caution: area B flooding risk, avoid', '预设路线': 'Preset Routes', - '搜索...': 'Search...', '未命名路线': 'Unnamed Route', '删除航线': 'Delete Route', '执行航线': 'Execute Route', - '任务看板': 'Task Board', '待执行': 'Pending', '正在执行...': 'Executing...', '已暂停': 'Paused', '执行路线任务': 'Execute Route Task', - '执行': 'Execute', '路线信息': 'Route Info', '路线名称:': 'Route Name:', '请选择执行设备': 'Select Device', '机器人全景视频 - ': 'Robot Panorama - ', - '设备编号': 'Device No', '路线': 'Route', '请填写:': 'Please fill:', '请选择执行时间': 'Select Exec Time', - '任务创建成功': 'Task Created', '创建失败': 'Create Failed', '创建任务异常': 'Create Task Error', '新建任务': 'New Task', - '请输入任务名称': 'Enter Task Name', '执行路线': 'Execute Route', '选择路线': 'Select Route', '重复计划': 'Repeat Plan', - '天': 'Day', '周': 'Week', '月': 'Month', '执行日期': 'Exec Date', '选择执行日期': 'Select Exec Date', '执行时间': 'Exec Time', - '保存任务': 'Save Task', - '视频监控': 'Video Monitor', '实时监控': 'Real-time Monitor', '视频墙': 'Video Wall', '视频下载': 'Video Download', - '截图': 'Snapshot', '录制': 'Record', '播放': 'Play', '停止': 'Stop', '静音': 'Mute', '取消静音': 'Unmute', '直播': 'Live', - '回放': 'Replay', '选择设备': 'Select Device', '选择摄像头': 'Select Camera', '暂无视频': 'No Video', '视频加载中...': 'Loading video...', - '画质': 'Quality', '流畅': 'Fluency', '标清': 'SD', '高清': 'HD', '超清': 'FHD', '下载时间': 'Download Time', - '文件大小': 'File Size', '文件名': 'File Name', '下载状态': 'Download Status', '下载中': 'Downloading', '已下载': 'Downloaded', - '下载失败': 'Download Failed', '监控模式': 'Monitor Mode', '单画面': 'Single', '四画面': 'Quad', '九画面': 'Nine', '十六画面': 'Sixteen', - '告警概览': 'Alert Overview', '实时告警': 'Real-time Alert', '历史告警': 'Alert History', '告警规则': 'Alert Rules', - '告警统计': 'Alert Statistics', '告警订阅': 'Alert Subscription', '告警级别': 'Alert Level', '告警类型': 'Alert Type', - '告警来源': 'Alert Source', '告警时间': 'Alert Time', '处理状态': 'Handle Status', '处理结果': 'Handle Result', - '处理时间': 'Handle Time', '处理人': 'Handler', '处理备注': 'Handle Remark', '处理': 'Handle', '关闭告警': 'Close Alert', - '确认告警': 'Confirm Alert', '导出告警': 'Export Alert', '严重': 'Critical', '重要': 'Important', '一般': 'General', - '提示': 'Info', '待处理': 'Pending', '已处理': 'Handled', '已恢复': 'Restored', '已忽略': 'Ignored', '无法处理': 'Unable', - '厂家处理中': 'Manufacturer', '误报': 'False Alarm', '告警总数': 'Total Alerts', '今日告警': 'Today Alerts', - '未处理告警': 'Unhandled Alerts', '处理率': 'Handle Rate', '无人机故障': 'UAV Fault', '割草机故障': 'Mower Fault', - '其他设备故障': 'Other Device Fault', '服务器故障': 'Server Failure', '系统错误': 'System Error', '告警趋势': 'Alert Trend', - '告警分布': 'Alert Distribution', - 'AI诊断分析': 'AI Diagnosis', '热成像分析': 'Thermal Analysis', '缺陷检测': 'Defect Detection', '温度分析': 'Temp Analysis', - '热斑检测': 'Hotspot Detection', '组件分析': 'Component Analysis', '组串分析': 'String Analysis', '逆变器分析': 'Inverter Analysis', - '上传图片': 'Upload Image', '开始分析': 'Start Analysis', '分析结果': 'Analysis Result', '缺陷类型': 'Defect Type', - '缺陷等级': 'Defect Level', '置信度': 'Confidence', '位置': 'Location', '处理建议': 'Suggestion', '异常温度': 'Abnormal Temp', - '最高温度': 'Max Temp', '平均温度': 'Avg Temp', '最低温度': 'Min Temp', '正常温度': 'Normal Temp', '热斑区域': 'Hotspot Area', - '风险等级': 'Risk Level', '高风险': 'High Risk', '中风险': 'Medium Risk', '低风险': 'Low Risk', '无风险': 'No Risk', - '检测到缺陷': 'Defects Detected', '未检测到缺陷': 'No Defect', '分析历史': 'Analysis History', '重新分析': 'Re-analyze', - '清洗优化': 'Cleaning Optimization', '清洗任务': 'Cleaning Task', '清洗建议': 'Cleaning Suggestion', '清洗计划': 'Cleaning Plan', - '清洗记录': 'Cleaning Record', '清洗效果': 'Cleaning Effect', '清洗前效率': 'Eff Before', '清洗后效率': 'Eff After', - '效率提升': 'Eff Improvement', '预计收益': 'Est Revenue', '清洗成本': 'Clean Cost', '净收益': 'Net Revenue', '优先级': 'Priority', - '建议日期': 'Suggest Date', '清洗区域': 'Area', '清洗方式': 'Method', '人工清洗': 'Manual', '机器人清洗': 'Robot', - '水清洗': 'Water', '干清洗': 'Dry', '状态': 'Status', '待清洗': 'Pending', '清洗中': 'Cleaning', '已清洗': 'Cleaned', - '已取消': 'Cancelled', '生成工单': 'Generate Order', '污损率': 'Soiling Rate', '功率损失': 'Power Loss', - '上次清洗日期': 'Last Clean', '建议清洗日期': 'Next Clean', - '工单任务': 'Work Order', '工单标题': 'Order Title', '工单类型': 'Order Type', '工单状态': 'Order Status', - '执行开始时间': 'Exec Start Time', '关联设备': 'Related Device', '关联区域': 'Related Area', '当前状态': 'Current Status', - '任务描述': 'Task Description', '附件素材': 'Attachments', '执行工单': 'Execute Order', '修改': 'Modify', '挂起': 'Suspend', - '完成': 'Complete', '派单': 'Dispatch', '修改工单': 'Modify Order', '工单派单': 'Dispatch Order', '近7天全部关联告警': '7d Alerts', - '请输入工单标题': 'Enter Title', '请选择工单类型': 'Select Type', '请选择优先级': 'Select Priority', '确认修改': 'Confirm Modify', - '确认派单': 'Confirm Dispatch', '确认执行': 'Confirm Execute', '确认完成': 'Confirm Complete', '选择接收人员': 'Select Receiver', - '请选择派单人员': 'Select Dispatcher', '选择执行设备': 'Select Device', '确定挂起?': 'Suspend?', '已创建': 'Created', - '执行中': 'In Progress', '已挂起': 'Suspended', '已完成': 'Completed', '待处理': 'Pending', '高': 'High', '中': 'Medium', '低': 'Low', - 'AI 建议与关联信息': 'AI Suggestion', '建议携带': 'Suggested Equipment', '红外热像设备': 'Thermal Camera', - '优先复检组件': 'Prioritize Recheck', '预计影响发电': 'Est Impact', '关联告警趋势': 'Alert Trend', '关联告警列表': 'Alert List', - '近7天无告警记录': 'No alerts in 7d', '近 7 天': '(7d)', '高告警': 'High', '中告警': 'Medium', '低告警': 'Low', - '巡检': 'Inspection', '检修': 'Maintenance', '清洗': 'Cleaning', '维修': 'Repair', '运维': 'O&M', 'AI': 'AI', - '割草机故障': 'Mower Fault', '无人机故障': 'UAV Fault', '光伏组件故障': 'PV Module Fault', '清洗': 'Clean', '维护': 'Maintain', - '维修': 'Repair', '其他': 'Other', - '报表中心': 'Report Center', '发电量报表': 'Generation Report', '设备报表': 'Device Report', '告警报表': 'Alert Report', - '工单报表': 'Work Order Report', '巡检报表': 'Inspection Report', '清洗报表': 'Cleaning Report', '效率报表': 'Efficiency Report', - '自定义报表': 'Custom Report', '日报': 'Daily', '周报': 'Weekly', '月报': 'Monthly', '季报': 'Quarterly', '年报': 'Yearly', - '日期范围': 'Date Range', '生成报表': 'Generate Report', '导出报表': 'Export Report', '总发电量': 'Total Generation', - '峰值功率': 'Peak Power', '平均功率': 'Avg Power', '告警总数': 'Total Alerts', '工单总数': 'Total Orders', '完成率': 'Completion', - '平均效率': 'Avg Efficiency', - '系统设置': 'System Settings', '基础设置': 'Basic Settings', '用户管理': 'User Management', '菜单管理': 'Menu Management', - '组织管理': 'Organization Management', '场站管理': 'Station Management', '通知策略': 'Notice Policy', '设备接入': 'Device Access', - '数据与安全': 'Data & Safety', '系统维护': 'System Maintenance', '在线用户': 'Online Users', '设备管理': 'Device Management', - '日志管理': 'Log Management', '视频管理': 'Video Management', '系统名称': 'System Name', '系统版本': 'System Version', - '系统描述': 'System Description', '默认语言': 'Default Language', '系统Logo': 'System Logo', '主题': 'Theme', '浅色': 'Light', - '深色': 'Dark', '跟随系统': 'Follow System', '用户账号': 'Username', '用户昵称': 'Nickname', '手机号': 'Phone', '邮箱': 'Email', - '角色': 'Role', '密码': 'Password', '不填则不修改': 'Leave blank to keep', '语言': 'Language', '分配角色': 'Assign Role', - '性别': 'Gender', '状态': 'Status', '新增用户': 'Add User', '编辑用户': 'Edit User', '重置密码': 'Reset Password', - '确定将密码重置为 123456 吗?': 'Reset password to 123456?', '密码已重置为:123456': 'Password reset to 123456', - '中文': 'Chinese', '英语': 'English', '菜单名称': 'Menu Name', '菜单类型': 'Menu Type', '路由地址': 'Route Path', - '菜单图标': 'Menu Icon', '排序': 'Sort', '权限标识': 'Permission', '上级菜单': 'Parent Menu', '目录': 'Directory', - '菜单': 'Menu', '按钮': 'Button', '组织名称': 'Org Name', '组织类型': 'Org Type', '上级组织': 'Parent Org', '负责人': 'Leader', - '联系电话': 'Contact', '场站名称': 'Station Name', '场站类型': 'Station Type', '场站地址': 'Station Address', - '装机容量': 'Capacity', '场站状态': 'Station Status', '经度': 'Longitude', '纬度': 'Latitude', '时区': 'Timezone', - '日志类型': 'Log Type', '登录日志': 'Login Log', '操作日志': 'Operation Log', '错误日志': 'Error Log', '系统日志': 'System Log', - '操作人': 'Operator', '操作内容': 'Content', '操作时间': 'Time', 'IP地址': 'IP', '视频名称': 'Video Name', '视频地址': 'Video URL', - '视频类型': 'Video Type', '视频状态': 'Video Status', '备份数据库': 'Backup DB', '清除缓存': 'Clear Cache', - '系统信息': 'System Info', '磁盘使用': 'Disk', '内存使用': 'Memory', 'CPU使用率': 'CPU', '服务器状态': 'Server Status', - '运行时长': 'Uptime', '接入协议': 'Protocol', '接入状态': 'Status', '接入时间': 'Time', 'SN码': 'SN', '验证码': 'Verify Code', - '绑定设备': 'Bind Device', '错误编码': 'Error Code', '错误名称': 'Error Name', '错误来源': 'Error Source', '错误等级': 'Error Level', - '错误描述': 'Error Desc', '校验字段': 'Check Field', '对比规则': 'Compare Rule', '对比数值': 'Compare Value', - '区间最小值': 'Min', '区间最大值': 'Max', '请输入错误编码': 'Enter Error Code', '请输入错误名称': 'Enter Error Name', - '请选择来源': 'Select Source', '请选择等级': 'Select Level', '请选择错误来源': 'Select Error Source', - '请选择错误等级': 'Select Error Level', '请填写校验字段名': 'Enter Field', '请选择对比规则': 'Select Rule', - '请填写最小值': 'Enter Min', '请填写最大值': 'Enter Max', '请填写对比值': 'Enter Value', - '例如:ERR-ROBOT-001': 'e.g. ERR-ROBOT-001', '如:battery、speed、temperature': 'e.g. battery, speed', - '最小值': 'Min', '最大值': 'Max', '数值/文本,多个用逗号分隔': 'comma separated', '详细描述触发该错误的场景': 'Describe scenario', - '出现该错误后的处理方案': 'Handling plan', '新增错误规则': 'Add Error Rule', '编辑错误规则': 'Edit Error Rule', - '查看错误规则详情': 'View Error Rule', '确定要删除错误 "': 'Delete error "', '获取错误列表失败': 'Get error list failed', - '操作失败': 'Operation failed', - '个人中心': 'Profile', '获取个人信息失败': 'Get profile failed', '修改成功': 'Modified', '修改失败': 'Modify failed', - '密码修改成功': 'Password changed', '头像上传成功': 'Avatar uploaded', '上传失败': 'Upload failed', - '两次输入的密码不一致': 'Passwords mismatch', '更换头像': 'Change Avatar', '用户名称': 'Username', '用户昵称': 'Nickname', - '手机号码': 'Phone', '用户邮箱': 'Email', '所属角色': 'Role', '旧密码': 'Old Password', '新密码': 'New Password', - '确认密码': 'Confirm Password', '请输入用户昵称': 'Enter Nickname', '请输入手机号码': 'Enter Phone', '保存修改': 'Save Changes', - '确认修改': 'Confirm Modify', - '用户管理': 'User Management', '用户账号': 'Username', '用户昵称': 'Nickname', '手机号': 'Phone', '邮箱': 'Email', - '角色': 'Role', '状态': 'Status', '操作': 'Actions', '编辑': 'Edit', '删除': 'Delete', '用户账号': 'Username', - '用户昵称': 'Nickname', '手机号码': 'Phone', '密码': 'Password', '语言': 'Language', '分配角色': 'Assign Role', - '状态': 'Status', '性别': 'Gender', '不填则不修改': 'Leave blank', '中文': 'Chinese', '英语': 'English', '正常': 'Normal', - '停用': 'Disabled', '男': 'Male', '女': 'Female', '未知': 'Unknown', '批量删除(已选 ': 'Batch delete (', '重置密码': 'Reset Password', - '密码已重置为:123456': 'Password reset to 123456', '确定将密码重置为 123456 吗?': 'Reset to 123456?', - '角色管理': 'Role Management', '新增角色': 'Add Role', '角色名称': 'Role Name', '权限字符': 'Role Key', '排序': 'Sort', - '状态': 'Status', '备注': 'Remark', '操作': 'Actions', '编辑': 'Edit', '删除': 'Delete', '分配权限': 'Assign Permissions', - '数据权限': 'Data Scope', '菜单权限': 'Menu Permissions', '角色描述': 'Role Description', '正常': 'Normal', '停用': 'Disabled', - '异常': 'Abnormal', - '登录已过期,请重新登录': 'Session expired, please login again', '网络异常,请稍后重试': 'Network error, retry later', - '晴': 'Sunny', '多云': 'Cloudy', '阴': 'Overcast', '雨': 'Rainy', -}; - -// ---- collect referenced keys ---- -const refRegex = /(?:i18n\.t|[^a-zA-Z]t)\(\s*['"`]([a-zA-Z][a-zA-Z0-9_.]*?)['"`]/g; -const files = walk(root); -const refKeys = new Set(); -for (const f of files) { - const c = fs.readFileSync(f, 'utf8'); - let m; - while ((m = refRegex.exec(c))) refKeys.add(m[1]); -} - -// ---- helpers ---- -function camelToWords(s) { - return s.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').split(/[\s._]+/).filter(Boolean); -} -function inferZhFromKey(key) { - const leaf = key.split('.').pop(); - const words = camelToWords(leaf).map(w => w.toLowerCase()); - const out = []; - for (let i = 0; i < words.length; i++) { - const w = words[i]; - let zh = lex[w] || tokZh[w] || (w.length <= 2 && w === w.toUpperCase() ? w : ''); - if (w === 'no') zh = (i > 0 && NOUNS_WITH_NO.has(words[i - 1])) ? '编号' : '无'; - if (!zh) continue; - if (out[out.length - 1] !== zh) out.push(zh); - } - return out.join(''); -} -function inferEnFromKey(key) { - const leaf = key.split('.').pop(); - const words = camelToWords(leaf); - const STOP = new Set(['of', 'and', 'the', 'to', 'in', 'on', 'with', 'a', 'an', 'or', 'for']); - const out = []; - for (let i = 0; i < words.length; i++) { - let w = words[i]; - if (w.length <= 2 || w === w.toUpperCase()) { /* keep acronym */ } - else if (i > 0 && STOP.has(w.toLowerCase())) w = w.toLowerCase(); - else w = w.charAt(0).toUpperCase() + w.slice(1); - if (out[out.length - 1] !== w) out.push(w); - } - return out.join(' '); -} -function translateZh(zh) { - if (zhEn[zh]) return zhEn[zh]; - // greedy phrase substitution for multi-char matches - let s = zh; - // sort keys by length desc for greedy match - const keys = Object.keys(zhEn).sort((a, b) => b.length - a.length); - for (const k of keys) { if (k.length >= 2) s = s.split(k).join('\u0001' + zhEn[k] + '\u0001'); } - // now translate remaining single chars / unknown - const segs = s.split('\u0001'); - const res = segs.map(seg => { - if (zhEn[seg]) return zhEn[seg]; - // try per-char? skip unknown chars to avoid garbage - return seg; - }); - return res.join(' ').replace(/\s+/g, ' ').trim(); -} - -// ---- determine additions ---- -const zhAdd = {}; // ns -> {key: val} -const enAdd = {}; -const zhCjk = {}; -const enCjk = {}; -function addKey(fullKey, zhVal, enVal, isCjk) { - const dot = fullKey.indexOf('.'); - const ns = dot > -1 ? fullKey.slice(0, dot) : ''; - const leaf = dot > -1 ? fullKey.slice(dot + 1) : fullKey; - const zmap = isCjk ? zhCjk : zhAdd; - const emap = isCjk ? enCjk : enAdd; - zmap[ns] = zmap[ns] || {}; - emap[ns] = emap[ns] || {}; - if (!(fullKey in zhMap)) zmap[ns][leaf] = zhVal; - if (!(fullKey in enMap)) emap[ns][leaf] = enVal; -} - -// referenced keys missing -let missingCount = 0; -for (const k of refKeys) { - if (!(k in zhMap) && !(k in enMap)) { - missingCount++; - addKey(k, inferZhFromKey(k), inferEnFromKey(k)); - } -} - -// hardcoded chinese -> keys (reuse existing by value; else new key under a file-based ns) -// map file path to namespace -function nsForFile(f) { - const rel = f.replace(root + '\\', '').replace(/\\/g, '/'); - const base = path.basename(f).replace(/\.(tsx|ts|jsx|js)$/, ''); - // try to infer from existing namespaces by matching folder/file - const lower = rel.toLowerCase(); - if (lower.includes('systemsetting')) return 'systemSetting'; - if (lower.includes('devices/') || lower.includes('device')) return 'devices'; - if (lower.includes('alerts')) return 'alerts'; - if (lower.includes('aianalysis') || lower.includes('aidiagnos')) return 'aiAnalysis'; - if (lower.includes('clean')) return 'clean'; - if (lower.includes('report')) return 'report'; - if (lower.includes('workorder')) return 'workOrder'; - if (lower.includes('login')) return 'login'; - if (lower.includes('profile')) return 'profile'; - if (lower.includes('users')) return 'users'; - if (lower.includes('roles')) return 'roles'; - if (lower.includes('home')) return 'home'; - if (lower.includes('video')) return 'video'; - if (lower.includes('router') || lower.includes('layout')) return 'layout'; - return 'page'; -} - -const CJK = /[一-鿿]/; -let cjkCount = 0; -const cjkSeen = new Set(); -for (const f of files) { - const lines = fs.readFileSync(f, 'utf8').split('\n'); - for (const line of lines) { - const trimmed = line.trim(); - if (trimmed.startsWith('//') || trimmed.startsWith('*')) continue; - if (/console\./.test(line)) continue; - if (!CJK.test(line)) continue; - // extract CJK substrings that look like user-facing text (skip pure comment lines) - const matches = line.match(/[一-鿿][一-鿿,。、::()()\sA-Za-z0-9%·\-/]*[一-鿿]/g); - if (!matches) continue; - for (const m of matches) { - const txt = m.trim(); - if (txt.length < 2) continue; - if (cjkSeen.has(txt)) continue; - cjkSeen.add(txt); - cjkCount++; - // reuse existing key if zh value equals this - let reuseKey = null; - for (const ek of Object.keys(zhMap)) { if (zhMap[ek] === txt) { reuseKey = ek; break; } } - if (reuseKey) continue; // already have it - const ns = nsForFile(f); - // build a key from file base + counter - const base = path.basename(f).replace(/\.(tsx|ts|jsx|js)$/, '').replace(/[^a-zA-Z0-9]/g, ''); - const key = ns + '.' + base + '_' + (cjkSeen.size); - addKey(key, txt, translateZh(txt), true); - } - } -} - -console.log('Referenced keys total:', refKeys.size); -console.log('Missing referenced keys (added):', missingCount); -console.log('Hardcoded CJK unique strings seen:', cjkCount); -console.log('New keys to add (zh):', Object.values(zhAdd).reduce((s, o) => s + Object.keys(o).length, 0)); - -// save additions for next step -fs.writeFileSync('tmp_missing.json', JSON.stringify({ zhAdd, enAdd }, null, 2)); -fs.writeFileSync('tmp_cjk.json', JSON.stringify({ zhCjk, enCjk }, null, 2)); -console.log('Wrote tmp_missing.json and tmp_cjk.json'); diff --git a/tmp_inject.cjs b/tmp_inject.cjs deleted file mode 100644 index 602dc7b..0000000 --- a/tmp_inject.cjs +++ /dev/null @@ -1,64 +0,0 @@ -// Inject missing keys into zh/index.ts and en/index.ts, preserving structure. -const fs = require('fs'); - -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { - p = p || ''; r = r || {}; - for (const k of Object.keys(o)) { - const key = p ? p + '.' + k : k; - if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); - else r[key] = o[k]; - } - return r; -} -function esc(v) { - return String(v).replace(/\\/g, '\\\\').replace(/'/g, "\\'"); -} - -const adds = require('./tmp_missing.json'); -const zhAdd = adds.zhAdd, enAdd = adds.enAdd; - -function inject(file, addsMap, label) { - const text = fs.readFileSync(file, 'utf8'); - const lines = text.split('\n'); - // find namespaces present - const present = new Set(); - for (const ns of Object.keys(addsMap)) { - let nsStart = -1; - for (let i = 0; i < lines.length; i++) { - if (/^\t[A-Za-z_][A-Za-z0-9_]*:\s*\{/.test(lines[i]) && lines[i].trim().startsWith(ns + ':')) { nsStart = i; break; } - } - if (nsStart < 0) { console.log(' [WARN] namespace not found, skip: ' + ns); continue; } - // compute closing brace line by brace depth - let depth = 0; let closeLine = -1; - for (let i = nsStart; i < lines.length; i++) { - const op = (lines[i].match(/\{/g) || []).length; - const cl = (lines[i].match(/\}/g) || []).length; - depth += op - cl; - if (depth === 0) { closeLine = i; break; } - } - if (closeLine < 0) { console.log(' [WARN] no close for ' + ns); continue; } - // build insertion block (sorted) - const keys = Object.keys(addsMap[ns]).sort(); - const block = keys.map(k => '\t\t' + k + ": '" + esc(addsMap[ns][k]) + "',").join('\n'); - lines.splice(closeLine, 0, block); - console.log(' ' + ns + ': +' + keys.length + ' keys'); - } - fs.writeFileSync(file, lines.join('\n'), 'utf8'); - // verify parse - const obj = load(file); - const map = flat(obj); - console.log(' ' + label + ' parsed OK, total flat keys: ' + Object.keys(map).length); -} - -console.log('Injecting into zh/index.ts ...'); -inject('src/locales/zh/index.ts', zhAdd, 'zh'); -console.log('Injecting into en/index.ts ...'); -inject('src/locales/en/index.ts', enAdd, 'en'); -console.log('Done.'); diff --git a/tmp_inject2.cjs b/tmp_inject2.cjs deleted file mode 100644 index c1cdba4..0000000 --- a/tmp_inject2.cjs +++ /dev/null @@ -1,75 +0,0 @@ -// Inject the hardcoded-Chinese keys (tmp_newkeys.json) into locale files, -// preserving formatting by inserting before each namespace's closing brace. -const fs = require('fs'); -const path = require('path'); - -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { p = p || ''; r = r || {}; for (const k of Object.keys(o)) { const key = p ? p + '.' + k : k; if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); else r[key] = o[k]; } return r; } - -const newKeys = JSON.parse(fs.readFileSync('tmp_newkeys.json', 'utf8')); -const zhFlat = flat(load('src/locales/zh/index.ts')); -const enFlat = flat(load('src/locales/en/index.ts')); - -function esc(v) { return String(v).replace(/\\/g, '\\\\').replace(/'/g, "\\'"); } - -function insertIntoNs(text, ns, entries, indentUnit) { - // entries: [[base, value], ...] for keys NOT already present - const re = new RegExp('(\\n[ \\t]*)' + ns + ':\\s*\\{'); - const m = re.exec(text); - if (!m) return null; - let i = m.index + m[0].length; - let depth = 1, j = i; - while (j < text.length && depth > 0) { const c = text[j]; if (c === '{') depth++; else if (c === '}') depth--; j++; } - const closeIdx = j - 1; - const indent = m[1]; - const childIndent = indent + indentUnit; - const qk = (k) => /^[0-9]/.test(k) ? "'" + k + "'" : k; - const block = entries.map(([k, v]) => childIndent + qk(k) + ": '" + esc(v) + "',").join('\n'); - return text.slice(0, closeIdx) + block + '\n' + text.slice(closeIdx); -} - -function addNamespace(text, ns, entries, indentUnit) { - // find top-level const X = { ... } closing brace - const m = /const\s+\w+\s*=\s*\{/.exec(text); - let i = m.index + m[0].length; - let depth = 1, j = i; - while (j < text.length && depth > 0) { const c = text[j]; if (c === '{') depth++; else if (c === '}') depth--; j++; } - const closeIdx = j - 1; - const indent = '\n' + indentUnit; - const childIndent = indent + indentUnit; - const qk = (k) => /^[0-9]/.test(k) ? "'" + k + "'" : k; - const block = entries.map(([k, v]) => childIndent + qk(k) + ": '" + esc(v) + "',").join('\n'); - const nsBlock = indent + ns + ': {' + '\n' + block + '\n' + indent + '}'; - return text.slice(0, closeIdx) + ',' + nsBlock + text.slice(closeIdx); -} - -for (const file of ['src/locales/zh/index.ts', 'src/locales/en/index.ts']) { - let text = fs.readFileSync(file, 'utf8'); - const flatMap = file.includes('zh') ? zhFlat : enFlat; - const src = file.includes('zh') ? newKeys.zh : newKeys.en; - let added = 0; - for (const ns of Object.keys(src)) { - const entries = []; - for (const base of Object.keys(src[ns])) { - const key = ns + '.' + base; - if (key in flatMap) continue; // already present - entries.push([base, src[ns][base]]); - } - if (!entries.length) continue; - const before = text; - let res = insertIntoNs(text, ns, entries, '\t'); - if (res === null) { - // namespace missing (e.g., 'page') -> create it - res = addNamespace(text, ns, entries, '\t'); - } - if (res !== null && res !== before) { text = res; added += entries.length; } - } - fs.writeFileSync(file, text, 'utf8'); - console.log(file + ' -> added ' + added + ' keys'); -} diff --git a/tmp_inspect.cjs b/tmp_inspect.cjs deleted file mode 100644 index b74ac08..0000000 --- a/tmp_inspect.cjs +++ /dev/null @@ -1,9 +0,0 @@ -const a = require('./tmp_missing.json'); -const z = a.zhAdd, e = a.enAdd; -const ns = ['devices','alerts','aiAnalysis','clean','workOrder','systemSetting','home']; -for (const n of ns) { - const zk = z[n] || {}, ek = e[n] || {}; - const keys = Object.keys(zk).slice(0, 14); - console.log('=== ' + n + ' (' + Object.keys(zk).length + ') ==='); - for (const k of keys) { console.log(' ' + k + ' => ZH[' + zk[k] + '] EN[' + ek[k] + ']'); } -} diff --git a/tmp_missing.json b/tmp_missing.json deleted file mode 100644 index 0571e8a..0000000 --- a/tmp_missing.json +++ /dev/null @@ -1,2202 +0,0 @@ -{ - "zhAdd": { - "alerts": { - "processing": "处理中", - "alarmNo": "告警编号", - "alarmTitle": "告警标题", - "alarmContent": "告警内容", - "alertDetail": "告警详情", - "rootCause": "根原因", - "recommendedAction": "建议操作", - "notifySubscription": "通知订阅", - "sms": "短信", - "dingTalk": "钉钉通话", - "email": "邮件", - "handleSuccess": "处理成功", - "handleFail": "处理失败", - "exportFileName": "导出文件名称", - "reportValue": "报表值", - "noAlarmToCreateOrder": "无告警到创建工单", - "orderFromAlarm": "工单从告警", - "orderCreated": "工单已创建", - "orderCreateFail": "工单创建失败", - "todayTotalAlerts": "今日总告警", - "trendNoChange": "趋势无变更", - "trendUp": "趋势上升", - "trendDown": "趋势下降", - "trendZero": "趋势零", - "yesterdayValue": "昨日值", - "todayCriticalAlerts": "今日严重告警", - "todayPending": "今日待处理", - "todayClosed": "今日已关闭", - "alertTypeProportion": "告警类型比例", - "alertStatusStatistics": "告警状态统计", - "sourceDevice": "来源设备", - "occurTime": "发生时间", - "alertDescription": "告警描述", - "contactHandler": "联系处理人", - "handleOperation": "处理操作", - "pleaseSelectHandleStatus": "请选择处理状态", - "pleaseSelectHandleResult": "请选择处理结果", - "pleaseInputHandleRemark": "请输入处理备注", - "confirmHandle": "确认处理", - "modifyAlert": "修改告警", - "pleaseInputAlarmTitle": "请输入告警标题", - "pleaseSelectAlertLevel": "请选择告警级别", - "pleaseSelectAlertType": "请选择告警类型", - "pleaseInputAlarmContent": "请输入告警内容", - "newOrder": "新工单", - "planStartTime": "计划开始时间", - "pleaseSelectPlanStartTime": "请选择计划开始时间", - "confirmCreateOrder": "确认创建工单", - "mockDeviceSensor": "模拟设备传感器", - "mockTempExceed": "模拟温度超限", - "mockDeviceCamera": "模拟设备摄像头", - "mockVideoSignalLost": "模拟视频信号丢失", - "mockDeviceBattery": "模拟设备电量", - "mockBatteryLow": "模拟电量低", - "level": "级别", - "content": "内容", - "searchDeviceContent": "搜索设备内容", - "mockRuleTemp": "模拟规则温度", - "mockRuleBattery": "模拟规则电量", - "deviceSensor": "设备传感器", - "deviceBattery": "设备电量", - "ruleName": "规则名称", - "triggerCondition": "触发条件", - "ruleConfig": "规则配置", - "addRule": "新增规则", - "editRule": "编辑规则", - "ruleNamePlaceholder": "规则名称占位", - "relatedModel": "关联模型", - "monitorProperty": "监控属性", - "compareSymbol": "对比符号", - "threshold": "阈值", - "thresholdPlaceholder": "阈值占位", - "sevenDayTrend": "七日趋势", - "criticalAlert": "严重告警", - "importantAlert": "重要告警", - "generalAlert": "一般告警", - "infoAlert": "提示告警", - "alertLevelDistribution": "告警级别分布", - "mockSubOps": "模拟订阅运维", - "mockSubAdmin": "模拟订阅管理员", - "mockSubDevice": "模拟订阅设备", - "appPush": "应用推送", - "subscriptionName": "订阅名称", - "notifyChannel": "通知渠道", - "searchSubscription": "搜索订阅", - "addSubscription": "新增订阅", - "editAlertSubscription": "编辑告警订阅", - "addAlertSubscription": "新增告警订阅", - "pleaseInputSubscriptionName": "请输入订阅名称", - "allDevices": "全部设备", - "allLevels": "全部级别", - "pleaseSelectChannel": "请选择渠道", - "subtitle": "字幕" - }, - "common": { - "loadFailed": "加载失败", - "loadDetailFailed": "加载详情失败", - "requestError": "请求错误", - "deviceId": "设备ID", - "pleaseInputDeviceId": "请输入设备ID", - "timeRange": "时间范围", - "enabled": "已启用", - "modify": "修改", - "apiCallFail": "API呼叫失败", - "quantity": "数量", - "detail": "详情", - "storeValue": "存储值", - "operationFailed": "操作失败", - "submitFail": "提交失败", - "confirmDeleteRecord": "确认删除记录", - "deleteIrreversible": "删除不可逆", - "working": "作业中", - "settings": "设置" - }, - "workOrder": { - "generateOrder": "生成工单", - "newOrders": "新工单", - "dispatchSuccess": "派单成功", - "dispatchFail": "派单失败", - "dispatchRequestError": "派单请求错误", - "todayNewOrders": "今日新工单", - "vsYesterday": "较昨日", - "pendingOrders": "待处理工单", - "highPriority": "高优先级", - "runningOrders": "运行中工单", - "onTimeRate": "开时间率", - "completedOrders": "已完成工单", - "monthlyTotal": "每月总", - "avgHandleTime": "平均处理时间", - "hourUnit": "小时单位", - "vsLastWeek": "较最后周", - "aiSuggestedOrders": "AI建议工单", - "orderUnit": "工单单位", - "autoGeneratedToday": "自动已生成今日", - "getListFailed": "获取列表失败", - "pleaseSelectOrder": "请选择工单", - "completeSuccess": "完成成功", - "completeFail": "完成失败", - "getDetailFailed": "获取详情失败", - "pleaseSelectOneOrder": "请选择一工单", - "modifySuccess": "修改成功", - "modifyFail": "修改失败", - "executeSuccess": "执行成功", - "executeFail": "执行失败", - "suspendSuccess": "暂停成功", - "suspendFail": "暂停失败", - "invalidOrder": "无效工单", - "pleaseSelectOrderToDelete": "请选择工单到删除", - "batchDeleteSuccess": "批量删除成功", - "batchDeleteFail": "批量删除失败", - "orderNo": "工单编号", - "taskManagement": "任务管理", - "overview": "概览", - "timeRange": "时间范围", - "keyword": "关键词", - "pleaseInputOrderNoOrTitle": "请输入工单编号或标题", - "list": "列表", - "totalWithCount": "总带数量", - "confirmBatchDelete": "确认批量删除", - "batchExecute": "批量执行", - "statusDistribution": "状态分布", - "totalCount": "总数量", - "scheduleCalendarView": "计划日历查看", - "todaySuffix": "今日后缀", - "noScheduledOrders": "无已计划工单", - "scheduledOrderList": "已计划工单列表", - "planStartTime": "计划开始时间", - "detail": "详情", - "noTitle": "无标题", - "nearItems": "附近项", - "pleaseInputTaskDesc": "请输入任务描述", - "pendingDispatch": "待处理派单", - "pleaseSelectPerson": "请选择人员", - "selectedOrders": "已选工单", - "pleaseSelectExecuteDevice": "请选择执行设备", - "pleaseInputResult": "请输入结果", - "pleaseSelectResult": "请选择结果", - "handledCompleted": "已处理已完成", - "fixed": "固定", - "noActionNeeded": "无操作需要", - "issueClosed": "问题已关闭", - "pleaseInputHandleRemark": "请输入处理备注", - "alarmNo": "告警编号", - "alarmTitle": "告警标题" - }, - "devices": { - "working": "作业中", - "videoConfigured": "视频已配置", - "noVideo": "无视频", - "connectionFailed": "连接失败", - "permissionRequestTitle": "权限请求标题", - "requestControlPermission": "请求控制权限", - "selectNoDrone": "选择无无人机", - "commandIssued": "指令已下发", - "commandFailed": "指令失败", - "apiRequestError": "API请求错误", - "selectTaskFirst": "选择任务先", - "taskExecutedSuccess": "任务已执行成功", - "taskSuspended": "任务已暂停", - "taskResumedSuccess": "任务已恢复成功", - "taskReturnedHome": "任务已返航首页", - "taskStatusUpdateSuccess": "任务状态更新成功", - "operationApiError": "操作API错误", - "permissionObtained": "权限已获取", - "controlRequestContent": "控制请求内容", - "unknownPlatform": "未知平台", - "obstacleDetected": "障碍已检测", - "unknownObject": "未知对象", - "noTaskDetail": "无任务详情", - "fetchDetailError": "获取详情错误", - "deviceInfoError": "设备提示错误", - "pleaseLoginFirst": "请登录先", - "loginInfoExpired": "登录提示已过期", - "otherWebControlling": "其他网页控制中", - "networkErrorRetry": "网络错误重试", - "routeLoaded": "路线已加载", - "droneFallbackName": "无人机兜底名称", - "droneAirspace": "无人机空域", - "droneWayline": "无人机航线", - "onStandby": "开待机", - "permissionRequesting": "权限请求中", - "noWaylineData": "无航线数据", - "fetchWaylineFailed": "获取航线失败", - "waypointsAdded": "航点已添加", - "waypointDeleted": "航点已删除", - "allWaypointsCleared": "全部航点已清空", - "pleaseSelectWayline": "请选择航线", - "selectTaskStartTime": "选择任务开始时间", - "createSuccess": "创建成功", - "apiErrorCheck": "API错误检查", - "noWaypointsToSave": "无航点到保存", - "planeNoLocalRoute": "飞机无本地路线", - "routeSavedLocal": "路线已保存本地", - "waylineLabel": "航线标签", - "fetchWaylineListFailed": "获取航线列表失败", - "routeLoadedWithName": "路线已加载带名称", - "gpsTaskIssued": "GPS任务已下发", - "issueTaskFirst": "问题任务先", - "taskPaused": "任务已暂停", - "taskStarted": "任务已开始", - "taskStopped": "任务已停止", - "viewFront": "查看前", - "viewBack": "查看返回", - "viewLeft": "查看左", - "viewRight": "查看右", - "viewTop": "查看顶部", - "deviceList": "设备列表", - "onlineDevices": "在线设备", - "inspectionMachine": "巡检机器", - "supportsGpsPlan": "支持GPS计划", - "supportsRemoteGpsPlan": "支持远程GPS计划", - "batteryWithValue": "电量带值", - "videoLinkConfigured": "视频链接已配置", - "batteryCapacity": "电量容量", - "flightAltitude": "飞行高度", - "signalSatellite": "信号卫星", - "envWindSpeed": "环境风速度", - "rtkStatus": "RTK状态", - "fixed": "固定", - "notFixed": "未固定", - "remoteControlAndSituation": "远程控制与态势", - "gpsPlanning": "GPS规划", - "leftWheelDrive": "左轮驱动", - "normalRunning": "正常运行中", - "realtimeSpeed": "实时速度", - "workingCurrent": "作业中当前", - "rightWheelDrive": "右轮驱动", - "gpsWaypointPlan": "GPS航点计划", - "savePlan": "保存计划", - "clearRoute": "清空路线", - "droneWaylineTask": "无人机航线任务", - "taskWaitingStart": "任务等待中开始", - "taskStartFailure": "任务开始失败", - "taskTerminated": "任务已终止", - "taskTimeout": "任务超时", - "noWaylineTask": "无航线任务", - "robotTaskData": "机器人任务数据", - "waypointList": "航点列表", - "noWaypoints": "无航点", - "waypoint": "航点", - "robotLocalRoutes": "机器人本地路线", - "noSavedRoutes": "无已保存路线", - "waypointsCount": "航点数量", - "issueTask": "问题任务", - "suspendTask": "暂停任务", - "cancelReturnHome": "取消返航首页", - "videoAndConfig": "视频与配置", - "noVideoStream": "无视频流", - "waylineDetail": "航线详情", - "taskIdLabel": "任务ID标签", - "waylineUuidLabel": "航线UUID标签", - "airportSnLabel": "机场序列号标签", - "landingDockSnLabel": "降落停靠序列号标签", - "returnHomeAltitudeLabel": "返航首页高度标签", - "returnHomeModeLabel": "返航首页模式标签", - "waylinePrecisionLabel": "航线精度标签", - "lostControlActionLabel": "丢失控制操作标签", - "resumeFromBreakpointLabel": "恢复从断点标签", - "taskTypeLabel": "任务类型标签", - "repeatModeLabel": "重复模式标签", - "minBatteryLabel": "最小电量标签", - "currentWaypointLabel": "当前航点标签", - "rthOptimal": "返航最优", - "rthPreset": "返航预设", - "gpsMode": "GPS模式", - "rtkHighPrecision": "RTK高精度", - "modeAuto": "模式自动", - "modeManual": "模式手动", - "taskImmediate": "任务立即", - "taskTimed": "任务定时", - "taskRecurring": "任务重复", - "taskContinuous": "任务连续", - "repeatNone": "重复无", - "repeatDaily": "重复每日", - "repeatWeekly": "重复每周", - "repeatMonthlyByDate": "重复每月按日期", - "repeatMonthlyByWeek": "重复每月按周", - "taskResumed": "任务已恢复", - "taskEnded": "任务已结束", - "taskTimedOut": "任务定时外", - "createWaylineTask": "创建航线任务", - "waylineName": "航线名称", - "inputWaylineName": "输入航线名称", - "selectWayline": "选择航线", - "autoFetch": "自动获取", - "optionalEmpty": "可选空", - "gpsModeDesc": "GPS模式描述", - "rtkModeDesc": "RTK模式描述", - "autoResumeFromBreakpoint": "自动恢复从断点", - "resumeAuto": "恢复自动", - "resumeManual": "恢复手动", - "minExecBatteryLabel": "最小执行电量标签", - "taskWaylineTypeLabel": "任务航线类型标签", - "taskStartTimeLabel": "任务开始时间标签", - "selectStartTimePlaceholder": "选择开始时间占位", - "taskEndTimeLabel": "任务结束时间标签", - "repeatInterval": "重复间隔", - "boundDrone": "边界无人机", - "airportCode": "机场码", - "tlStartCleaning": "时间线开始清洗", - "timelineStatusStart": "时间线状态开始", - "tlStartInspection": "时间线开始巡检", - "tlStartMowing": "时间线开始除草", - "tlStandbyReady": "时间线待机就绪", - "timelineStatusReady": "时间线状态就绪", - "tlReturnSupply": "时间线返航补给", - "timelineStatusReturn": "时间线状态返航", - "tlFinishInspection": "时间线完成巡检", - "timelineStatusComplete": "时间线状态完成", - "logCommand": "日志指令", - "logDesc1": "日志", - "logDesc2": "日志", - "logDesc3": "日志", - "logDesc4": "日志", - "logDesc5": "日志", - "logEvent": "日志事件", - "logDesc6": "日志", - "logLevelLowBattery": "日志级别低电量", - "aliasRobotOnly": "别名机器人仅", - "aliasNotEmpty": "别名未空", - "aliasModifiedSuccess": "别名已修改成功", - "aliasModifyFail": "别名修改失败", - "aliasApiError": "别名API错误", - "noPermission": "无权限", - "stationStatus": "电站状态", - "dispatchableCount": "可派单数量", - "unitTai": "单位台", - "robotExecutingCount": "机器人执行中数量", - "mowingRobot": "除草机器人", - "robotInTaskCount": "机器人内任务数量", - "washDrone": "清洗无人机", - "unitJia": "单位", - "standbyCount": "待机数量", - "todayTaskExecute": "今日任务执行", - "completionRate": "完成率", - "unknownDevice": "未知设备", - "modeWorking": "模式作业中", - "modeDebugLocal": "模式调试本地", - "modeDebugRemote": "模式调试远程", - "modeUpgrading": "模式升级中", - "positionInStation": "位置内电站", - "taskStandby2": "任务", - "commGood": "通信良好", - "taskStarted2": "任务", - "taskPaused2": "任务", - "returnCommandSent": "返航指令已发送", - "rechargeCommandSent": "充电指令已发送", - "emergencyStopTriggered": "紧急停止已触发", - "rainNo": "雨无", - "equipmentOverview": "设备概览", - "equipmentSituationMap": "设备态势地图", - "legendTitle": "图例标题", - "inspectionRoute": "巡检路线", - "robotPath": "机器人路径", - "cleaningPath": "清洗路径", - "robotPosition": "机器人位置", - "dronePosition": "无人机位置", - "supplyChargePoint": "补给充电点", - "obstacleForbiddenZone": "障碍禁止区域", - "equipmentScheduleList": "设备计划列表", - "equipmentName": "设备名称", - "modeLabel": "模式标签", - "commStatus": "通信状态", - "deviceParamSetting": "设备参数设置", - "controlLogTitle": "控制日志标题", - "allLevels": "全部级别", - "deviceColHeader": "设备列表头", - "viewMoreLogs": "查看更多日志", - "deviceControlPanel": "设备控制面板", - "detailBtn": "详情按钮", - "batteryWithPercent": "电量带百分比", - "productType": "产品类型", - "deviceSnLabel": "设备序列号标签", - "activatedTime": "已激活时间", - "firmwareVersion": "固件版本", - "flightWindSpeed": "飞行风速度", - "rtkCount": "RTK数量", - "startBtn": "开始按钮", - "rechargeBtn": "充电按钮", - "realtimePicture": "实时图片", - "stationVideo": "电站视频", - "droneVideo": "无人机视频", - "stopVideoBtn": "停止视频按钮", - "switchManual": "切换手动", - "emergencyStopBtn": "紧急停止按钮", - "aiAnalysisTitle": "AI分析标题", - "hotspotSuspect": "热斑疑似", - "countUnit": "数量单位", - "weedHighZone": "杂草高区域", - "blockUnit": "区块单位", - "componentRiskZone": "组件风险区域", - "fenceAbnormal": "围栏异常", - "suggestAction": "建议操作", - "aiAction1": "AI", - "aiAction2": "AI", - "aiAction3": "AI", - "generateTask": "生成任务", - "aiOptimizePath": "AI优化路径", - "oneClickCoordinated": "一点击协同", - "envFlightConditions": "环境飞行条件", - "windSpeed": "风速度", - "rainfall": "降雨", - "rtkEnvLabel": "RTK环境标签", - "fixedEnv": "固定环境", - "notFixedEnv": "未固定环境", - "suitableExec": "适宜执行", - "canWorkNormally": "可工作正常", - "robotWorkStatus": "机器人工作状态", - "cumWorkMileage": "累计工作里程", - "cumWorkArea": "累计工作区域", - "cumWorkTime": "累计工作时间", - "taskTimelineTitle": "任务时间线标题", - "viewMore": "查看更多", - "editRobotInfoTitle": "编辑机器人提示标题", - "deviceSnColon": "设备序列号冒号", - "deviceTypeColon": "设备类型冒号", - "deviceAliasLabel": "设备别名标签", - "inputCustomAlias": "输入自定义别名", - "aliasHint": "别名提示", - "fetchParamFail": "获取参数失败", - "paramSaveSuccess": "参数保存成功", - "paramSaveFail": "参数保存失败", - "paramSaveException": "参数保存异常", - "paramLeftForwardGain": "参数左前进增益", - "paramLeftBackwardGain": "参数左后退增益", - "paramRightForwardGain": "参数右前进增益", - "paramRightBackwardGain": "参数右后退增益", - "paramRunSpeed": "参数运行速度", - "paramChipUidSign": "参数芯片UID标识", - "paramChipUid": "参数芯片UID", - "paramRemoteConfig": "参数远程配置", - "paramKnifeMotorMode": "参数刀电机模式", - "paramWalkMotorMode": "参数行走电机模式", - "paramLeftMotorReverse": "参数左电机反向", - "paramRightMotorReverse": "参数右电机反向", - "paramSwapChannel": "参数切换渠道", - "paramUse4G": "参数4G", - "paramForwardSpeedLimit": "参数前进速度限制", - "paramTurnSpeedLimit": "参数转向速度限制", - "paramKnifePolarity": "参数刀极性", - "paramFanPolarity": "参数风扇极性", - "paramThrottlePolarity": "参数油门极性", - "paramLiftProtectTime": "参数抬升保护时间", - "paramDualRtk": "参数双RTK", - "paramKnifeChannel": "参数刀渠道", - "paramFanChannel": "参数风扇渠道", - "paramThrottleChannel": "参数油门渠道", - "paramRemoteType": "参数远程类型", - "paramRelayBoard": "参数中继看板", - "paramLiftChannel": "参数抬升渠道", - "paramChassisChannel": "参数底盘渠道", - "paramArmChannel": "参数布防渠道", - "paramFuelPumpChannel": "参数燃料泵渠道", - "paramWifiName": "参数WiFi名称", - "paramWifiPassword": "参数WiFi密码", - "paramBatteryType": "参数电量类型", - "paramDriveType": "参数驱动类型", - "paramGearRatio": "参数档位比例", - "paramRobotLength": "参数机器人长度", - "paramRobotWidth": "参数机器人宽度", - "paramRobotHeight": "参数机器人高度", - "paramKnifeWidth": "参数刀宽度", - "paramTyreSize": "参数轮胎大小", - "paramFirmwareVersion": "参数固件版本", - "paramDelFlag": "参数删除标志", - "paramViewEditTitle": "参数查看编辑标题", - "noData": "无数据", - "locationFail": "位置失败", - "pointMarked": "点已标记", - "minThreePoints": "最小三点", - "pathPlanDone": "路径计划已完成", - "pathPlanFailRetry": "路径计划失败重试", - "completePathFirst": "完成路径先", - "inputPlotName": "输入区域名称", - "pathPlanning": "路径规划", - "markedPointsCount": "已标记点数量", - "workMode": "工作模式", - "bowMode": "船首模式", - "abMode": "模式", - "markPoint": "标记点", - "clearMarks": "清空标记", - "complete": "完成", - "selectDevice": "选择设备", - "unknownDrone": "未知无人机", - "situationMap": "态势地图", - "clearPlannedRoute": "清空已计划路线", - "realtimeVideoMonitor": "实时视频监控", - "frontView": "前查看", - "backView": "返回查看", - "leftView": "左查看", - "rightView": "右查看", - "panorama": "全景", - "robotStatus": "机器人状态", - "rtBattery": "实时电量", - "rtVoltage": "实时电压", - "rtLeftMotor": "实时左电机", - "rtRightMotor": "实时右电机", - "rtLeftSpeed": "实时左速度", - "rtRightSpeed": "实时右速度", - "rtLeftTemp": "实时左温度", - "rtRightTemp": "实时右温度", - "rtMainTemp": "实时主温度", - "rtHeadingAngle": "实时航向角度", - "rtPitchAngle": "实时俯仰角度", - "rtHeadingStatus": "实时航向状态", - "rtInitialized": "实时已初始化", - "rtPositioning": "实时定位", - "gpsSingle": "GPS单", - "dgpsDiff": "DGPS差异", - "rtkFixed2": "RTK", - "rtkFloat": "RTK浮点", - "rtSatellites": "实时卫星", - "satelliteCount": "卫星数量", - "rtMode": "实时模式", - "videoStopped": "视频已停止", - "clickPlayHint": "点击播放提示", - "remoteControl": "远程控制", - "savePathTitle": "保存路径标题", - "plotNameLabel": "区域名称标签", - "saving": "节省", - "stationCameraNotFound": "电站摄像头未找到", - "indoor": "室内", - "outdoor": "室外", - "switchStationCameraFail": "切换电站摄像头失败", - "switchDroneLensFail": "切换无人机镜头失败", - "wideLens": "广角镜头", - "zoomLens": "缩放镜头", - "irLens": "红外镜头", - "noVideoSignal": "无视频信号", - "rainYes": "雨是", - "hangar": "机库", - "coverOpen": "覆盖打开", - "coverClosed": "覆盖已关闭", - "inDock": "内停靠", - "outDock": "外停靠", - "droneStatus": "无人机状态", - "horizontalSpeed": "水平速度", - "verticalSpeed": "垂直速度", - "headingAngle": "航向角度", - "gpsUnit": "GPS单位", - "taskCompletedMsg": "任务已完成消息", - "confirmDeleteTitle": "确认删除标题", - "confirmDeleteContent": "确认删除内容", - "confirmDeleteOk": "确认删除确定", - "routeDeletedSuccess": "路线已删除成功", - "deleteFailRetry": "删除失败重试", - "deleteFailNetwork": "删除失败网络", - "taskListRefreshFail": "任务列表刷新失败", - "routeNoPathPoints": "路线编号路径点", - "checkRouteFail": "检查路线失败", - "taskExecuteSuccess": "任务执行成功", - "taskExecuteFail": "任务执行失败", - "taskExecuteException": "任务执行异常", - "taskCanceledSuccess": "任务已取消成功", - "taskCancelFail": "任务取消失败", - "taskCancelException": "任务取消异常", - "taskPausedSuccess": "任务已暂停成功", - "taskPauseFail": "任务暂停失败", - "taskPauseException": "任务暂停异常", - "taskResumeFail": "任务恢复失败", - "taskResumeException": "任务恢复异常", - "waylineFallback": "航线兜底", - "waylineListFetchFail": "航线列表获取失败", - "fillRequiredFields": "填写必填字段", - "createTaskSuccess": "创建任务成功", - "createTaskFail": "创建任务失败", - "createTaskException": "创建任务异常", - "trendYesterday": "趋势昨日", - "trendFlat": "趋势持平", - "taskListFetchFail": "任务列表获取失败", - "boardTaskFetchFail": "看板任务获取失败", - "statusExecSuccess": "状态执行成功", - "statusPreparing": "状态准备中", - "statusExecFailed": "状态执行失败", - "statusWaitingStart": "状态等待中开始", - "statusStartFailed": "状态开始失败", - "statusRestored": "状态已恢复", - "statusTerminated": "状态已终止", - "statusTimeout": "状态超时", - "deviceSn": "设备序列号", - "requestFail": "请求失败", - "selectExecuteDroneFirst": "选择执行无人机先", - "waylineTaskCreated": "航线任务已创建", - "waylineExecFail": "航线执行失败", - "todayWaylinePlan": "今日航线计划", - "unitTiao": "单位条", - "inProgressDesc": "内进度描述", - "executingTasks": "执行中任务", - "unitGe": "单位地理", - "pendingApprovalTasks": "待处理审批任务", - "taskCompletionRate": "任务完成率", - "aiOptimizeGain": "AI优化增益", - "coverageEquipment": "覆盖设备", - "coverageValue": "覆盖值", - "allOnline": "全部在线", - "noDroneSelected": "无无人机已选", - "commandSent": "指令已发送", - "commandSendFail": "指令发送失败", - "apiRequestException": "API请求异常", - "noDetail": "无详情", - "fetchDetailException": "获取详情异常", - "taskExecSuccess": "任务执行成功", - "taskSuspended2": "任务", - "taskRestored2": "任务", - "taskReturnedHome2": "任务已返航首页", - "statusUpdateSuccess": "状态更新成功", - "operationFail": "操作失败", - "operationApiException": "操作API异常", - "waylineEditPlan": "航线编辑计划", - "optimize": "优化", - "inspectRoute": "巡检路线", - "mowRoute": "除草路线", - "droneAirport": "无人机机场", - "chargePoint": "充电点", - "noFlyZone": "无飞行区域", - "deviceTaskList": "设备任务列表", - "allDrones": "全部无人机", - "taskOrchestrationAI": "任务编排AI", - "typeDroneHotspot": "类型无人机热斑", - "levelHigh": "级别高", - "statusSuggestExec": "状态建议执行", - "typeFenceInspect": "类型围栏巡检", - "typeComponentClean": "类型组件清洗", - "levelMid": "级别中间", - "statusWaitExec": "状态等待执行", - "typeArrayMow": "类型阵列除草", - "typeAIRecheck": "类型AI复检", - "levelLow": "级别低", - "statusPendingApproval": "状态待处理审批", - "colNo": "列无", - "suggestTime": "建议时间", - "aiSuggestionColon": "AI建议冒号", - "aiAdvice1": "AI", - "aiAdvice2": "AI", - "aiAdvice3": "AI", - "oneClickSchedule": "一点击计划", - "smartAssign": "智能分配", - "waylineParamsTitle": "航线参数标题", - "currentWayline": "当前航线", - "rthMode": "返航模式", - "waylinePrecision": "航线精度", - "resumeBreakpoint": "恢复断点", - "safeRthBattery": "安全返航电量", - "repeatTypeLabel": "重复类型标签", - "lostControlAction": "丢失控制操作", - "obstacleAvoidSwitch": "障碍避开切换", - "nightFlightLimit": "夜间飞行限制", - "resumeTask": "恢复任务", - "pauseTask": "暂停任务", - "weatherWindowTitle": "天气窗口标题", - "suitability": "适宜性", - "suitableExec2": "适宜", - "suitable": "适宜", - "precipStatus": "降水状态", - "hasRain": "有雨", - "gnssQuality": "GNSS质量", - "fixed2": "", - "notFixed2": "未", - "weatherAdvice1": "天气", - "weatherAdvice2": "天气", - "waylineList": "航线列表", - "selectDrone": "选择无人机", - "searchWaylinePlaceholder": "搜索航线占位", - "unknownTime": "未知时间", - "executeWayline": "执行航线", - "ganttViewTitle": "甘特查看标题", - "dronePortA01": "无人机端口", - "typeHotspotInspect": "类型热斑巡检", - "typeRecheck": "类型复检", - "inspectRobotRbt": "巡检机器人", - "mowRobotGr": "除草机器人电网", - "washDroneUav": "清洗无人机", - "workTaskBoard": "工作任务看板", - "startLabel": "开始标签", - "endLabel": "结束标签", - "pendingExec": "待处理执行", - "equipmentColon": "设备冒号", - "startTimeColon": "开始时间冒号", - "completedTimeColon": "已完成时间冒号", - "createWaylineTaskTitle": "创建航线任务标题", - "airportSn": "机场序列号", - "landingDockSn": "降落停靠序列号", - "returnHomeAltitude": "返航首页高度", - "returnHomeMode": "返航首页模式", - "minBattery": "最小电量", - "repeatMode": "重复模式", - "weekdayExec": "工作日执行", - "weekSun": "周太阳", - "weekMon": "周周一", - "weekTue": "周周二", - "weekWed": "周周三", - "weekThu": "周周四", - "weekFri": "周周五", - "weekSat": "周卫星", - "monthDays": "月天", - "whichWeek": "哪个周", - "weekNo": "周无", - "weekday": "工作日", - "execTimePoint": "执行时间点", - "inputTimestamp": "输入时间戳", - "confirmCreate": "确认创建", - "executeWaylineTask": "执行航线任务", - "executeNow": "执行现在", - "selectedWaylineColon": "已选航线冒号", - "executeDeviceColon": "执行设备冒号", - "noDeviceSelected": "无设备已选", - "returnHomeAltitudeColon": "返航首页高度冒号", - "deviceData": "设备数据", - "equipmentControl": "设备控制", - "realtimePowerData": "实时功率数据", - "communicationStatus": "通信状态", - "communicationNormal": "通信正常", - "groupOf": "分组的", - "weatherStation": "天气电站", - "stationTopology": "电站拓扑", - "communicating": "通信中", - "realtimeMonitorList": "实时监控列表", - "allTypes": "全部类型", - "searchDeviceName": "搜索设备名称", - "dronePort": "无人机端口", - "deviceOnlineRate": "设备在线率", - "onlineRate": "在线率", - "totalCount": "总数量" - }, - "systemSetting": { - "pleaseSelectRoles": "请选择角色", - "batchDeleteRolesTitle": "批量删除角色标题", - "confirmDeleteSelectedRoles": "确认删除已选角色", - "batchDeleteSuccess": "批量删除成功", - "resetFail": "重置失败", - "pleaseSelectUsers": "请选择用户", - "batchDeleteUsersTitle": "批量删除用户标题", - "confirmDeleteSelectedUsers": "确认删除已选用户", - "userAndRole": "用户与角色", - "belongingOrg": "所属组织", - "belongingSite": "所属站点", - "devicePerm": "设备权限", - "hasPerm": "有权限", - "noPerm": "无权限", - "confirmDeleteUser": "确认删除用户", - "totalCount": "总数量", - "permissionLabel": "权限标签", - "levelLabel": "级别标签", - "editRole": "编辑角色", - "roleLevel": "角色级别", - "pleaseInputRoleLevel": "请输入角色级别", - "account": "账号", - "nicknameShort": "昵称短", - "phoneShort": "电话短", - "editPasswordPlaceholder": "编辑密码占位", - "chooseRole": "选择角色", - "pleaseSelectOrg": "请选择组织", - "pleaseSelectSite": "请选择站点", - "deviceOperatePermLabel": "设备操作权限标签", - "has": "有", - "none": "无" - }, - "aiAnalysis": { - "objectDetection": "对象检测", - "detectDesc": "检测描述", - "thermalSegmentation": "热成像分割", - "segmentationDesc": "分割描述", - "getModelsFailed": "获取模型失败", - "uploadFirst": "上传先", - "submitTaskFailed": "提交任务失败", - "thermalAnalysisComplete": "热成像分析完成", - "taskSuccess": "任务成功", - "taskExecutionError": "任务执行错误", - "cancelled": "已取消", - "uploadThermalFirst": "上传热成像先", - "thermalAnalysisFailed": "热成像分析失败", - "detectTaskName": "检测任务名称", - "segmentationTaskName": "分割任务名称", - "algoCount": "算法数量", - "detectAndSeg": "检测与分割", - "onlineServices": "在线服务", - "healthCheck": "健康检查", - "modelCount": "模型数量", - "detectModelRegistry": "检测模型注册", - "historyRecords": "历史记录", - "pageDebugRecords": "页面调试记录", - "detectModel": "检测模型", - "default": "默认", - "inputType": "输入类型", - "image": "图片", - "inferencePreset": "推理预设", - "quality": "质量", - "dragFile": "拖拽文件", - "supportedFormats": "支持格式", - "processing": "处理中", - "submitDetectTask": "提交检测任务", - "serverDemo": "服务器演示", - "refreshModels": "刷新模型", - "thermalFileLabel": "热成像文件标签", - "uploadThermal": "上传热成像", - "arrayMask": "阵列掩码", - "panelGeojson": "面板GeoJSON", - "submitThermalAnalysis": "提交热成像分析", - "readServerHistory": "读取服务器历史", - "resultDisplay": "结果显示", - "resultViewHint": "结果查看提示", - "inputPreview": "输入预览", - "resultImageVideo": "结果图片视频", - "showResultAfterTask": "显示结果之后任务", - "resultJson": "结果JSON", - "noResult": "无结果", - "thermalInteractiveView": "热成像交互查看", - "clickHotspotHint": "点击热斑提示", - "hotspotCount": "热斑数量", - "panelArea": "面板区域", - "analysisId": "分析ID", - "pointDetails": "点详情", - "selectHotspotPanel": "选择热斑面板", - "hotspot": "热斑", - "blockNumber": "区块编号", - "originalPixels": "原始像素", - "overlayPixels": "叠加像素", - "area": "区域", - "waitingSegmentation": "等待中分割", - "hotspotPanelList": "热斑面板列表", - "panelLabel": "面板标签", - "centerTitle": "中心标题", - "algorithmList": "算法列表", - "integratedCount": "集成数量", - "detectWorkspace": "检测工作区", - "segWorkspace": "分割工作区", - "asyncTask": "异步任务", - "syncAnalysis": "同步分析", - "detectWorkspaceDesc": "检测工作区描述", - "segWorkspaceDesc": "分割工作区描述", - "historyAnalysis": "历史分析", - "noHistory": "无历史", - "detect": "检测", - "segment": "段", - "hotspotRecognition": "热斑识别", - "abnormalString": "异常组串", - "recommendedCleanBlock": "建议清洗区块", - "videoAbnormalEvent": "视频异常事件", - "videoIntelligentAnalysis": "视频智能分析", - "perimeterIntrusion": "周长入侵", - "perimeterIntrusionDesc": "周长入侵描述", - "personnelIntrusion": "人员入侵", - "personnelIntrusionDesc": "人员入侵描述", - "fireSmokeDetection": "火警烟检测", - "fireSmokeDesc": "火警烟描述", - "areaLoitering": "区域徘徊", - "areaLoiteringDesc": "区域徘徊描述", - "motionDetection": "运动检测", - "motionDetectionDesc": "运动检测描述", - "perimeterIntrusionTimeline": "周长入侵时间线", - "personnelIntrusionTimeline": "人员入侵时间线", - "areaLoiteringTimeline": "区域徘徊时间线", - "motionDetectionTimeline": "运动检测时间线", - "perimeterClimbTimeline": "周长爬升时间线", - "perimeterIntrusionType": "周长入侵类型" - }, - "video": { - "fileDetails": "文件详情", - "sourceDevice": "来源设备", - "startEndTime": "开始结束时间", - "capacity": "容量", - "videoReplayCenter": "视频回放中心", - "allRecordings": "全部", - "todayRecordings": "今日", - "timeSpan": "时间跨度", - "onlineSearch": "在线搜索", - "labelMainFront": "标签主前", - "labelRear": "标签后", - "labelLeft": "标签左", - "labelRight": "标签右", - "labelFrontDrive": "标签前驱动", - "labelRearMount": "标签后挂载", - "labelLeftWing": "标签左机翼", - "labelRightWing": "标签右机翼", - "labelCargo": "标签货物", - "labelMainProbe": "标签主探测", - "labelPanorama": "标签全景", - "labelDetail": "标签详情", - "currentDutyDevice": "当前值班设备", - "videoStreamChannels": "视频流渠道", - "refreshSignal": "刷新信号", - "fullScreenWall": "全屏幕墙", - "ptzServoControl": "云台伺服控制", - "systemIntegratedCommand": "系统集成指令", - "twoWayIntercom": "二路径对讲", - "triggerRemoteRepellent": "触发远程驱避", - "aiVisualTracking": "AI可视跟踪", - "activeVideoStreams": "启用视频流", - "positionArray1": "位置", - "domeCamera": "穹顶摄像头", - "recording": "录制", - "positionInverterRoom": "位置逆变器房间", - "positionStationGate": "位置电站闸门", - "positionPerimeterNorth": "位置周长北", - "positionWeatherStation": "位置天气电站", - "positionEquipmentArea": "位置设备区域", - "positionStorageBattery": "位置存储电量", - "positionEnergyStorage": "位置能量存储", - "positionPerimeterSouth": "位置周长南", - "positionArrayWest": "位置阵列西", - "cameraName": "摄像头名称", - "recordingStatus": "录制状态", - "lastEventTime": "最后事件时间", - "onlineCameras": "在线摄像头", - "unitDevice": "单位设备", - "onlineRateTrend": "在线率趋势", - "offlineCameras": "离线摄像头", - "offlineRateTrend": "离线率趋势", - "todayAlertEvents": "今日告警事件", - "unitIncident": "单位事件", - "vsYesterdayPercent": "较昨日百分比", - "perimeterAlerts": "周长告警", - "storageUsage": "存储用量", - "storageUsageTrend": "存储用量趋势", - "videoMonitorCenter": "视频监控中心", - "customLayout": "自定义布局", - "mainView": "主查看", - "liveLabel": "直播标签", - "cameraDeviceList": "摄像头设备列表", - "searchCameraPlaceholder": "搜索摄像头占位", - "allStatuses": "全部状态", - "eventTimeline": "事件时间线", - "allTypes": "全部类型", - "viewMore": "查看更多", - "recentAlertSnapshots": "近期告警快照" - }, - "login": { - "and": "与" - }, - "profile": { - "requestFailed": "请求失败", - "basicInfo": "基础提示", - "phoneInvalid": "电话无效", - "emailInvalid": "邮件无效", - "emailPlaceholder": "邮件占位", - "remarkPlaceholder": "备注占位", - "changePassword": "变更密码", - "oldPasswordPlaceholder": "旧密码占位", - "newPasswordPlaceholder": "新密码占位", - "passwordLengthError": "密码长度错误", - "confirmPasswordRequired": "确认密码必填", - "confirmPasswordPlaceholder": "确认密码占位" - }, - "home": { - "realtimePower": "实时功率", - "totalPower": "总功率", - "ratedPower": "额定功率", - "gridConnection": "电网连接", - "gridConnected": "电网已连接", - "frequency": "频率", - "gridVoltage": "电网电压", - "phaseA": "相", - "todayAccumulated": "今日累计", - "currentIrradiance": "当前辐照度", - "ambientTemperature": "环境温度", - "powerCurve": "功率曲线", - "today": "今日", - "inverterPowerCompare": "逆变器功率对比", - "stringCurrentHeatmap": "组串当前热力图", - "current": "当前" - }, - "router": { - "realtimeMonitorCenter": "实时监控中心", - "realtimeMonitorDesc": "实时监控描述" - }, - "report": { - "monthlyGeneration": "每月发电", - "monthOverMonthUp": "月超过月上升", - "prAverage": "光伏平均", - "workOrderCompletionRate": "工作工单完成率", - "monthlyTotalOrders": "每月总工单", - "alertClosureRate": "告警闭合率", - "criticalAlertCount": "严重告警数量", - "cleaningRevenueImprovement": "清洗收益提升", - "estimatedAdditionalGeneration": "预计额外发电", - "autoGeneratedReports": "自动已生成报表", - "unitReport": "单位报表", - "monthlyAccumulated": "每月累计", - "stationMonthlyReportFile": "电站每月报表文件", - "generated": "已生成", - "weeklyOperationSummary": "每周操作摘要", - "aiDiagnosisDaily": "AI诊断每日", - "generating": "生成中", - "alertClosureWeekly": "告警闭合每周", - "monthlyOperationReport": "每月操作报表", - "monthlyOperationReportDesc": "每月操作报表描述", - "deviceHealthReport": "设备健康报表", - "deviceHealthReportDesc": "设备健康报表描述", - "cleaningOptimizationReport": "清洗优化报表", - "cleaningEffectReportDesc": "清洗效果报表描述", - "inspectionRobotReport": "巡检机器人报表", - "inspectionRobotReportDesc": "巡检机器人报表描述", - "stationMonthly": "电站每月", - "alertWeekly": "告警每周", - "systemAuto": "系统自动", - "aiAnalysisReport": "AI分析报表", - "operationSummary": "操作摘要", - "operationReport": "操作报表", - "cleaningEffectReport": "清洗效果报表", - "overview": "概览", - "reportCycle": "报表周期", - "reportType": "报表类型", - "exportPdf": "导出PDF", - "exportExcel": "导出Excel", - "monthlyOperationAnalysis": "每月操作分析", - "generation": "发电", - "predictedGeneration": "预测发电", - "monthlyAccumulatedGeneration": "每月累计发电", - "theoreticalGeneration": "理论发电", - "generationDeviation": "发电偏差", - "averageIrradiance": "平均辐照度", - "unitIrradiancePerDay": "单位辐照度每日", - "generationMeteorology": "发电气象", - "workOrderAlertClosure": "工作工单告警闭合", - "closureRate": "闭合率", - "alarmCount": "告警数量", - "aiAnalysisStatistics": "AI分析统计", - "unitItem": "单位项", - "subscriptionDispatch": "订阅派单", - "subscribers": "订阅者", - "roleOmSupervisor": "角色运维主管", - "roleStationEngineer": "角色电站工程师", - "roleDeviceOm": "角色设备运维", - "roleOmManager": "角色运维管理员", - "dispatchChannels": "派单渠道", - "email": "邮件", - "systemNotification": "系统通知", - "sendPlan": "发送计划", - "weeklyAutoSend": "每周自动发送", - "reportDirectory": "报表目录", - "reportName": "报表名称", - "templateCenter": "模板中心", - "generationRecords": "发电记录", - "generateTime": "生成时间", - "generator": "发电机" - }, - "roles": { - "editSuccess": "编辑成功", - "addSuccess": "新增成功", - "manageMembers": "管理成员", - "confirmDeleteRole": "确认删除角色", - "permissionKey": "权限键", - "superAdmin": "超级管理员", - "orgAdmin": "组织管理员", - "editRole": "编辑角色", - "roleNamePlaceholder": "角色名称占位", - "rolePermission": "角色权限", - "roleKeyPlaceholder": "角色键占位", - "roleSortLabel": "角色排序标签", - "menuPermissionConfig": "菜单权限配置" - }, - "users": { - "notAssigned": "未已分配", - "languagePlaceholder": "语言占位", - "rolePlaceholder": "角色占位", - "siteId": "站点ID" - } - }, - "enAdd": { - "alerts": { - "processing": "Processing", - "alarmNo": "Alarm No", - "alarmTitle": "Alarm Title", - "alarmContent": "Alarm Content", - "alertDetail": "Alert Detail", - "rootCause": "Root Cause", - "recommendedAction": "Recommended Action", - "notifySubscription": "Notify Subscription", - "sms": "Sms", - "dingTalk": "Ding Talk", - "email": "Email", - "handleSuccess": "Handle Success", - "handleFail": "Handle Fail", - "exportFileName": "Export File Name", - "reportValue": "Report Value", - "noAlarmToCreateOrder": "no Alarm To Create Order", - "orderFromAlarm": "Order From Alarm", - "orderCreated": "Order Created", - "orderCreateFail": "Order Create Fail", - "todayTotalAlerts": "Today Total Alerts", - "trendNoChange": "Trend No Change", - "trendUp": "Trend Up", - "trendDown": "Trend Down", - "trendZero": "Trend Zero", - "yesterdayValue": "Yesterday Value", - "todayCriticalAlerts": "Today Critical Alerts", - "todayPending": "Today Pending", - "todayClosed": "Today Closed", - "alertTypeProportion": "Alert Type Proportion", - "alertStatusStatistics": "Alert Status Statistics", - "sourceDevice": "Source Device", - "occurTime": "Occur Time", - "alertDescription": "Alert Description", - "contactHandler": "Contact Handler", - "handleOperation": "Handle Operation", - "pleaseSelectHandleStatus": "Please Select Handle Status", - "pleaseSelectHandleResult": "Please Select Handle Result", - "pleaseInputHandleRemark": "Please Input Handle Remark", - "confirmHandle": "Confirm Handle", - "modifyAlert": "Modify Alert", - "pleaseInputAlarmTitle": "Please Input Alarm Title", - "pleaseSelectAlertLevel": "Please Select Alert Level", - "pleaseSelectAlertType": "Please Select Alert Type", - "pleaseInputAlarmContent": "Please Input Alarm Content", - "newOrder": "New Order", - "planStartTime": "Plan Start Time", - "pleaseSelectPlanStartTime": "Please Select Plan Start Time", - "confirmCreateOrder": "Confirm Create Order", - "mockDeviceSensor": "Mock Device Sensor", - "mockTempExceed": "Mock Temp Exceed", - "mockDeviceCamera": "Mock Device Camera", - "mockVideoSignalLost": "Mock Video Signal Lost", - "mockDeviceBattery": "Mock Device Battery", - "mockBatteryLow": "Mock Battery Low", - "level": "Level", - "content": "Content", - "searchDeviceContent": "Search Device Content", - "mockRuleTemp": "Mock Rule Temp", - "mockRuleBattery": "Mock Rule Battery", - "deviceSensor": "Device Sensor", - "deviceBattery": "Device Battery", - "ruleName": "Rule Name", - "triggerCondition": "Trigger Condition", - "ruleConfig": "Rule Config", - "addRule": "Add Rule", - "editRule": "Edit Rule", - "ruleNamePlaceholder": "Rule Name Placeholder", - "relatedModel": "Related Model", - "monitorProperty": "Monitor Property", - "compareSymbol": "Compare Symbol", - "threshold": "Threshold", - "thresholdPlaceholder": "Threshold Placeholder", - "sevenDayTrend": "Seven Day Trend", - "criticalAlert": "Critical Alert", - "importantAlert": "Important Alert", - "generalAlert": "General Alert", - "infoAlert": "Info Alert", - "alertLevelDistribution": "Alert Level Distribution", - "mockSubOps": "Mock Sub Ops", - "mockSubAdmin": "Mock Sub Admin", - "mockSubDevice": "Mock Sub Device", - "appPush": "App Push", - "subscriptionName": "Subscription Name", - "notifyChannel": "Notify Channel", - "searchSubscription": "Search Subscription", - "addSubscription": "Add Subscription", - "editAlertSubscription": "Edit Alert Subscription", - "addAlertSubscription": "Add Alert Subscription", - "pleaseInputSubscriptionName": "Please Input Subscription Name", - "allDevices": "All Devices", - "allLevels": "All Levels", - "pleaseSelectChannel": "Please Select Channel", - "subtitle": "Subtitle" - }, - "common": { - "loadFailed": "Load Failed", - "loadDetailFailed": "Load Detail Failed", - "requestError": "Request Error", - "deviceId": "Device Id", - "pleaseInputDeviceId": "Please Input Device Id", - "timeRange": "Time Range", - "enabled": "Enabled", - "modify": "Modify", - "apiCallFail": "Api Call Fail", - "quantity": "Quantity", - "detail": "Detail", - "storeValue": "Store Value", - "operationFailed": "Operation Failed", - "submitFail": "Submit Fail", - "confirmDeleteRecord": "Confirm Delete Record", - "deleteIrreversible": "Delete Irreversible", - "working": "Working", - "settings": "Settings" - }, - "workOrder": { - "generateOrder": "Generate Order", - "newOrders": "New Orders", - "dispatchSuccess": "Dispatch Success", - "dispatchFail": "Dispatch Fail", - "dispatchRequestError": "Dispatch Request Error", - "todayNewOrders": "Today New Orders", - "vsYesterday": "vs Yesterday", - "pendingOrders": "Pending Orders", - "highPriority": "High Priority", - "runningOrders": "Running Orders", - "onTimeRate": "on Time Rate", - "completedOrders": "Completed Orders", - "monthlyTotal": "Monthly Total", - "avgHandleTime": "Avg Handle Time", - "hourUnit": "Hour Unit", - "vsLastWeek": "vs Last Week", - "aiSuggestedOrders": "ai Suggested Orders", - "orderUnit": "Order Unit", - "autoGeneratedToday": "Auto Generated Today", - "getListFailed": "Get List Failed", - "pleaseSelectOrder": "Please Select Order", - "completeSuccess": "Complete Success", - "completeFail": "Complete Fail", - "getDetailFailed": "Get Detail Failed", - "pleaseSelectOneOrder": "Please Select One Order", - "modifySuccess": "Modify Success", - "modifyFail": "Modify Fail", - "executeSuccess": "Execute Success", - "executeFail": "Execute Fail", - "suspendSuccess": "Suspend Success", - "suspendFail": "Suspend Fail", - "invalidOrder": "Invalid Order", - "pleaseSelectOrderToDelete": "Please Select Order To Delete", - "batchDeleteSuccess": "Batch Delete Success", - "batchDeleteFail": "Batch Delete Fail", - "orderNo": "Order No", - "taskManagement": "Task Management", - "overview": "Overview", - "timeRange": "Time Range", - "keyword": "Keyword", - "pleaseInputOrderNoOrTitle": "Please Input Order No Or Title", - "list": "List", - "totalWithCount": "Total with Count", - "confirmBatchDelete": "Confirm Batch Delete", - "batchExecute": "Batch Execute", - "statusDistribution": "Status Distribution", - "totalCount": "Total Count", - "scheduleCalendarView": "Schedule Calendar View", - "todaySuffix": "Today Suffix", - "noScheduledOrders": "no Scheduled Orders", - "scheduledOrderList": "Scheduled Order List", - "planStartTime": "Plan Start Time", - "detail": "Detail", - "noTitle": "no Title", - "nearItems": "Near Items", - "pleaseInputTaskDesc": "Please Input Task Desc", - "pendingDispatch": "Pending Dispatch", - "pleaseSelectPerson": "Please Select Person", - "selectedOrders": "Selected Orders", - "pleaseSelectExecuteDevice": "Please Select Execute Device", - "pleaseInputResult": "Please Input Result", - "pleaseSelectResult": "Please Select Result", - "handledCompleted": "Handled Completed", - "fixed": "Fixed", - "noActionNeeded": "no Action Needed", - "issueClosed": "Issue Closed", - "pleaseInputHandleRemark": "Please Input Handle Remark", - "alarmNo": "Alarm No", - "alarmTitle": "Alarm Title" - }, - "devices": { - "working": "Working", - "videoConfigured": "Video Configured", - "noVideo": "no Video", - "connectionFailed": "Connection Failed", - "permissionRequestTitle": "Permission Request Title", - "requestControlPermission": "Request Control Permission", - "selectNoDrone": "Select No Drone", - "commandIssued": "Command Issued", - "commandFailed": "Command Failed", - "apiRequestError": "Api Request Error", - "selectTaskFirst": "Select Task First", - "taskExecutedSuccess": "Task Executed Success", - "taskSuspended": "Task Suspended", - "taskResumedSuccess": "Task Resumed Success", - "taskReturnedHome": "Task Returned Home", - "taskStatusUpdateSuccess": "Task Status Update Success", - "operationApiError": "Operation Api Error", - "permissionObtained": "Permission Obtained", - "controlRequestContent": "Control Request Content", - "unknownPlatform": "Unknown Platform", - "obstacleDetected": "Obstacle Detected", - "unknownObject": "Unknown Object", - "noTaskDetail": "no Task Detail", - "fetchDetailError": "Fetch Detail Error", - "deviceInfoError": "Device Info Error", - "pleaseLoginFirst": "Please Login First", - "loginInfoExpired": "Login Info Expired", - "otherWebControlling": "Other Web Controlling", - "networkErrorRetry": "Network Error Retry", - "routeLoaded": "Route Loaded", - "droneFallbackName": "Drone Fallback Name", - "droneAirspace": "Drone Airspace", - "droneWayline": "Drone Wayline", - "onStandby": "on Standby", - "permissionRequesting": "Permission Requesting", - "noWaylineData": "no Wayline Data", - "fetchWaylineFailed": "Fetch Wayline Failed", - "waypointsAdded": "Waypoints Added", - "waypointDeleted": "Waypoint Deleted", - "allWaypointsCleared": "All Waypoints Cleared", - "pleaseSelectWayline": "Please Select Wayline", - "selectTaskStartTime": "Select Task Start Time", - "createSuccess": "Create Success", - "apiErrorCheck": "Api Error Check", - "noWaypointsToSave": "no Waypoints To Save", - "planeNoLocalRoute": "Plane No Local Route", - "routeSavedLocal": "Route Saved Local", - "waylineLabel": "Wayline Label", - "fetchWaylineListFailed": "Fetch Wayline List Failed", - "routeLoadedWithName": "Route Loaded with Name", - "gpsTaskIssued": "Gps Task Issued", - "issueTaskFirst": "Issue Task First", - "taskPaused": "Task Paused", - "taskStarted": "Task Started", - "taskStopped": "Task Stopped", - "viewFront": "View Front", - "viewBack": "View Back", - "viewLeft": "View Left", - "viewRight": "View Right", - "viewTop": "View Top", - "deviceList": "Device List", - "onlineDevices": "Online Devices", - "inspectionMachine": "Inspection Machine", - "supportsGpsPlan": "Supports Gps Plan", - "supportsRemoteGpsPlan": "Supports Remote Gps Plan", - "batteryWithValue": "Battery with Value", - "videoLinkConfigured": "Video Link Configured", - "batteryCapacity": "Battery Capacity", - "flightAltitude": "Flight Altitude", - "signalSatellite": "Signal Satellite", - "envWindSpeed": "Env Wind Speed", - "rtkStatus": "Rtk Status", - "fixed": "Fixed", - "notFixed": "Not Fixed", - "remoteControlAndSituation": "Remote Control and Situation", - "gpsPlanning": "Gps Planning", - "leftWheelDrive": "Left Wheel Drive", - "normalRunning": "Normal Running", - "realtimeSpeed": "Realtime Speed", - "workingCurrent": "Working Current", - "rightWheelDrive": "Right Wheel Drive", - "gpsWaypointPlan": "Gps Waypoint Plan", - "savePlan": "Save Plan", - "clearRoute": "Clear Route", - "droneWaylineTask": "Drone Wayline Task", - "taskWaitingStart": "Task Waiting Start", - "taskStartFailure": "Task Start Failure", - "taskTerminated": "Task Terminated", - "taskTimeout": "Task Timeout", - "noWaylineTask": "no Wayline Task", - "robotTaskData": "Robot Task Data", - "waypointList": "Waypoint List", - "noWaypoints": "no Waypoints", - "waypoint": "Waypoint", - "robotLocalRoutes": "Robot Local Routes", - "noSavedRoutes": "no Saved Routes", - "waypointsCount": "Waypoints Count", - "issueTask": "Issue Task", - "suspendTask": "Suspend Task", - "cancelReturnHome": "Cancel Return Home", - "videoAndConfig": "Video and Config", - "noVideoStream": "no Video Stream", - "waylineDetail": "Wayline Detail", - "taskIdLabel": "Task Id Label", - "waylineUuidLabel": "Wayline Uuid Label", - "airportSnLabel": "Airport Sn Label", - "landingDockSnLabel": "Landing Dock Sn Label", - "returnHomeAltitudeLabel": "Return Home Altitude Label", - "returnHomeModeLabel": "Return Home Mode Label", - "waylinePrecisionLabel": "Wayline Precision Label", - "lostControlActionLabel": "Lost Control Action Label", - "resumeFromBreakpointLabel": "Resume From Breakpoint Label", - "taskTypeLabel": "Task Type Label", - "repeatModeLabel": "Repeat Mode Label", - "minBatteryLabel": "Min Battery Label", - "currentWaypointLabel": "Current Waypoint Label", - "rthOptimal": "Rth Optimal", - "rthPreset": "Rth Preset", - "gpsMode": "Gps Mode", - "rtkHighPrecision": "Rtk High Precision", - "modeAuto": "Mode Auto", - "modeManual": "Mode Manual", - "taskImmediate": "Task Immediate", - "taskTimed": "Task Timed", - "taskRecurring": "Task Recurring", - "taskContinuous": "Task Continuous", - "repeatNone": "Repeat None", - "repeatDaily": "Repeat Daily", - "repeatWeekly": "Repeat Weekly", - "repeatMonthlyByDate": "Repeat Monthly By Date", - "repeatMonthlyByWeek": "Repeat Monthly By Week", - "taskResumed": "Task Resumed", - "taskEnded": "Task Ended", - "taskTimedOut": "Task Timed Out", - "createWaylineTask": "Create Wayline Task", - "waylineName": "Wayline Name", - "inputWaylineName": "Input Wayline Name", - "selectWayline": "Select Wayline", - "autoFetch": "Auto Fetch", - "optionalEmpty": "Optional Empty", - "gpsModeDesc": "Gps Mode Desc", - "rtkModeDesc": "Rtk Mode Desc", - "autoResumeFromBreakpoint": "Auto Resume From Breakpoint", - "resumeAuto": "Resume Auto", - "resumeManual": "Resume Manual", - "minExecBatteryLabel": "Min Exec Battery Label", - "taskWaylineTypeLabel": "Task Wayline Type Label", - "taskStartTimeLabel": "Task Start Time Label", - "selectStartTimePlaceholder": "Select Start Time Placeholder", - "taskEndTimeLabel": "Task End Time Label", - "repeatInterval": "Repeat Interval", - "boundDrone": "Bound Drone", - "airportCode": "Airport Code", - "tlStartCleaning": "tl Start Cleaning", - "timelineStatusStart": "Timeline Status Start", - "tlStartInspection": "tl Start Inspection", - "tlStartMowing": "tl Start Mowing", - "tlStandbyReady": "tl Standby Ready", - "timelineStatusReady": "Timeline Status Ready", - "tlReturnSupply": "tl Return Supply", - "timelineStatusReturn": "Timeline Status Return", - "tlFinishInspection": "tl Finish Inspection", - "timelineStatusComplete": "Timeline Status Complete", - "logCommand": "Log Command", - "logDesc1": "Log Desc1", - "logDesc2": "Log Desc2", - "logDesc3": "Log Desc3", - "logDesc4": "Log Desc4", - "logDesc5": "Log Desc5", - "logEvent": "Log Event", - "logDesc6": "Log Desc6", - "logLevelLowBattery": "Log Level Low Battery", - "aliasRobotOnly": "Alias Robot Only", - "aliasNotEmpty": "Alias Not Empty", - "aliasModifiedSuccess": "Alias Modified Success", - "aliasModifyFail": "Alias Modify Fail", - "aliasApiError": "Alias Api Error", - "noPermission": "no Permission", - "stationStatus": "Station Status", - "dispatchableCount": "Dispatchable Count", - "unitTai": "Unit Tai", - "robotExecutingCount": "Robot Executing Count", - "mowingRobot": "Mowing Robot", - "robotInTaskCount": "Robot In Task Count", - "washDrone": "Wash Drone", - "unitJia": "Unit Jia", - "standbyCount": "Standby Count", - "todayTaskExecute": "Today Task Execute", - "completionRate": "Completion Rate", - "unknownDevice": "Unknown Device", - "modeWorking": "Mode Working", - "modeDebugLocal": "Mode Debug Local", - "modeDebugRemote": "Mode Debug Remote", - "modeUpgrading": "Mode Upgrading", - "positionInStation": "Position In Station", - "taskStandby2": "Task Standby2", - "commGood": "Comm Good", - "taskStarted2": "Task Started2", - "taskPaused2": "Task Paused2", - "returnCommandSent": "Return Command Sent", - "rechargeCommandSent": "Recharge Command Sent", - "emergencyStopTriggered": "Emergency Stop Triggered", - "rainNo": "Rain No", - "equipmentOverview": "Equipment Overview", - "equipmentSituationMap": "Equipment Situation Map", - "legendTitle": "Legend Title", - "inspectionRoute": "Inspection Route", - "robotPath": "Robot Path", - "cleaningPath": "Cleaning Path", - "robotPosition": "Robot Position", - "dronePosition": "Drone Position", - "supplyChargePoint": "Supply Charge Point", - "obstacleForbiddenZone": "Obstacle Forbidden Zone", - "equipmentScheduleList": "Equipment Schedule List", - "equipmentName": "Equipment Name", - "modeLabel": "Mode Label", - "commStatus": "Comm Status", - "deviceParamSetting": "Device Param Setting", - "controlLogTitle": "Control Log Title", - "allLevels": "All Levels", - "deviceColHeader": "Device Col Header", - "viewMoreLogs": "View More Logs", - "deviceControlPanel": "Device Control Panel", - "detailBtn": "Detail Btn", - "batteryWithPercent": "Battery with Percent", - "productType": "Product Type", - "deviceSnLabel": "Device Sn Label", - "activatedTime": "Activated Time", - "firmwareVersion": "Firmware Version", - "flightWindSpeed": "Flight Wind Speed", - "rtkCount": "Rtk Count", - "startBtn": "Start Btn", - "rechargeBtn": "Recharge Btn", - "realtimePicture": "Realtime Picture", - "stationVideo": "Station Video", - "droneVideo": "Drone Video", - "stopVideoBtn": "Stop Video Btn", - "switchManual": "Switch Manual", - "emergencyStopBtn": "Emergency Stop Btn", - "aiAnalysisTitle": "ai Analysis Title", - "hotspotSuspect": "Hotspot Suspect", - "countUnit": "Count Unit", - "weedHighZone": "Weed High Zone", - "blockUnit": "Block Unit", - "componentRiskZone": "Component Risk Zone", - "fenceAbnormal": "Fence Abnormal", - "suggestAction": "Suggest Action", - "aiAction1": "ai Action1", - "aiAction2": "ai Action2", - "aiAction3": "ai Action3", - "generateTask": "Generate Task", - "aiOptimizePath": "ai Optimize Path", - "oneClickCoordinated": "One Click Coordinated", - "envFlightConditions": "Env Flight Conditions", - "windSpeed": "Wind Speed", - "rainfall": "Rainfall", - "rtkEnvLabel": "Rtk Env Label", - "fixedEnv": "Fixed Env", - "notFixedEnv": "Not Fixed Env", - "suitableExec": "Suitable Exec", - "canWorkNormally": "Can Work Normally", - "robotWorkStatus": "Robot Work Status", - "cumWorkMileage": "Cum Work Mileage", - "cumWorkArea": "Cum Work Area", - "cumWorkTime": "Cum Work Time", - "taskTimelineTitle": "Task Timeline Title", - "viewMore": "View More", - "editRobotInfoTitle": "Edit Robot Info Title", - "deviceSnColon": "Device Sn Colon", - "deviceTypeColon": "Device Type Colon", - "deviceAliasLabel": "Device Alias Label", - "inputCustomAlias": "Input Custom Alias", - "aliasHint": "Alias Hint", - "fetchParamFail": "Fetch Param Fail", - "paramSaveSuccess": "Param Save Success", - "paramSaveFail": "Param Save Fail", - "paramSaveException": "Param Save Exception", - "paramLeftForwardGain": "Param Left Forward Gain", - "paramLeftBackwardGain": "Param Left Backward Gain", - "paramRightForwardGain": "Param Right Forward Gain", - "paramRightBackwardGain": "Param Right Backward Gain", - "paramRunSpeed": "Param Run Speed", - "paramChipUidSign": "Param Chip Uid Sign", - "paramChipUid": "Param Chip Uid", - "paramRemoteConfig": "Param Remote Config", - "paramKnifeMotorMode": "Param Knife Motor Mode", - "paramWalkMotorMode": "Param Walk Motor Mode", - "paramLeftMotorReverse": "Param Left Motor Reverse", - "paramRightMotorReverse": "Param Right Motor Reverse", - "paramSwapChannel": "Param Swap Channel", - "paramUse4G": "Param Use4G", - "paramForwardSpeedLimit": "Param Forward Speed Limit", - "paramTurnSpeedLimit": "Param Turn Speed Limit", - "paramKnifePolarity": "Param Knife Polarity", - "paramFanPolarity": "Param Fan Polarity", - "paramThrottlePolarity": "Param Throttle Polarity", - "paramLiftProtectTime": "Param Lift Protect Time", - "paramDualRtk": "Param Dual Rtk", - "paramKnifeChannel": "Param Knife Channel", - "paramFanChannel": "Param Fan Channel", - "paramThrottleChannel": "Param Throttle Channel", - "paramRemoteType": "Param Remote Type", - "paramRelayBoard": "Param Relay Board", - "paramLiftChannel": "Param Lift Channel", - "paramChassisChannel": "Param Chassis Channel", - "paramArmChannel": "Param Arm Channel", - "paramFuelPumpChannel": "Param Fuel Pump Channel", - "paramWifiName": "Param Wifi Name", - "paramWifiPassword": "Param Wifi Password", - "paramBatteryType": "Param Battery Type", - "paramDriveType": "Param Drive Type", - "paramGearRatio": "Param Gear Ratio", - "paramRobotLength": "Param Robot Length", - "paramRobotWidth": "Param Robot Width", - "paramRobotHeight": "Param Robot Height", - "paramKnifeWidth": "Param Knife Width", - "paramTyreSize": "Param Tyre Size", - "paramFirmwareVersion": "Param Firmware Version", - "paramDelFlag": "Param Del Flag", - "paramViewEditTitle": "Param View Edit Title", - "noData": "no Data", - "locationFail": "Location Fail", - "pointMarked": "Point Marked", - "minThreePoints": "Min Three Points", - "pathPlanDone": "Path Plan Done", - "pathPlanFailRetry": "Path Plan Fail Retry", - "completePathFirst": "Complete Path First", - "inputPlotName": "Input Plot Name", - "pathPlanning": "Path Planning", - "markedPointsCount": "Marked Points Count", - "workMode": "Work Mode", - "bowMode": "Bow Mode", - "abMode": "ab Mode", - "markPoint": "Mark Point", - "clearMarks": "Clear Marks", - "complete": "Complete", - "selectDevice": "Select Device", - "unknownDrone": "Unknown Drone", - "situationMap": "Situation Map", - "clearPlannedRoute": "Clear Planned Route", - "realtimeVideoMonitor": "Realtime Video Monitor", - "frontView": "Front View", - "backView": "Back View", - "leftView": "Left View", - "rightView": "Right View", - "panorama": "Panorama", - "robotStatus": "Robot Status", - "rtBattery": "rt Battery", - "rtVoltage": "rt Voltage", - "rtLeftMotor": "rt Left Motor", - "rtRightMotor": "rt Right Motor", - "rtLeftSpeed": "rt Left Speed", - "rtRightSpeed": "rt Right Speed", - "rtLeftTemp": "rt Left Temp", - "rtRightTemp": "rt Right Temp", - "rtMainTemp": "rt Main Temp", - "rtHeadingAngle": "rt Heading Angle", - "rtPitchAngle": "rt Pitch Angle", - "rtHeadingStatus": "rt Heading Status", - "rtInitialized": "rt Initialized", - "rtPositioning": "rt Positioning", - "gpsSingle": "Gps Single", - "dgpsDiff": "Dgps Diff", - "rtkFixed2": "Rtk Fixed2", - "rtkFloat": "Rtk Float", - "rtSatellites": "rt Satellites", - "satelliteCount": "Satellite Count", - "rtMode": "rt Mode", - "videoStopped": "Video Stopped", - "clickPlayHint": "Click Play Hint", - "remoteControl": "Remote Control", - "savePathTitle": "Save Path Title", - "plotNameLabel": "Plot Name Label", - "saving": "Saving", - "stationCameraNotFound": "Station Camera Not Found", - "indoor": "Indoor", - "outdoor": "Outdoor", - "switchStationCameraFail": "Switch Station Camera Fail", - "switchDroneLensFail": "Switch Drone Lens Fail", - "wideLens": "Wide Lens", - "zoomLens": "Zoom Lens", - "irLens": "ir Lens", - "noVideoSignal": "no Video Signal", - "rainYes": "Rain Yes", - "hangar": "Hangar", - "coverOpen": "Cover Open", - "coverClosed": "Cover Closed", - "inDock": "in Dock", - "outDock": "Out Dock", - "droneStatus": "Drone Status", - "horizontalSpeed": "Horizontal Speed", - "verticalSpeed": "Vertical Speed", - "headingAngle": "Heading Angle", - "gpsUnit": "Gps Unit", - "taskCompletedMsg": "Task Completed Msg", - "confirmDeleteTitle": "Confirm Delete Title", - "confirmDeleteContent": "Confirm Delete Content", - "confirmDeleteOk": "Confirm Delete Ok", - "routeDeletedSuccess": "Route Deleted Success", - "deleteFailRetry": "Delete Fail Retry", - "deleteFailNetwork": "Delete Fail Network", - "taskListRefreshFail": "Task List Refresh Fail", - "routeNoPathPoints": "Route No Path Points", - "checkRouteFail": "Check Route Fail", - "taskExecuteSuccess": "Task Execute Success", - "taskExecuteFail": "Task Execute Fail", - "taskExecuteException": "Task Execute Exception", - "taskCanceledSuccess": "Task Canceled Success", - "taskCancelFail": "Task Cancel Fail", - "taskCancelException": "Task Cancel Exception", - "taskPausedSuccess": "Task Paused Success", - "taskPauseFail": "Task Pause Fail", - "taskPauseException": "Task Pause Exception", - "taskResumeFail": "Task Resume Fail", - "taskResumeException": "Task Resume Exception", - "waylineFallback": "Wayline Fallback", - "waylineListFetchFail": "Wayline List Fetch Fail", - "fillRequiredFields": "Fill Required Fields", - "createTaskSuccess": "Create Task Success", - "createTaskFail": "Create Task Fail", - "createTaskException": "Create Task Exception", - "trendYesterday": "Trend Yesterday", - "trendFlat": "Trend Flat", - "taskListFetchFail": "Task List Fetch Fail", - "boardTaskFetchFail": "Board Task Fetch Fail", - "statusExecSuccess": "Status Exec Success", - "statusPreparing": "Status Preparing", - "statusExecFailed": "Status Exec Failed", - "statusWaitingStart": "Status Waiting Start", - "statusStartFailed": "Status Start Failed", - "statusRestored": "Status Restored", - "statusTerminated": "Status Terminated", - "statusTimeout": "Status Timeout", - "deviceSn": "Device Sn", - "requestFail": "Request Fail", - "selectExecuteDroneFirst": "Select Execute Drone First", - "waylineTaskCreated": "Wayline Task Created", - "waylineExecFail": "Wayline Exec Fail", - "todayWaylinePlan": "Today Wayline Plan", - "unitTiao": "Unit Tiao", - "inProgressDesc": "in Progress Desc", - "executingTasks": "Executing Tasks", - "unitGe": "Unit Ge", - "pendingApprovalTasks": "Pending Approval Tasks", - "taskCompletionRate": "Task Completion Rate", - "aiOptimizeGain": "ai Optimize Gain", - "coverageEquipment": "Coverage Equipment", - "coverageValue": "Coverage Value", - "allOnline": "All Online", - "noDroneSelected": "no Drone Selected", - "commandSent": "Command Sent", - "commandSendFail": "Command Send Fail", - "apiRequestException": "Api Request Exception", - "noDetail": "no Detail", - "fetchDetailException": "Fetch Detail Exception", - "taskExecSuccess": "Task Exec Success", - "taskSuspended2": "Task Suspended2", - "taskRestored2": "Task Restored2", - "taskReturnedHome2": "Task Returned Home2", - "statusUpdateSuccess": "Status Update Success", - "operationFail": "Operation Fail", - "operationApiException": "Operation Api Exception", - "waylineEditPlan": "Wayline Edit Plan", - "optimize": "Optimize", - "inspectRoute": "Inspect Route", - "mowRoute": "Mow Route", - "droneAirport": "Drone Airport", - "chargePoint": "Charge Point", - "noFlyZone": "no Fly Zone", - "deviceTaskList": "Device Task List", - "allDrones": "All Drones", - "taskOrchestrationAI": "Task Orchestration AI", - "typeDroneHotspot": "Type Drone Hotspot", - "levelHigh": "Level High", - "statusSuggestExec": "Status Suggest Exec", - "typeFenceInspect": "Type Fence Inspect", - "typeComponentClean": "Type Component Clean", - "levelMid": "Level Mid", - "statusWaitExec": "Status Wait Exec", - "typeArrayMow": "Type Array Mow", - "typeAIRecheck": "Type AI Recheck", - "levelLow": "Level Low", - "statusPendingApproval": "Status Pending Approval", - "colNo": "Col No", - "suggestTime": "Suggest Time", - "aiSuggestionColon": "ai Suggestion Colon", - "aiAdvice1": "ai Advice1", - "aiAdvice2": "ai Advice2", - "aiAdvice3": "ai Advice3", - "oneClickSchedule": "One Click Schedule", - "smartAssign": "Smart Assign", - "waylineParamsTitle": "Wayline Params Title", - "currentWayline": "Current Wayline", - "rthMode": "Rth Mode", - "waylinePrecision": "Wayline Precision", - "resumeBreakpoint": "Resume Breakpoint", - "safeRthBattery": "Safe Rth Battery", - "repeatTypeLabel": "Repeat Type Label", - "lostControlAction": "Lost Control Action", - "obstacleAvoidSwitch": "Obstacle Avoid Switch", - "nightFlightLimit": "Night Flight Limit", - "resumeTask": "Resume Task", - "pauseTask": "Pause Task", - "weatherWindowTitle": "Weather Window Title", - "suitability": "Suitability", - "suitableExec2": "Suitable Exec2", - "suitable": "Suitable", - "precipStatus": "Precip Status", - "hasRain": "Has Rain", - "gnssQuality": "Gnss Quality", - "fixed2": "Fixed2", - "notFixed2": "Not Fixed2", - "weatherAdvice1": "Weather Advice1", - "weatherAdvice2": "Weather Advice2", - "waylineList": "Wayline List", - "selectDrone": "Select Drone", - "searchWaylinePlaceholder": "Search Wayline Placeholder", - "unknownTime": "Unknown Time", - "executeWayline": "Execute Wayline", - "ganttViewTitle": "Gantt View Title", - "dronePortA01": "Drone Port A01", - "typeHotspotInspect": "Type Hotspot Inspect", - "typeRecheck": "Type Recheck", - "inspectRobotRbt": "Inspect Robot Rbt", - "mowRobotGr": "Mow Robot Gr", - "washDroneUav": "Wash Drone Uav", - "workTaskBoard": "Work Task Board", - "startLabel": "Start Label", - "endLabel": "End Label", - "pendingExec": "Pending Exec", - "equipmentColon": "Equipment Colon", - "startTimeColon": "Start Time Colon", - "completedTimeColon": "Completed Time Colon", - "createWaylineTaskTitle": "Create Wayline Task Title", - "airportSn": "Airport Sn", - "landingDockSn": "Landing Dock Sn", - "returnHomeAltitude": "Return Home Altitude", - "returnHomeMode": "Return Home Mode", - "minBattery": "Min Battery", - "repeatMode": "Repeat Mode", - "weekdayExec": "Weekday Exec", - "weekSun": "Week Sun", - "weekMon": "Week Mon", - "weekTue": "Week Tue", - "weekWed": "Week Wed", - "weekThu": "Week Thu", - "weekFri": "Week Fri", - "weekSat": "Week Sat", - "monthDays": "Month Days", - "whichWeek": "Which Week", - "weekNo": "Week No", - "weekday": "Weekday", - "execTimePoint": "Exec Time Point", - "inputTimestamp": "Input Timestamp", - "confirmCreate": "Confirm Create", - "executeWaylineTask": "Execute Wayline Task", - "executeNow": "Execute Now", - "selectedWaylineColon": "Selected Wayline Colon", - "executeDeviceColon": "Execute Device Colon", - "noDeviceSelected": "no Device Selected", - "returnHomeAltitudeColon": "Return Home Altitude Colon", - "deviceData": "Device Data", - "equipmentControl": "Equipment Control", - "realtimePowerData": "Realtime Power Data", - "communicationStatus": "Communication Status", - "communicationNormal": "Communication Normal", - "groupOf": "Group Of", - "weatherStation": "Weather Station", - "stationTopology": "Station Topology", - "communicating": "Communicating", - "realtimeMonitorList": "Realtime Monitor List", - "allTypes": "All Types", - "searchDeviceName": "Search Device Name", - "dronePort": "Drone Port", - "deviceOnlineRate": "Device Online Rate", - "onlineRate": "Online Rate", - "totalCount": "Total Count" - }, - "systemSetting": { - "pleaseSelectRoles": "Please Select Roles", - "batchDeleteRolesTitle": "Batch Delete Roles Title", - "confirmDeleteSelectedRoles": "Confirm Delete Selected Roles", - "batchDeleteSuccess": "Batch Delete Success", - "resetFail": "Reset Fail", - "pleaseSelectUsers": "Please Select Users", - "batchDeleteUsersTitle": "Batch Delete Users Title", - "confirmDeleteSelectedUsers": "Confirm Delete Selected Users", - "userAndRole": "User and Role", - "belongingOrg": "Belonging Org", - "belongingSite": "Belonging Site", - "devicePerm": "Device Perm", - "hasPerm": "Has Perm", - "noPerm": "no Perm", - "confirmDeleteUser": "Confirm Delete User", - "totalCount": "Total Count", - "permissionLabel": "Permission Label", - "levelLabel": "Level Label", - "editRole": "Edit Role", - "roleLevel": "Role Level", - "pleaseInputRoleLevel": "Please Input Role Level", - "account": "Account", - "nicknameShort": "Nickname Short", - "phoneShort": "Phone Short", - "editPasswordPlaceholder": "Edit Password Placeholder", - "chooseRole": "Choose Role", - "pleaseSelectOrg": "Please Select Org", - "pleaseSelectSite": "Please Select Site", - "deviceOperatePermLabel": "Device Operate Perm Label", - "has": "Has", - "none": "None" - }, - "aiAnalysis": { - "objectDetection": "Object Detection", - "detectDesc": "Detect Desc", - "thermalSegmentation": "Thermal Segmentation", - "segmentationDesc": "Segmentation Desc", - "getModelsFailed": "Get Models Failed", - "uploadFirst": "Upload First", - "submitTaskFailed": "Submit Task Failed", - "thermalAnalysisComplete": "Thermal Analysis Complete", - "taskSuccess": "Task Success", - "taskExecutionError": "Task Execution Error", - "cancelled": "Cancelled", - "uploadThermalFirst": "Upload Thermal First", - "thermalAnalysisFailed": "Thermal Analysis Failed", - "detectTaskName": "Detect Task Name", - "segmentationTaskName": "Segmentation Task Name", - "algoCount": "Algo Count", - "detectAndSeg": "Detect and Seg", - "onlineServices": "Online Services", - "healthCheck": "Health Check", - "modelCount": "Model Count", - "detectModelRegistry": "Detect Model Registry", - "historyRecords": "History Records", - "pageDebugRecords": "Page Debug Records", - "detectModel": "Detect Model", - "default": "Default", - "inputType": "Input Type", - "image": "Image", - "inferencePreset": "Inference Preset", - "quality": "Quality", - "dragFile": "Drag File", - "supportedFormats": "Supported Formats", - "processing": "Processing", - "submitDetectTask": "Submit Detect Task", - "serverDemo": "Server Demo", - "refreshModels": "Refresh Models", - "thermalFileLabel": "Thermal File Label", - "uploadThermal": "Upload Thermal", - "arrayMask": "Array Mask", - "panelGeojson": "Panel Geojson", - "submitThermalAnalysis": "Submit Thermal Analysis", - "readServerHistory": "Read Server History", - "resultDisplay": "Result Display", - "resultViewHint": "Result View Hint", - "inputPreview": "Input Preview", - "resultImageVideo": "Result Image Video", - "showResultAfterTask": "Show Result After Task", - "resultJson": "Result Json", - "noResult": "no Result", - "thermalInteractiveView": "Thermal Interactive View", - "clickHotspotHint": "Click Hotspot Hint", - "hotspotCount": "Hotspot Count", - "panelArea": "Panel Area", - "analysisId": "Analysis Id", - "pointDetails": "Point Details", - "selectHotspotPanel": "Select Hotspot Panel", - "hotspot": "Hotspot", - "blockNumber": "Block Number", - "originalPixels": "Original Pixels", - "overlayPixels": "Overlay Pixels", - "area": "Area", - "waitingSegmentation": "Waiting Segmentation", - "hotspotPanelList": "Hotspot Panel List", - "panelLabel": "Panel Label", - "centerTitle": "Center Title", - "algorithmList": "Algorithm List", - "integratedCount": "Integrated Count", - "detectWorkspace": "Detect Workspace", - "segWorkspace": "Seg Workspace", - "asyncTask": "Async Task", - "syncAnalysis": "Sync Analysis", - "detectWorkspaceDesc": "Detect Workspace Desc", - "segWorkspaceDesc": "Seg Workspace Desc", - "historyAnalysis": "History Analysis", - "noHistory": "no History", - "detect": "Detect", - "segment": "Segment", - "hotspotRecognition": "Hotspot Recognition", - "abnormalString": "Abnormal String", - "recommendedCleanBlock": "Recommended Clean Block", - "videoAbnormalEvent": "Video Abnormal Event", - "videoIntelligentAnalysis": "Video Intelligent Analysis", - "perimeterIntrusion": "Perimeter Intrusion", - "perimeterIntrusionDesc": "Perimeter Intrusion Desc", - "personnelIntrusion": "Personnel Intrusion", - "personnelIntrusionDesc": "Personnel Intrusion Desc", - "fireSmokeDetection": "Fire Smoke Detection", - "fireSmokeDesc": "Fire Smoke Desc", - "areaLoitering": "Area Loitering", - "areaLoiteringDesc": "Area Loitering Desc", - "motionDetection": "Motion Detection", - "motionDetectionDesc": "Motion Detection Desc", - "perimeterIntrusionTimeline": "Perimeter Intrusion Timeline", - "personnelIntrusionTimeline": "Personnel Intrusion Timeline", - "areaLoiteringTimeline": "Area Loitering Timeline", - "motionDetectionTimeline": "Motion Detection Timeline", - "perimeterClimbTimeline": "Perimeter Climb Timeline", - "perimeterIntrusionType": "Perimeter Intrusion Type" - }, - "video": { - "fileDetails": "File Details", - "sourceDevice": "Source Device", - "startEndTime": "Start End Time", - "capacity": "Capacity", - "videoReplayCenter": "Video Replay Center", - "allRecordings": "All Recordings", - "todayRecordings": "Today Recordings", - "timeSpan": "Time Span", - "onlineSearch": "Online Search", - "labelMainFront": "Label Main Front", - "labelRear": "Label Rear", - "labelLeft": "Label Left", - "labelRight": "Label Right", - "labelFrontDrive": "Label Front Drive", - "labelRearMount": "Label Rear Mount", - "labelLeftWing": "Label Left Wing", - "labelRightWing": "Label Right Wing", - "labelCargo": "Label Cargo", - "labelMainProbe": "Label Main Probe", - "labelPanorama": "Label Panorama", - "labelDetail": "Label Detail", - "currentDutyDevice": "Current Duty Device", - "videoStreamChannels": "Video Stream Channels", - "refreshSignal": "Refresh Signal", - "fullScreenWall": "Full Screen Wall", - "ptzServoControl": "Ptz Servo Control", - "systemIntegratedCommand": "System Integrated Command", - "twoWayIntercom": "Two Way Intercom", - "triggerRemoteRepellent": "Trigger Remote Repellent", - "aiVisualTracking": "ai Visual Tracking", - "activeVideoStreams": "Active Video Streams", - "positionArray1": "Position Array1", - "domeCamera": "Dome Camera", - "recording": "Recording", - "positionInverterRoom": "Position Inverter Room", - "positionStationGate": "Position Station Gate", - "positionPerimeterNorth": "Position Perimeter North", - "positionWeatherStation": "Position Weather Station", - "positionEquipmentArea": "Position Equipment Area", - "positionStorageBattery": "Position Storage Battery", - "positionEnergyStorage": "Position Energy Storage", - "positionPerimeterSouth": "Position Perimeter South", - "positionArrayWest": "Position Array West", - "cameraName": "Camera Name", - "recordingStatus": "Recording Status", - "lastEventTime": "Last Event Time", - "onlineCameras": "Online Cameras", - "unitDevice": "Unit Device", - "onlineRateTrend": "Online Rate Trend", - "offlineCameras": "Offline Cameras", - "offlineRateTrend": "Offline Rate Trend", - "todayAlertEvents": "Today Alert Events", - "unitIncident": "Unit Incident", - "vsYesterdayPercent": "vs Yesterday Percent", - "perimeterAlerts": "Perimeter Alerts", - "storageUsage": "Storage Usage", - "storageUsageTrend": "Storage Usage Trend", - "videoMonitorCenter": "Video Monitor Center", - "customLayout": "Custom Layout", - "mainView": "Main View", - "liveLabel": "Live Label", - "cameraDeviceList": "Camera Device List", - "searchCameraPlaceholder": "Search Camera Placeholder", - "allStatuses": "All Statuses", - "eventTimeline": "Event Timeline", - "allTypes": "All Types", - "viewMore": "View More", - "recentAlertSnapshots": "Recent Alert Snapshots" - }, - "login": { - "and": "And" - }, - "profile": { - "requestFailed": "Request Failed", - "basicInfo": "Basic Info", - "phoneInvalid": "Phone Invalid", - "emailInvalid": "Email Invalid", - "emailPlaceholder": "Email Placeholder", - "remarkPlaceholder": "Remark Placeholder", - "changePassword": "Change Password", - "oldPasswordPlaceholder": "Old Password Placeholder", - "newPasswordPlaceholder": "New Password Placeholder", - "passwordLengthError": "Password Length Error", - "confirmPasswordRequired": "Confirm Password Required", - "confirmPasswordPlaceholder": "Confirm Password Placeholder" - }, - "home": { - "realtimePower": "Realtime Power", - "totalPower": "Total Power", - "ratedPower": "Rated Power", - "gridConnection": "Grid Connection", - "gridConnected": "Grid Connected", - "frequency": "Frequency", - "gridVoltage": "Grid Voltage", - "phaseA": "Phase A", - "todayAccumulated": "Today Accumulated", - "currentIrradiance": "Current Irradiance", - "ambientTemperature": "Ambient Temperature", - "powerCurve": "Power Curve", - "today": "Today", - "inverterPowerCompare": "Inverter Power Compare", - "stringCurrentHeatmap": "String Current Heatmap", - "current": "Current" - }, - "router": { - "realtimeMonitorCenter": "Realtime Monitor Center", - "realtimeMonitorDesc": "Realtime Monitor Desc" - }, - "report": { - "monthlyGeneration": "Monthly Generation", - "monthOverMonthUp": "Month Over Month Up", - "prAverage": "pr Average", - "workOrderCompletionRate": "Work Order Completion Rate", - "monthlyTotalOrders": "Monthly Total Orders", - "alertClosureRate": "Alert Closure Rate", - "criticalAlertCount": "Critical Alert Count", - "cleaningRevenueImprovement": "Cleaning Revenue Improvement", - "estimatedAdditionalGeneration": "Estimated Additional Generation", - "autoGeneratedReports": "Auto Generated Reports", - "unitReport": "Unit Report", - "monthlyAccumulated": "Monthly Accumulated", - "stationMonthlyReportFile": "Station Monthly Report File", - "generated": "Generated", - "weeklyOperationSummary": "Weekly Operation Summary", - "aiDiagnosisDaily": "ai Diagnosis Daily", - "generating": "Generating", - "alertClosureWeekly": "Alert Closure Weekly", - "monthlyOperationReport": "Monthly Operation Report", - "monthlyOperationReportDesc": "Monthly Operation Report Desc", - "deviceHealthReport": "Device Health Report", - "deviceHealthReportDesc": "Device Health Report Desc", - "cleaningOptimizationReport": "Cleaning Optimization Report", - "cleaningEffectReportDesc": "Cleaning Effect Report Desc", - "inspectionRobotReport": "Inspection Robot Report", - "inspectionRobotReportDesc": "Inspection Robot Report Desc", - "stationMonthly": "Station Monthly", - "alertWeekly": "Alert Weekly", - "systemAuto": "System Auto", - "aiAnalysisReport": "ai Analysis Report", - "operationSummary": "Operation Summary", - "operationReport": "Operation Report", - "cleaningEffectReport": "Cleaning Effect Report", - "overview": "Overview", - "reportCycle": "Report Cycle", - "reportType": "Report Type", - "exportPdf": "Export Pdf", - "exportExcel": "Export Excel", - "monthlyOperationAnalysis": "Monthly Operation Analysis", - "generation": "Generation", - "predictedGeneration": "Predicted Generation", - "monthlyAccumulatedGeneration": "Monthly Accumulated Generation", - "theoreticalGeneration": "Theoretical Generation", - "generationDeviation": "Generation Deviation", - "averageIrradiance": "Average Irradiance", - "unitIrradiancePerDay": "Unit Irradiance Per Day", - "generationMeteorology": "Generation Meteorology", - "workOrderAlertClosure": "Work Order Alert Closure", - "closureRate": "Closure Rate", - "alarmCount": "Alarm Count", - "aiAnalysisStatistics": "ai Analysis Statistics", - "unitItem": "Unit Item", - "subscriptionDispatch": "Subscription Dispatch", - "subscribers": "Subscribers", - "roleOmSupervisor": "Role Om Supervisor", - "roleStationEngineer": "Role Station Engineer", - "roleDeviceOm": "Role Device Om", - "roleOmManager": "Role Om Manager", - "dispatchChannels": "Dispatch Channels", - "email": "Email", - "systemNotification": "System Notification", - "sendPlan": "Send Plan", - "weeklyAutoSend": "Weekly Auto Send", - "reportDirectory": "Report Directory", - "reportName": "Report Name", - "templateCenter": "Template Center", - "generationRecords": "Generation Records", - "generateTime": "Generate Time", - "generator": "Generator" - }, - "roles": { - "editSuccess": "Edit Success", - "addSuccess": "Add Success", - "manageMembers": "Manage Members", - "confirmDeleteRole": "Confirm Delete Role", - "permissionKey": "Permission Key", - "superAdmin": "Super Admin", - "orgAdmin": "Org Admin", - "editRole": "Edit Role", - "roleNamePlaceholder": "Role Name Placeholder", - "rolePermission": "Role Permission", - "roleKeyPlaceholder": "Role Key Placeholder", - "roleSortLabel": "Role Sort Label", - "menuPermissionConfig": "Menu Permission Config" - }, - "users": { - "notAssigned": "Not Assigned", - "languagePlaceholder": "Language Placeholder", - "rolePlaceholder": "Role Placeholder", - "siteId": "Site Id" - } - } -} \ No newline at end of file diff --git a/tmp_newkeys.json b/tmp_newkeys.json deleted file mode 100644 index 8ed703e..0000000 --- a/tmp_newkeys.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "zh": { - "devices": { - "uavUavSn": "未选中无人机或无人机SN不存在", - "fixed2SuccessFixed2": "指令下发成功", - "fixed2AbnormalFixed2": "接口请求异常", - "waylineTasksFixed2": "请先选择航线任务", - "fixed2ActionsFixed2Fixed2AbnormalFixed2": "操作接口异常", - "noDetailFixed2": "暂无详情", - "detailFixed2Fixed2AbnormalFixed2": "获取详情接口异常", - "fixed2DeviceFixed2InfoFixed2AbnormalFixed2": "设备信息异常", - "loginFixed2": "请先登录", - "fixed2LoginFixed2InfoLoginFixed2": "登录信息失效,请重新登录", - "fixed2OthersWebControlFixed2": "其他web端正在控制", - "abnormalRequestFailed": "网络异常或请求失败,请重试", - "noWaylineDataFixed2": "暂无航线数据", - "deleteFixed2Waypoint": "已删除航点并同步地图", - "waypoint2": "已清空所有航点与地图轨迹", - "selectTaskStartTimeFixed2": "请选择任务开始时间", - "fixed2Fixed2Abnormal": "接口异常,请检查", - "fixed2NoWaypointsSaveFixed2": "无航点可保存", - "fixed2UavSaveFixed2Local": "无人机不支持保存本地航线", - "addNewFixed2SaveLocalFixed2": "✅ 航线已新增保存到本地", - "taskSuspended2Fixed23": "请先下发任务", - "fixed2OthersControlFixed2": "其他端正在控制", - "failedFixed22": "权限校验失败", - "noneControl": "无控制权限", - "fixed2ControlFixed2": "控制请求超时" - }, - "systemSetting": { - "fixed2MenuFixed2LoadFailedFixed2": "菜单加载失败", - "s26": "请先生成", - "notFixed2Search": "未查询到数据", - "fixed2SearchFixed2FailedFixed2": "查询失败", - "fixed2PleaseSelectDeleteRoleFixed2": "请选择要删除的角色", - "fixed2PleaseSelectDelete2": "请选择要删除的用户" - }, - "home": { - "cleaningOrderGeneratedSuccessfullyFixed2": "✅ 清洗工单生成成功", - "failedFixed2": "❌ 工单生成接口调用失败" - }, - "workOrder": { - "fixed2DispatchOrderFixed2SuccessFixed2": "工单派单成功", - "fixed2DispatchAbnormalFixed2": "派单请求异常", - "listFixed2Fixed2FailedFixed2": "获取工单列表失败", - "s3": "请先选择工单", - "completedFixed2": "工单已完成", - "completeFailFixed2": "工单完成失败", - "detailFixed2Fixed2FailedFixed2": "获取工单详情失败", - "s7": "请先选择一条工单", - "fixed2ModifyOrderFixed2SuccessFixed2": "修改工单成功", - "fixed2ModifyOrderFixed2FailedFixed2": "修改工单失败", - "executeSuccessFixed2": "工单执行成功", - "executeFailFixed2": "工单执行失败", - "suspendedFixed2": "工单已挂起", - "fixed2SuspendFixed2FailedFixed2": "挂起失败", - "fixed2PleaseSelectDelete": "请选择要删除的工单" - } - }, - "en": { - "devices": { - "uavUavSn": "未选中 UAV 或 UAV SN不存在", - "fixed2SuccessFixed2": "Fixed2 指令 下发 Success Fixed2", - "fixed2AbnormalFixed2": "Fixed2 接口 请求 Abnormal Fixed2", - "waylineTasksFixed2": "请先选择 Wayline Tasks Fixed2", - "fixed2ActionsFixed2Fixed2AbnormalFixed2": "Fixed2 Actions Fixed2 接口 Fixed2 Abnormal Fixed2", - "noDetailFixed2": "暂 no Detail Fixed2", - "detailFixed2Fixed2AbnormalFixed2": "获取 Detail Fixed2 接口 Fixed2 Abnormal Fixed2", - "fixed2DeviceFixed2InfoFixed2AbnormalFixed2": "Fixed2 Device Fixed2 Info Fixed2 Abnormal Fixed2", - "loginFixed2": "请先 Login Fixed2", - "fixed2LoginFixed2InfoLoginFixed2": "Fixed2 Login Fixed2 Info 失效,请重新 Login Fixed2", - "fixed2OthersWebControlFixed2": "Fixed2 Others web端正在 Control Fixed2", - "abnormalRequestFailed": "网络 Abnormal 或 Request Failed ,请重试", - "noWaylineDataFixed2": "暂 no Wayline Data Fixed2", - "deleteFixed2Waypoint": "已 Delete Fixed2 Waypoint 并同步地图", - "waypoint2": "已清空所有 Waypoint 与地图轨迹", - "selectTaskStartTimeFixed2": "请 Select Task Start Time Fixed2", - "fixed2Fixed2Abnormal": "Fixed2 接口 Fixed2 Abnormal ,请检查", - "fixed2NoWaypointsSaveFixed2": "Fixed2 no Waypoints 可 Save Fixed2", - "fixed2UavSaveFixed2Local": "Fixed2 UAV 不支持 Save Fixed2 Local 航线", - "addNewFixed2SaveLocalFixed2": "✅ 航线已 Add New Fixed2 Save 到 Local Fixed2", - "taskSuspended2Fixed23": "请先下发 Task Suspended2 Fixed2", - "fixed2OthersControlFixed2": "Fixed2 Others 端正在 Control Fixed2", - "failedFixed22": "权限校验 Failed Fixed2", - "noneControl": "None Control 权限", - "fixed2ControlFixed2": "Fixed2 Control 请求 超时 Fixed2" - }, - "systemSetting": { - "fixed2MenuFixed2LoadFailedFixed2": "Fixed2 Menu Fixed2 Load Failed Fixed2", - "s26": "请先生成", - "notFixed2Search": "Not Fixed2 Search 到数据", - "fixed2SearchFixed2FailedFixed2": "Fixed2 Search Fixed2 Failed Fixed2", - "fixed2PleaseSelectDeleteRoleFixed2": "Fixed2 Please select 要 Delete 的 Role Fixed2", - "fixed2PleaseSelectDelete2": "Fixed2 Please select 要 Delete 的用户" - }, - "home": { - "cleaningOrderGeneratedSuccessfullyFixed2": "✅ Cleaning order generated successfully Fixed2", - "failedFixed2": "❌ 工单生成 接口 调用 Failed Fixed2" - }, - "workOrder": { - "fixed2DispatchOrderFixed2SuccessFixed2": "Fixed2 Dispatch Order Fixed2 Success Fixed2", - "fixed2DispatchAbnormalFixed2": "Fixed2 Dispatch 请求 Abnormal Fixed2", - "listFixed2Fixed2FailedFixed2": "获取 工单 List Fixed2 Fixed2 Failed Fixed2", - "s3": "请先选择工单", - "completedFixed2": "工单 Completed Fixed2", - "completeFailFixed2": "工单 Complete Fail Fixed2", - "detailFixed2Fixed2FailedFixed2": "获取 工单 Detail Fixed2 Fixed2 Failed Fixed2", - "s7": "请先选择一条工单", - "fixed2ModifyOrderFixed2SuccessFixed2": "Fixed2 Modify Order Fixed2 Success Fixed2", - "fixed2ModifyOrderFixed2FailedFixed2": "Fixed2 Modify Order Fixed2 Failed Fixed2", - "executeSuccessFixed2": "工单 Execute Success Fixed2", - "executeFailFixed2": "工单 Execute Fail Fixed2", - "suspendedFixed2": "工单 Suspended Fixed2", - "fixed2SuspendFixed2FailedFixed2": "Fixed2 Suspend Fixed2 Failed Fixed2", - "fixed2PleaseSelectDelete": "Fixed2 Please select 要 Delete 的工单" - } - } -} \ No newline at end of file diff --git a/tmp_orb.cjs b/tmp_orb.cjs deleted file mode 100644 index d9fbb64..0000000 --- a/tmp_orb.cjs +++ /dev/null @@ -1,28 +0,0 @@ -const esbuild = require('esbuild'); -const fs = require('fs'); -const path = require('path'); -(async () => { - const files = [ - 'components/SystemSetting/BasicSettings.tsx', - 'components/SystemSetting/SerialNumGenerate.jsx', - 'components/SystemSetting/DroneManagement.tsx', - 'components/SystemSetting/SmartDeviceManagement.tsx', - 'components/SystemSetting/AlarmSettingsManagement.tsx', - 'components/SystemSetting/LogManagement.tsx', - 'components/SystemSetting/OnlineUser.tsx', - 'components/SystemSetting/VideoManagement.tsx', - 'components/SystemSetting/WorkOrderSettingsManagement.tsx' - ]; - for (const f of files) { - const s = fs.readFileSync('src/' + f, 'utf8'); - const ext = path.extname(f); - const loader = ext === '.tsx' ? 'tsx' : ext === '.ts' ? 'ts' : ext === '.jsx' ? 'jsx' : 'js'; - try { - await esbuild.transform(s, { loader, target: 'es2020' }); - console.log('ORIG OK ' + f); - } catch (e) { - console.log('ORIG FAIL ' + f + ' :: ' + String(e.message).split('\n').slice(0, 4).join(' | ')); - } - } - console.log('DONE'); -})(); diff --git a/tmp_pagefiles.txt b/tmp_pagefiles.txt deleted file mode 100644 index b0a75be..0000000 --- a/tmp_pagefiles.txt +++ /dev/null @@ -1,33 +0,0 @@ -src/components/devices/DeviceControl.tsx -src/components/devices/deviceController.js -src/components/devices/DeviceOverviewPage.tsx -src/components/devices/RobotTaskPage.tsx -src/components/LanguageSwitcher.tsx -src/components/SystemSetting/AlarmSettingsManagement.tsx -src/components/SystemSetting/AllDeviceManagement.tsx -src/components/SystemSetting/BasicSettings.tsx -src/components/SystemSetting/CameraManagement.tsx -src/components/SystemSetting/DeviceAccessPage.tsx -src/components/SystemSetting/DeviceManagement.tsx -src/components/SystemSetting/DroneManagement.tsx -src/components/SystemSetting/FlvPlayer.tsx -src/components/SystemSetting/LogManagement.tsx -src/components/SystemSetting/MenuList.tsx -src/components/SystemSetting/OnlineUser.tsx -src/components/SystemSetting/Organization.tsx -src/components/SystemSetting/SerialNumGenerate.jsx -src/components/SystemSetting/SmartDeviceManagement.tsx -src/components/SystemSetting/StationManage.tsx -src/components/SystemSetting/SystemMaintain.tsx -src/components/SystemSetting/UserPage.tsx -src/components/SystemSetting/VideoManagement.tsx -src/components/SystemSetting/WorkOrderSettingsManagement.tsx -src/components/VideoPlayer.tsx -src/pages/Agri.jsx -src/pages/AIAnalysis.tsx -src/pages/CleanOptimization.tsx -src/pages/Home.tsx -src/pages/RealTimeMonitor.tsx -src/pages/SystemSetting.tsx -src/pages/VideoMonitorPage.tsx -src/pages/WorkOrder.tsx diff --git a/tmp_perfile.cjs b/tmp_perfile.cjs deleted file mode 100644 index f7f4dad..0000000 --- a/tmp_perfile.cjs +++ /dev/null @@ -1,43 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules', 'i18n']; -const CJK = /[一-鿿]/; -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!excludeDirs.includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} -const files = walk(root); -const result = []; -for (const f of files) { - const lines = fs.readFileSync(f, 'utf8').split('\n'); - let userFacing = 0; - let totalCJK = 0; - for (const line of lines) { - const trimmed = line.trim(); - // skip pure comments - if (trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*')) continue; - // skip console.* lines - if (/console\./.test(line)) continue; - // skip lines that are only a comment after code (heuristic: contains // and no JSX/t() before) - if (CJK.test(line)) { - totalCJK++; - // user-facing heuristics: JSX text, string props, antd message, Option - const isCommentOnly = /\/\/.*[一-鿿]/.test(line) && !/(>|placeholder|title|label|content|message\.|notification\.|Modal\.|Tooltip|text=|children)/.test(line); - if (!isCommentOnly) userFacing++; - } - } - if (totalCJK > 0) result.push({ f: f.replace(root + '\\', ''), totalCJK, userFacing }); -} -result.sort((a, b) => b.userFacing - a.userFacing); -console.log('Files with CJK:', result.length); -console.log('Total CJK lines (all):', result.reduce((s, r) => s + r.totalCJK, 0)); -console.log('Estimated user-facing CJK lines:', result.reduce((s, r) => s + r.userFacing, 0)); -console.log('\nPer-file (user-facing est):'); -for (const r of result) console.log(String(r.userFacing).padStart(5), '\t', r.f); diff --git a/tmp_replace.cjs b/tmp_replace.cjs deleted file mode 100644 index 8e5cf68..0000000 --- a/tmp_replace.cjs +++ /dev/null @@ -1,148 +0,0 @@ -// Conservative hardcoded-Chinese -> t() replacement with esbuild syntax gate. -// Scope: files already using t(); only unambiguous UI contexts; braces/parens excluded; -// files that fail esbuild transform are NOT written. -const fs = require('fs'); -const path = require('path'); -const esbuild = require('esbuild'); - -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules', 'i18n']; -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!excludeDirs.includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { p = p || ''; r = r || {}; for (const k of Object.keys(o)) { const key = p ? p + '.' + k : k; if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); else r[key] = o[k]; } return r; } - -const zhMap = flat(load('src/locales/zh/index.ts')); -const enMap = flat(load('src/locales/en/index.ts')); -const valToKey = {}; const valToEn = {}; -for (const k of Object.keys(zhMap)) { if (typeof zhMap[k] === 'string') { if (!(zhMap[k] in valToKey)) valToKey[zhMap[k]] = k; if (typeof enMap[k] === 'string') valToEn[zhMap[k]] = enMap[k]; } } -const allKeys = new Set([...Object.keys(zhMap), ...Object.keys(enMap)]); -const phraseKeys = Object.keys(valToEn).sort((a, b) => b.length - a.length); -function translateZh(zh) { - if (valToEn[zh]) return valToEn[zh]; - let s = zh; - for (const k of phraseKeys) { if (k.length >= 2) s = s.split(k).join('\u0001' + valToEn[k] + '\u0001'); } - return s.split('\u0001').map(seg => valToEn[seg] || seg).join(' ').replace(/\s+/g, ' ').trim() || zh; -} -function nsForFile(f) { - const rel = f.replace(root + '\\', '').replace(/\\/g, '/').toLowerCase(); - if (rel.includes('systemsetting')) return 'systemSetting'; - if (rel.includes('devices/') || rel.includes('device')) return 'devices'; - if (rel.includes('alerts')) return 'alerts'; - if (rel.includes('aianalysis') || rel.includes('aidiagnos')) return 'aiAnalysis'; - if (rel.includes('clean')) return 'clean'; - if (rel.includes('report')) return 'report'; - if (rel.includes('workorder')) return 'workOrder'; - if (rel.includes('login')) return 'login'; - if (rel.includes('profile')) return 'profile'; - if (rel.includes('users')) return 'users'; - if (rel.includes('roles')) return 'roles'; - if (rel.includes('home')) return 'home'; - if (rel.includes('video')) return 'video'; - if (rel.includes('router') || rel.includes('layout')) return 'layout'; - return 'page'; -} -function camel(s) { - s = s.replace(/[^A-Za-z0-9]+/g, ' ').trim().toLowerCase(); - const parts = s.split(' ').filter(Boolean); - if (!parts.length) return ''; - return parts.map((p, i) => i === 0 ? p : p.charAt(0).toUpperCase() + p.slice(1)).join(''); -} - -const SKIP_ATTR = new Set(['key', 'id', 'path', 'href', 'src', 'to', 'type', 'name', 'value', 'className', 'data', 'mode', 'status', 'field', 'prop', 'ref']); -const UI_PROP = new Set(['title', 'content', 'okText', 'cancelText', 'message', 'description', 'label', 'placeholder', 'text', 'tooltip', 'subTitle', 'subtitle']); - -const rxJSX = />([^<>`{}()]*[一-鿿][^<>`{}()]*) { const k = keyFor(inner); if (!k) return m; rep++; return '>{t(\'' + k + '\')}<'; }); - s = s.replace(rxAttr, (m, attr, q, val) => { - if (SKIP_ATTR.has(attr)) return m; - if (val.includes('${')) return m; - const k = keyFor(val); if (!k) return m; rep++; return attr + '={t(\'' + k + '\')}'; - }); - s = s.replace(rxMsg, (m, fn, q, val) => { if (fn.startsWith('console.')) return m; const k = keyFor(val); if (!k) return m; rep++; return fn + "(t('" + k + "'))"; }); - s = s.replace(rxProp, (m, pre, prop, q, val) => { if (!UI_PROP.has(prop)) return m; const k = keyFor(val); if (!k) return m; rep++; return pre + prop + ": t('" + k + "')"; }); - - if (rep > 0) { - const ob = (s.match(/[({]/g) || []).length, cb = (s.match(/[)}]/g) || []).length; - const o0 = (src0.match(/[({]/g) || []).length, c0 = (src0.match(/[)}]/g) || []).length; - if (ob !== cb) balanceWarns.push(f.replace(root + '\\', '') + ' braces ' + ob + '/' + cb + ' (orig ' + o0 + '/' + c0 + ')'); - pending.push({ f, s, rep }); - } -} - -(async () => { - const modified = []; - let totalRep = 0; - for (const p of pending) { - let ok = false; let errMsg = ''; - try { await esbuild.transform(p.s, { loader: loaderFor(p.f), target: 'es2020' }); ok = true; } - catch (err) { errMsg = String(err.message); } - if (ok) { - if (!process.env.DRY) fs.writeFileSync(p.f, p.s, 'utf8'); - modified.push(p.f); - totalRep += p.rep; - } else { - console.log(' --- detail for ' + p.f.replace(root + '\\', '') + ' ---'); - console.log(errMsg); - } - } - console.log('Files written/verified:', modified.length); - console.log('Replacements made:', totalRep); - console.log('Balance warnings (informational):', balanceWarns.length); - balanceWarns.forEach(w => console.log(' [WARN] ' + w)); - console.log('New locale keys (zh):', Object.values(newZh).reduce((a, o) => a + Object.keys(o).length, 0)); - fs.writeFileSync('tmp_newkeys.json', JSON.stringify({ zh: newZh, en: newEn }, null, 2)); - console.log('Modified files:'); - modified.forEach(f => console.log(' ' + f.replace(root + '\\', ''))); -})(); diff --git a/tmp_scan_cjk.cjs b/tmp_scan_cjk.cjs deleted file mode 100644 index 4db4b5f..0000000 --- a/tmp_scan_cjk.cjs +++ /dev/null @@ -1,45 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const dir = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; - -function walk(d) { - let r = []; - for (const f of fs.readdirSync(d)) { - const p = path.join(d, f); - if (fs.statSync(p).isDirectory()) { - if (p.includes('locales')) continue; - r = r.concat(walk(p)); - } else if (exts.some((e) => f.endsWith(e))) { - r.push(p); - } - } - return r; -} - -// strip comments (line + block) and template strings, then find remaining Chinese -function stripCommentsAndStrings(code) { - // Remove block comments - code = code.replace(/\/\*[\s\S]*?\*\//g, ''); - // Remove line comments (careful with URLs, but ok) - code = code.replace(/^\s*\/\/.*$/gm, ''); - return code; -} - -let total = 0; -for (const f of walk(dir)) { - const code = fs.readFileSync(f, 'utf8'); - const cleaned = stripCommentsAndStrings(code); - const lines = cleaned.split('\n'); - lines.forEach((line, i) => { - if (/[\u4e00-\u9fa5]/.test(line)) { - total++; - const trimmed = line.trim(); - if (trimmed.length > 0 && !trimmed.startsWith('//')) { - console.log(f + ':' + (i + 1) + ': ' + line.trim().slice(0, 120)); - } - } - }); -} -console.log('TOTAL non-comment lines with Chinese:', total); diff --git a/tmp_scanfalse.cjs b/tmp_scanfalse.cjs deleted file mode 100644 index a5927bb..0000000 --- a/tmp_scanfalse.cjs +++ /dev/null @@ -1,16 +0,0 @@ -// Detect possible HTML-string false matches: a JS string literal that now -// contains an injected {t(...)} (e.g. '{t('x')}'). -const fs = require('fs'); -const files = [ -"src/components/devices/DeviceControl.tsx","src/components/devices/deviceController.js","src/components/devices/DeviceOverviewPage.tsx","src/components/devices/RobotTaskPage.tsx","src/components/LanguageSwitcher.tsx","src/components/SystemSetting/AlarmSettingsManagement.tsx","src/components/SystemSetting/AllDeviceManagement.tsx","src/components/SystemSetting/BasicSettings.tsx","src/components/SystemSetting/CameraManagement.tsx","src/components/SystemSetting/DeviceAccessPage.tsx","src/components/SystemSetting/DeviceManagement.tsx","src/components/SystemSetting/DroneManagement.tsx","src/components/SystemSetting/FlvPlayer.tsx","src/components/SystemSetting/LogManagement.tsx","src/components/SystemSetting/MenuList.tsx","src/components/SystemSetting/OnlineUser.tsx","src/components/SystemSetting/Organization.tsx","src/components/SystemSetting/SerialNumGenerate.jsx","src/components/SystemSetting/SmartDeviceManagement.tsx","src/components/SystemSetting/StationManage.tsx","src/components/SystemSetting/SystemMaintain.tsx","src/components/SystemSetting/UserPage.tsx","src/components/SystemSetting/VideoManagement.tsx","src/components/SystemSetting/WorkOrderSettingsManagement.tsx","src/components/VideoPlayer.tsx","src/pages/Agri.jsx","src/pages/AIAnalysis.tsx","src/pages/CleanOptimization.tsx","src/pages/Home.tsx","src/pages/RealTimeMonitor.tsx","src/pages/SystemSetting.tsx","src/pages/VideoMonitorPage.tsx","src/pages/WorkOrder.tsx" -]; -const rx = /(['"`])<[^'"`]*\{t\(/g; -let total = 0; -for (const f of files) { - const lines = fs.readFileSync(f, 'utf8').split('\n'); - lines.forEach((line, idx) => { - rx.lastIndex = 0; let m; - while ((m = rx.exec(line))) { console.log(f.replace('src\\', '') + ' L' + (idx + 1) + ': ' + line.trim()); total++; } - }); -} -console.log('Potential HTML-string false matches:', total); diff --git a/tmp_test.cjs b/tmp_test.cjs deleted file mode 100644 index 15cff7a..0000000 --- a/tmp_test.cjs +++ /dev/null @@ -1,27 +0,0 @@ -const fs = require('fs'); -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { - p = p || ''; - r = r || {}; - for (const k of Object.keys(o)) { - const key = p ? p + '.' + k : k; - if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); - else r[key] = o[k]; - } - return r; -} -try { - const z = flat(load('src/locales/zh/index.ts')); - const e = flat(load('src/locales/en/index.ts')); - console.log('ZH keys', Object.keys(z).length, 'EN keys', Object.keys(e).length); - console.log('aiAnalysis.abnormalString in ZH?', 'aiAnalysis.abnormalString' in z); - console.log('workOrder.pleaseInputTitle in ZH?', 'workOrder.pleaseInputTitle' in z); -} catch (err) { - console.log('ERROR:', err.message); -} diff --git a/tmp_tokens.cjs b/tmp_tokens.cjs deleted file mode 100644 index ad39098..0000000 --- a/tmp_tokens.cjs +++ /dev/null @@ -1,12 +0,0 @@ -const a = require('./tmp_missing.json'); -const z = a.zhAdd; -const tokens = new Set(); -for (const ns of Object.keys(z)) { - for (const leaf of Object.keys(z[ns])) { - const words = leaf.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2').split(/[\s._]+/).filter(Boolean); - for (const w of words) tokens.add(w.toLowerCase()); - } -} -const arr = [...tokens].sort(); -console.log('Token count:', arr.length); -console.log(arr.join(' ')); diff --git a/tmp_verify.cjs b/tmp_verify.cjs deleted file mode 100644 index 88df5ec..0000000 --- a/tmp_verify.cjs +++ /dev/null @@ -1,8 +0,0 @@ -const fs = require('fs'); -function load(p){let s=fs.readFileSync(p,'utf8');s=s.replace(/const\s+\w+\s*=\s*\{/,'var obj = {');s=s.replace(/export\s+default\s+\w+;?/,'');s=s.replace(/\bconst\b/g,'var');return new Function(s+'\nreturn obj;')();} -function flat(o,p,r){p=p||'';r=r||{};for(const k of Object.keys(o)){const key=p?p+'.'+k:k;if(o[k]&&typeof o[k]==='object'&&!Array.isArray(o[k]))flat(o[k],key,r);else r[key]=o[k];}return r;} -const z=flat(load('src/locales/zh/index.ts'));const e=flat(load('src/locales/en/index.ts')); -console.log('ZH',Object.keys(z).length,'EN',Object.keys(e).length); -console.log('common.completed in EN?', 'common.completed' in e); -console.log('home.underMaintenance in EN?', 'home.underMaintenance' in e); -console.log('roles.abnormal in EN?', 'roles.abnormal' in e); diff --git a/tmp_verify2.cjs b/tmp_verify2.cjs deleted file mode 100644 index 254d54c..0000000 --- a/tmp_verify2.cjs +++ /dev/null @@ -1,44 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -const excludeDirs = ['locales', 'node_modules', 'i18n']; -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!excludeDirs.includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { p = p || ''; r = r || {}; for (const k of Object.keys(o)) { const key = p ? p + '.' + k : k; if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); else r[key] = o[k]; } return r; } - -const zhMap = flat(load('src/locales/zh/index.ts')); -const enMap = flat(load('src/locales/en/index.ts')); - -const refRegex = /(?:i18n\.t|[^a-zA-Z]t)\(\s*['"`]([a-zA-Z][a-zA-Z0-9_.]*?)['"`]/g; -const files = walk(root); -const refKeys = new Set(); -for (const f of files) { - const c = fs.readFileSync(f, 'utf8'); - let m; while ((m = refRegex.exec(c))) refKeys.add(m[1]); -} -let missZh = [], missEn = [], missBoth = []; -for (const k of refKeys) { - if (!(k in zhMap)) missZh.push(k); - if (!(k in enMap)) missEn.push(k); - if (!(k in zhMap) && !(k in enMap)) missBoth.push(k); -} -console.log('Referenced unique keys:', refKeys.size); -console.log('Missing in ZH:', missZh.length); -console.log('Missing in EN:', missEn.length); -console.log('Missing in BOTH:', missBoth.length); -if (missBoth.length) console.log('SAMPLE missing-both:', missBoth.slice(0, 20).join(', ')); diff --git a/tmp_verify3.cjs b/tmp_verify3.cjs deleted file mode 100644 index 40398bf..0000000 --- a/tmp_verify3.cjs +++ /dev/null @@ -1,49 +0,0 @@ -// Final check: every t('key') / i18n.t('key') reference in src must exist in locale. -const fs = require('fs'); -const path = require('path'); -function load(p) { - let s = fs.readFileSync(p, 'utf8'); - s = s.replace(/const\s+\w+\s*=\s*\{/, 'var obj = {'); - s = s.replace(/export\s+default\s+\w+;?/, ''); - s = s.replace(/\bconst\b/g, 'var'); - return new Function(s + '\nreturn obj;')(); -} -function flat(o, p, r) { p = p || ''; r = r || {}; for (const k of Object.keys(o)) { const key = p ? p + '.' + k : k; if (o[k] && typeof o[k] === 'object' && !Array.isArray(o[k])) flat(o[k], key, r); else r[key] = o[k]; } return r; } -const zh = flat(load('src/locales/zh/index.ts')); -const en = flat(load('src/locales/en/index.ts')); -const have = new Set([...Object.keys(zh), ...Object.keys(en)]); - -const root = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -function walk(dir) { - const out = []; - for (const e of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, e.name); - if (e.isDirectory()) { if (!['locales', 'node_modules'].includes(e.name)) out.push(...walk(full)); } - else if (exts.includes(path.extname(e.name))) out.push(full); - } - return out; -} -const rx = /[^A-Za-z]t\(\s*['"`]([^'"`]+)['"`]\s*\)/g; -const missing = {}; // key -> [files] -let total = 0; -for (const f of walk(root)) { - const s = fs.readFileSync(f, 'utf8'); - let m; rx.lastIndex = 0; - while ((m = rx.exec(s))) { - const k = m[1]; - if (k.startsWith('_')) continue; // i18n internal - total++; - if (!have.has(k)) (missing[k] = missing[k] || []).push(f.replace(root + '\\', '')); - } -} -const keys = Object.keys(missing); -console.log('Total t() references scanned:', total); -console.log('Distinct missing keys:', keys.length); -if (keys.length) { - for (const k of keys.slice(0, 60)) console.log(' MISSING ' + k + ' <- ' + [...new Set(missing[k])].join(', ')); -} -// also report keys whose zh value is itself a raw key-like (english) — quality check -let rawLike = 0; -for (const k of Object.keys(zh)) { const v = zh[k]; if (typeof v === 'string' && /^[a-z][a-zA-Z0-9]*\.[a-zA-Z0-9.]+$/.test(v)) rawLike++; } -console.log('zh entries whose value looks like a key (possible untranslated):', rawLike); diff --git a/tmp_verify_i18n.cjs b/tmp_verify_i18n.cjs deleted file mode 100644 index 14ad391..0000000 --- a/tmp_verify_i18n.cjs +++ /dev/null @@ -1,74 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const ts = require('typescript'); - -function transpile(file) { - const code = fs.readFileSync(file, 'utf8'); - const out = ts.transpileModule(code, { - compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2019 }, - }); - return out.outputText; -} - -function load(file) { - const out = transpile(file); - const module = { exports: {} }; - const fn = new Function('module', 'exports', out); - fn(module, module.exports); - return module.exports.default || module.exports; -} - -function flatten(obj, prefix = '') { - const keys = new Set(); - for (const k of Object.keys(obj)) { - const v = obj[k]; - const p = prefix ? prefix + '.' + k : k; - if (v && typeof v === 'object' && !Array.isArray(v)) { - for (const sk of flatten(v, p)) keys.add(sk); - } else { - keys.add(p); - } - } - return keys; -} - -const zhKeys = flatten(load('src/locales/zh/index.ts')); -const enKeys = flatten(load('src/locales/en/index.ts')); -console.log('zh keys:', zhKeys.size, 'en keys:', enKeys.size); - -const dir = 'src'; -const exts = ['.tsx', '.ts', '.jsx', '.js']; -function walk(d) { - let r = []; - for (const f of fs.readdirSync(d)) { - const p = path.join(d, f); - if (fs.statSync(p).isDirectory()) { - r = r.concat(walk(p)); - } else if (exts.some((e) => f.endsWith(e)) && !p.includes('locales')) { - r.push(p); - } - } - return r; -} - -const used = new Set(); -const fileKey = {}; -for (const f of walk(dir)) { - const code = fs.readFileSync(f, 'utf8'); - const re = /(?:[^.\w]|^)(?:t|i18n\.t)\(\s*['"]([a-zA-Z0-9_.-]+)['"]/g; - let m; - while ((m = re.exec(code)) !== null) { - const k = m[1]; - used.add(k); - (fileKey[k] = fileKey[k] || new Set()).add(f); - } -} -console.log('Total distinct keys used in source:', used.size); - -const missing = [...used].filter((k) => !zhKeys.has(k) || !enKeys.has(k)); -console.log('Keys used but missing in locale files:', missing.length); -for (const k of missing.sort()) { - console.log(' ' + k + ' <- ' + [...(fileKey[k] || [])].join(', ')); -} - -// Also detect literal raw t('...') keys that might be dynamic (skip)