lang.zh-CN=Chinese (Simplified)
|
lang.en-US=English
|
app.title=Zhejiang Zhongyang - Automated AS/RS - WCS
|
app.company=Zhejiang Zhongyang Warehouse Technology Co., Ltd.
|
common.loadingPage=Loading page...
|
common.loadingTab=Loading "{0}" ...
|
common.refreshingTab=Refreshing "{0}" ...
|
common.ok=OK
|
common.prompt=Prompt
|
common.language=Language
|
common.profile=Profile
|
common.logout=Log Out
|
common.closeOtherTabs=Close Other Tabs
|
common.backHome=Back to Dashboard
|
common.aiAssistant=AI Assistant
|
common.workPage=Work Page
|
common.businessPage=Business Page
|
login.title=WCS System V3.0
|
login.subtitle=Please enter your account and password to access the system.
|
login.hero.title=The WCS keeps device scheduling, task execution, and on-site monitoring within the same business workflow.
|
login.hero.subtitle=The Warehouse Control System is built for automated AS/RS execution, coordinating cranes, RGVs, conveyor stations, task commands, location status, and log tracing through unified dispatch and visualization. It helps warehouse operations stay stable, traceable, and collaborative. Zhejiang Zhongyang Warehouse Technology Co., Ltd. focuses on automated AS/RS and intelligent intralogistics systems, covering solution design, software control, equipment integration, and project delivery.
|
login.hero.metric.dispatch.title=Dispatch
|
login.hero.metric.dispatch.desc=Unified orchestration of on-site execution tasks
|
login.hero.metric.trace.title=Traceability
|
login.hero.metric.trace.desc=End-to-end traceability across jobs, devices, and logs
|
login.hero.metric.integration.title=Integration
|
login.hero.metric.integration.desc=Integrates WMS, devices, and business rules
|
login.hero.company.name=Zhejiang Zhongyang Warehouse Technology Co., Ltd.
|
login.hero.company.solution=Automated AS/RS and intelligent logistics system solutions
|
login.username=Account
|
login.password=Password
|
login.submit=Sign In
|
login.passkey.submit=Sign In with Passkey
|
login.passkey.tip=Use device biometrics or a security key to sign in. Entering the account narrows the credential scope; leaving it blank tries discoverable credentials.
|
login.passkey.browserUnsupported=This browser does not support passkeys. Use a recent Chrome, Edge, or Safari build
|
login.passkey.secureContext=Passkeys require HTTPS or localhost
|
login.tools.title=System Tools
|
login.tools.recommended=Recommended Actions
|
login.tools.recommendedDesc=Use "Get Request Code" and "Activate" first to complete license application and activation.
|
login.tools.others=Other Tools
|
login.tools.requestCode=Get Request Code
|
login.tools.activate=Activate
|
login.tools.projectName=Get Project Name
|
login.tools.serverInfo=Get System Config
|
login.tools.uploadLicense=Import License
|
login.dialog.copy=Copy
|
login.dialog.copied=Copied to clipboard
|
login.dialog.copyFailed=Copy failed
|
login.requestCode.title=Request Code
|
login.requestCode.label=Request Code
|
login.requestCode.tip=The request code already contains the project name and can be sent directly to the license service.
|
login.serverInfo.title=System Configuration
|
login.serverInfo.label=System Configuration
|
login.serverInfo.tip=Legacy projects can still use this hardware JSON to apply for a license.
|
login.dialog.close=Close
|
login.mfa.title=MFA Verification
|
login.mfa.tip=Account and password verified. Enter the 6-digit code from your authenticator app to continue signing in.
|
login.mfa.currentAccount=Current account:
|
login.mfa.codeLabel=Verification Code
|
login.mfa.codePlaceholder=Please enter the 6-digit code
|
login.mfa.cancel=Cancel
|
login.mfa.submit=Verify and Sign In
|
login.license.label=License Base64
|
login.license.tip=Paste the full license field returned by the license service here.
|
login.license.submit=Submit
|
login.license.success=License updated successfully
|
login.validation.usernameRequired=Please enter the account
|
login.validation.passwordRequired=Please enter the password
|
login.validation.mfaRequired=Please enter the 6-digit verification code
|
login.validation.mfaInvalid=Please enter a 6-digit numeric verification code
|
login.error.loginFailed=Login failed
|
login.error.passkeyOptionsFailed=Failed to load passkey sign-in options
|
login.error.passkeyVerifyFailed=Passkey verification failed
|
login.error.mfaTicketExpired=The login ticket has expired. Please sign in again
|
login.error.mfaFailed=Verification failed
|
login.error.requestCodeFailed=Failed to get request code
|
login.error.serverInfoFailed=Failed to get system configuration
|
login.error.licenseEmpty=License content cannot be empty
|
login.error.licenseUpdateFailed=Failed to update license
|
login.error.licenseImportFailed=Failed to import license
|
login.activate.confirm=Are you sure you want to activate now?
|
login.activate.success=Activation successful
|
login.activate.failed=Activation failed
|
login.projectName.title=Project Name
|
login.error.projectNameFailed=Failed to get project name
|
index.searchMenu=Search menu
|
index.noMatchedMenu=No matching menus
|
index.noAvailableMenu=No available menus for current account
|
index.licenseDays=Temporary license valid: {0} day(s)
|
index.fakeRunning=Simulation Running
|
index.fakeStopped=Simulation Stopped
|
index.licenseExpiring=License Expiring Soon
|
index.homeTab=System Dashboard
|
index.homeGroup=System Overview
|
index.profileGroup=Account Center
|
index.versionLoading=Version loading...
|
index.licenseExpireAt=The license will expire on {0}. Remaining validity: {1} day(s).
|
index.confirmStopFake=Are you sure you want to stop the simulation?
|
index.confirmStartFake=Are you sure you want to start the simulation?
|
index.fakeStoppedSuccess=Simulation stopped
|
index.fakeStartedSuccess=Simulation started
|
index.operationFailed=Operation failed
|
index.menuLoadFailed=Failed to load menu
|
index.menuLoadFailedDetail=Failed to load menu. Please check the API status.
|
response.user.notFound=Account does not exist
|
response.user.disabled=Account is disabled
|
response.user.passwordMismatch=Incorrect password
|
response.user.passkeySecureContextRequired=Passkeys require HTTPS or localhost
|
response.user.passkeyNotBound=This account has not bound a passkey yet
|
response.user.passkeyTicketExpired=The passkey login ticket has expired. Please try again
|
response.user.passkeyCounterMismatch=The passkey signature counter is invalid. Rebind the passkey and try again
|
response.user.passkeyVerifyFailed=Passkey verification failed
|
response.user.passkeyAlreadyBound=This account already has a passkey bound. Remove it before binding another one
|
response.user.passkeyCredentialExists=This passkey is already bound to another account
|
response.user.passkeyRegisterFailed=Failed to bind the passkey
|
response.user.oldPasswordMismatch=Current password is incorrect
|
response.user.mfaNotAllowed=MFA is not enabled for this account
|
response.user.mfaNotEnabled=MFA is not configured for this account
|
response.user.mfaCodeMismatch=Incorrect MFA verification code
|
response.user.mfaTicketExpired=The MFA login ticket has expired. Please sign in again
|
response.system.licenseExpired=License has expired
|
response.common.systemError=System error. Please try again later.
|
response.common.methodNotAllowed=Request method not supported
|
resource.index=Control Center
|
resource.system=System Management
|
resource.set=System Settings
|
resource.merchant=Customer Management
|
resource.develop=Development
|
resource.stock=Inventory
|
resource.logReport=Logs & Reports
|
resource.ioWork=Inbound/Outbound Jobs
|
resource.workFlow=Workflow
|
resource.base=Basic Data
|
resource.erp=ERP Integration
|
resource.sensor=Sensor Devices
|
resource.aiManage=AI Management
|
resource.ai.llm_config=AI Configuration
|
resource.ai.prompt_config=Prompt Center
|
resource.ai.mcp_mount=MCP Mounts
|
resource.notifyReport.notifyReport=Notification Report
|
resource.view=View
|
permission.function=Specified Functions
|
el.colorpicker.confirm=OK
|
el.colorpicker.clear=Clear
|
el.datepicker.now=Now
|
el.datepicker.today=Today
|
el.datepicker.cancel=Cancel
|
el.datepicker.clear=Clear
|
el.datepicker.confirm=OK
|
el.datepicker.selectDate=Select date
|
el.datepicker.selectTime=Select time
|
el.datepicker.startDate=Start date
|
el.datepicker.startTime=Start time
|
el.datepicker.endDate=End date
|
el.datepicker.endTime=End time
|
el.datepicker.prevYear=Previous year
|
el.datepicker.nextYear=Next year
|
el.datepicker.prevMonth=Previous month
|
el.datepicker.nextMonth=Next month
|
el.datepicker.year=
|
el.datepicker.month1=January
|
el.datepicker.month2=February
|
el.datepicker.month3=March
|
el.datepicker.month4=April
|
el.datepicker.month5=May
|
el.datepicker.month6=June
|
el.datepicker.month7=July
|
el.datepicker.month8=August
|
el.datepicker.month9=September
|
el.datepicker.month10=October
|
el.datepicker.month11=November
|
el.datepicker.month12=December
|
el.datepicker.weeks.sun=Sun
|
el.datepicker.weeks.mon=Mon
|
el.datepicker.weeks.tue=Tue
|
el.datepicker.weeks.wed=Wed
|
el.datepicker.weeks.thu=Thu
|
el.datepicker.weeks.fri=Fri
|
el.datepicker.weeks.sat=Sat
|
el.datepicker.months.jan=Jan
|
el.datepicker.months.feb=Feb
|
el.datepicker.months.mar=Mar
|
el.datepicker.months.apr=Apr
|
el.datepicker.months.may=May
|
el.datepicker.months.jun=Jun
|
el.datepicker.months.jul=Jul
|
el.datepicker.months.aug=Aug
|
el.datepicker.months.sep=Sep
|
el.datepicker.months.oct=Oct
|
el.datepicker.months.nov=Nov
|
el.datepicker.months.dec=Dec
|
el.select.loading=Loading
|
el.select.noMatch=No matching data
|
el.select.noData=No data
|
el.select.placeholder=Please select
|
el.cascader.noMatch=No matching data
|
el.cascader.loading=Loading
|
el.cascader.placeholder=Please select
|
el.cascader.noData=No data
|
el.pagination.goto=Go to
|
el.pagination.pagesize=/page
|
el.pagination.total=Total {total}
|
el.pagination.pageClassifier=
|
el.messagebox.title=Prompt
|
el.messagebox.confirm=OK
|
el.messagebox.cancel=Cancel
|
el.messagebox.error=Invalid input
|
el.upload.deleteTip=Press delete to remove
|
el.upload.delete=Delete
|
el.upload.preview=Preview
|
el.upload.continue=Continue
|
legacy.regex.loopStatus=Zone {0} | Stations: {1} | Tasks: {2} | Load: {3}
|
legacy.regex.stationDeviceLink=Click to remove mapping: Station {0} -> Device {1}
|
deviceLogs.visualizationPrefix=Device Logs -
|
deviceLogs.downloadDialogTitle=Downloading file
|
dashboard.title=System Dashboard
|
dashboard.monitorView=Monitoring View
|
dashboard.openMonitor=Open Monitoring View
|
dashboard.refreshNow=Refresh Now
|
dashboard.overviewKicker=Overview
|
dashboard.overviewNote=System and refresh cadence
|
dashboard.systemStatusLabel=System Status
|
dashboard.systemRunning=Running
|
dashboard.systemPaused=Paused
|
dashboard.systemStatusDesc=Current status of the WCS main service
|
dashboard.lastRefreshLabel=Last Refresh
|
dashboard.lastRefreshDesc=Time when the latest aggregated data was generated
|
dashboard.autoRefreshLabel=Auto Refresh
|
dashboard.autoRefreshValue=Refresh in {0}s
|
dashboard.autoRefreshDesc=Countdown to the next automatic refresh
|
dashboard.coreMetricsKicker=Core Metrics
|
dashboard.coreMetricsNote=Tasks, devices, and AI overview
|
dashboard.taskTotalLabel=Total Tasks
|
dashboard.taskTotalDesc=Running now {0}
|
dashboard.deviceOnlineLabel=Online Devices
|
dashboard.deviceOnlineDesc=Total {0}, alarms {1}
|
dashboard.aiTokenTotalLabel=AI Total Tokens
|
dashboard.aiTokenTotalDesc=Aggregated across AI sessions
|
dashboard.aiCallTotalLabel=LLM Calls
|
dashboard.aiCallTotalDesc=Latest run details are included in the AI section below
|
dashboard.taskPanelTitle=Task Overview
|
dashboard.taskPanelDesc=Quickly assess current workload pressure by task type, execution stage, and recent flow records.
|
dashboard.taskRunningLabel=Running
|
dashboard.taskRunningHint=Tasks currently in progress
|
dashboard.taskManualLabel=Manual Review
|
dashboard.taskManualHint=Requires manual attention or rollback
|
dashboard.taskCompletedLabel=Completed
|
dashboard.taskCompletedHint=Finished or posted
|
dashboard.taskNewLabel=New
|
dashboard.taskNewHint=Just entered the dispatch flow
|
dashboard.taskDirectionChartTitle=Task Type Distribution
|
dashboard.taskStageChartTitle=Task Stage Overview
|
dashboard.recentPanelTitle=Recent Tasks
|
dashboard.recentPanelDesc=Quickly tell whether tasks are piling up, whether devices have taken over, and where recent tasks are headed.
|
dashboard.recentEmpty=No recent tasks
|
dashboard.column.workNo=Work No.
|
dashboard.column.taskType=Task Type
|
dashboard.column.status=Status
|
dashboard.column.source=Source
|
dashboard.column.target=Target
|
dashboard.column.device=Execution Device
|
dashboard.column.barcode=Barcode
|
dashboard.column.updateTime=Last Updated
|
dashboard.aiPanelTitle=AI Activity
|
dashboard.aiPanelDesc=Review cumulative AI tokens, LLM call volume, and route availability and cooldown status.
|
dashboard.availableRoutesTag=Available routes {0}
|
dashboard.aiTokenCardLabel=Total Tokens
|
dashboard.aiTokenCardHint=Prompt + Completion
|
dashboard.aiAskCountLabel=Conversation Turns
|
dashboard.aiAskCountHint=Total AI conversation turns
|
dashboard.aiLlmCallLabel=LLM Calls
|
dashboard.aiLlmCallHint=Success {0} / Failed {1}
|
dashboard.aiSessionCountLabel=Sessions
|
dashboard.aiSessionCountHint=Last call {0}
|
dashboard.aiRouteChartTitle=AI Route Status
|
dashboard.aiRouteDesc=Model {0}, priority {1}
|
dashboard.aiRouteResult=Success {0} / Failed {1}
|
dashboard.aiRouteLastUsed=Last used {0}
|
dashboard.aiRouteEmpty=No AI route data
|
dashboard.devicePanelTitle=Device Overview
|
dashboard.devicePanelDesc=Summarize the online, busy, and alarm states of conveyor stations, cranes, dual-station cranes, and RGVs.
|
dashboard.deviceOnlineRate=Online rate {0}
|
dashboard.deviceTotalLabel=Total Devices
|
dashboard.deviceTotalHint=Enabled configured devices
|
dashboard.deviceOnlineCardLabel=Online Devices
|
dashboard.deviceOnlineCardHint=Devices currently reachable
|
dashboard.deviceBusyLabel=Busy Devices
|
dashboard.deviceBusyHint=Devices currently carrying tasks
|
dashboard.deviceAlarmLabel=Alarm Devices
|
dashboard.deviceAlarmHint=Devices with blockage or alarm status
|
dashboard.deviceTypeChartTitle=Device Online Distribution
|
dashboard.deviceTypeDesc=Online {0} / Total {1}, offline {2}
|
dashboard.deviceBusyTag=Busy {0}
|
dashboard.deviceAlarmTag=Alarm {0}
|
dashboard.networkPanelDesc=Summarize connectivity, latency, and abnormal devices from the latest ping samples to quickly spot network fluctuations.
|
dashboard.networkAttentionTag=Attention {0}
|
dashboard.networkViewDetail=View Details
|
dashboard.networkOkLabel=Normal
|
dashboard.networkOkHint=Latest sample status is OK
|
dashboard.networkUnstableLabel=Unstable
|
dashboard.networkUnstableHint=Some probes succeeded
|
dashboard.networkOfflineLabel=Timeout/Error
|
dashboard.networkNoDataLabel=No Data
|
dashboard.networkNoDataHint=No data {0}
|
dashboard.networkAvgLatencyLabel=Average Latency
|
dashboard.networkPeakLatencyHint=Peak {0}
|
dashboard.networkStatusChartTitle=Connectivity Status Distribution
|
dashboard.networkAvgLatencyTag=Avg {0}
|
dashboard.networkLatestSampleTag=Latest sample {0}
|
dashboard.networkHealthyTitle=Network probing is stable
|
dashboard.networkHealthyDesc={0} devices are included, and no timeouts or fluctuations were found in the latest round.
|
dashboard.networkHealthyOk=Normal {0}
|
dashboard.networkHealthyAvg=Avg {0}
|
dashboard.networkHealthyPeak=Peak {0}
|
dashboard.networkEmpty=No device network samples
|
dashboard.loadingTitle=Loading dashboard
|
dashboard.loadingDesc=Aggregating task, device, and AI runtime data. Please wait...
|
dashboard.loadFailed=Failed to load dashboard data
|
dashboard.loadFailedDetail=Failed to load dashboard data. Please check the API status.
|
dashboard.deviceOnlineLegend=Online
|
dashboard.deviceOfflineLegend=Offline
|
dashboard.chartCenter.availableRoutes=Available Routes
|
dashboard.chartCenter.attentionDevices=Devices Requiring Attention
|
dashboard.systemDefaultPacketSize=System Default
|
dashboard.networkSampling=Sampling {0} ms / Timeout {1} ms / {2} probes per sample / Packet size {3}
|
dashboard.taskDirectionInbound=Inbound Tasks
|
dashboard.taskDirectionOutbound=Outbound Tasks
|
dashboard.taskDirectionMove=Transfer Tasks
|
dashboard.aiRouteStatusAvailable=Available
|
dashboard.aiRouteStatusCooling=Cooling
|
dashboard.aiRouteStatusDisabled=Disabled
|
devicePingLog.title=Device Network Analysis
|
devicePingLog.pageMeta=Packet size {0}, {1}
|
devicePingLog.summary.totalDevices=Total Devices
|
devicePingLog.summary.totalDevicesHint=Devices with configured IPs
|
devicePingLog.summary.ok=Normal
|
devicePingLog.summary.okHint=Latest sample status is OK
|
devicePingLog.summary.unstable=Unstable
|
devicePingLog.summary.unstableHint=Some probes succeeded
|
devicePingLog.summary.offline=Timeout/Error
|
devicePingLog.summary.offlineHint=Latest sample is unreachable
|
devicePingLog.summary.noData=No Data
|
devicePingLog.summary.noDataHint=No persisted samples yet
|
devicePingLog.summary.avgLatency=Overall Average Latency
|
devicePingLog.summary.peakLatency=Peak {0}
|
devicePingLog.overviewTitle=Device Overview
|
devicePingLog.refresh=Refresh
|
devicePingLog.filter.deviceType=Device Type
|
devicePingLog.filter.all=All
|
devicePingLog.filter.keyword=Keyword
|
devicePingLog.filter.keywordPlaceholder=Device No. / IP
|
devicePingLog.overviewCount=Overview devices {0}
|
devicePingLog.column.device=Device
|
devicePingLog.column.status=Status
|
devicePingLog.column.successRate=Success Rate
|
devicePingLog.column.avg=Avg
|
devicePingLog.column.min=Min
|
devicePingLog.column.max=Max
|
devicePingLog.column.updateTime=Updated At
|
devicePingLog.column.message=Message
|
devicePingLog.column.action=Action
|
devicePingLog.viewDetail=View Details
|
devicePingLog.detailTitle=Device Details
|
devicePingLog.detailEmpty=Select a device from the overview above to inspect second-level details.
|
devicePingLog.filter.timeRange=Time Range
|
devicePingLog.filter.rangeSeparator=to
|
devicePingLog.filter.start=Start
|
devicePingLog.filter.end=End
|
devicePingLog.quickRange.30m=30 min
|
devicePingLog.quickRange.1h=1 hr
|
devicePingLog.quickRange.6h=6 hr
|
devicePingLog.query=Query
|
devicePingLog.detail.status=Status
|
devicePingLog.detail.packetSize=Packet Size
|
devicePingLog.detail.successRate=Success Rate
|
devicePingLog.detail.avg=Avg
|
devicePingLog.detail.min=Min
|
devicePingLog.detail.max=Max
|
devicePingLog.chart.latencyTitle=Latency
|
devicePingLog.chart.empty=No second-level samples in the current range
|
devicePingLog.chart.availabilityTitle=Success Rate / Fail Count
|
devicePingLog.alertColumn.time=Time
|
devicePingLog.alertColumn.status=Status
|
devicePingLog.alertColumn.message=Message
|
devicePingLog.samplingConfigText=Sampling {0} ms / Timeout {1} ms / {2} probes per sample
|
devicePingLog.optionsLoadFailed=Failed to load device configuration
|
devicePingLog.overviewLoadFailed=Failed to load overview data
|
devicePingLog.selectTimeRange=Please select a time range
|
devicePingLog.invalidDevice=Invalid device information
|
devicePingLog.detailLoadFailed=Failed to load device details
|
devicePingLog.chart.latency.avg=Avg
|
devicePingLog.chart.latency.min=Min
|
devicePingLog.chart.latency.max=Max
|
devicePingLog.chart.availability.failAxis=Failures
|
devicePingLog.chart.availability.successRateAxis=Success Rate %
|
devicePingLog.chart.availability.failCount=Fail Count
|
devicePingLog.chart.availability.successRate=Success Rate
|
devicePingLog.systemDefaultPacketSize=System Default
|
devicePingLog.status.ok=Normal
|
devicePingLog.status.unstable=Unstable
|
devicePingLog.status.timeout=Timeout
|
devicePingLog.status.error=Error
|
devicePingLog.status.noData=No Data
|
llm.logsTitle=LLM Call Logs
|
llm.logDetailTitle=Log Details
|
llm.logDetailPrefix=Log Details -
|
el.table.emptyText=No data
|
el.table.confirmFilter=Columns
|
el.table.resetFilter=Reset
|
el.table.clearFilter=All
|
el.table.sumText=Sum
|
el.table.sort.ascending=Ascending
|
el.table.sort.descending=Descending
|
el.tree.emptyText=No data
|
el.transfer.noMatch=No matching data
|
el.transfer.noData=No data
|
el.transfer.titles.0=List 1
|
el.transfer.titles.1=List 2
|
el.transfer.filterPlaceholder=Enter keyword
|
el.transfer.noCheckedFormat=0 items
|
el.transfer.hasCheckedFormat={checked}/{total} checked
|
el.image.error=Load failed
|
el.pageHeader.title=Back
|
el.popconfirm.confirmButtonText=OK
|
el.popconfirm.cancelButtonText=Cancel
|
el.empty.description=No data
|