import localeMessageBox from '@/components/message-box/locale/en-US'; import localeLogin from '@/views/login/locale/en-US'; import localeWechat from '@/views/wechat/locale/en-US'; import localeH5TrackQuery from '@/views/h5/track-query/locale/en-US'; import localeWorkplace from '@/views/home/workplace/locale/en-US'; import localeMonitor from '@/views/home/monitor/locale/en-US'; import localeSearchTable from '@/views/list/search-table/locale/en-US'; import localeCardList from '@/views/list/card/locale/en-US'; import localeStepForm from '@/views/form/step/locale/en-US'; import localeGroupForm from '@/views/form/group/locale/en-US'; import localeSuccess from '@/views/result/success/locale/en-US'; import localeError from '@/views/result/error/locale/en-US'; import locale403 from '@/views/exception/403/locale/en-US'; import locale404 from '@/views/exception/404/locale/en-US'; import locale500 from '@/views/exception/500/locale/en-US'; import localeSettings from './en-US/settings'; export default { // Common 'app.language': 'Language', 'common.all': 'All', 'common.actions': 'Actions', 'common.viewDetail': 'View Detail', 'common.selectPlaceholder': 'Please select...', 'common.search': 'Search', 'common.reset': 'Reset', 'common.add': 'Add', 'common.editSuccess': 'Edit successful', 'common.addSuccess': 'Add successful', 'common.inputProviderName': 'Please enter provider name', 'common.inputValidTime': 'Please enter valid time', 'common.selected': 'Selected ({count})', 'common.clear': 'Clear', 'common.delete': 'Delete', 'common.saveSuccess': 'Save successful', 'common.importFailed': 'Import failed', 'common.operationFailed': 'Operation failed', 'pagination.pageExceeded': 'Page number exceeds maximum limit, automatically jumped to page {max}', 'common.pagination.total': 'Total {count} records', 'common.pagination.prev': 'Previous', 'common.pagination.next': 'Next', 'common.pagination.perPage': 'per page', 'common.pagination.goTo': 'Go to', 'common.pagination.page': 'page', // Menus (keep existing demo keys) 'menu.home': 'Home', 'menu.server.home': 'Home-Server', 'menu.server.workplace': 'Workplace-Server', 'menu.server.monitor': 'Monitor-Server', 'menu.list': 'List', 'menu.result': 'Result', 'menu.exception': 'Exception', 'menu.form': 'Form', 'menu.user': 'User Center', 'menu.user.customer': 'Customer Management', 'menu.user.subAccount': 'Sub Accounts', 'menu.user.profile': 'Personal Center', 'menu.user.recharge': 'Recharge', 'menu.finance': 'Finance', 'menu.finance.rechargeRecord': 'Recharge Records', 'menu.finance.accountFlow': 'Account Transactions', 'menu.finance.receivablePayable': 'Receivables & Payables', 'menu.arcoWebsite': 'Arco Design', 'menu.faq': 'FAQ', 'menu.example': 'Example', 'menu.example.proTable': 'Pro Table', 'menu.demo': 'Demo', 'menu.demo.index': 'Data Table', 'navbar.docs': 'Docs', 'navbar.action.locale': 'Switch to English', 'menu.order': 'Order', 'menu.order.orderGuide': 'Getting Started', 'menu.order.priceCheck': 'Price Check', 'menu.order.placeOrder': 'Place Order', 'menu.order.templateMapping': 'Template Mapping', 'menu.order.myOrders': 'My Orders', 'menu.order.batchJobs': 'Batch Jobs', 'menu.order.platformStore': 'Platform Stores', 'menu.order.platformStoreOrder': 'Store Orders', 'menu.warehouse': 'Warehouse', 'menu.warehouse.parcel': 'My Parcels', 'menu.warehouse.inventory': 'My Inventory', 'menu.warehouse.sku': 'My SKU', 'menu.warehouse.inboundNotice': 'Inbound Notice', 'menu.warehouse.binLocation': 'Bin Locations', 'warehouse.common.search': 'Search', 'warehouse.common.add': 'Add', 'warehouse.common.edit': 'Edit', 'warehouse.common.delete': 'Delete', 'warehouse.common.save': 'Save', 'warehouse.common.cancel': 'Cancel', 'warehouse.common.confirm': 'Confirm', 'warehouse.common.detail': 'Detail', 'warehouse.common.warehouse': 'Warehouse', 'warehouse.common.customer': 'Customer', 'warehouse.common.selectCustomer': 'All customers', 'warehouse.common.selectCustomerRequired': 'Select a customer before create/update', 'warehouse.common.yes': 'Yes', 'warehouse.common.no': 'No', 'warehouse.sku.table.dimensions': 'Size(cm)', 'warehouse.sku.table.createTime': 'Created At', 'warehouse.sku.table.skuCode': 'SKU Code', 'warehouse.sku.table.skuName': 'SKU Name', 'warehouse.sku.table.totalQty': 'Qty', 'warehouse.sku.table.weightG': 'Weight(g)', 'warehouse.sku.table.remark': 'Remark', 'warehouse.sku.search.keyword': 'Code / Name', 'warehouse.sku.form.skuCode': 'SKU Code', 'warehouse.sku.form.skuName': 'SKU Name', 'warehouse.sku.form.weightG': 'Weight(g)', 'warehouse.sku.form.remark': 'Remark', 'warehouse.sku.form.imageUrl': 'Image URL', 'warehouse.sku.form.dimensions': 'Dimensions', 'warehouse.sku.form.length': 'L', 'warehouse.sku.form.width': 'W', 'warehouse.sku.form.height': 'H', 'warehouse.sku.form.clearSize': 'Clear size', 'warehouse.sku.form.volumeEstimate': 'Volume estimate', 'warehouse.modal.noWarehouse': 'No warehouse selected', 'warehouse.modal.section.basic': 'Basic Info', 'warehouse.modal.section.weightSize': 'Weight & Size', 'warehouse.modal.section.products': 'Products', 'warehouse.sku.modal.add': 'Add SKU', 'warehouse.sku.modal.edit': 'Edit SKU', 'warehouse.sku.actions.delete': 'Delete SKU', 'warehouse.sku.message.loadFailed': 'Failed to load SKU list', 'warehouse.sku.message.saveSuccess': 'Saved', 'warehouse.sku.message.saveFailed': 'Save failed', 'warehouse.sku.message.deleteSuccess': 'Deleted', 'warehouse.sku.message.deleteFailed': 'Delete failed', 'warehouse.sku.message.deleteConfirm': 'Delete {code}?', 'warehouse.sku.message.required': 'SKU code and name are required', 'warehouse.inventory.table.warehouse': 'Warehouse', 'warehouse.inventory.table.binName': 'Bin Name', 'warehouse.inventory.table.skuCode': 'SKU Code', 'warehouse.inventory.table.skuName': 'SKU Name', 'warehouse.inventory.table.warehouseId': 'Warehouse', 'warehouse.inventory.table.totalQty': 'Total Qty', 'warehouse.inventory.table.binCount': 'Bins', 'warehouse.inventory.table.binCode': 'Bin', 'warehouse.inventory.table.qty': 'Qty', 'warehouse.inventory.search.keyword': 'Code / Name', 'warehouse.inventory.actions.binDetail': 'Bin Detail', 'warehouse.inventory.actions.relocate': 'Relocate', 'warehouse.inventory.drawer.binDetail': 'Bin Detail', 'warehouse.inventory.modal.relocate': 'Relocate', 'warehouse.inventory.form.sourceBin': 'Source Bin', 'warehouse.inventory.form.targetBin': 'Target Bin', 'warehouse.inventory.form.qty': 'Qty', 'warehouse.inventory.form.selectBin': 'Select bin', 'warehouse.inventory.form.selectSourceBin': 'Select source bin with stock', 'warehouse.inventory.form.selectTargetBin': 'Select target bin', 'warehouse.inventory.message.loadFailed': 'Failed to load inventory', 'warehouse.inventory.message.binDetailFailed': 'Failed to load bin detail', 'warehouse.inventory.message.relocateRequired': 'Fill relocate fields', 'warehouse.inventory.message.relocateSuccess': 'Relocated', 'warehouse.inventory.message.relocateFailed': 'Relocate failed', 'warehouse.inventory.message.sameBin': 'Source and target bin must differ', 'warehouse.inventory.message.qtyExceed': 'Qty cannot exceed source bin stock', 'warehouse.binLocation.table.binCode': 'Bin Code', 'warehouse.binLocation.table.binName': 'Bin Name', 'warehouse.binLocation.table.zoneCode': 'Zone', 'warehouse.binLocation.table.isEnabled': 'Enabled', 'warehouse.binLocation.table.remark': 'Remark', 'warehouse.binLocation.search.warehouse': 'Search warehouse', 'warehouse.binLocation.search.keyword': 'Code / Name', 'warehouse.binLocation.filter.isEnabled': 'Enabled', 'warehouse.binLocation.actions.refreshWarehouse': 'Refresh warehouses', 'warehouse.binLocation.actions.add': 'Add Bin', 'warehouse.binLocation.loading.warehouse': 'Loading warehouses...', 'warehouse.binLocation.emptySelect': 'Select a warehouse on the left', 'warehouse.binLocation.modal.add': 'Add Bin Location', 'warehouse.binLocation.modal.edit': 'Edit Bin Location', 'warehouse.binLocation.form.binCode': 'Bin Code', 'warehouse.binLocation.form.binName': 'Bin Name', 'warehouse.binLocation.form.zoneCode': 'Zone Code', 'warehouse.binLocation.form.isEnabled': 'Enabled', 'warehouse.binLocation.form.remark': 'Remark', 'warehouse.binLocation.message.warehouseLoadFailed': 'Failed to load warehouses', 'warehouse.binLocation.message.loadFailed': 'Failed to load bins', 'warehouse.binLocation.message.selectWarehouse': 'Select a warehouse first', 'warehouse.binLocation.message.required': 'Bin code is required', 'warehouse.binLocation.message.saveSuccess': 'Saved', 'warehouse.binLocation.message.saveFailed': 'Save failed', 'warehouse.parcel.status.all': 'All', 'warehouse.parcel.status.inTransit': 'In Transit', 'warehouse.parcel.status.arrived': 'Arrived', 'warehouse.parcel.status.stored': 'Stored', 'warehouse.parcel.table.warehouse': 'Warehouse', 'warehouse.parcel.table.items': 'Items', 'warehouse.parcel.table.arrivalTime': 'Arrival Time', 'warehouse.parcel.table.createTime': 'Created At', 'warehouse.parcel.table.trackingNo': 'Tracking No', 'warehouse.parcel.table.carrierName': 'Carrier', 'warehouse.parcel.table.lifecycleStatus': 'Status', 'warehouse.parcel.table.warehouseId': 'Warehouse', 'warehouse.parcel.table.remark': 'Remark', 'warehouse.parcel.search.trackingNo': 'Tracking No', 'warehouse.parcel.form.trackingNo': 'Tracking No', 'warehouse.parcel.form.carrierName': 'Carrier', 'warehouse.parcel.form.productName': 'Product', 'warehouse.parcel.form.quantity': 'Qty', 'warehouse.parcel.form.remark': 'Remark', 'warehouse.parcel.form.itemRemark': 'Item remark', 'warehouse.parcel.form.currentWarehouse': 'Current warehouse', 'warehouse.parcel.form.autoAddRow': 'A new row is added after you fill product name', 'warehouse.parcel.modal.add': 'Add Parcel', 'warehouse.parcel.actions.delete': 'Delete Parcel', 'warehouse.parcel.message.loadFailed': 'Failed to load parcels', 'warehouse.parcel.message.saveSuccess': 'Saved', 'warehouse.parcel.message.saveFailed': 'Save failed', 'warehouse.parcel.message.deleteSuccess': 'Deleted', 'warehouse.parcel.message.required': 'Warehouse and tracking no required', 'warehouse.parcel.message.itemsRequired': 'Add at least one product', 'warehouse.inbound.status.all': 'All', 'warehouse.inbound.status.forecasted': 'Forecasted', 'warehouse.inbound.status.completed': 'Completed', 'warehouse.inbound.status.received': 'Received', 'warehouse.inbound.table.warehouse': 'Warehouse', 'warehouse.inbound.table.inboundType': 'Inbound Type', 'warehouse.inbound.table.expectedArrival': 'ETA', 'warehouse.inbound.type.normal': 'Normal', 'warehouse.inbound.type.return': 'Return', 'warehouse.inbound.table.noticeNo': 'Notice No', 'warehouse.inbound.table.markReference': 'Mark Ref', 'warehouse.inbound.table.receiptStatus': 'Status', 'warehouse.inbound.table.boxCount': 'Boxes', 'warehouse.inbound.table.plannedQty': 'Planned Qty', 'warehouse.inbound.table.createTime': 'Created', 'warehouse.inbound.search.keyword': 'Notice / Mark', 'warehouse.inbound.form.markReference': 'Mark Ref', 'warehouse.inbound.form.markBoxNo': 'Box No', 'warehouse.inbound.form.sku': 'SKU', 'warehouse.inbound.form.plannedQty': 'Planned Qty', 'warehouse.inbound.form.markPlaceholder': 'Usually the tracking number', 'warehouse.inbound.form.boxSkuDetail': 'Boxes & SKU lines', 'warehouse.inbound.form.boxCount': 'Boxes {n}', 'warehouse.inbound.form.skuCount': 'SKU {n}', 'warehouse.inbound.form.totalQty': 'Total qty {n}', 'warehouse.inbound.form.boxWeight': 'Weight/g', 'warehouse.inbound.form.boxLength': 'L/cm', 'warehouse.inbound.form.boxWidth': 'W/cm', 'warehouse.inbound.form.boxHeight': 'H/cm', 'warehouse.inbound.form.selectSku': 'Select SKU', 'warehouse.inbound.actions.addBox': 'Add box', 'warehouse.inbound.actions.addBox5': 'Add 5 boxes', 'warehouse.inbound.actions.removeBox': 'Remove boxes', 'warehouse.inbound.actions.addSku': 'Add SKU line', 'warehouse.inbound.modal.add': 'Add Inbound', 'warehouse.inbound.drawer.detail': 'Inbound Detail', 'warehouse.inbound.box': 'Box', 'warehouse.inbound.line.skuCode': 'SKU', 'warehouse.inbound.line.plannedQty': 'Planned', 'warehouse.inbound.line.receivedQty': 'Received', 'warehouse.inbound.line.binLocation': 'Putaway Bin', 'warehouse.inbound.form.selectBin': 'Select bin', 'warehouse.inbound.actions.delete': 'Delete', 'warehouse.inbound.actions.confirmReceive': 'Confirm Receive', 'warehouse.inbound.modal.confirmReceive': 'Confirm Receive & Putaway', 'warehouse.inbound.message.loadFailed': 'Failed to load inbound list', 'warehouse.inbound.message.saveSuccess': 'Saved', 'warehouse.inbound.message.saveFailed': 'Save failed', 'warehouse.inbound.message.deleteSuccess': 'Deleted', 'warehouse.inbound.message.required': 'Select warehouse', 'warehouse.inbound.message.boxRequired': 'Add SKU lines to at least one box', 'warehouse.inbound.message.detailFailed': 'Failed to load detail', 'warehouse.inbound.message.receiveBinRequired': 'Bin is required when received qty > 0', 'warehouse.inbound.message.receiveQtyInvalid': 'Received qty cannot be negative', 'warehouse.inbound.message.receiveSuccess': 'Receive succeeded', 'warehouse.inbound.message.receiveFailed': 'Receive failed', 'order.platformStore.platform.manual': 'Manual', 'order.platformStore.table.siteCountry': 'Site Country', 'order.platformStore.table.autoFulfill': 'Auto Fulfill', 'order.platformStore.table.authTime': 'Auth Time', 'order.platformStore.table.createTime': 'Created At', 'order.platformStore.form.siteCountry': 'Site', 'order.platformStore.form.authCode': 'Auth code', 'order.platformStore.form.tip': 'Note', 'order.platformStore.form.authRenewTip': 'Re-authorizing the same store renews binding without changing the nickname.', 'order.platformStore.form.manualTip': 'Enter any name; the system creates a mock manual store.', 'order.platformStore.site.crossBorder': 'Cross-border', 'order.platformStore.actions.bind': 'Bind store', 'order.platformStore.actions.startAuth': 'Start authorization', 'order.platformStore.auth.active': 'Active', 'order.platformStore.auth.expired': 'Expired', 'order.platformStore.auth.revoked': 'Revoked', 'order.platformStore.table.platform': 'Platform', 'order.platformStore.table.nickname': 'Nickname', 'order.platformStore.table.account': 'Account', 'order.platformStore.table.authStatus': 'Auth Status', 'order.platformStore.table.tokenExpire': 'Token Expire', 'order.platformStore.search.platform': 'Platform', 'order.platformStore.search.nickname': 'Nickname', 'order.platformStore.form.platform': 'Platform', 'order.platformStore.form.nickname': 'Nickname', 'order.platformStore.form.account': 'Account', 'order.platformStore.form.autoFulfill': 'Auto Fulfill', 'order.platformStore.modal.add': 'Add Store', 'order.platformStore.modal.bind': 'Bind Store', 'order.platformStore.form.nicknamePlaceholder': 'Store nickname (custom)', 'order.platformStore.form.authCodePlaceholder': 'Auth code from store management', 'order.platformStore.form.sitePlaceholder': 'Select site', 'order.platformStore.form.selectPlatformHint': 'Select a platform to continue', 'order.platformStore.actions.close': 'Close', 'order.platformStore.modal.edit': 'Edit Store', 'order.platformStore.actions.auth': 'Authorize', 'order.platformStore.actions.delete': 'Delete Store', 'order.platformStore.message.loadFailed': 'Failed to load stores', 'order.platformStore.message.saveSuccess': 'Saved', 'order.platformStore.message.saveFailed': 'Save failed', 'order.platformStore.message.deleteSuccess': 'Deleted', 'order.platformStore.message.required': 'Nickname is required', 'order.platformStore.message.platformRequired': 'Select a platform', 'order.platformStore.message.authCodeRequired': 'Auth code is required', 'order.platformStore.message.authPlaceholder': 'OAuth placeholder', 'order.platformStore.message.authStarted': 'Authorization started; complete it in the new window', 'order.platformStore.message.authFailed': 'Failed to get auth URL', 'order.platformStoreOrder.status.all': 'All', 'order.platformStoreOrder.status.pending': 'Pending', 'order.platformStoreOrder.status.toShip': 'To Ship', 'order.platformStoreOrder.status.shipped': 'Shipped', 'order.platformStoreOrder.status.suspended': 'Suspended', 'order.platformStoreOrder.table.platform': 'Platform', 'order.platformStoreOrder.table.country': 'Country', 'order.platformStoreOrder.table.itemCount': 'Items', 'order.platformStoreOrder.table.shippingLabel': 'Label No', 'order.platformStoreOrder.table.warehouse': 'Warehouse', 'order.platformStoreOrder.table.lastSync': 'Last Sync', 'order.platformStoreOrder.table.orderNo': 'Order No', 'order.platformStoreOrder.table.store': 'Store', 'order.platformStoreOrder.table.status': 'Status', 'order.platformStoreOrder.table.amount': 'Amount', 'order.platformStoreOrder.table.orderTime': 'Order Time', 'order.platformStoreOrder.table.linkedServiceNo': 'Linked Service No', 'order.platformStoreOrder.form.product': 'Sales Product', 'order.platformStoreOrder.search.orderNo': 'Order No', 'order.platformStoreOrder.summary.pending': 'Pending', 'order.platformStoreOrder.summary.toShip': 'To Ship', 'order.platformStoreOrder.drawer.detail': 'Order Detail', 'order.platformStoreOrder.line.sku': 'Platform SKU', 'order.platformStoreOrder.line.name': 'Product', 'order.platformStoreOrder.line.qty': 'Qty', 'order.platformStoreOrder.line.mappedSku': 'Mapped SKU', 'order.platformStoreOrder.actions.match': 'Match Inventory', 'order.platformStoreOrder.actions.batchMatch': 'Batch Match', 'order.platformStoreOrder.actions.suspend': 'Suspend', 'order.platformStoreOrder.actions.resume': 'Resume', 'order.platformStoreOrder.actions.delete': 'Delete', 'order.platformStoreOrder.message.loadFailed': 'Failed to load orders', 'order.platformStoreOrder.message.detailFailed': 'Failed to load detail', 'order.platformStoreOrder.message.matchSuccess': 'Inventory matched', 'order.platformStoreOrder.message.matchFailed': 'Match failed', 'order.platformStoreOrder.message.warehouseRequired': 'Select warehouse', 'order.platformStoreOrder.message.suspendSuccess': 'Status updated', 'order.platformStoreOrder.message.deleteSuccess': 'Deleted', 'order.platformStoreOrder.message.batchEmpty': 'No pending orders to match on this page', 'order.platformStoreOrder.message.batchConfirm': 'Match {count} pending orders on this page and create parcel orders?', 'order.platformStoreOrder.message.batchResult': 'Batch done: {success} succeeded, {fail} failed', 'menu.channel': 'Channel', 'menu.channel.channelGuide': 'Getting Started', 'menu.channel.salesProducts': 'Sales Products', 'menu.channel.serviceChannels': 'Service Channels', 'menu.channel.priceArea': 'Price Area', 'menu.channel.blacklist': 'Blacklist', 'menu.channel.remoteZones': 'Remote Zones', 'menu.channel.weightRules': 'Weight Rules', 'menu.channel.weightRounding': 'Weight Rounding', 'menu.channel.autoTrigger': 'Auto Trigger', 'menu.channel.issueTemplate': 'Issue Template', 'menu.channel.labelDesign': 'Label Design', 'menu.track': 'Track', 'menu.track.trackGuide': 'Getting Started', 'menu.track.trackOrder': 'Track Order', 'menu.track.warningOrder': 'Warning Order', 'menu.track.trackState': 'Track State', 'menu.track.trackFlag': 'Track Flag', 'menu.track.trackContent': 'Track Content', 'menu.track.trackPull': 'Track Pull', 'menu.track.trackPush': 'Track Push', 'menu.track.kpiRegion': 'KPI Region', 'menu.track.kpiEarlyWarningConfig': 'KPI Early Warning Config', 'menu.operation': 'Operation', 'menu.operation.inboundScan': 'Inbound Scan', 'menu.operation.outboundScan': 'Outbound Scan', 'menu.operation.printLabel': 'Print Label', 'menu.api': 'API', 'menu.api.upstreamInterface': 'Upstream Interface', 'menu.api.downstreamInterface': 'Downstream Interface', 'menu.api.createInterface': 'Create Interface', 'menu.api.editInterface': 'Edit Interface', 'menu.api.appList': 'App List', 'menu.api.requestLog': 'Request Log', 'menu.api.callStatistics': 'Call Statistics', 'menu.api.createApplication': 'Create Application', 'menu.api.apiDebugger': 'API Debugger', 'menu.api.apiLike': 'API LIKE', 'menu.api.apiTest': 'API Test', // API - Call Statistics 'api.callStatistics.name.app': 'Application Name', 'api.callStatistics.name.provider': 'Service Provider Name', 'api.callStatistics.table.date': 'Date', 'api.callStatistics.table.interfaceName': 'Interface Name', 'api.callStatistics.table.total': 'Total Calls', 'api.callStatistics.table.succeedCount': 'Successful Calls', 'api.callStatistics.table.failCount': 'Failed Calls', 'api.callStatistics.table.successRate': 'Success Rate', 'menu.system': 'System', 'menu.system.org': 'Organization', 'menu.system.organization': 'Organization', 'menu.system.user': 'User', 'menu.system.position': 'Position', 'menu.system.role': 'Role', 'menu.system.module': 'Module', 'menu.system.menu': 'Menu', 'menu.system.dict': 'Dictionary', 'menu.system.otherConfig': 'Other Config', 'menu.system.config': 'Config', 'menu.system.announcement': 'Announcement', 'menu.system.vislog': 'Visit Log', 'menu.system.oplog': 'Operation Log', 'menu.noPermission': 'No menu permission', 'menu.system.interface': 'System Interface', 'menu.system.interface.config': 'Interface Config', 'menu.system.warehouseAddress': 'Warehouse Address', 'menu.system.batchEmail': 'Batch Email', 'menu.system.xhsAiAssistant': 'AI Assistant', 'menu.system.dataPerm': 'Data Permission', 'menu.system.dataPermUsers': 'User Data Permission', 'menu.system.dataPermTemplates': 'Permission Templates', 'menu.system.dataPermAudit': 'Permission Audit', 'system.dataPerm.users.title': 'User Data Permission', 'system.dataPerm.users.desc': 'Configure direct five-dimension permissions for internal users', 'system.dataPerm.users.loading': 'Loading users...', 'system.dataPerm.users.emptySelect': 'Select a user on the left', 'system.dataPerm.users.emptyDesc': 'Configure org, data scope, biz tags, secret level and custom filters for internal users', 'system.dataPerm.panel.primaryOrg': 'Primary organization', 'system.dataPerm.panel.configType': 'Config type', 'system.dataPerm.panel.configTypeDirect': 'Direct user config', 'system.dataPerm.panel.previewModule': 'Preview module', 'system.dataPerm.panel.cannotEditSelf': 'You cannot edit your own data permissions', 'system.dataPerm.panel.stat.total': 'Direct items', 'system.dataPerm.panel.tab.org': 'Organization', 'system.dataPerm.panel.tab.scope': 'Data scope', 'system.dataPerm.panel.tab.biz': 'Business tags', 'system.dataPerm.panel.tab.secret': 'Secret level', 'system.dataPerm.panel.tab.filter': 'Custom filter', 'system.dataPerm.templates.add': 'New template', 'system.dataPerm.templates.search': 'Search name or code', 'system.dataPerm.templates.title': 'Permission templates', 'system.dataPerm.templates.loading': 'Loading templates...', 'system.dataPerm.templates.emptySelect': 'Select a template on the left, or click Add', 'system.dataPerm.templates.emptyDesc': 'Templates define five-dimension permission rules and can be applied to users or roles', 'system.dataPerm.templates.save': 'Save', 'system.dataPerm.templates.apply': 'Apply template', 'system.dataPerm.templates.field.name': 'Name', 'system.dataPerm.templates.field.code': 'Code', 'system.dataPerm.templates.field.description': 'Description', 'system.dataPerm.templates.field.roleCode': 'Bound role code', 'system.dataPerm.templates.field.bindRole': 'Linked role', 'system.dataPerm.templates.field.bindRolePlaceholder': 'Select an RBAC role', 'system.dataPerm.templates.field.bindRoleExtra': 'Saved as roleCode — identifies which job role this template belongs to', // Order - Batch Jobs 'order.batchJobs.filter.jobId': 'Job ID', 'order.batchJobs.filter.status': 'Status', 'order.batchJobs.filter.action': 'Action', 'order.batchJobs.table.jobId': 'Job ID', 'order.batchJobs.table.action': 'Action', 'order.batchJobs.table.status': 'Status', 'order.batchJobs.table.progress': 'Progress', 'order.batchJobs.table.failCount': '{count} failed', 'order.batchJobs.table.failCountShort': 'Failed', 'order.batchJobs.table.createTime': 'Created', 'order.batchJobs.table.startedAt': 'Started', 'order.batchJobs.table.finishedAt': 'Finished', 'order.batchJobs.actions.search': 'Search', 'order.batchJobs.actions.reset': 'Reset', 'order.batchJobs.actions.refresh': 'Refresh', 'order.batchJobs.actions.view': 'View', 'order.batchJobs.actions.retryFailed': 'Retry Failed', 'order.batchJobs.actions.cancelPending': 'Cancel Pending', 'order.batchJobs.drawer.title': 'Batch Job #{id}', 'order.batchJobs.items.orderId': 'Order ID', 'order.batchJobs.items.serviceNo': 'Tracking No.', 'order.batchJobs.items.status': 'Item Status', 'order.batchJobs.items.failReason': 'Fail Reason', 'order.batchJobs.message.loadFailed': 'Failed to load batch jobs', 'order.batchJobs.message.retrySuccess': 'Retried {count} failed item(s)', 'order.batchJobs.message.retryFailed': 'Failed to retry items', 'order.batchJobs.message.cancelConfirm': 'Cancel {count} pending item(s)?', 'order.batchJobs.message.cancelSuccess': 'Cancelled {count} pending item(s)', 'order.batchJobs.message.cancelFailed': 'Failed to cancel pending items', 'order.batchJobs.dlx.alert': 'DLX queue has {count} message(s), above threshold {threshold}', 'order.batchJobs.status.pending': 'Pending', 'order.batchJobs.status.running': 'Running', 'order.batchJobs.status.completed': 'Completed', 'order.batchJobs.status.failed': 'Failed', 'order.batchJobs.status.cancelled': 'Cancelled', 'order.batchJobs.status.unknown': 'Unknown', 'order.batchJobs.itemStatus.pending': 'Pending', 'order.batchJobs.itemStatus.running': 'Running', 'order.batchJobs.itemStatus.success': 'Success', 'order.batchJobs.itemStatus.failed': 'Failed', 'order.batchJobs.itemStatus.cancelled': 'Cancelled', 'order.batchJobs.itemStatus.unknown': 'Unknown', 'order.batchJobs.action.pay': 'Batch Pay', 'order.batchJobs.action.preDeclare': 'Batch Pre-declare', 'order.batchJobs.action.intercept': 'Batch Intercept', 'order.batchJobs.action.cancelIntercept': 'Batch Cancel Intercept', 'order.batchJobs.action.delete': 'Batch Delete', 'order.batchJobs.action.print': 'Batch Print', 'order.batchJobs.action.trackUpsert': 'Batch Track Upsert', 'order.batchJobs.action.downstreamForward': 'Batch Downstream Forward', 'order.batchJobs.action.markProblematic': 'Batch Mark Problematic', 'order.batchJobs.action.markClaimed': 'Batch Mark Claimed', 'order.batchJobs.action.handleStatusUpdate': 'Batch Handle Status', 'order.batchJobs.action.parcelCreate': 'Batch Parcel Create', 'order.batchJobs.action.importRow': 'Order Import', 'order.batchJobs.action.unknown': 'Other', 'system.dataPerm.templates.section.bindApply': 'Role link & apply', 'system.dataPerm.templates.section.applyNow': 'Apply now', 'system.dataPerm.templates.bindApplyHint': 'Linking a role is metadata only. Use "Apply now" below to write template items into role or user permissions. Linking does not apply by itself.', 'system.dataPerm.templates.applyToRole': 'Sync to linked role', 'system.dataPerm.templates.applyToRoleDesc': 'Write template items into the role\'s data permissions (replaces role direct config)', 'system.dataPerm.templates.applyToRoleBtn': 'Write to role', 'system.dataPerm.templates.applyToUsers': 'Apply to users', 'system.dataPerm.templates.applyToUsersDesc': 'Batch write direct user data permissions; replace or merge', 'system.dataPerm.templates.applyToUsersBtn': 'Apply to users', 'system.dataPerm.templates.field.targetUsers': 'Target users', 'system.dataPerm.templates.field.targetUsersPlaceholder': 'Search and select internal users', 'system.dataPerm.templates.field.applyMode': 'Apply mode', 'system.dataPerm.templates.field.temporary': 'Temporary grant (users only)', 'system.dataPerm.templates.field.effectiveTime': 'Effective from', 'system.dataPerm.templates.field.expireTime': 'Expires at', 'system.dataPerm.templates.mode.replace': 'Replace direct config', 'system.dataPerm.templates.mode.merge': 'Merge with existing', 'system.dataPerm.templates.applyNeedSave': 'Save the template before applying', 'system.dataPerm.templates.bindRoleFirst': 'Select a linked role first', 'system.dataPerm.templates.selectUsersFirst': 'Select target users', 'system.dataPerm.templates.expireTimeRequired': 'Expire time is required for temporary grants', 'system.dataPerm.templates.applySuccess': 'Applied to {count} target(s)', 'system.dataPerm.templates.applyPartial': '{success} succeeded, {fail} failed', 'system.dataPerm.templates.roleCodePlaceholder': 'Optional, auto-apply when role is assigned', 'system.dataPerm.templates.itemsTitle': '模板明细', 'system.dataPerm.templates.itemsHintForm': 'Select a permission type and fill the form — no JSON required', 'system.dataPerm.templates.addExample': 'Add example preset', 'system.dataPerm.templates.exampleAdded': 'Added example "{name}"', 'system.dataPerm.templates.itemInvalid': 'Item #{index} is incomplete: {field}', 'system.dataPerm.templates.example.salesStaff': 'Sales staff', 'system.dataPerm.templates.example.salesStaffDesc': 'Personal data scope + public/internal secret levels', 'system.dataPerm.templates.example.salesSupervisor': 'Sales supervisor', 'system.dataPerm.templates.example.salesSupervisorDesc': 'Department scope + secret levels 1–3', 'system.dataPerm.templates.example.branchManager': 'Branch manager', 'system.dataPerm.templates.example.branchManagerDesc': 'Org-tree scope + secret levels 1–3', 'system.dataPerm.templates.form.org': 'Organization', 'system.dataPerm.templates.form.orgPlaceholder': 'Select organization', 'system.dataPerm.templates.form.orgScope': 'Org scope', 'system.dataPerm.templates.form.dataScope': 'Data visibility', 'system.dataPerm.templates.form.module': 'Module', 'system.dataPerm.templates.form.moduleAll': 'All modules (leave empty)', 'system.dataPerm.templates.form.bizType': 'Tag type', 'system.dataPerm.templates.form.bizTag': 'Tag value', 'system.dataPerm.templates.form.bizTagPlaceholder': 'Select tag', 'system.dataPerm.templates.form.secretLevels': 'Allowed secret levels', 'system.dataPerm.templates.form.filterField': 'Field', 'system.dataPerm.templates.form.filterValuePlaceholder': 'e.g. Paid or 1,2 (comma-separated)', 'system.dataPerm.templates.form.addCondition': 'Add condition', 'system.dataPerm.templates.form.orgExample': 'Example: grant East China Sales Dept including sub-orgs for regional leads.', 'system.dataPerm.templates.form.dataScopeExample': 'Example: Personal = own records only; Department = all records in the dept.', 'system.dataPerm.templates.form.bizExample': 'Example: restrict to Product Line A orders or customers.', 'system.dataPerm.templates.form.secretExample': 'Example: Public + Internal means confidential data is hidden.', 'system.dataPerm.templates.form.filterExample': 'Example: Order module + OrderStatus equals Paid.', 'system.dataPerm.templates.form.tip.org': 'Which organizations\' data the user can access', 'system.dataPerm.templates.form.tip.data_scope': 'How broad the visible business data is (personal → global)', 'system.dataPerm.templates.form.tip.biz': 'Narrow data by product line, warehouse, etc.', 'system.dataPerm.templates.form.tip.secret': 'Filter by secret level; unchecked levels are hidden', 'system.dataPerm.templates.form.tip.filter': 'Simple filters on a module (multiple conditions use AND)', 'system.dataPerm.templates.form.invalid.orgOrganization': 'Please select an organization', 'system.dataPerm.templates.form.invalid.dataScope': 'Please select data scope', 'system.dataPerm.templates.form.invalid.biz': 'Please select tag type and value', 'system.dataPerm.templates.form.invalid.secretLevels': 'Select at least one secret level', 'system.dataPerm.templates.form.invalid.filterResource': 'Please select a module', 'system.dataPerm.templates.form.invalid.filterCondition': 'Add at least one filter condition', 'system.dataPerm.templates.itemJsonPlaceholder': 'JSON, e.g. {"dataScope":1}', 'system.dataPerm.templates.addItem': 'Add item row', 'system.dataPerm.templates.removeItem': 'Remove', 'system.dataPerm.templates.nameCodeRequired': 'Name and code are required', 'system.dataPerm.templates.invalidJson': 'Invalid JSON in template items', 'system.dataPerm.templates.createSuccess': 'Created', 'system.dataPerm.templates.updateSuccess': 'Updated', 'system.dataPerm.templates.deleteSuccess': 'Deleted', 'system.dataPerm.templates.builtinDeleteDenied': 'Built-in templates cannot be deleted', 'system.dataPerm.templates.deleteConfirm': 'Delete template "{name}"?', 'system.dataPerm.templates.tab.basic': 'Basic info', 'system.dataPerm.templates.tab.items': 'Template items', 'system.dataPerm.templates.itemsHint': 'Each row is a JSON config for one permission dimension', 'system.dataPerm.templates.itemsEmpty': 'No items yet. Click below to add one.', 'system.dataPerm.templates.jsonPreset': 'JSON preset', 'system.dataPerm.templates.dimensionPlaceholder': 'Select dimension', 'system.dataPerm.templates.tag.creating': 'Creating', 'system.dataPerm.templates.tag.builtin': 'Built-in', 'system.dataPerm.templates.stat.items': 'Items', 'system.dataPerm.templates.stat.dimensions': 'Dimensions', 'menu.xhs': 'Xiaohongshu', 'menu.xhs.startService': 'Start Service', 'menu.xhs.analysis': 'Content Analysis', 'menu.xhs.creation': 'Content Creation', 'menu.xhs.publishHistory': 'Publish History', 'menu.xhs.skills': 'Skill Cards', 'menu.xhs.humanSettings': 'Human-like Settings', // Top nav - contact & balance 'nav.contactService.title': 'Q&A & Support', 'nav.contactService.selectWarehouse': 'Select warehouse', 'nav.contactService.whseName': 'Warehouse name', 'nav.contactService.serviceWechat': 'Customer WeChat', 'nav.contactService.wechatQrcode': 'WeChat QR code', 'nav.contactService.phone': 'Contact phone', 'nav.contactService.workingTime': 'Service hours: Mon-Sun 9:00-22:00', 'nav.contactService.contactUs': 'Contact support', 'nanaAssistant.title': 'Nana · Exclusive Advisor', 'nanaAssistant.open': 'Open Nana exclusive advisor', 'nanaAssistant.tabAi': 'AI Nana', 'nanaAssistant.tabAdvisor': 'Exclusive Advisor', 'nanaAssistant.wechatId': 'WeChat ID', 'nanaAssistant.noAdvisor': 'No exclusive advisor assigned yet', 'nanaAssistant.noWechatQr': 'WeChat QR code not uploaded', 'nanaAssistant.greeting': "Hi, I'm Nana, your AI assistant.\n\nAsk me about tracking, shipping times, declared values, customs clearance, and more. How can I help you today?", 'nanaAssistant.inputPlaceholder': 'Type your logistics question, press Enter to send', 'nanaAssistant.send': 'Send', 'nanaAssistant.close': 'Close', 'nanaAssistant.noProvider': 'AI service is not configured yet. Please contact your administrator.', 'nanaAssistant.sendFailed': 'Failed to send. Please try again later.', 'nav.balance.label': 'Balance', 'nav.balance.recharge': 'Recharge', 'nav.balance.rechargeRecord': 'Recharge records', 'nav.balance.accountFlow': 'Account transactions', // Order - My Orders 'order.myOrders.tabs.all': 'All', 'order.myOrders.tabs.draft': 'Draft', 'order.myOrders.tabs.predeclared': 'Pre-declared', 'order.myOrders.tabs.received': 'Received', 'order.myOrders.tabs.pendingPayment': 'Pending Payment', 'order.myOrders.tabs.pendingShip': 'Pending Ship', 'order.myOrders.tabs.pendingOnline': 'Pending Online', 'order.myOrders.tabs.shipping': 'Shipping', 'order.myOrders.tabs.deliverySuccess': 'Delivery Success', 'order.myOrders.tabs.deliveryFailed': 'Delivery Failed', 'order.myOrders.tabs.deleted': 'Deleted', 'order.myOrders.tabs.problematic': 'Problematic', 'order.myOrders.tabs.claimed': 'Claim Item', 'order.myOrders.handleStatus.all': 'All', 'order.myOrders.handleStatus.pending': 'Pending', 'order.myOrders.handleStatus.processed': 'Processed', 'order.myOrders.handleStatus.context.problematic': 'Problematic handling', 'order.myOrders.handleStatus.context.claimed': 'Claim item handling', 'order.myOrders.actions.pay': 'Pay Now', 'order.myOrders.actions.predeclare': 'Re-predeclare', 'order.myOrders.actions.createTrackOrder': 'Create track order', 'order.myOrders.actions.forwardDownstreamCreate': 'Get Tracking No.', 'order.myOrders.modal.downstreamForwardTitle': 'Downstream forward result', 'order.myOrders.actions.intercept': 'Intercept', 'order.myOrders.actions.cancelIntercept': 'Cancel intercept', 'order.myOrders.actions.delete': 'Delete', 'order.myOrders.actions.print': 'Print', 'order.myOrders.actions.export': 'Export', 'order.myOrders.actions.modifyOrder': 'Edit order', 'order.myOrders.actions.createProblematic': 'Create problematic', 'order.myOrders.actions.createClaimed': 'Create claim', 'order.myOrders.actions.markProcessed': 'Mark processed', 'order.myOrders.problematic.modalTitle': 'Create problematic ({count} orders)', 'order.myOrders.problematic.issueType': 'Issue type', 'order.myOrders.problematic.template': 'Issue template', 'order.myOrders.problematic.title': 'Title', 'order.myOrders.problematic.content': 'Content', 'order.myOrders.problematic.contentHint': 'Placeholders: {serviceNo} {clientNo} {trackNo} {productCode} {channelCode}', 'order.myOrders.problematic.remark': 'Remark', 'order.myOrders.problematic.success': 'Problematic orders created', 'order.myOrders.claimed.modalTitle': 'Create claim ({count} orders)', 'order.myOrders.claimed.claimType': 'Claim type', 'order.myOrders.claimed.amount': 'Claim amount', 'order.myOrders.claimed.amountPlaceholder': 'Enter amount', 'order.myOrders.claimed.currency': 'Currency', 'order.myOrders.claimed.reason': 'Reason', 'order.myOrders.claimed.reasonPlaceholder': 'Describe the reason for this claim', 'order.myOrders.claimed.remark': 'Remark', 'order.myOrders.claimed.remarkPlaceholder': 'Optional', 'order.myOrders.claimed.success': 'Claims created', 'order.myOrders.claimType.lost': 'Lost', 'order.myOrders.claimType.damaged': 'Damaged', 'order.myOrders.claimType.delay': 'Delay', 'order.myOrders.claimType.customs': 'Customs', 'order.myOrders.claimType.fee': 'Fee dispute', 'order.myOrders.claimType.other': 'Other', 'order.myOrders.handleStatus.success': 'Marked as processed', 'order.myOrders.handleStatus.failed': 'Failed to update status', 'order.myOrders.batch.partialSuccess': '{success} succeeded, {fail} failed. {detail}', 'order.myOrders.actions.more': 'More', 'order.myOrders.pagination.totalRecords': 'Total {count} records', 'order.myOrders.pagination.perPage': 'per page', 'order.myOrders.pagination.goto': 'Go to', 'order.myOrders.pagination.page': 'page', 'order.myOrders.table.actions': 'Actions', 'order.myOrders.table.serialNo': 'No.', 'order.myOrders.table.waybillNo': 'Waybill No.', 'order.myOrders.table.customerOrderNo': 'Customer Order No.', 'order.myOrders.table.trackingNo': 'Tracking No.', 'order.myOrders.table.customerName': 'Customer Name', 'order.myOrders.table.customerCode': 'Customer Code', 'order.myOrders.table.shippingMethod': 'Sales Product', 'order.myOrders.table.serviceChannel': 'Service Channel', 'order.myOrders.table.isPaid': 'Paid', 'order.myOrders.table.consignee': 'Consignee', 'order.myOrders.table.consigneeCountry': 'Consignee Country', 'order.myOrders.table.consigneePhone': 'Consignee Phone', 'order.myOrders.table.consigneeCity': 'Consignee City', 'order.myOrders.table.consigneeAddress': 'Consignee Address', 'order.myOrders.table.chargeableWeight': 'Chargeable Weight', 'order.myOrders.table.receivableAmount': 'Receivable Amount', 'order.myOrders.table.consigneePostcode': 'Consignee Postcode', 'order.myOrders.table.consigneeState': 'Consignee State', 'order.myOrders.table.ioss': 'IOSS', 'order.myOrders.table.eori': 'EORI', 'order.myOrders.table.orderStatus': 'Order Status', 'order.myOrders.table.predeclareFailReason': 'Predeclare Failure Reason', 'order.myOrders.table.createTime': 'Create Time', 'order.myOrders.table.receiveTime': 'Receive Time', 'order.myOrders.table.shipTime': 'Ship Time', 'order.myOrders.table.payTime': 'Pay Time', 'order.myOrders.table.signTime': 'Sign Time', 'order.myOrders.table.warehouse': 'Warehouse', 'order.myOrders.table.inboundTime': 'Inbound Time', 'order.myOrders.table.outboundTime': 'Outbound Time', 'order.myOrders.status.pendingPayment': 'Pending Payment', 'order.myOrders.status.draft': 'Draft', 'order.myOrders.status.predeclared': 'Pre-declared', 'order.myOrders.status.received': 'Received', 'order.myOrders.status.pendingShip': 'Pending Ship', 'order.myOrders.status.pendingOnline': 'Pending Online', 'order.myOrders.status.shipping': 'Shipping', 'order.myOrders.status.deliverySuccess': 'Delivery Success', 'order.myOrders.status.deliveryFailed': 'Delivery Failed', 'order.myOrders.status.deleted': 'Deleted', 'order.myOrders.status.problematic': 'Problematic', 'order.myOrders.status.claimed': 'Claim Item', 'order.myOrders.selectedCount': 'Selected {count} items', 'order.myOrders.drawer.title': 'Order Detail', 'order.myOrders.drawer.tabs.basic': 'Order Detail', 'order.myOrders.drawer.tabs.weight': 'Weight/Dimensions', 'order.myOrders.drawer.tabs.fee': 'Receivables/Payables', 'order.myOrders.drawer.tabs.track': 'Tracking', 'order.myOrders.drawer.orderBasic': 'Basic Info', 'order.myOrders.drawer.basic.viewAll': 'All', 'order.myOrders.drawer.basic.group.identity': 'Order IDs', 'order.myOrders.drawer.basic.group.product': 'Product & Channel', 'order.myOrders.drawer.basic.group.timeline': 'Status & Timeline', 'order.myOrders.drawer.basic.group.flags': 'Business Flags', 'order.myOrders.drawer.basic.group.audit': 'Audit Trail', 'order.myOrders.drawer.sender.empty': 'No sender info', 'order.myOrders.drawer.declaration.addRow': 'Add declaration row', 'order.myOrders.drawer.declaration.action': 'Action', 'order.myOrders.drawer.declaration.delete': 'Delete', 'order.myOrders.drawer.declaration.empty': 'No declaration items', 'order.myOrders.drawer.serviceNo': 'Waybill No.', 'order.myOrders.drawer.clientNo': 'Client Order No.', 'order.myOrders.drawer.trackNo': 'Tracking No.', 'order.myOrders.drawer.productCode': 'Product Code', 'order.myOrders.drawer.productName': 'Sales Product', 'order.myOrders.drawer.channelCode': 'Channel Code', 'order.myOrders.drawer.channelName': 'Service Channel', 'order.myOrders.drawer.isPaid': 'Paid', 'order.myOrders.drawer.consigneeCountry': 'Country Code', 'order.myOrders.drawer.consigneeCountryName': 'Country Name (CN)', 'order.myOrders.drawer.cargoAttribute': 'Cargo Attribute', 'order.myOrders.drawer.cargoAttribute.general': 'General', 'order.myOrders.drawer.cargoAttribute.electronics': '3C & Electronics', 'order.myOrders.drawer.cargoAttribute.sensitive': 'Sensitive', 'order.myOrders.table.cargoAttribute': 'Cargo Attribute', 'order.myOrders.drawer.orderStatus': 'Order Status', 'order.myOrders.drawer.predeclareFailReason': 'Predeclare Failure Reason', 'order.myOrders.drawer.warehouse': 'Warehouse', 'order.myOrders.drawer.receiveTime': 'Receive Time', 'order.myOrders.drawer.shipTime': 'Ship Time', 'order.myOrders.drawer.payTime': 'Pay Time', 'order.myOrders.drawer.signTime': 'Sign Time', 'order.myOrders.drawer.isCod': 'Is COD', 'order.myOrders.drawer.codCurrency': 'COD Currency', 'order.myOrders.drawer.codSum': 'COD Amount', 'order.myOrders.drawer.isIntercept': 'Is Intercept', 'order.myOrders.drawer.isRemote': 'Is Remote', 'order.myOrders.drawer.createTime': 'Create Time', 'order.myOrders.drawer.createBy': 'Created By', 'order.myOrders.drawer.updateTime': 'Update Time', 'order.myOrders.drawer.updateBy': 'Updated By', 'order.myOrders.drawer.sender': 'Sender', 'order.myOrders.drawer.recipient': 'Recipient', 'order.myOrders.drawer.declaration': 'Declaration', 'order.myOrders.drawer.senderName': 'Sender Name', 'order.myOrders.drawer.company': 'Company', 'order.myOrders.drawer.country': 'Country', 'order.myOrders.drawer.province': 'Province', 'order.myOrders.drawer.city': 'City', 'order.myOrders.drawer.zipCode': 'Zip Code', 'order.myOrders.drawer.streetAddress1': 'Address 1', 'order.myOrders.drawer.streetAddress2': 'Address 2', 'order.myOrders.drawer.streetAddress3': 'Address 3', 'order.myOrders.drawer.houseNumber': 'House No.', 'order.myOrders.drawer.phone': 'Phone', 'order.myOrders.drawer.telePhone': 'Telephone', 'order.myOrders.drawer.email': 'Email', 'order.myOrders.drawer.isDefault': 'Is Default', 'order.myOrders.drawer.recipientsName': 'Recipient Name', 'order.myOrders.drawer.companyName': 'Company Name', 'order.myOrders.drawer.recipientCountry': 'Country', 'order.myOrders.drawer.recipientPhone': 'Phone', 'order.myOrders.drawer.recipientZipCode': 'Zip Code', 'order.myOrders.drawer.recipientTelePhone': 'Telephone', 'order.myOrders.drawer.streetNumber': 'Street No.', 'order.myOrders.drawer.taxType': 'Tax Type', 'order.myOrders.drawer.taxNo': 'Tax No.', 'order.myOrders.drawer.certificateType': 'Certificate Type', 'order.myOrders.drawer.certificateNo': 'Certificate No.', 'order.myOrders.drawer.eori': 'EORI', 'order.myOrders.drawer.vat': 'Vat', 'order.myOrders.drawer.declarationCnName': 'Name(CN)', 'order.myOrders.drawer.declarationEnName': 'Name(EN)', 'order.myOrders.drawer.declarationSku': 'SKU', 'order.myOrders.drawer.declarationUnit': 'Unit', 'order.myOrders.drawer.declarationUnitPrice': 'Unit Price', 'order.myOrders.drawer.declarationUnitWeight': 'Unit Weight', 'order.myOrders.drawer.declarationQuantity': 'Quantity', 'order.myOrders.drawer.declarationAmount': 'Amount', 'order.myOrders.drawer.declarationWeight': 'Weight', 'order.myOrders.drawer.declarationHsCode': 'HsCode', 'order.myOrders.drawer.declarationSkuImage': 'Image', 'order.myOrders.drawer.declarationCategory': 'Category', 'order.myOrders.drawer.declarationBrand': 'Brand', 'order.myOrders.drawer.declarationBrandType': 'Brand Type', 'order.myOrders.drawer.declarationIsMagnetic': 'Magnetic/Electric', 'order.myOrders.drawer.declarationDistribution': 'Distribution', 'order.myOrders.drawer.declarationMaterial': 'Material', 'order.myOrders.drawer.declarationEnMaterial': 'Material(EN)', 'order.myOrders.drawer.declarationPurpose': 'Purpose', 'order.myOrders.drawer.declarationAttributes': 'Attributes', 'order.myOrders.drawer.declarationOriginCountry': 'Origin Country', 'order.myOrders.drawer.declarationSalesLink': 'Sales Link', 'order.myOrders.drawer.declarationModel': 'Model', 'order.myOrders.drawer.declarationSpecifications': 'Specifications', 'order.myOrders.drawer.declarationComment': 'Comment', 'order.myOrders.drawer.yes': 'Yes', 'order.myOrders.drawer.no': 'No', 'order.myOrders.drawer.weightType': 'Type', 'order.myOrders.drawer.weightType.forecast': 'Forecast', 'order.myOrders.drawer.weightType.receive': 'Inbound', 'order.myOrders.drawer.weightType.ship': 'Outbound', 'order.myOrders.drawer.weightType.downstream': 'Downstream', 'order.myOrders.drawer.weight.viewAll': 'All', 'order.myOrders.drawer.weight.actualMeta': 'Actual {value} kg', 'order.myOrders.drawer.weight.empty.forecast': 'No forecast data', 'order.myOrders.drawer.weight.empty.receive': 'No inbound data', 'order.myOrders.drawer.weight.empty.ship': 'No outbound data', 'order.myOrders.drawer.weight.empty.downstream': 'No downstream data', 'order.myOrders.drawer.weight.emptyAll': 'No weight & dimension data', 'order.myOrders.drawer.track.count': '{count} events', 'order.myOrders.drawer.track.refresh': 'Refresh', 'order.myOrders.drawer.track.empty': 'No tracking data', 'order.myOrders.drawer.track.latest': 'Latest', 'order.myOrders.drawer.track.remark': 'Remark', 'order.myOrders.drawer.track.code': 'Track code', 'order.myOrders.drawer.track.timezone': 'TZ {zone}', 'order.myOrders.drawer.weightLength': 'Length(cm)', 'order.myOrders.drawer.weightWidth': 'Width(cm)', 'order.myOrders.drawer.weightHeight': 'Height(cm)', 'order.myOrders.drawer.actualWeight': 'Actual(kg)', 'order.myOrders.drawer.volumetricWeight': 'Volumetric(kg)', 'order.myOrders.drawer.chargeableWeight': 'Chargeable(kg)', 'order.myOrders.drawer.cubic': 'Cubic(m³)', 'order.myOrders.drawer.feeType': 'Type', 'order.myOrders.drawer.chargingStage': 'Charging Stage', 'order.myOrders.drawer.actions.edit': 'Edit', 'order.myOrders.drawer.actions.save': 'Save', 'order.myOrders.drawer.actions.cancel': 'Cancel', 'order.myOrders.drawer.actions.recalculateReceivable': 'Recalc Receivable', 'order.myOrders.drawer.actions.recalculatePayable': 'Recalc Payable', 'order.myOrders.drawer.actions.addFee': 'Add Fee', 'order.myOrders.drawer.editBasicTitle': 'Edit Order Details', 'order.myOrders.drawer.editWeightTitle': 'Edit Weight & Dimensions', 'order.myOrders.drawer.message.saveSuccess': 'Saved successfully', 'order.myOrders.drawer.message.recalculateSuccess': 'Recalculated successfully', 'order.myOrders.drawer.costItem': 'Cost Item', 'order.myOrders.drawer.amount': 'Amount', 'order.myOrders.drawer.currency': 'Currency', 'order.myOrders.drawer.downstreamProvider': 'Downstream Provider', 'order.myOrders.drawer.priceNo': 'Price No', 'order.myOrders.drawer.priceEffectiveTime': 'Price Effective Time', 'order.myOrders.drawer.fee.receivableTitle': 'Receivable Details', 'order.myOrders.drawer.fee.payableTitle': 'Payable Details', 'order.myOrders.drawer.fee.viewAll': 'All', 'order.myOrders.drawer.fee.itemCount': '{count} items', 'order.myOrders.drawer.fee.emptyReceivable': 'No receivable fees', 'order.myOrders.drawer.fee.emptyPayable': 'No payable fees', 'order.myOrders.drawer.fee.emptyAll': 'No fee data', 'order.myOrders.drawer.fee.grossProfit': 'Gross profit', 'order.myOrders.drawer.fee.grossMargin': 'Margin {value}', 'order.myOrders.drawer.fee.grossMarginEmpty': 'No margin', 'order.myOrders.drawer.fee.grossProfitFormula': 'Gross profit', 'order.myOrders.drawer.fee.addTitle': 'Add Fee', 'order.myOrders.drawer.fee.addSection.basic': 'Fee details', 'order.myOrders.drawer.fee.addSection.amount': 'Amount', 'order.myOrders.drawer.fee.addSection.optional': 'Optional', 'order.myOrders.drawer.fee.addSection.optionalHint': 'Optional', 'order.myOrders.drawer.fee.addSuccess': 'Fee added successfully', 'order.myOrders.drawer.fee.addFailed': 'Failed to add fee', 'order.myOrders.drawer.fee.addMissingOrder': 'Invalid order, cannot add fee', 'order.myOrders.drawer.fee.amountPlaceholder': 'Enter amount', 'order.myOrders.drawer.fee.downstreamProviderPlaceholder': 'Enter downstream provider', 'order.myOrders.drawer.fee.priceNoPlaceholder': 'Enter price no.', 'order.myOrders.drawer.fee.priceEffectiveTimePlaceholder': 'Select effective time', // Order - Price Check 'order.priceCheck.form.destinationCountry': 'Destination country', 'order.priceCheck.form.destinationCountry.placeholder': 'Please select', 'order.priceCheck.form.shippingMethod': 'Shipping method', 'order.priceCheck.form.shippingMethod.placeholder': 'Please select', 'order.priceCheck.form.cargoWeight': 'Cargo weight', 'order.priceCheck.form.cargoWeight.placeholder': 'Please enter weight (KG)', 'order.priceCheck.form.dimensions': 'Dimensions', 'order.priceCheck.form.dimensions.length': 'Length/cm', 'order.priceCheck.form.dimensions.width': 'Width/cm', 'order.priceCheck.form.dimensions.height': 'Height/cm', 'order.priceCheck.form.cargoType': 'Cargo attribute', 'order.priceCheck.form.cargoType.placeholder': 'Multi-select; defaults to general cargo if empty', 'order.priceCheck.form.warehouse': 'Warehouse', 'order.priceCheck.form.warehouse.placeholder': 'Multi-select; all warehouses if empty', 'order.priceCheck.form.destinationProvince': 'State / Province', 'order.priceCheck.form.destinationProvince.placeholder': 'Please select', 'order.priceCheck.form.postalCode': 'Postal code', 'order.priceCheck.form.postalCode.placeholder': 'Please enter', 'order.priceCheck.actions.query': 'Search', 'order.priceCheck.actions.reset': 'Reset', 'order.priceCheck.shortcuts.countryAria': 'Common destination countries', 'order.priceCheck.shortcut.US': 'United States', 'order.priceCheck.shortcut.CA': 'Canada', 'order.priceCheck.shortcut.MX': 'Mexico', 'order.priceCheck.shortcut.BR': 'Brazil', 'order.priceCheck.shortcut.NZ': 'New Zealand', 'order.priceCheck.shortcut.GB': 'United Kingdom', 'order.priceCheck.shortcut.DE': 'Germany', 'order.priceCheck.shortcut.IT': 'Italy', 'order.priceCheck.shortcut.FR': 'France', 'order.priceCheck.shortcut.NL': 'Netherlands', 'order.priceCheck.country.US': 'United States', 'order.priceCheck.country.UK': 'United Kingdom', 'order.priceCheck.country.DE': 'Germany', 'order.priceCheck.country.FR': 'France', 'order.priceCheck.shippingMethod.air': 'Air', 'order.priceCheck.shippingMethod.sea': 'Sea', 'order.priceCheck.shippingMethod.land': 'Land', 'order.priceCheck.cargoType.general': 'General cargo', 'order.priceCheck.cargoType.sensitive': 'Sensitive cargo', 'order.priceCheck.cargoType.dangerous': 'Dangerous goods', 'order.priceCheck.province.CA': 'California', 'order.priceCheck.province.NY': 'New York', 'order.priceCheck.province.TX': 'Texas', 'order.priceCheck.search.placeholder': 'Search table...', 'order.priceCheck.search.search': 'Search', 'order.priceCheck.search.clear': 'Clear', 'order.priceCheck.search.resetFilters': 'Reset filters', 'order.priceCheck.table.serialNo': 'No.', 'order.priceCheck.table.shippingMethod': 'Shipping Method', 'order.priceCheck.table.cargoType': 'Cargo attribute', 'order.priceCheck.table.warehouse': 'Warehouse', 'order.priceCheck.table.deliveryTime': 'Transit time (days)', 'order.priceCheck.table.volumetricWeight': 'Volumetric Weight (KG)', 'order.priceCheck.table.chargeableWeight': 'Chargeable Weight (KG)', 'order.priceCheck.table.costFormula': 'Cost Formula', 'order.priceCheck.table.freight': 'Freight (CNY)', 'order.priceCheck.table.otherFees': 'Other Fees (CNY)', 'order.priceCheck.table.otherFeesHint': 'Hover to see fee names', 'order.priceCheck.table.totalCost': 'Total Cost (CNY)', 'order.priceCheck.table.operation': 'Action', 'order.priceCheck.table.viewDetail': 'Details', 'order.priceCheck.table.orderNow': 'Place order now', 'order.priceCheck.table.empty': 'No quotes yet. Run a search first.', 'order.priceCheck.tag.priceOptimal': 'Best price', 'order.priceCheck.tag.timeOptimal': 'Fastest', 'order.priceCheck.customerGuide.drawerTitle': 'Customer guide', 'order.priceCheck.customerGuide.drawerTitleWithProduct': '{product} · Customer guide', 'order.priceCheck.customerGuide.empty': 'No customer guide configured for this product', 'order.priceCheck.customerGuide.loadFailed': 'Failed to load customer guide', 'order.priceCheck.customerGuide.missingProduct': 'Cannot identify product; customer guide unavailable', 'order.priceCheck.pagination.total': 'Total {count} records', 'order.priceCheck.pagination.prev': 'Prev', 'order.priceCheck.pagination.next': 'Next', 'order.priceCheck.pagination.perPage': '/page', 'order.priceCheck.pagination.goTo': 'Go to', 'order.priceCheck.pagination.page': 'page', 'order.priceCheck.pagination.invalidPage': 'Please enter a valid page number', // Order - Place Order 'order.placeOrder.template.label': 'Standard template', 'order.placeOrder.template.download': 'Download', 'order.placeOrder.template.edit': 'Edit', 'order.placeOrder.template.delete': 'Delete', 'order.placeOrder.template.cancel': 'Cancel', 'order.placeOrder.template.deleteSuccess': 'Custom template deleted', 'order.placeOrder.template.deleteConfirmTitle': 'Delete custom template', 'order.placeOrder.template.deleteConfirmContent': 'Delete template "{name}"? This cannot be undone.', 'order.placeOrder.template.standard1': 'Standard template 1', 'order.placeOrder.template.standard2': 'Standard template 2', 'order.placeOrder.template.custom1': 'Custom template 1', 'order.placeOrder.template.updatedAt': 'Updated: {time}', 'order.placeOrder.upload.dropText': 'Drag file here, or click to upload', 'order.placeOrder.upload.tip1': 'Please upload an Excel file and fill in required data according to the template.', 'order.placeOrder.upload.tip2': 'Maximum 2000 orders per upload.', 'order.placeOrder.batchOrder': 'Batch order', 'order.placeOrder.batch.submitted': 'Batch job #{jobId} submitted ({total} items). Opening Batch Jobs…', 'order.placeOrder.batch.viewJobs': 'View batch jobs', 'order.placeOrder.batch.uploadTitle': 'Upload & submit', 'order.placeOrder.batch.stepTemplate': 'Select template', 'order.placeOrder.batch.stepUpload': 'Upload Excel', 'order.placeOrder.batch.stepSubmit': 'Submit', 'order.placeOrder.upload.downloadTemplate': 'Download template', 'order.placeOrder.upload.fileReady': 'File ready to submit', 'order.placeOrder.upload.reselect': 'Reselect', 'order.placeOrder.upload.clearFile': 'Clear', 'order.placeOrder.upload.invalidType': 'Only .xlsx / .xls files are supported', 'order.placeOrder.upload.selectTemplateFirst': 'Please select a template first', 'order.placeOrder.templatePanel.title': 'Templates', 'order.placeOrder.templatePanel.hint': 'Click a card to select template', 'order.placeOrder.templatePanel.emptyCustom': 'No custom templates', 'order.placeOrder.templatePanel.emptyStandard': 'No standard templates. Contact admin or refresh the page.', 'order.placeOrder.agreement.label': 'I have read and agree to all terms', 'order.placeOrder.singleOrder': 'Single order', 'order.placeOrder.single.formTitle': 'Order details', 'order.placeOrder.single.sampleOrder': 'Generate sample', 'order.placeOrder.single.stepBasic': 'Basic info', 'order.placeOrder.single.stepSender': 'Sender', 'order.placeOrder.single.stepRecipient': 'Recipient', 'order.placeOrder.single.stepDeclaration': 'Declaration info', 'order.placeOrder.single.tip1': 'Fields marked * are required. Fill in each section in order.', 'order.placeOrder.single.tip2': 'Use “Generate sample” to try the full flow quickly.', 'order.placeOrder.single.submitHint': 'Complete required fields and accept the agreement to submit', 'order.placeOrder.single.submitReady': 'Ready to submit', 'order.placeOrder.single.viewCustomerGuide': 'View customer guide', 'order.placeOrder.single.declaredCurrencyHint': 'Default is USD; please enter declared prices carefully', 'order.placeOrder.standardTemplates': 'Standard templates', 'order.placeOrder.customTemplates': 'Custom templates', 'order.placeOrder.customTemplates.add': 'Add custom template', 'order.placeOrder.progress.title': 'Processing progress', 'order.placeOrder.progress.header.serialNo': 'No.', 'order.placeOrder.progress.header.taskName': 'Task name', 'order.placeOrder.progress.header.quantity': 'Quantity', 'order.placeOrder.progress.header.status': 'Status', 'order.placeOrder.progress.header.createTime': 'Created at', 'order.placeOrder.progress.header.actions': 'Action', 'order.placeOrder.progress.view': 'View', 'order.placeOrder.status.processing': 'Processing', 'order.placeOrder.status.completed': 'Completed', 'order.placeOrder.status.pending': 'Pending', // System - Downstream service providers & interfaces 'system.serviceProviders.search.placeholder': 'Enter provider name', 'system.serviceProviders.search.refresh': 'Refresh list', 'system.serviceProviders.search.addProvider': 'Add provider', 'system.serviceProviders.dropdown.edit': 'Edit', 'system.serviceProviders.dropdown.copy': 'Create copy', 'system.serviceProviders.dropdown.authConfig': 'Auth config', 'system.serviceProviders.dropdown.accountManage': 'Account management', 'system.serviceProviders.dropdown.export': 'Export', 'system.serviceProviders.dropdown.fixedParams': 'Common parameters', 'system.serviceProviders.dropdown.delete': 'Delete', 'system.serviceProviders.list.deleteTip': 'Please delete via the action button in each provider item', 'system.serviceProviders.list.invalid': 'Invalid provider data', 'system.serviceProviders.list.deleteConfirmTitle': 'Reminder', 'system.serviceProviders.list.deleteConfirmContent': 'Are you sure you want to delete provider “{name}”? All interfaces under this provider will also be deleted.', 'system.serviceProviders.list.deleteSuccess': 'Deleted successfully', 'system.serviceProviders.list.deleteFail': 'Delete failed', 'system.serviceProviders.list.loadFail': 'Failed to load provider list', 'system.serviceProviders.interfaceList.title': 'Interface list', 'system.serviceProviders.interfaceList.refresh': 'Refresh interfaces', 'system.serviceProviders.interfaceList.add': 'Add interface', 'system.serviceProviders.interfaceList.loading': 'Loading interface list...', 'system.serviceProviders.interfaceList.empty': 'No interface data', 'system.serviceProviders.interfaceList.selectProvider': 'Please select a provider to view its interfaces', 'system.serviceProviders.interfaceList.loadFail': 'Failed to load interface list', 'system.serviceProviders.interface.needProvider': 'Please select a provider first', 'system.serviceProviders.interface.deleteTip': 'Please delete via the delete button in the interface list', 'system.serviceProviders.interface.invalid': 'Invalid interface data', 'system.serviceProviders.interface.deleteConfirmTitle': 'Reminder', 'system.serviceProviders.interface.deleteConfirmContent': 'Are you sure you want to delete interface “{name}”?', 'system.serviceProviders.interface.deleteSuccess': 'Deleted successfully', 'system.serviceProviders.interface.deleteFail': 'Delete failed', 'system.serviceProviders.detail.tab.detail': 'Interface detail', 'system.serviceProviders.detail.tab.debug': 'API Debugger', 'system.serviceProviders.detail.actions.cancel': 'Cancel', 'system.serviceProviders.detail.actions.save': 'Save', 'system.serviceProviders.interfaceDetail.saveSuccess': 'Saved successfully', // System - Service provider interface modal 'system.serviceProviders.modal.params.required': 'Required', 'system.serviceProviders.modal.form.name.placeholder': '* Please enter interface name (Chinese)', 'system.serviceProviders.modal.form.code.placeholder': 'Interface code (read only)', 'system.serviceProviders.modal.form.requestProtocol.placeholder': '* Please select protocol', 'system.serviceProviders.modal.form.requestMethod.placeholder': '* Please select method', 'system.serviceProviders.modal.form.requestAddress.placeholder': '* Example: http://xx/api/CreateOrder', 'system.serviceProviders.modal.form.contentType.placeholder': '* Please select Content-Type', 'system.serviceProviders.modal.form.responseContentType.placeholder': 'Please select Response-Content-Type', 'system.serviceProviders.modal.form.isDisableAuth.yes': 'Yes', 'system.serviceProviders.modal.form.isDisableAuth.no': 'No', 'system.serviceProviders.modal.form.mappedParamType.placeholder': 'Please select root node', 'system.serviceProviders.modal.form.description.placeholder': 'Please enter remarks', 'system.serviceProviders.modal.rules.requiredInput': 'Input cannot be empty', 'system.serviceProviders.modal.rules.requestProtocol': 'Please select protocol', 'system.serviceProviders.modal.rules.requestMethod': 'Please select method', 'system.serviceProviders.modal.rules.contentType': 'Please select Content-Type', 'system.serviceProviders.modal.rules.descriptionMax': 'Please keep within 200 characters', 'system.serviceProviders.modal.load.error': 'Failed to load interface data', 'system.serviceProviders.modal.load.notFound': 'Interface does not exist or has been deleted', 'system.serviceProviders.modal.load.noPermission': 'No permission to access this interface', 'system.serviceProviders.modal.load.serverError': 'Server error, please try again later', 'system.serviceProviders.modal.load.networkError': 'Network error, please check API endpoint', 'system.serviceProviders.modal.load.fallbackName': 'Failed to load interface data, please fill in manually', 'system.serviceProviders.modal.save.fillAll': 'Please complete all required fields', 'system.serviceProviders.modal.save.success': 'Saved successfully', 'system.serviceProviders.modal.save.fail': 'Save failed', 'system.serviceProviders.modal.params.addFail': 'Failed to add parameter, please try again', 'system.serviceProviders.modal.params.typeNotAllow': 'This parameter type cannot add child item', 'system.serviceProviders.modal.params.parse.needInput': 'Please enter content before parsing', 'system.serviceProviders.modal.params.parse.success': 'Parsed successfully', 'system.serviceProviders.modal.params.parse.fail': 'Parse failed', 'system.serviceProviders.modal.params.import.needParse': 'Import failed, please parse first', 'system.serviceProviders.modal.params.import.success': 'Imported successfully', 'system.serviceProviders.modal.params.import.fail': 'Import failed', 'system.serviceProviders.modal.params.second.addFail': 'Failed to add secondary request parameter, please try again', 'system.serviceProviders.modal.secondParams.columns.name': 'Name', 'system.serviceProviders.modal.secondParams.columns.value': 'Value', 'system.serviceProviders.modal.secondParams.columns.description': 'Description', 'system.serviceProviders.modal.secondParams.columns.action': 'Action', 'system.serviceProviders.modal.table.requestBody': 'Request body', 'system.serviceProviders.modal.table.responseBody': 'Response body', 'system.serviceProviders.modal.table.secondParams': 'Secondary request params', 'system.serviceProviders.modal.table.action.add': 'Add', 'system.serviceProviders.modal.table.button.parse': 'Parse', 'system.serviceProviders.modal.table.placeholder.paramName': 'Please enter parameter name', 'system.serviceProviders.modal.table.placeholder.cnName': 'Please enter Chinese name', 'system.serviceProviders.modal.table.placeholder.type': 'Please select type', 'system.serviceProviders.modal.table.placeholder.description': 'Please enter description', 'system.serviceProviders.modal.table.placeholder.paramValue': 'Please enter parameter value', 'system.serviceProviders.modal.drawer.title': 'Parameter parsing', 'system.serviceProviders.modal.drawer.placeholder.json': 'Please enter JSON content', 'system.serviceProviders.modal.drawer.placeholder.xml': 'Please enter XML content', 'system.serviceProviders.modal.drawer.actions.cancel': 'Cancel', 'system.serviceProviders.modal.drawer.actions.parse': 'Parse', 'system.serviceProviders.modal.drawer.actions.import': 'Import', // System - Upstream interface base form (new-port.vue) 'system.interface.form.requestAddress': 'Request URL', 'system.interface.form.requestProtocol': 'Request protocol', 'system.interface.form.requestMethod': 'Request method', 'system.interface.form.limit': 'Batch processing', 'system.interface.form.flowCode': 'Flow Code', 'system.interface.form.isDisableAuth': 'Disable auth', 'system.interface.form.rules.name.required': 'This field is required', 'system.interface.form.rules.name.max50': 'Please keep within 50 characters', 'system.interface.form.rules.limit.number': 'Only numbers are allowed', 'system.interface.form.rules.requestAddress.required': 'This field is required', 'system.interface.form.rules.requestAddress.max500': 'Please keep within 500 characters', 'system.interface.form.rules.description.max200': 'Please keep within 200 characters', 'system.interface.form.rules.category.required': 'Please select interface', 'system.interface.form.rules.requestProtocol.required': 'Please select protocol', 'system.interface.form.rules.requestMethod.required': 'Please select method', 'system.interface.form.rules.isBatch.required': 'Please select', 'system.interface.form.rules.contentType.required': 'Please select Content-Type', 'system.interface.form.rules.responseContentType.required': 'Please select Response-Content-Type', 'system.interface.params.name.required': 'Parameter name is required', 'system.interface.params.name.noChinese': 'Spaces and Chinese characters are not allowed', 'system.interface.params.description.max200': 'Please keep within 200 characters', 'system.interface.params.parameterId.required': 'Status parameter is required', 'system.interface.params.statusCode.required': 'Success value is required', 'system.interface.params.statusCode.alphaNum': 'Only letters and numbers are allowed', 'system.interface.sort.onlySameLevel': 'Only reordering within the same level is supported', 'system.interface.sort.saveSuccess': 'Sorted successfully', 'system.interface.saveFail': 'Save failed', 'system.interface.changeLevel': 'Cross-level dragging is not allowed', // System - Interface Management Page 'system.interface.search.placeholder.nameOrCode': 'Interface name/code', 'system.interface.search.placeholder.interfaceName': 'Enter interface name', 'system.interface.search.placeholder.providerName': 'Enter provider name', 'system.interface.search.placeholder.selectProviderAndInterface': 'Please select provider and interface', 'system.interface.search.button.query': 'Query', 'system.interface.actions.refresh': 'Refresh list', 'system.interface.actions.addInterface': 'Add interface', 'system.interface.actions.addMapping': 'Add mapping', 'system.interface.actions.delete': 'Delete', 'system.interface.actions.cancel': 'Cancel', 'system.interface.actions.confirm': 'Confirm', 'system.interface.table.actions': 'Action', 'system.interface.modal.add': 'Add', 'system.interface.modal.edit': 'Edit', 'system.interface.modal.addMapping': 'Add mapping', 'system.interface.modal.addUpstreamInterface': 'Add upstream interface', 'system.interface.modal.editUpstreamInterface': 'Edit upstream interface', 'system.interface.modal.confirmTitle': 'Confirm', 'system.interface.modal.deleteConfirm': 'Are you sure to delete this record?', 'system.interface.modal.deleteInterfaceConfirm': 'Are you sure to delete interface "{name}"?', 'system.interface.modal.warningTitle': 'Warning', 'system.interface.modal.ok': 'OK', 'system.interface.modal.cancel': 'Cancel', 'system.interface.modal.publishConfirm': 'Do you want to publish?', 'system.interface.message.deleteSuccess': 'Deleted successfully', 'system.interface.message.deleteFailed': 'Delete failed', 'system.interface.message.saveSuccess': 'Saved successfully', 'system.interface.message.cannotDeleteWithMapping': 'Cannot delete interface with existing mappings', 'system.interface.message.canOnlyDeleteInterface': 'Can only delete interface nodes', 'system.interface.message.selectProviderForDebug': 'Please select a provider for debugging', 'system.interface.message.selectLeftInterface': 'Please select an interface from the left', 'system.interface.message.selectProviderInterface': 'Please select provider interface', 'system.interface.message.selectInterfaceFirst': 'Please select an interface first', 'system.interface.mappingList.title': 'Mapping list', 'system.interface.mapping.outputMapping': 'Output mapping', 'system.interface.tabs.mappingDetail': 'Mapping detail', 'system.interface.tabs.apiDebugger': 'API Debugger', 'system.interface.tabs.interfaceDetail': 'Interface detail', 'system.interface.empty.selectLeftInterfaceForMapping': 'Please select an interface from the left to view mapping provider list', 'system.interface.empty.selectLeftInterfaceForDetail': 'Please select an interface from the left to view interface detail', 'system.interface.empty.selectInterfaceForDetail': 'Please select an interface to view details', 'system.interface.loading.interfaceList': 'Loading interface list...', 'system.interface.mapping.inputMapping': 'Input mapping', 'system.interface.mapping.outputMappingLabel': 'Output mapping', 'system.interface.mapping.table.systemParamName': 'System parameter name', 'system.interface.mapping.table.systemParamNameCn': 'System parameter description', 'system.interface.mapping.table.paramType': 'Parameter type', 'system.interface.mapping.table.providerParamName': 'Provider parameter name', 'system.interface.mapping.table.providerParamNameCn': 'Provider parameter description', 'system.interface.mapping.table.paramValue': 'Parameter value', 'system.interface.mapping.table.inputParam': 'Input parameter', 'system.interface.mapping.table.inputParamCn': 'Input parameter description', 'system.interface.mapping.actions.prefixScript': 'Prefix script', 'system.interface.mapping.actions.postfixScript': 'Postfix script', 'system.interface.mapping.actions.allowUnequalMapping': 'Allow unequal structure mapping:', 'system.interface.mapping.message.noContentToPublish': 'No content to publish', 'system.interface.mapping.message.publishCacheSuccess': 'Updated {providerName}-{interfaceName}*{count} cache successfully', 'system.interface.mapping.message.getPublishCompareFailed': 'Failed to get publish compare data', 'system.interface.mapping.modal.publishTitle': 'Publish', 'system.interface.mapping.modal.onlineCache': 'Online cache', 'system.interface.mapping.modal.updateCache': 'Update cache ({count})', 'system.interface.mapping.modal.publishWarning': 'Publishing will affect normal data forecasting, continue?', 'system.interface.mapping.modal.versionRemark': 'Please enter version remark', 'system.interface.mapping.modal.deleteConfirm': 'Are you sure to delete this record?', 'system.interface.mapping.empty.noProvider': 'No mapping provider', 'system.interface.mapping.actions.actions': 'Actions', 'system.interface.mapping.actions.delete': 'Delete', 'system.interface.mapping.actions.publish': 'Publish', 'system.interface.mapping.actions.rollback': 'Rollback', 'common.yes': 'Yes', 'common.no': 'No', // System - Interface Config Page 'system.interface.config.message.addParamFailed': 'Failed to add parameter, please try again', 'system.interface.config.message.addRequestParamFailed': 'Failed to add request parameter, please try again', 'system.interface.config.message.addResponseParamFailed': 'Failed to add response parameter, please try again', 'system.interface.config.message.typeNotAllow': 'This parameter type cannot add child item', 'system.interface.config.message.saveSuccess': 'Saved successfully', 'system.interface.config.message.saveFailed': 'Save failed, please check data', 'system.interface.config.message.cancelEditFailed': 'Failed to cancel edit', 'system.interface.config.message.editFailed': 'Edit failed, please try again', 'system.interface.config.message.addSuccess': 'Added successfully', 'system.interface.config.message.updateSuccess': 'Updated successfully', 'system.interface.config.message.parseSuccess': 'Parsed successfully', 'system.interface.config.message.importSuccess': 'Imported successfully', 'system.interface.config.message.importFailedNeedFormat': 'Import failed, please import text format first', 'system.interface.config.message.importFailedNeedParse': 'Import failed, please import text format or parse first', 'system.interface.config.modal.warningTitle': 'Warning', 'system.interface.config.modal.publishConfirm': 'Do you want to publish?', 'system.interface.config.table.requestBody': 'Request body', 'system.interface.config.table.responseBody': 'Response body', 'system.interface.config.actions.add': 'Add', 'system.interface.config.actions.parse': 'Parse', 'system.interface.config.actions.import': 'Import', 'system.interface.config.actions.cancel': 'Cancel', 'system.interface.config.placeholder.paramName': 'Enter parameter name', 'system.interface.config.placeholder.cnName': 'Enter Chinese name', 'system.interface.config.placeholder.type': 'Select type', 'system.interface.config.placeholder.description': 'Enter description', 'system.interface.config.drawer.title': 'Parameter parsing', 'system.interface.config.drawer.placeholder.import': 'Please import', 'system.interface.config.drawer.placeholder.parse': 'Please parse', // System - User Management 'system.user.search.placeholder.orgName': 'Enter organization name', 'system.user.search.placeholder.accountOrName': 'Enter account or name', 'system.user.actions.refresh': 'Refresh list', 'system.user.actions.add': 'Add', 'system.user.actions.edit': 'Edit', 'system.user.actions.delete': 'Delete', 'system.user.actions.more': 'More', 'system.user.actions.grantRole': 'Grant role', 'system.user.actions.grantResource': 'Grant resource', 'system.user.actions.resetPassword': 'Reset password', 'system.user.status.enabled': 'Enabled', 'system.user.status.disabled': 'Disabled', 'system.user.table.avatar': 'Avatar', 'system.user.table.account': 'Account', 'system.user.table.realName': 'Name', 'system.user.table.phone': 'Phone', 'system.user.table.email': 'Email', 'system.user.table.orgName': 'Organization', 'system.user.table.positionName': 'Position', 'system.user.table.roles': 'Roles', 'system.user.table.status': 'Status', 'system.user.table.createTime': 'Create time', 'system.user.table.actions': 'Action', 'system.user.message.selectUsersToDelete': 'Please select users to delete', 'system.user.message.selectUsersToGrant': 'Please select users to grant', 'system.user.message.batchGrantRolePending': 'Batch grant role feature pending', 'system.user.message.batchGrantResourcePending': 'Batch grant resource feature pending', 'system.user.message.exportPending': 'Export feature pending', 'system.user.message.importPending': 'Import feature pending', 'system.user.message.resetPasswordSuccess': 'Password reset successfully', 'system.user.message.resetPasswordFailed': 'Password reset failed', 'system.user.message.selectUsersToResetPassword': 'Please select users to reset password', 'system.user.message.deleteSuccess': 'Delete successful', 'system.user.message.updateSuccess': 'Update successful', 'system.user.message.createSuccess': 'Create successful', 'system.user.message.assignRolesSuccess': 'Roles assigned successfully', 'system.user.modal.deleteConfirmTitle': 'Delete confirmation', 'system.user.modal.deleteConfirmContent': 'Are you sure to delete {count} selected users? This action cannot be undone!', 'system.user.modal.okDelete': 'Confirm delete', 'system.user.modal.cancel': 'Cancel', 'system.user.modal.resetPasswordTitle': 'Reset password confirmation', 'system.user.modal.resetPasswordContentSingle': 'Are you sure to reset password for user "{account}"?', 'system.user.modal.resetPasswordContentBatch': 'Are you sure to reset password for {count} selected users?', // System - Role Management 'system.role.search.placeholder.orgName': 'Enter organization name', 'system.role.search.placeholder.roleNameOrCode': 'Enter role name or code', 'system.role.actions.refresh': 'Refresh list', 'system.role.actions.add': 'Add', 'system.role.actions.edit': 'Edit', 'system.role.actions.delete': 'Delete', 'system.role.actions.save': 'Save', 'system.role.emptySelect': 'Select a role on the left, or click Add', 'system.role.emptyDesc': 'Edit basic info and assign permissions after selecting a role', 'system.role.pageTitle': 'Role management', 'system.role.tab.info': 'Basic info', 'system.role.loading': 'Loading roles...', 'system.role.permission.save': 'Save permissions', 'system.role.status.enabled': 'Enabled', 'system.role.status.disabled': 'Disabled', 'system.role.category.business': 'Business role', 'system.role.category.system': 'System role', 'system.role.table.name': 'Role name', 'system.role.table.code': 'Role code', 'system.role.table.boundWarehouse': 'Bound Warehouse', 'system.role.table.category': 'Category', 'system.role.table.status': 'Status', 'system.role.table.sortCode': 'Sort', 'system.role.table.remark': 'Remark', 'system.role.table.createTime': 'Create time', 'system.role.table.actions': 'Action', 'system.role.message.selectRolesToDelete': 'Please select roles to delete', 'system.role.modal.deleteConfirmTitle': 'Delete confirmation', 'system.role.modal.deleteConfirmContent': 'Are you sure to delete {count} selected roles? This action cannot be undone!', 'system.role.modal.okDelete': 'Confirm delete', 'system.role.modal.cancel': 'Cancel', // System - Menu Management 'system.menu.search.placeholder.menuNameOrCode': 'Enter menu name or code', 'system.menu.actions.add': 'Add', 'system.menu.actions.batchImport': 'Batch import', 'system.menu.actions.delete': 'Delete', 'system.menu.actions.edit': 'Edit', 'system.menu.actions.more': 'More', 'system.menu.actions.manageButton': 'Manage button', 'system.menu.actions.syncLevel3Buttons': 'Sync level-3 buttons', 'system.menu.actions.syncSubMenusAndButtons': 'Sync sub-menus & buttons', 'system.menu.status.enabled': 'Enabled', 'system.menu.status.disabled': 'Disabled', 'system.menu.table.title': 'Menu name', 'system.menu.table.code': 'Menu code', 'system.menu.table.menuType': 'Menu type', 'system.menu.table.path': 'Route path', 'system.menu.table.component': 'Component path', 'system.menu.table.icon': 'Icon', 'system.menu.table.sortCode': 'Sort', 'system.menu.table.status': 'Status', 'system.menu.table.createTime': 'Create time', 'system.menu.table.actions': 'Action', 'system.menu.message.selectMenusToDelete': 'Please select menus to delete', 'system.menu.message.selectModuleFirst': 'Please select a module first', 'system.menu.modal.deleteConfirmTitle': 'Delete confirmation', 'system.menu.modal.deleteConfirmContent': 'Are you sure to delete {count} selected menus? This action cannot be undone!', 'system.menu.modal.okDelete': 'Confirm delete', 'system.menu.modal.cancel': 'Cancel', 'system.menu.modal.batchImportTitle': 'Batch import menus', 'system.menu.modal.batchImportContent': 'Are you sure to import all menus? Existing menus will be skipped.', 'system.menu.modal.okImport': 'Confirm import', 'system.menu.modal.syncLevel3Title': 'Sync level-3 buttons', 'system.menu.modal.syncLevel3Content': 'Sync level-3 buttons from the frontend catalog and permission tree for menu "{name}". Existing buttons will be skipped.', 'system.menu.modal.syncModuleTitle': 'Sync sub-menus & buttons', 'system.menu.modal.syncModuleContent': 'Sync level-2 page menus from route config for module "{name}", then sync level-3 buttons for each page. Existing menus/buttons will be skipped.', 'system.menu.modal.syncLevel3Ok': 'Sync now', 'system.menu.message.syncLevel3Success': 'Synced: {created} created, {skipped} skipped', 'system.menu.message.syncLevel3Skipped': 'Nothing to sync, {skipped} existing button(s) skipped', 'system.menu.message.syncLevel3Failed': 'Failed to sync level-3 buttons', 'system.menu.message.syncModuleSuccess': 'Synced: {level2Created} level-2 menu(s) created, {level2Skipped} skipped; {level3Created} level-3 button(s) created, {level3Skipped} skipped', 'system.menu.message.syncModuleSkipped': 'Nothing to sync, skipped {level2Skipped} level-2 menu(s) and {level3Skipped} level-3 button(s)', 'system.menu.message.syncModulePartialFailed': 'Some pages failed to sync level-3 buttons: {details}', // System - Organization Management 'system.organization.actions.add': 'Add Organization', 'system.organization.actions.addChild': 'Add Child Organization', 'system.organization.actions.edit': 'Edit', 'system.organization.actions.delete': 'Delete', 'system.organization.modal.add': 'Add Organization', 'system.organization.modal.edit': 'Edit Organization', 'system.organization.modal.deleteConfirm': 'Are you sure to delete?', 'system.organization.form.parentOrg': 'Parent Organization', 'system.organization.form.parentOrgPlaceholder': 'Select parent organization (leave empty for top level)', 'system.organization.form.name': 'Organization Name', 'system.organization.form.namePlaceholder': 'Enter organization name', 'system.organization.form.code': 'Organization Code', 'system.organization.form.codePlaceholder': 'Auto-generated after save', 'system.organization.form.type': 'Organization Type', 'system.organization.form.typePlaceholder': 'Select organization type', 'system.organization.form.type.company': 'Company', 'system.organization.form.type.department': 'Department', 'system.organization.form.type.group': 'Group', 'system.organization.form.type.position': 'Position', 'system.organization.form.leader': 'Leader', 'system.organization.form.leaderPlaceholder': 'Enter leader ID (optional)', 'system.organization.form.order': 'Order', 'system.organization.form.description': 'Description', 'system.organization.form.descriptionPlaceholder': 'Enter description', 'system.organization.form.isEnabled': 'Enabled', 'system.organization.table.name': 'Organization Name', 'system.organization.table.code': 'Organization Code', 'system.organization.table.type': 'Type', 'system.organization.table.order': 'Order', 'system.organization.table.status': 'Status', 'system.organization.table.actions': 'Actions', 'system.organization.status.enabled': 'Enabled', 'system.organization.status.disabled': 'Disabled', 'system.organization.type.unknown': 'Unknown', 'system.organization.rules.name.required': 'Please enter organization name', 'system.organization.rules.code.required': 'Please enter organization code', 'system.organization.rules.type.required': 'Please select organization type', // System - User Management (Additional) 'system.user.actions.batchDelete': 'Batch Delete', 'system.user.actions.assignRoles': 'Assign Roles', 'system.user.modal.add': 'Add User', 'system.user.modal.edit': 'Edit User', 'system.user.modal.assignRoles': 'Assign Roles', 'system.user.form.name': 'User Name', 'system.user.form.namePlaceholder': 'Enter user name', 'system.user.form.account': 'Account', 'system.user.form.accountPlaceholder': 'Enter account', 'system.user.form.password': 'Password', 'system.user.form.passwordPlaceholder': 'Enter password', 'system.user.form.email': 'Email', 'system.user.form.emailPlaceholder': 'Enter email', 'system.user.form.organization': 'Organization', 'system.user.form.organizationPlaceholder': 'Select organization', 'system.user.form.avatar': 'Avatar', 'system.user.form.avatarPlaceholder': 'Enter avatar URL', 'system.user.form.roles': 'Roles', 'system.user.form.rolesPlaceholder': 'Select roles', 'system.user.form.phone': 'Phone', 'system.user.form.phonePlaceholder': 'Enter phone number', 'system.user.form.employeeNo': 'Employee No.', 'system.user.form.employeeNoPlaceholder': 'Auto-generated', 'system.user.form.wechatId': 'WeChat ID', 'system.user.form.wechatIdPlaceholder': 'Enter WeChat ID', 'system.user.form.wechatQrCode': 'WeChat QR Code', 'system.user.form.wechatQrUpload': 'Upload QR code', 'system.user.table.employeeNo': 'Employee No.', 'system.user.table.phone': 'Phone', 'system.user.message.wechatQrTooLarge': 'WeChat QR image must be under 2MB', 'system.user.search.organizationPlaceholder': 'Filter by organization', 'system.user.search.accountOrNamePlaceholder': 'Search username or account', 'system.user.rules.name.required': 'Please enter user name', 'system.user.rules.account.required': 'Please enter account', 'system.user.rules.password.required': 'Please enter password', 'system.user.rules.password.minLength': 'Password must be at least 6 characters', 'system.user.rules.email.format': 'Please enter a valid email format', // System - Role Management (Additional) 'system.role.modal.add': 'Add Role', 'system.role.modal.edit': 'Edit Role', 'system.role.modal.assignPermissions': 'Assign Menus', 'system.role.form.name': 'Role Name', 'system.role.form.namePlaceholder': 'Enter role name', 'system.role.form.code': 'Role Code', 'system.role.form.codePlaceholder': 'Enter role code', 'system.role.form.boundWarehouse': 'Bound Warehouse', 'system.role.form.boundWarehousePlaceholder': 'Please select warehouse address', 'system.role.rules.name.required': 'Please enter role name', 'system.role.rules.code.required': 'Please enter role code', // System - Menu Management (Additional) 'system.menu.actions.addChild': 'Add Child Menu', 'system.menu.modal.add': 'Add Menu', 'system.menu.modal.edit': 'Edit Menu', 'system.menu.type.menu': 'Menu', 'system.menu.type.button': 'Button', 'system.menu.status.show': 'Show', 'system.menu.status.hide': 'Hide', 'system.menu.iconPicker.choose': 'Choose icon', 'system.menu.iconPicker.title': 'Choose menu icon', 'system.menu.iconPicker.placeholder': 'Enter or pick an icon, e.g. IconBook', 'system.menu.iconPicker.searchPlaceholder': 'Search icon name, e.g. Book, User, File', 'system.menu.iconPicker.current': 'Selected', 'system.menu.iconPicker.common': 'Common', 'system.menu.iconPicker.all': 'All icons', 'system.menu.iconPicker.searchResult': 'Search results', 'system.menu.iconPicker.empty': 'No matching icons', // System - Role Management (Permission Assignment) 'system.role.permission.expandAll': 'Expand All', 'system.role.permission.collapseAll': 'Collapse All', 'system.role.permission.checkAll': 'Check All', 'system.role.permission.uncheckAll': 'Uncheck All', 'system.role.permission.loading': 'Loading permission data...', 'system.role.permission.assignSuccess': 'Permission assigned successfully', 'system.role.permission.search': 'Search permission name or code', 'system.role.permission.selected': 'Selected', 'system.role.permission.total': 'Total', 'system.role.permission.selectedCount': '{selected} / {total} selected', 'system.role.permission.noMatch': 'No matching permissions', 'system.role.permission.col.level1': 'Level 1 menu', 'system.role.permission.col.level2': 'Level 2 menu', 'system.role.permission.col.level3': 'Level 3 buttons', 'system.role.tag.creating': 'Creating', 'system.role.tag.boundWarehouse': 'Warehouse bound', 'system.role.message.deleteSuccess': 'Delete successful', 'system.role.message.cannotDeleteSystemRole': 'Built-in system roles (e.g. Customer) cannot be deleted', 'system.role.message.updateSuccess': 'Update successful', 'system.role.message.createSuccess': 'Create successful', // System - Organization Management 'system.org.search.placeholder.orgName': 'Enter organization name', 'system.org.search.placeholder.orgNameOrCode': 'Enter organization name or code', 'system.org.actions.refresh': 'Refresh list', 'system.org.actions.add': 'Add', 'system.org.actions.addOrg': 'Add organization', 'system.org.actions.edit': 'Edit', 'system.org.actions.delete': 'Delete', 'system.org.actions.copy': 'Copy', 'system.org.actions.select': 'Select', 'system.org.actions.cancel': 'Cancel', 'system.org.actions.confirm': 'Confirm', 'system.org.status.enabled': 'Enabled', 'system.org.status.disabled': 'Disabled', 'system.org.category.company': 'Company', 'system.org.category.dept': 'Department', 'system.org.common.yes': 'Yes', 'system.org.common.no': 'No', 'system.org.table.orgName': 'Organization name', 'system.org.table.orgFullName': 'Organization full name', 'system.org.table.category': 'Category', 'system.org.table.code': 'Code', 'system.org.table.status': 'Status', 'system.org.table.sortCode': 'Sort', 'system.org.table.createTime': 'Create time', 'system.org.table.actions': 'Action', 'system.org.form.parentOrg': 'Parent organization', 'system.org.form.orgName': 'Organization name', 'system.org.form.orgCode': 'Organization code', 'system.org.form.category': 'Organization category', 'system.org.form.status': 'Status', 'system.org.form.director': 'Director', 'system.org.form.sortCode': 'Sort', 'system.org.form.targetOrg': 'Target organization', 'system.org.form.containsChild': 'Include children', 'system.org.form.containsPosition': 'Include positions', 'system.org.form.placeholder.selectParentOrg': 'Select parent organization', 'system.org.form.placeholder.orgName': 'Enter organization name', 'system.org.form.placeholder.orgCode': 'Auto-generated after save', 'system.org.form.placeholder.selectCategory': 'Select category', 'system.org.form.placeholder.selectStatus': 'Select status', 'system.org.form.placeholder.selectTargetOrg': 'Select target organization', 'system.org.form.rules.orgNameRequired': 'Please enter organization name', 'system.org.form.rules.parentOrgRequired': 'Please select parent organization', 'system.org.form.rules.categoryRequired': 'Please select organization category', 'system.org.form.rules.statusRequired': 'Please select status', 'system.org.form.rules.targetOrgRequired': 'Please select target organization', 'system.org.form.rules.containsChildRequired': 'Please select whether to include children', 'system.org.form.rules.containsPositionRequired': 'Please select whether to include positions', 'system.org.modal.addOrgTitle': 'Add organization', 'system.org.modal.editOrgTitle': 'Edit organization', 'system.org.modal.copyOrgTitle': 'Copy organization', 'system.org.modal.deleteConfirmTitle': 'Delete confirmation', 'system.org.modal.deleteConfirmContentSingle': 'Are you sure to delete organization 【{name}】? This action cannot be undone!', 'system.org.modal.deleteConfirmContentBatch': 'Are you sure to delete {count} selected organizations? This action cannot be undone!', 'system.org.modal.okDelete': 'Confirm delete', 'system.org.modal.cancel': 'Cancel', 'system.org.message.selectOrgsToDelete': 'Please select organizations to delete', 'system.org.message.deleteSuccess': 'Delete successfully', 'system.org.message.deleteFailed': 'Delete failed', 'system.org.message.copySuccess': 'Copy successfully', 'system.org.message.copyFailed': 'Copy failed', 'system.org.message.editSuccess': 'Edit successfully', 'system.org.message.editFailed': 'Edit failed', 'system.org.message.addSuccess': 'Add successfully', 'system.org.message.addFailed': 'Add failed', 'system.org.message.getDetailFailed': 'Failed to get organization details', 'system.org.loading': 'Loading organizations...', 'system.org.level.root': 'Level 1', 'system.org.level.n': 'Level {n}', 'system.org.level.children': '{count} sub-orgs', 'system.org.users.emptySelect': 'Select an organization', 'system.org.users.emptyDesc': 'Select an organization on the left to view its users', // System - Position Management 'system.position.search.placeholder.orgName': 'Enter organization name', 'system.position.search.placeholder.positionNameOrCode': 'Enter position name or code', 'system.position.actions.refresh': 'Refresh list', 'system.position.actions.add': 'Add', 'system.position.actions.edit': 'Edit', 'system.position.actions.delete': 'Delete', 'system.position.table.name': 'Position name', 'system.position.table.code': 'Position code', 'system.position.table.sortCode': 'Sort', 'system.position.table.remark': 'Remark', 'system.position.table.createTime': 'Create time', 'system.position.table.actions': 'Action', 'system.position.message.selectPositionsToDelete': 'Please select positions to delete', 'system.position.modal.deleteConfirmTitle': 'Delete confirmation', 'system.position.modal.deleteConfirmContent': 'Are you sure to delete {count} selected positions? This action cannot be undone!', 'system.position.modal.okDelete': 'Confirm delete', 'system.position.modal.cancel': 'Cancel', // System - Module Management 'system.module.search.placeholder.moduleNameOrCode': 'Enter module name or code', 'system.module.actions.add': 'Add', 'system.module.actions.edit': 'Edit', 'system.module.actions.delete': 'Delete', 'system.module.status.enabled': 'Enabled', 'system.module.status.disabled': 'Disabled', 'system.module.table.title': 'Module name', 'system.module.table.name': 'Module alias', 'system.module.table.code': 'Module code', 'system.module.table.icon': 'Icon', 'system.module.table.status': 'Status', 'system.module.table.sortCode': 'Sort', 'system.module.table.description': 'Description', 'system.module.table.createTime': 'Create time', 'system.module.table.actions': 'Action', 'system.module.message.selectModulesToDelete': 'Please select modules to delete', 'system.module.modal.deleteConfirmTitle': 'Delete confirmation', 'system.module.modal.deleteConfirmContent': 'Are you sure to delete {count} selected modules? This action cannot be undone!', 'system.module.modal.okDelete': 'Confirm delete', 'system.module.modal.cancel': 'Cancel', // System - Dictionary Management 'system.dict.tabs.system': 'System', 'system.dict.tabs.business': 'Business', 'system.dict.search.placeholder.dictNameOrValue': 'Enter dictionary name or value', 'system.dict.search.placeholder': 'Enter dictionary code or name', 'system.dict.filter.dictType': 'Dictionary Type', 'system.dict.actions.add': 'Add', 'system.dict.actions.edit': 'Edit', 'system.dict.actions.delete': 'Delete', 'system.dict.actions.batchImport': 'Batch import', 'system.dict.batchImport.confirmTitle': 'Batch import dictionaries', 'system.dict.batchImport.confirmContent': 'Predefined dictionary rows from the OMS design spec will be created; existing rows with the same dictType and dictCode are skipped. Import order: dict types in alphabetical order; each type is fully written before the next. Rules: many rows may share one dictType; dictCode must be unique within that dictType (the same code may appear under another dictType, e.g. 0/1). Use yes_no for yes/no; use enable_status for disabled/enabled. Continue?', 'system.dict.batchImport.ok': 'Import', 'system.dict.batchImport.resultDetail': 'Done: created {created}, skipped {skipped}, failed {failed}.', 'system.dict.batchImport.failed': 'Batch import failed: {error}', 'system.dict.status.enabled': 'Enabled', 'system.dict.status.disabled': 'Disabled', 'system.dict.table.dictLabel': 'Dictionary name', 'system.dict.table.dictValue': 'Dictionary value', 'system.dict.table.status': 'Status', 'system.dict.table.sortCode': 'Sort', 'system.dict.table.createTime': 'Create time', 'system.dict.table.actions': 'Action', 'system.dict.table.dictType': 'Dictionary Type', 'system.dict.table.dictSort': 'Sort', 'system.dict.table.dictCode': 'Dictionary Code', 'system.dict.table.dictName': 'Dictionary Name', 'system.dict.form.dictType': 'Dictionary Type', 'system.dict.form.dictSort': 'Sort', 'system.dict.form.dictCode': 'Dictionary Code', 'system.dict.form.dictName': 'Dictionary Name', 'system.dict.placeholder.input': 'Please enter', 'system.dict.modal.addTitle': 'Add Dictionary', 'system.dict.modal.editTitle': 'Edit Dictionary', 'system.dict.modal.deleteConfirmContentSingle': 'Are you sure to delete dictionary [{dictName}]?', 'system.dict.rule.dictTypeRequired': 'Please enter dictionary type', 'system.dict.rule.dictSortRequired': 'Please enter dictionary sort', 'system.dict.rule.dictCodeRequired': 'Please enter dictionary code', 'system.dict.rule.dictNameRequired': 'Please enter dictionary name', 'system.dict.message.addSuccess': 'Added successfully', 'system.dict.message.editSuccess': 'Updated successfully', 'system.dict.message.deleteSuccess': 'Deleted successfully', 'system.dict.message.selectDictsToDelete': 'Please select dictionaries to delete', 'system.dict.message.loadDataFailed': 'Failed to load dictionary data: {error}', 'system.dict.message.unknownError': 'Unknown error', 'system.dict.modal.deleteConfirmTitle': 'Delete confirmation', 'system.dict.modal.deleteConfirmContent': 'Are you sure to delete {count} selected dictionaries? This action cannot be undone!', 'system.dict.modal.okDelete': 'Confirm delete', 'system.dict.modal.cancel': 'Cancel', // System - Other Config 'system.otherConfig.pageTitle': 'Other Config', 'system.otherConfig.search.placeholder': 'Search by config code or name', 'system.otherConfig.actions.add': 'Add', 'system.otherConfig.actions.edit': 'Edit', 'system.otherConfig.actions.delete': 'Delete', 'system.otherConfig.actions.refresh': 'Refresh', 'system.otherConfig.status.enabled': 'Enabled', 'system.otherConfig.status.disabled': 'Disabled', 'system.otherConfig.table.configCode': 'Config Code', 'system.otherConfig.table.configName': 'Config Name', 'system.otherConfig.table.enabled': 'Status', 'system.otherConfig.table.baseUrl': 'Base URL', 'system.otherConfig.table.appKey': 'AppKey', 'system.otherConfig.table.appSecret': 'AppSecret', 'system.otherConfig.table.timeoutSeconds': 'Timeout (s)', 'system.otherConfig.table.updateTime': 'Updated At', 'system.otherConfig.form.configCode': 'Config Code', 'system.otherConfig.form.configName': 'Config Name', 'system.otherConfig.form.enabled': 'Enabled', 'system.otherConfig.form.baseUrl': 'Base URL', 'system.otherConfig.form.appKey': 'AppKey', 'system.otherConfig.form.appSecret': 'AppSecret', 'system.otherConfig.form.timeoutSeconds': 'Timeout (seconds)', 'system.otherConfig.form.remark': 'Remark', 'system.otherConfig.placeholder.input': 'Please enter', 'system.otherConfig.placeholder.configCode': 'e.g. track_service', 'system.otherConfig.placeholder.baseUrl': 'e.g. http://api.nanafa.com/track', 'system.otherConfig.placeholder.appSecretEdit': 'Leave blank to keep unchanged', 'system.otherConfig.modal.addTitle': 'Add Config', 'system.otherConfig.modal.editTitle': 'Edit Config', 'system.otherConfig.modal.deleteConfirmContentSingle': 'Delete config "{configName}"?', 'system.otherConfig.rule.configCodeRequired': 'Please enter config code', 'system.otherConfig.rule.configNameRequired': 'Please enter config name', 'system.otherConfig.rule.baseUrlRequired': 'Please enter base URL', 'system.otherConfig.rule.appKeyRequired': 'Please enter AppKey', 'system.otherConfig.rule.appSecretRequired': 'Please enter AppSecret', 'system.otherConfig.rule.timeoutSecondsRequired': 'Please enter timeout seconds', 'system.otherConfig.message.addSuccess': 'Added successfully', 'system.otherConfig.message.editSuccess': 'Updated successfully', 'system.otherConfig.message.deleteSuccess': 'Deleted successfully', 'system.otherConfig.defaults.trackServiceName': 'Small Bag Track Service', // System - Button Management 'system.button.actions.add': 'Add button', 'system.button.actions.batchDelete': 'Batch delete', 'system.button.actions.edit': 'Edit', 'system.button.actions.delete': 'Delete', 'system.button.form.title': 'Button name', 'system.button.form.code': 'Button code', 'system.button.form.parentMenu': 'Parent menu', 'system.button.form.sortCode': 'Sort', 'system.button.form.description': 'Remark', 'system.button.form.placeholder.title': 'Enter button name', 'system.button.form.placeholder.code': 'Enter button code', 'system.button.form.placeholder.parentMenu': 'Select parent menu', 'system.button.form.placeholder.sortCode': 'Enter sort', 'system.button.form.placeholder.description': 'Enter remark', 'system.button.form.rules.titleRequired': 'Please enter button name', 'system.button.form.rules.codeRequired': 'Please enter button code', 'system.button.table.title': 'Button name', 'system.button.table.code': 'Button code', 'system.button.table.parentId': 'Parent menu ID', 'system.button.table.sortCode': 'Sort', 'system.button.table.description': 'Remark', 'system.button.table.createTime': 'Create time', 'system.button.table.actions': 'Action', 'system.button.modal.addTitle': 'Add button', 'system.button.modal.editTitle': 'Edit button', 'system.button.modal.deleteConfirmTitle': 'Confirm delete', 'system.button.modal.deleteConfirmContentSingle': 'Are you sure to delete button "{title}"?', 'system.button.modal.deleteConfirmContentBatch': 'Are you sure to delete {count} selected buttons?', 'system.button.message.selectButtonsToDelete': 'Please select buttons to delete', 'system.button.message.deleteSuccess': 'Delete successfully', 'system.button.message.deleteFailed': 'Delete failed', 'system.button.message.editSuccess': 'Edit successfully', 'system.button.message.editFailed': 'Edit failed', 'system.button.message.addSuccess': 'Add successfully', 'system.button.message.addFailed': 'Add failed', 'system.button.message.getDetailFailed': 'Failed to get button details', // Operation Module - Common 'operation.common.keepScanFocus': 'Keep focus on scan field', 'operation.common.voiceBroadcast': 'Voice broadcast', 'operation.common.feedback.idle': 'Scan a number — result will appear here', 'operation.common.message.orderNotFound': 'Order not found', 'operation.common.message.lookupSuccess': 'Order matched', // Operation Module - Inbound Scan 'operation.inbound.pageTitle': 'Waybill Information', 'operation.inbound.broadcastSettings': 'Broadcast Settings', 'operation.inbound.form.scanNumber': 'Scan Number:', 'operation.inbound.form.receivedWeight': 'Received Weight:', 'operation.inbound.form.dimensions': 'Length × Width × Height:', 'operation.inbound.form.salesProduct': 'Sales Product:', 'operation.inbound.form.destinationCountry': 'Destination Country:', 'operation.inbound.form.remarks': 'Remarks:', 'operation.inbound.form.placeholder.scanOrInput': 'Scan or enter number', 'operation.inbound.form.placeholder.input': 'Please enter', 'operation.inbound.form.placeholder.length': 'Length/CM', 'operation.inbound.form.placeholder.width': 'Width/CM', 'operation.inbound.form.placeholder.height': 'Height/CM', 'operation.inbound.form.placeholder.select': 'Please select', 'operation.inbound.form.placeholder.scanFirst': 'Auto-filled after scanning', 'operation.inbound.form.hint.supportedTypes': 'Supported: Waybill number, Service provider number, Channel transfer number, Platform order number', 'operation.inbound.actions.reset': 'Reset', 'operation.inbound.actions.inbound': 'Inbound', 'operation.inbound.recentOrders.title': 'Recent Orders', 'operation.inbound.recentOrders.subtitle': 'Maximum 50 recent orders displayed here', 'operation.inbound.recentOrders.empty': 'No data', 'operation.inbound.table.index': 'Index', 'operation.inbound.table.waybillNumber': 'Waybill Number', 'operation.inbound.table.weight': 'Weight', 'operation.inbound.table.dimensions': 'Dimensions', 'operation.inbound.table.product': 'Product', 'operation.inbound.table.country': 'Destination Country', 'operation.inbound.table.warehouse': 'Warehouse', 'operation.inbound.table.operateTime': 'Operate Time', 'operation.inbound.table.operator': 'Operator', 'operation.inbound.message.waybillNumberRequired': 'Please enter or scan waybill number', 'operation.inbound.message.metricsRequired': 'Please enter received weight and dimensions', 'operation.inbound.message.inboundSuccess': 'Inbound successful', 'operation.inbound.message.inboundFailed': 'Inbound failed', 'operation.inbound.message.loadRecentFailed': 'Failed to load recent inbound records', // Operation Module - Outbound Scan 'operation.outbound.pageTitle': 'Waybill Information', 'operation.outbound.broadcastSettings': 'Broadcast Settings', 'operation.outbound.form.scanNumber': 'Scan Number:', 'operation.outbound.form.shipWeight': 'Shipped weight:', 'operation.outbound.form.dimensions': 'L × W × H:', 'operation.outbound.form.salesProduct': 'Sales product:', 'operation.outbound.form.destinationCountry': 'Destination country:', 'operation.outbound.form.serviceChannel': 'Service channel:', 'operation.outbound.form.placeholder.scanOrInput': 'Scan or enter number', 'operation.outbound.form.placeholder.input': 'Enter', 'operation.outbound.form.placeholder.length': 'L / CM', 'operation.outbound.form.placeholder.width': 'W / CM', 'operation.outbound.form.placeholder.height': 'H / CM', 'operation.outbound.form.placeholder.select': 'Select', 'operation.outbound.form.placeholder.scanFirst': 'Auto-filled after scan', 'operation.outbound.form.hint.supportedTypes': 'Supported: Waybill number only', 'operation.outbound.actions.reset': 'Reset', 'operation.outbound.actions.outbound': 'Outbound', 'operation.outbound.recentOrders.title': 'Recent orders', 'operation.outbound.recentOrders.subtitle': 'Maximum 50 recent orders displayed here', 'operation.outbound.recentOrders.empty': 'No data', 'operation.outbound.table.index': 'Index', 'operation.outbound.table.waybillNumber': 'Waybill Number', 'operation.outbound.table.weight': 'Weight', 'operation.outbound.table.dimensions': 'Dimensions', 'operation.outbound.table.product': 'Product', 'operation.outbound.table.country': 'Destination', 'operation.outbound.table.serviceChannel': 'Service channel', 'operation.outbound.table.warehouse': 'Warehouse', 'operation.outbound.table.operateTime': 'Operate Time', 'operation.outbound.table.operator': 'Operator', 'operation.outbound.message.waybillNumberRequired': 'Please enter or scan waybill number', 'operation.outbound.message.outboundSuccess': 'Outbound successful', 'operation.outbound.message.outboundFailed': 'Outbound failed', 'operation.outbound.message.loadRecentFailed': 'Failed to load recent outbound records', // Operation Module - Print Label 'operation.printLabel.pageTitle': 'Print Label', 'operation.printLabel.broadcastSettings': 'Broadcast Settings', 'operation.printLabel.form.scanNumber': 'Number:', 'operation.printLabel.form.placeholder.scanOrInput': 'Scan or enter number', 'operation.printLabel.form.placeholder.numberType': 'Select number type', 'operation.printLabel.form.placeholder.labelTemplate': 'Select label template', 'operation.printLabel.form.hint.supportedTypes': 'Supported: Waybill, Customer order, Tracking, Other', 'operation.printLabel.actions.reset': 'Reset', 'operation.printLabel.actions.print': 'Print', 'operation.printLabel.recentOrders.subtitle': 'Maximum 50 recent records displayed here', 'operation.printLabel.recentOrders.empty': 'No data', 'operation.printLabel.numberType.waybill': 'Waybill Number', 'operation.printLabel.numberType.customerOrder': 'Customer Order Number', 'operation.printLabel.numberType.tracking': 'Tracking Number', 'operation.printLabel.numberType.other': 'Other Number', 'operation.printLabel.labelTemplate.lastMile': 'Last Mile Label', 'operation.printLabel.labelTemplate.customer': 'Customer Label', 'operation.printLabel.labelTemplate.inbound': 'Inbound Label', 'operation.printLabel.labelTemplate.outbound': 'Outbound Label', 'operation.printLabel.labelTemplate.sku': 'SKU Label', 'operation.printLabel.table.index': 'Index', 'operation.printLabel.table.waybillNumber': 'Waybill Number', 'operation.printLabel.table.customerOrderNumber': 'Customer Order Number', 'operation.printLabel.table.trackingNumber': 'Tracking Number', 'operation.printLabel.table.otherNumber': 'Other Number', 'operation.printLabel.table.labelTemplate': 'Label Template', 'operation.printLabel.table.printSuccess': 'Print Success', 'operation.printLabel.table.warehouse': 'Warehouse', 'operation.printLabel.table.operateTime': 'Operate Time', 'operation.printLabel.table.operator': 'Operator', 'operation.printLabel.message.waybillNumberRequired': 'Please enter or scan number', 'operation.printLabel.message.printSuccess': 'Print successful', 'operation.printLabel.printSuccess.yes': 'Yes', 'operation.printLabel.printSuccess.no': 'No', 'operation.printLabel.pagination.invalidPage': 'Please enter a valid page number', // System - Warehouse Address 'system.warehouseAddress.pageTitle': 'Warehouse Address', 'system.warehouseAddress.fields.warehouseName': 'Warehouse Name', 'system.warehouseAddress.fields.warehouseType': 'Warehouse Type', 'system.warehouseAddress.fields.recipient': 'Recipient', 'system.warehouseAddress.fields.contactPhone': 'Contact Phone', 'system.warehouseAddress.fields.shippingAddress': 'Shipping Address', 'system.warehouseAddress.fields.servicePhone': 'Service Phone', 'system.warehouseAddress.fields.serviceWechat': 'Service WeChat', 'system.warehouseAddress.actions.add': 'Add', 'system.warehouseAddress.actions.edit': 'Edit', 'system.warehouseAddress.actions.copy': 'Copy', 'system.warehouseAddress.actions.delete': 'Delete', 'system.warehouseAddress.actions.refresh': 'Refresh', 'system.warehouseAddress.uploadWechat': 'Upload Image', 'system.warehouseAddress.hint.wechatBase64': 'Images are stored as Base64 (data URL). Max 2MB recommended.', 'system.warehouseAddress.placeholder.input': 'Please enter', 'system.warehouseAddress.placeholder.select': 'Please select', 'system.warehouseAddress.modal.addTitle': 'Add Warehouse Address', 'system.warehouseAddress.modal.editTitle': 'Edit Warehouse Address', 'system.warehouseAddress.message.nameRequired': 'Please enter warehouse name', 'system.warehouseAddress.message.addSuccess': 'Added successfully', 'system.warehouseAddress.message.editSuccess': 'Updated successfully', 'system.warehouseAddress.message.deleteConfirm': 'Delete this warehouse?', 'system.warehouseAddress.message.deleteSuccess': 'Deleted successfully', 'system.warehouseAddress.message.deleteFailed': 'Delete failed', 'system.warehouseAddress.message.copySuccess': 'Copied to clipboard', 'system.warehouseAddress.message.copyFailed': 'Copy failed', 'system.warehouseAddress.message.imageTooLarge': 'Image must be 2MB or smaller', 'system.warehouseAddress.message.dictLoadFailed': 'Failed to load warehouse type dictionary', 'system.warehouseAddress.message.wechatQrSaveFailed': 'Failed to save WeChat QR image', // System - batch email (parity with desktop emailAuto.py) 'system.batchEmail.import': 'Import file', 'system.batchEmail.template': 'Template', 'system.batchEmail.selectTemplate': 'Select a template', 'system.batchEmail.send': 'Send batch', 'system.batchEmail.log': 'Log', 'system.batchEmail.preview': 'Template edit & preview', 'system.batchEmail.saveTpl': 'Save template', 'system.batchEmail.deleteTpl': 'Delete template', 'system.batchEmail.placeholderHint': 'Placeholders: {客户单号}, {最新轨迹}, {换单号}', 'system.batchEmail.emailConfig': 'Mailbox', 'system.batchEmail.account': 'Account', 'system.batchEmail.password': 'App password', 'system.batchEmail.passwordPlaceholder': 'Enter SMTP app password / authorization code', 'system.batchEmail.passwordPlaceholderEdit': 'Leave blank to keep the saved password', 'system.batchEmail.passwordSavedHint': 'Password is stored on the server; leave blank unless you want to change it', 'system.batchEmail.warnPassword': 'Enter app password (e.g. Aliyun authorization code)', 'system.batchEmail.serverType': 'SMTP', 'system.batchEmail.server.qiye': 'Aliyun enterprise 25', 'system.batchEmail.server.qiyeSsl': 'Aliyun enterprise SSL 465', 'system.batchEmail.server.aliyun': 'Aliyun personal 25', 'system.batchEmail.server.aliyunSsl': 'Aliyun personal SSL 465', 'system.batchEmail.server.mxhichina': 'mxhichina 25', 'system.batchEmail.saveConfig': 'Save', 'system.batchEmail.testConnection': 'Test connection', 'system.batchEmail.subject': 'Subject', 'system.batchEmail.subjectPlaceholder': 'Placeholders supported, e.g. Order {客户单号}', 'system.batchEmail.contentPlaceholder': 'Body', 'system.batchEmail.saveTplModalTitle': 'Save template', 'system.batchEmail.saveTplNamePlaceholder': 'Template name', 'system.batchEmail.logSelectTemplate': 'Template selected', 'system.batchEmail.logTemplateBodyShown': 'Body loaded', 'system.batchEmail.errMissingColumns': 'Required columns not found. Need order id column and email column; optional: tracking, 换单号', 'system.batchEmail.logImportOk': 'Imported: {name}, recipient column OK', 'system.batchEmail.logImportCount': 'Loaded {n} valid rows', 'system.batchEmail.msgImportOk': 'Imported {n} rows', 'system.batchEmail.errImport': 'Import failed', 'system.batchEmail.errLoadTemplates': 'Failed to load templates', 'system.batchEmail.errLoadRecords': 'Failed to load email records', 'system.batchEmail.recordList': 'Email records', 'system.batchEmail.record.toEmail': 'Email', 'system.batchEmail.record.subject': 'Subject', 'system.batchEmail.record.content': 'Content', 'system.batchEmail.record.sendTime': 'Sent at', 'system.batchEmail.record.sender': 'Sender', 'system.batchEmail.warnEmptyContent': 'Template body is required', 'system.batchEmail.warnEmptyName': 'Template name is required', 'system.batchEmail.confirmOverwriteTitle': 'Overwrite?', 'system.batchEmail.confirmOverwriteBody': 'Template "{name}" exists. Overwrite?', 'system.batchEmail.logSaveTplOk': 'Saved template "{name}"', 'system.batchEmail.msgSaveTplOk': 'Template "{name}" saved', 'system.batchEmail.warnSelectTplDelete': 'Select a template to delete', 'system.batchEmail.warnTplMissing': 'Template not found', 'system.batchEmail.confirmDeleteTitle': 'Delete template', 'system.batchEmail.confirmDeleteBody': 'Delete template "{name}"? This cannot be undone.', 'system.batchEmail.confirmOk': 'OK', 'system.batchEmail.confirmCancel': 'Cancel', 'system.batchEmail.logDeleteTpl': 'Deleted template "{name}"', 'system.batchEmail.msgDeleteTplOk': 'Template "{name}" deleted', 'system.batchEmail.warnAccount': 'Enter account and password', 'system.batchEmail.msgSaveConfigOk': 'Saved', 'system.batchEmail.logTesting': 'Testing SMTP...', 'system.batchEmail.logTestOk': 'Connection OK', 'system.batchEmail.msgTestOk': 'SMTP test succeeded', 'system.batchEmail.errUnknown': 'Request failed', 'system.batchEmail.logTestFail': 'Connection test failed', 'system.batchEmail.recipients': 'Recipients', 'system.batchEmail.recipientMode.manual': 'Manual entry', 'system.batchEmail.recipientMode.excel': 'Excel import', 'system.batchEmail.manualEmailsPlaceholder': 'One email per line, or separated by comma, semicolon, or space', 'system.batchEmail.parseEmails': 'Parse emails', 'system.batchEmail.clearRecipients': 'Clear', 'system.batchEmail.recipientCount': '{n} recipient(s)', 'system.batchEmail.invalidEmailCount': 'Skipped {n} invalid email(s)', 'system.batchEmail.recipientPreview': 'Recipient preview', 'system.batchEmail.recipientPreviewMore': '{n} more not shown', 'system.batchEmail.previewOrderNo': 'Order no.', 'system.batchEmail.previewTrack': 'Latest tracking', 'system.batchEmail.excelImportHint': 'Supports .xlsx / .xls with email and order id columns', 'system.batchEmail.msgManualParseOk': 'Parsed {n} valid email(s)', 'system.batchEmail.warnNoRecipients': 'Add recipient emails first', 'system.batchEmail.warnNoOrders': 'Import an Excel file first', 'system.batchEmail.warnNoTemplate': 'Select or enter a template', 'system.batchEmail.errNoAccount': 'Configure mailbox account and password', 'system.batchEmail.logSendStart': 'Sending started', 'system.batchEmail.logSkipNoEmail': 'Skipped (no valid email)', 'system.batchEmail.logFailEmptyBody': 'Failed - empty body', 'system.batchEmail.fallbackSubject': 'Order notice', 'system.batchEmail.logSendOk': 'sent successfully', 'system.batchEmail.logSendFail': 'failed - {msg}', 'system.batchEmail.logSendDone': 'Done: {total} total, {successCount} ok, {failCount} failed', 'system.batchEmail.msgSendDone': 'Done: {successCount} succeeded, {failCount} failed', // System - Announcement 'system.announcement.search.placeholder': 'Search title or content', 'system.announcement.search.reset': 'Reset', 'system.announcement.actions.add': 'Add announcement', 'system.announcement.actions.addNotice': 'Add notice', 'system.announcement.actions.addMessage': 'Add message', 'system.announcement.actions.refresh': 'Refresh', 'system.announcement.actions.batchDelete': 'Delete selected', 'system.announcement.actions.edit': 'Edit', 'system.announcement.actions.view': 'View', 'system.announcement.actions.delete': 'Delete', 'system.announcement.actions.readConfirm': 'Confirm Read', 'system.announcement.messageType.inform': 'Inform', 'system.announcement.messageType.message': 'Message', 'system.announcement.messageType.notice': 'Notice', 'system.announcement.receiverType.user': 'User', 'system.announcement.receiverType.customer': 'Customer', 'system.announcement.popup.yes': 'Yes', 'system.announcement.popup.no': 'No', 'system.announcement.filter.noticeType': 'Notice Type', 'system.announcement.filter.receiverType': 'Receiver Type', 'system.announcement.tab.notice': 'Notice', 'system.announcement.tab.message': 'Message', 'system.announcement.desc.notice': 'System notices for all or selected recipients, with optional popup', 'system.announcement.desc.message': 'Direct messages without a required title', 'system.announcement.sendWay.now': 'Send now', 'system.announcement.sendWay.delay': 'Delay send', 'system.announcement.sendWay.schedule': 'Schedule send', 'system.announcement.status.ready': 'Ready', 'system.announcement.status.already': 'Sent', 'system.announcement.table.index': 'Index', 'system.announcement.table.subject': 'Subject', 'system.announcement.table.category': 'Message type', 'system.announcement.table.content': 'Content', 'system.announcement.table.noticeType': 'Notice Type', 'system.announcement.table.receiverType': 'Receiver Type', 'system.announcement.table.isPopup': 'Popup', 'system.announcement.table.receiverCount': 'Receivers', 'system.announcement.table.readCount': 'Read Count', 'system.announcement.table.sendWay': 'Send way', 'system.announcement.table.createTime': 'Create time', 'system.announcement.table.sendTime': 'Send time', 'system.announcement.table.status': 'Status', 'system.announcement.table.actions': 'Action', 'system.announcement.form.receiverType.appoint': 'Appoint User', 'system.announcement.form.receiverType.role': 'Appoint Role', 'system.announcement.form.noticeType': 'Notice Type', 'system.announcement.form.title': 'Title', 'system.announcement.form.content': 'Content', 'system.announcement.form.isPopup': 'Popup', 'system.announcement.form.receiverType': 'Receiver Type', 'system.announcement.form.receiverIds': 'Receivers', 'system.announcement.form.receiverIdsPlaceholderUser': 'Search and select internal users', 'system.announcement.form.receiverIdsPlaceholderCustomer': 'Search and select customers', 'system.announcement.form.receiverIdsFallback': 'Selected #{id}', 'system.announcement.form.section.basic': 'Basic info', 'system.announcement.form.section.receiver': 'Recipients', 'system.announcement.form.messageTitleHint': 'Messages do not require a title; content is shown directly', 'system.announcement.form.popupHint': 'When enabled, recipients see a popup on the workplace', 'system.announcement.drawer.close': 'Close', 'system.announcement.modal.addNoticeTitle': 'Add notice', 'system.announcement.modal.addMessageTitle': 'Add message', 'system.announcement.placeholder.input': 'Please enter', 'system.announcement.placeholder.select': 'Please select', 'system.announcement.modal.addTitle': 'Add Announcement', 'system.announcement.modal.editTitle': 'Edit Announcement', 'system.announcement.rule.noticeTypeRequired': 'Please select notice type', 'system.announcement.rule.titleRequired': 'Please enter title', 'system.announcement.rule.contentRequired': 'Please enter content', 'system.announcement.rule.receiverTypeRequired': 'Please select receiver type', 'system.announcement.rule.receiverIdsRequired': 'Please select receivers', 'system.announcement.message.addSuccess': 'Added successfully', 'system.announcement.message.editSuccess': 'Updated successfully', 'system.announcement.message.readSuccess': 'Marked as read', 'system.announcement.message.cannotEditSent': 'Sent messages cannot be modified', 'system.announcement.message.selectDataToDelete': 'Please select data to delete', 'system.announcement.message.deleteSuccess': 'Delete successfully', 'system.announcement.message.deleteFailed': 'Delete failed', 'system.announcement.modal.deleteConfirmTitle': 'Tips', 'system.announcement.modal.deleteConfirmContentSingle': 'Are you sure to delete message 【{subject}】?', 'system.announcement.modal.deleteConfirmContentBatch': 'Are you sure to delete {count} selected messages?', // System - Message 'system.message.search.placeholder': 'Enter keyword', 'system.message.actions.allRead': 'Mark all as read', 'system.message.actions.markRead': 'Mark as read', 'system.message.actions.batchDelete': 'Delete selected', 'system.message.actions.allDelete': 'Delete all', 'system.message.actions.view': 'View', 'system.message.actions.delete': 'Delete', 'system.message.messageType.inform': 'Inform', 'system.message.messageType.message': 'Message', 'system.message.messageType.notice': 'Notice', 'system.message.readStatus.read': 'Read', 'system.message.readStatus.unread': 'Unread', 'system.message.table.index': 'Index', 'system.message.table.subject': 'Subject', 'system.message.table.content': 'Content', 'system.message.table.sendTime': 'Send time', 'system.message.table.read': 'Read status', 'system.message.table.actions': 'Action', 'system.message.message.selectMessagesToRead': 'Please select messages to mark as read', 'system.message.message.markReadSuccess': 'Mark as read successfully', 'system.message.message.markReadFailed': 'Mark as read failed', 'system.message.message.allReadSuccess': 'Mark all as read successfully', 'system.message.message.allReadFailed': 'Mark all as read failed', 'system.message.message.selectMessagesToDelete': 'Please select messages to delete', 'system.message.message.deleteSuccess': 'Delete successfully', 'system.message.message.deleteFailed': 'Delete failed', 'system.message.message.allDeleteSuccess': 'Delete all successfully', 'system.message.message.allDeleteFailed': 'Delete all failed', // System - Log Record 'system.log.table.index': 'Index', 'system.log.table.requestId': 'Request ID', 'system.log.table.requestTime': 'Request time', 'system.log.table.appOrProvider': 'App/Provider', 'system.log.table.name': 'Name', 'system.log.table.interfaceName': 'Interface name', 'system.log.table.interfaceCode': 'Interface code', 'system.log.table.clientIP': 'Client IP', 'system.log.table.address': 'Request address', 'system.log.table.cost': 'Response time', 'system.log.table.isSuccess': 'Is success', 'system.log.table.actions': 'Action', 'system.log.placeholder.requestId': 'Request ID', 'system.log.placeholder.requestTime': 'Request time', 'system.log.placeholder.appOrProvider': 'App/Provider', 'system.log.placeholder.name': 'Name', 'system.log.placeholder.interfaceName': 'Interface name', 'system.log.placeholder.cost': 'Response time', 'system.log.placeholder.isSuccess': 'Is success', 'system.log.placeholder.clientIP': 'Request IP', 'system.log.placeholder.address': 'Request address', 'system.log.placeholder.appName': 'App name', 'system.log.placeholder.providerName': 'Provider name', 'system.log.placeholder.appOrProviderName': 'App/Provider name', 'system.log.options.app': 'App', 'system.log.options.provider': 'Provider', 'system.log.pagination.total': 'Total {count} records', 'system.log.pagination.prevPage': 'Previous', 'system.log.pagination.nextPage': 'Next', 'system.log.pagination.itemsPerPage': 'items/page', 'system.log.pagination.goTo': 'Go to', 'system.log.pagination.page': 'page', 'system.log.modal.viewDetail': 'View details', 'system.log.modal.tabs.requestBody': 'Request body', 'system.log.modal.tabs.requestHeaders': 'cURL', 'system.log.modal.tabs.response': 'Response', 'system.log.modal.tabs.exception': 'Exception', 'system.log.modal.tabs.queueResult': 'Queue result', 'system.log.actions.copy': 'Copy', 'system.log.actions.copyCurrentTab': 'Copy current tab content', 'system.log.message.loadFailed': 'Failed to load logs', 'system.log.message.invalidPageNumber': 'Please enter a valid page number', 'system.log.message.loadDetailFailed': 'Failed to load log details', 'system.log.message.copySuccess': 'Copy successfully', 'system.log.message.copyEmpty': 'Content is empty, cannot copy', 'system.log.message.copyFailed': 'Copy failed', // User - Recharge 'user.recharge.deposit.panel.subtitle': 'Fund Recharge', 'user.recharge.deposit.panel.title': 'Complete Recharge in 3 Steps', 'user.recharge.deposit.panel.desc': 'Select Amount · Upload Voucher · Wait for Review', 'user.recharge.deposit.steps.selectAmount.title': 'Select Amount', 'user.recharge.deposit.steps.selectAmount.desc': 'Select amount and confirm payment method', 'user.recharge.deposit.steps.uploadVoucher.title': 'Upload Voucher', 'user.recharge.deposit.steps.uploadVoucher.desc': 'Upload transfer screenshot', 'user.recharge.deposit.steps.review.title': 'Review', 'user.recharge.deposit.steps.review.desc': 'Wait for finance confirmation', 'user.recharge.deposit.steps.tip.selectAmount': 'Select amount and confirm', 'user.recharge.deposit.steps.tip.uploadVoucher': 'Upload recharge voucher', 'user.recharge.deposit.steps.tip.review': 'Review processing', 'user.recharge.deposit.steps.tip.complete': 'Complete', 'user.recharge.deposit.tips.title': 'Tips', 'user.recharge.deposit.tips.item1': 'Recharge and balance 1:1 arrival', 'user.recharge.deposit.tips.item2': 'Upload clear and complete payment screenshot', 'user.recharge.deposit.tips.item3': 'SMS/In-site message reminder after funds arrive', 'user.recharge.deposit.form.currentAmount': 'Current recharge amount', 'user.recharge.deposit.form.stepChip': 'Step {step} · {tip}', 'user.recharge.deposit.form.selectAmount': 'Select Amount', 'user.recharge.deposit.form.custom': 'Custom', 'user.recharge.deposit.form.inputAmount': 'Enter Amount', 'user.recharge.deposit.form.paymentMethod': 'Payment Method', 'user.recharge.deposit.form.qrTip': 'Click QR code to zoom in and view details', 'user.recharge.deposit.form.uploadVoucher': 'Upload Voucher', 'user.recharge.deposit.form.uploadVoucherDesc': 'Please upload a clear payment screenshot for quick finance confirmation', 'user.recharge.deposit.form.uploading': 'Uploading', 'user.recharge.deposit.form.uploadScreenshot': 'Upload Screenshot', 'user.recharge.deposit.payment.alipay': 'Alipay', 'user.recharge.deposit.payment.alipayDesc': 'Support scan code and transfer', 'user.recharge.deposit.payment.wechat': 'WeChat Pay', 'user.recharge.deposit.payment.wechatDesc': 'Recommended for fast arrival', 'user.recharge.deposit.result.title': 'Submitted Successfully', 'user.recharge.deposit.result.subtitle': 'Under review, please wait patiently', 'user.recharge.deposit.result.actions.rechargeAgain': 'Recharge Again', 'user.recharge.deposit.result.actions.viewBill': 'View Bill', 'user.recharge.deposit.actions.prevStep': 'Previous', 'user.recharge.deposit.actions.nextStep': 'Next', 'user.recharge.deposit.actions.submitReview': 'Submit for Review', 'user.recharge.deposit.message.selectAmount': 'Please select recharge amount', 'user.recharge.deposit.message.uploadSuccess': 'Upload successfully', 'user.recharge.deposit.message.uploadFailed': 'Upload failed', 'user.recharge.deposit.message.uploadVoucherFirst': 'Please upload recharge voucher first', 'user.recharge.deposit.message.submitFailed': 'Submit failed', 'user.recharge.deposit.message.submitSuccess': 'Recharge application submitted, pending review', // User - Recharge Record 'user.recharge.record.search.serialNo': 'Serial No', 'user.recharge.record.search.serialNoPlaceholder': 'Search serial no', 'user.recharge.record.search.status': 'Recharge Status', 'user.recharge.record.search.statusPlaceholder': 'Please select', 'user.recharge.record.search.statusAll': 'All', 'user.recharge.record.search.statusPending': 'Pending', 'user.recharge.record.search.statusSuccess': 'Success', 'user.recharge.record.search.statusFailed': 'Failed', 'user.recharge.record.search.actions.search': 'Search', 'user.recharge.record.search.actions.reset': 'Reset', 'user.recharge.record.search.actions.export': 'Export', 'user.recharge.record.search.dateRange': 'Recharge time', 'user.recharge.record.search.customerId': 'Customer ID', 'user.recharge.record.search.customerIdPlaceholder': 'Optional', 'user.recharge.record.modal.rejectTitle': 'Reject recharge', 'user.recharge.record.modal.rejectRemark': 'Reason', 'user.recharge.record.modal.rejectRemarkPlaceholder': 'Optional reason', 'user.recharge.record.modal.approveConfirmTitle': 'Confirm approval', 'user.recharge.record.modal.approveConfirm': 'Approve this recharge request?', 'user.recharge.record.modal.rejectConfirmTitle': 'Confirm rejection', 'user.recharge.record.modal.rejectConfirm': 'Reject this recharge request?', 'user.recharge.record.message.loadError': 'Failed to load', 'user.recharge.record.message.approveError': 'Approve failed', 'user.recharge.record.message.rejectError': 'Reject failed', 'user.recharge.record.table.serialNo': 'Serial No', 'user.recharge.record.table.payTime': 'Recharge Time', 'user.recharge.record.table.payType': 'Payment Method', 'user.recharge.record.table.payAmount': 'Recharge Amount', 'user.recharge.record.table.payImage': 'Recharge Screenshot', 'user.recharge.record.table.payStatus': 'Recharge Status', 'user.recharge.record.table.remarks': 'Remarks', 'user.recharge.record.payment.alipay': 'Alipay', 'user.recharge.record.payment.wechat': 'WeChat', 'user.recharge.record.actions.approve': 'Approve', 'user.recharge.record.actions.reject': 'Reject', 'user.recharge.record.message.approveSuccess': 'Approved', 'user.recharge.record.message.rejectSuccess': 'Rejected', 'user.recharge.record.message.exportSuccess': 'Exported successfully', 'user.accountFlow.search.keywordPlaceholder': 'Serial no. / related no.', 'user.accountFlow.search.bizTypePlaceholder': 'Business type', 'user.accountFlow.search.bizTypeAll': 'All', 'user.accountFlow.search.customerIdPlaceholder': 'Customer ID (optional)', 'user.accountFlow.search.dateRange': 'Transaction time', 'user.accountFlow.search.actions.search': 'Search', 'user.accountFlow.search.actions.reset': 'Reset', 'user.accountFlow.bizType.recharge': 'Recharge credit', 'user.accountFlow.bizType.orderPay': 'Order payment', 'user.accountFlow.message.loadError': 'Failed to load account transactions', 'user.accountFlow.table.serialNumber': 'Serial no.', 'user.accountFlow.table.createTime': 'Time', 'user.accountFlow.table.bizType': 'Type', 'user.accountFlow.table.bizNo': 'Related no.', 'user.accountFlow.table.amount': 'Amount', 'user.accountFlow.table.balanceBefore': 'Balance before', 'user.accountFlow.table.balanceAfter': 'Balance after', 'user.accountFlow.table.remark': 'Remark', 'user.accountFlow.table.customerCode': 'Customer code', // Finance - receivable & payable 'finance.receivablePayable.search.keywordPlaceholder': 'Service no. / client no. / track no.', 'finance.receivablePayable.search.feeTypePlaceholder': 'Fee type', 'finance.receivablePayable.search.feeTypeAll': 'All', 'finance.receivablePayable.search.costItemPlaceholder': 'Cost item', 'finance.receivablePayable.search.chargingStagePlaceholder': 'Charging stage', 'finance.receivablePayable.search.chargingStageAll': 'All', 'finance.receivablePayable.search.customerIdPlaceholder': 'Customer ID (optional)', 'finance.receivablePayable.search.dateRange': 'Order created time', 'finance.receivablePayable.search.actions.search': 'Search', 'finance.receivablePayable.search.actions.reset': 'Reset', 'finance.receivablePayable.feeType.receivable': 'Receivable', 'finance.receivablePayable.feeType.payable': 'Payable', 'finance.receivablePayable.chargingStage.forecast': 'Forecast', 'finance.receivablePayable.chargingStage.inbound': 'Inbound', 'finance.receivablePayable.chargingStage.outbound': 'Outbound', 'finance.receivablePayable.isPaid.yes': 'Paid', 'finance.receivablePayable.isPaid.no': 'Unpaid', 'finance.receivablePayable.message.loadError': 'Failed to load receivables & payables', 'finance.receivablePayable.table.serviceNo': 'Service no.', 'finance.receivablePayable.table.clientNo': 'Client no.', 'finance.receivablePayable.table.trackNo': 'Track no.', 'finance.receivablePayable.table.customerCode': 'Customer code', 'finance.receivablePayable.table.feeType': 'Fee type', 'finance.receivablePayable.table.costItem': 'Cost item', 'finance.receivablePayable.table.amount': 'Amount', 'finance.receivablePayable.table.currency': 'Currency', 'finance.receivablePayable.table.chargingStage': 'Charging stage', 'finance.receivablePayable.table.orderStatus': 'Order status', 'finance.receivablePayable.table.isPaid': 'Payment status', 'finance.receivablePayable.table.productCode': 'Product code', 'finance.receivablePayable.table.channelCode': 'Channel code', 'finance.receivablePayable.table.consigneeCountryName': 'Destination country', 'finance.receivablePayable.table.downstreamProvider': 'Downstream provider', 'finance.receivablePayable.table.priceNo': 'Price no.', 'finance.receivablePayable.table.priceEffectiveTime': 'Price effective time', 'finance.receivablePayable.table.payTime': 'Pay time', 'finance.receivablePayable.table.receiveTime': 'Receive time', 'finance.receivablePayable.table.shipTime': 'Ship time', 'user.recharge.record.message.exportError': 'Export failed', 'user.recharge.record.pagination.total': '{count} total', 'user.recharge.record.pagination.prev': 'Prev', 'user.recharge.record.pagination.next': 'Next', 'user.recharge.record.pagination.perPage': '/page', 'user.recharge.record.pagination.goTo': 'Go to', 'user.recharge.record.pagination.page': 'page', 'user.recharge.record.pagination.invalidPage': 'Please enter a valid page number', // Personal Center 'profile.defaultName': 'User', 'profile.contactInfo': 'Contact Info', 'profile.quickActions': 'Quick Actions', 'profile.myOrders': 'My Orders', 'profile.accountDetails': 'Account Details', 'profile.edit': 'Edit Profile', 'profile.resetPassword': 'Reset Password', 'profile.editProfile': 'Edit Profile', 'profile.changePassword': 'Change Password', 'profile.oldPassword': 'Current Password', 'profile.newPassword': 'New Password', 'profile.confirmPassword': 'Confirm New Password', 'profile.passwordMismatch': 'Passwords do not match', 'profile.changePasswordSuccess': 'Password changed successfully, please login again', // Customer Management 'user.customer.searchPlaceholder': 'Customer code/name/phone', 'user.customer.actions.add': 'Add', 'user.customer.actions.search': 'Search', 'user.customer.actions.reset': 'Reset', 'user.customer.actions.edit': 'Edit', 'user.customer.actions.delete': 'Delete', 'user.customer.actions.resetPassword': 'Reset Password', 'user.customer.actions.omsLogin': 'OMS Login', 'user.customer.fields.customerCode': 'Customer Code', 'user.customer.fields.customerName': 'Customer Name', 'user.customer.fields.wechatAvatar': 'WeChat Avatar', 'user.customer.fields.wechatAvatarUrl': 'WeChat Avatar URL', 'user.customer.fields.wechatNickname': 'WeChat Nickname', 'user.customer.fields.email': 'Email', 'user.customer.fields.phone': 'Phone', 'user.customer.fields.password': 'Password', 'user.customer.fields.accountBalance': 'Account Balance', 'user.customer.fields.totalQuota': 'Total Quota', 'user.customer.fields.usedQuota': 'Used Quota', 'user.customer.fields.status': 'Status', 'user.customer.fields.customerGroup': 'Customer Group', 'user.customer.fields.remark': 'Remark', 'user.customer.fields.createTime': 'Create Time', 'user.customer.fields.createdAt': 'Created At', 'user.customer.fields.createBy': 'Create By', 'user.customer.fields.createdBy': 'Created By', 'user.customer.fields.updateTime': 'Update Time', 'user.customer.fields.updateBy': 'Update By', 'user.customer.fields.salesPerson': 'Sales Person', 'user.customer.fields.customerService': 'Advisor', 'user.customer.fields.role': 'Role', 'user.customer.role.customer': 'Customer', 'user.customer.role.admin': 'Admin', 'user.customer.role.operator': 'Operator', 'user.customer.role.viewer': 'Viewer', 'user.customer.fields.lastOnlineTime': 'Last Online Time', 'user.customer.fields.lastOnlineIp': 'Last Online IP', 'user.customer.table.actions': 'Actions', 'user.customer.status.enabled': 'Enabled', 'user.customer.status.disabled': 'Disabled', 'user.customer.status.frozen': 'Frozen', 'user.customer.group.normal': 'Normal', 'user.customer.group.vip1': 'VIP1', 'user.customer.group.vip2': 'VIP2', 'user.customer.group.vip3': 'VIP3', 'user.customer.group.vip4': 'VIP4', 'user.customer.group.vip5': 'VIP5', 'user.customer.placeholder.input': 'Please enter', 'user.customer.placeholder.select': 'Please select', 'user.customer.modal.addTitle': 'Add Customer', 'user.customer.modal.editTitle': 'Edit Customer', 'user.customer.modal.deleteConfirm': 'Are you sure to delete this customer?', 'user.customer.rules.customerNameRequired': 'Please enter customer name', 'user.customer.rules.phoneRequired': 'Please enter phone number', 'user.customer.rules.emailRequired': 'Please enter email', 'user.customer.rules.passwordRequired': 'Please enter password', 'user.customer.rules.passwordLetterAndDigit': 'Password must contain both letters and numbers', 'user.customer.hint.autoCustomerCode': 'Auto-generated on save (e.g. AF0A1, 1st customer in Jun 2026)', 'user.customer.message.loadFailed': 'Load failed', 'user.customer.message.createSuccess': 'Created successfully', 'user.customer.message.updateSuccess': 'Updated successfully', 'user.customer.message.deleteSuccess': 'Deleted successfully', 'user.customer.message.deleteFailed': 'Delete failed', 'user.customer.message.saveFailed': 'Save failed', 'user.customer.message.resetPasswordSuccess': 'Password reset successfully', 'user.customer.message.resetPasswordFailed': 'Password reset failed', 'user.customer.pagination.total': 'Total {count} records', 'user.customer.pagination.prev': 'Prev', 'user.customer.pagination.next': 'Next', 'user.customer.pagination.perPage': '/page', 'user.customer.pagination.goTo': 'Go to', 'user.customer.pagination.page': 'Page', 'user.customer.pagination.invalidPage': 'Please enter a valid page number', 'user.subAccount.searchPlaceholder': 'Sub-account code/name/phone', 'user.subAccount.filter.mainCustomer': 'Filter by main customer', 'user.subAccount.actions.add': 'Add Sub Account', 'user.subAccount.fields.customerCode': 'Sub Account Code', 'user.subAccount.fields.customerName': 'Sub Account Name', 'user.subAccount.fields.phone': 'Phone', 'user.subAccount.fields.email': 'Email', 'user.subAccount.fields.password': 'Password', 'user.subAccount.fields.status': 'Status', 'user.subAccount.fields.remark': 'Remark', 'user.subAccount.fields.permissions': 'Permissions', 'user.subAccount.fields.parentCustomerId': 'Main Customer ID', 'user.subAccount.fields.createTime': 'Create Time', 'user.subAccount.fields.updateTime': 'Update Time', 'user.subAccount.status.enabled': 'Normal', 'user.subAccount.status.disabled': 'Disabled', 'user.subAccount.status.frozen': 'Frozen', 'user.subAccount.placeholder.input': 'Please enter', 'user.subAccount.placeholder.select': 'Please select', 'user.subAccount.modal.addTitle': 'Add Sub Account', 'user.subAccount.rules.customerCodeRequired': 'Please enter sub account code', 'user.subAccount.rules.customerNameRequired': 'Please enter sub account name', 'user.subAccount.rules.phoneRequired': 'Please enter phone number', 'user.subAccount.rules.passwordRequired': 'Please enter password', 'user.subAccount.message.loadFailed': 'Load failed', 'user.subAccount.message.createSuccess': 'Sub account created', 'user.subAccount.message.createFailed': 'Create failed', 'user.subAccount.tip.mainCustomerOnly': 'Only main customer accounts can create sub accounts. Please log in as main customer.', 'user.subAccount.permission.expandAll': 'Expand All', 'user.subAccount.permission.collapseAll': 'Collapse All', 'user.subAccount.permission.checkAll': 'Select All', 'user.subAccount.permission.uncheckAll': 'Clear All', 'user.subAccount.permission.loading': 'Loading permissions...', // System - Config 'system.config.tabs.sysConfig': 'System Config', 'system.config.tabs.safety': 'Safety Config', 'system.config.message.loadFailed': 'Failed to load system config', // System Config - Base Config 'system.config.sysBase.form.sysName': 'System Name', 'system.config.sysBase.form.sysVersion': 'System Version', 'system.config.sysBase.form.copyright': 'Copyright', 'system.config.sysBase.form.copyrightUrl': 'Copyright URL', 'system.config.sysBase.form.webStatus': 'Website Access (Business Only)', 'system.config.sysBase.form.tenantOptions': 'Multi-tenant Config', 'system.config.sysBase.form.webClosePrompt': 'Website Close Prompt', 'system.config.sysBase.form.footerLinks': 'Footer Links', 'system.config.sysBase.form.logo': 'System Logo', 'system.config.sysBase.form.linkName': 'Link Name', 'system.config.sysBase.form.linkUrl': 'Link URL', 'system.config.sysBase.form.sortCode': 'Sort', 'system.config.sysBase.form.placeholder.sysName': 'Please enter system name', 'system.config.sysBase.form.placeholder.sysVersion': 'Please enter system version', 'system.config.sysBase.form.placeholder.copyright': 'Please enter copyright', 'system.config.sysBase.form.placeholder.copyrightUrl': 'Please enter copyright URL', 'system.config.sysBase.form.placeholder.webClosePrompt': 'Please enter website close prompt', 'system.config.sysBase.form.placeholder.linkName': 'Please enter link name', 'system.config.sysBase.form.placeholder.linkUrl': 'Please enter link URL', 'system.config.sysBase.form.placeholder.sortCode': 'Please enter sort', 'system.config.sysBase.form.logoPreviewTip': 'Click image to preview, click delete to remove', 'system.config.sysBase.form.rules.sysNameRequired': 'Please enter system name', 'system.config.sysBase.form.rules.sysVersionRequired': 'Please enter system version', 'system.config.sysBase.form.rules.copyrightRequired': 'Please enter system copyright', 'system.config.sysBase.form.rules.copyrightUrlRequired': 'Please enter system copyright URL', 'system.config.sysBase.form.rules.linkNameRequired': 'Please enter link name', 'system.config.sysBase.form.rules.linkUrlRequired': 'Please enter link URL', 'system.config.sysBase.form.rules.sortCodeRequired': 'Please enter sort', 'system.config.sysBase.options.enable': 'Enable', 'system.config.sysBase.options.disable': 'Disable', 'system.config.sysBase.options.close': 'Close', 'system.config.sysBase.options.open': 'Open', 'system.config.sysBase.actions.add': 'Add', 'system.config.sysBase.actions.save': 'Save', 'system.config.sysBase.actions.reset': 'Reset', 'system.config.sysBase.actions.uploadLogo': 'Upload Logo', 'system.config.sysBase.modal.linkTitle': 'Link Information', 'system.config.sysBase.message.saveSuccess': 'Save successful', 'system.config.sysBase.message.saveFailed': 'Save failed', 'system.config.sysBase.message.fileNotExists': 'File does not exist', 'system.config.sysBase.message.onlyImageAllowed': 'Only image files are allowed', 'system.config.sysBase.message.imageSizeExceeded': 'Image size cannot exceed 5MB', 'system.config.sysBase.message.uploadSuccess': 'Logo upload successful', 'system.config.sysBase.message.uploadFailedNoFileId': 'Upload failed: File ID not obtained', 'system.config.sysBase.message.uploadFailed': 'Logo upload failed', 'system.config.sysBase.message.logoRemoved': 'Logo removed', // System Config - Safety Config 'system.config.safety.tabs.login': 'Login Policy', 'system.config.safety.tabs.password': 'Password Policy', 'system.config.safety.common.yes': 'Yes', 'system.config.safety.common.no': 'No', 'system.config.safety.common.save': 'Save', 'system.config.safety.common.reset': 'Reset', 'system.config.safety.common.saveSuccess': 'Save successful', 'system.config.safety.common.saveFailed': 'Save failed', 'system.config.safety.login.form.singleOpen': 'Single User Login', 'system.config.safety.login.form.captchaOpen': 'Login Captcha', 'system.config.safety.login.form.errorCount': 'Allowed Login Error Count', 'system.config.safety.login.form.resetTime': 'Login Error Reset Time (minutes)', 'system.config.safety.login.form.lockTime': 'Account Lock Duration (minutes)', 'system.config.safety.login.form.captchaType': 'Login Captcha Type', 'system.config.safety.login.form.placeholder.errorCount': 'Please enter allowed login error count', 'system.config.safety.login.form.placeholder.resetTime': 'Please enter login error reset time', 'system.config.safety.login.form.placeholder.lockTime': 'Please enter account lock duration', 'system.config.safety.login.form.placeholder.captchaType': 'Please select captcha type', 'system.config.safety.login.form.rules.errorCountRequired': 'Please enter allowed login error count', 'system.config.safety.login.form.rules.resetTimeRequired': 'Please enter login error reset time', 'system.config.safety.login.form.rules.lockTimeRequired': 'Please enter account lock duration', 'system.config.safety.login.form.rules.captchaTypeRequired': 'Please select login captcha type', 'system.config.safety.login.form.rules.singleOpenRequired': 'Please select single user login', 'system.config.safety.login.form.rules.captchaOpenRequired': 'Please select login captcha', 'system.config.safety.login.options.arithmetic': 'Arithmetic Captcha', 'system.config.safety.login.options.chinese': 'Chinese Captcha', 'system.config.safety.login.options.slider': 'Slider Captcha', 'system.config.safety.password.form.defaultPassword': 'System Default Password', 'system.config.safety.password.form.minLength': 'Password Min Length', 'system.config.safety.password.form.remind': 'Password Remind Update', 'system.config.safety.password.form.remindDay': 'Password Remind Update Time (days)', 'system.config.safety.password.form.updateDefault': 'Update Initial Password Remind', 'system.config.safety.password.form.containNum': 'Contain Number', 'system.config.safety.password.form.containLower': 'Contain Lowercase', 'system.config.safety.password.form.containUpper': 'Contain Uppercase', 'system.config.safety.password.form.containCharacter': 'Contain Special Character', 'system.config.safety.password.form.placeholder.defaultPassword': 'Please enter system default password', 'system.config.safety.password.form.placeholder.minLength': 'Please enter password min length', 'system.config.safety.password.form.placeholder.remindDay': 'Please enter password remind update time', 'system.config.safety.password.form.rules.defaultPasswordRequired': 'Please enter system default password', 'system.config.safety.password.form.rules.remindRequired': 'Please select password remind update', 'system.config.safety.password.form.rules.remindDayRequired': 'Please enter password remind update time', 'system.config.safety.password.form.rules.updateDefaultRequired': 'Please select update initial password remind', 'system.config.safety.password.form.rules.minLengthRequired': 'Please enter password min length', 'system.config.safety.password.form.rules.containNumRequired': 'Please select contain number', 'system.config.safety.password.form.rules.containLowerRequired': 'Please select contain lowercase', 'system.config.safety.password.form.rules.containUpperRequired': 'Please select contain uppercase', 'system.config.safety.password.form.rules.containCharacterRequired': 'Please select contain special character', // System - Audit Log - Operation Log 'system.audit.oplog.search.placeholder': 'Enter keyword', 'system.audit.oplog.type.operate': 'Operation Log', 'system.audit.oplog.type.exception': 'Exception Log', 'system.audit.oplog.table.name': 'Name', 'system.audit.oplog.table.opIp': 'IP Address', 'system.audit.oplog.table.opAddress': 'Address', 'system.audit.oplog.table.className': 'Class Name', 'system.audit.oplog.table.methodName': 'Method Name', 'system.audit.oplog.table.opUser': 'User', 'system.audit.oplog.table.opAccount': 'Account', 'system.audit.oplog.table.opTime': 'Operation Time', 'system.audit.oplog.table.operation': 'Action', 'system.audit.oplog.actions.clear': 'Clear', 'system.audit.oplog.actions.clearCurrent': 'Clear current log', 'system.audit.oplog.actions.view': 'View', 'system.audit.oplog.modal.clearConfirmTitle': 'Confirm Clear', 'system.audit.oplog.modal.clearConfirmContent': 'Are you sure to {msg}?', 'system.audit.oplog.message.loadFailed': 'Failed to load operation log', 'system.audit.oplog.message.clearSuccess': 'Clear successfully', 'system.audit.oplog.message.clearFailed': 'Clear failed', // System - Audit Log - Visit Log 'system.audit.vislog.search.placeholder': 'Enter keyword', 'system.audit.vislog.type.login': 'Login Log', 'system.audit.vislog.type.logout': 'Logout Log', 'system.audit.vislog.table.name': 'Name', 'system.audit.vislog.table.opIp': 'IP Address', 'system.audit.vislog.table.opAddress': 'Address', 'system.audit.vislog.table.opBrowser': 'Browser', 'system.audit.vislog.table.opOs': 'Operating System', 'system.audit.vislog.table.opUser': 'User', 'system.audit.vislog.table.opAccount': 'Account', 'system.audit.vislog.table.opTime': 'Operation Time', 'system.audit.vislog.table.operation': 'Action', 'system.audit.vislog.actions.clear': 'Clear', 'system.audit.vislog.actions.clearCurrent': 'Clear current log', 'system.audit.vislog.actions.view': 'View', 'system.audit.vislog.modal.clearConfirmTitle': 'Confirm Clear', 'system.audit.vislog.modal.clearConfirmContent': 'Are you sure to {msg}?', 'system.audit.vislog.message.loadFailed': 'Failed to load visit log', 'system.audit.vislog.message.clearSuccess': 'Clear successfully', 'system.audit.vislog.message.clearFailed': 'Clear failed', // System - Upstream interface parameter maintenance (new-port.vue) 'system.interface.section.basicInfo': 'Basic Info', 'system.interface.section.requestParams': 'Request Parameters', 'system.interface.section.secondRequestParams': 'Secondary Request Parameters', 'system.interface.section.responseParams': 'Response Parameters', 'system.interface.actions.addParam': 'Add Parameter', 'system.interface.actions.paramParse': 'Parse Parameters', 'system.interface.actions.add': 'Add', 'system.interface.actions.save': 'Save', 'system.interface.parse.needImportFirst': 'Import failed, please provide content in the required format first', 'system.interface.parse.needImportOrParseFirst': 'Import failed, please provide content in the required format or parse it first', 'system.interface.parse.success': 'Parsed successfully', 'system.interface.import.success': 'Imported successfully', 'system.interface.import.fail': 'Import failed', // Channel - Label Design 'channel.labelDesign.pageTitle': 'Label Template Config', 'channel.labelDesign.configTitle': 'Template Config', 'channel.labelDesign.sizeLabel': 'Label Size (W×H)', 'channel.labelDesign.widthPlaceholder': 'Width', 'channel.labelDesign.heightPlaceholder': 'Height', 'channel.labelDesign.titleLabel': 'Label Title', 'channel.labelDesign.titlePlaceholder': 'Enter label title', 'channel.labelDesign.contentLabel': 'Label Content', 'channel.labelDesign.contentPlaceholder': 'Enter label content', 'channel.labelDesign.apply': 'Apply', 'channel.labelDesign.reset': 'Reset', 'channel.labelDesign.previewTitle': 'Preview (drag to move, resize from corner)', 'channel.labelDesign.sizeMinError': 'Min size is 50px', 'channel.labelDesign.noTitle': 'No title', 'channel.labelDesign.noContent': 'No content', 'channel.labelDesign.applySuccess': 'Config applied', 'channel.labelDesign.resetSuccess': 'Config reset', // Channel - Sales Products 'channel.salesProducts.search.placeholder': 'Enter product name', 'channel.salesProducts.search.refresh': 'Refresh list', 'channel.salesProducts.search.addProduct': 'Add product', 'channel.salesProducts.tabs.config': 'Product config', 'channel.salesProducts.tabs.price': 'Product pricing', 'channel.salesProducts.tabs.rules': 'Shipping rules', 'channel.salesProducts.tabs.customerGuide': 'Customer guide', 'channel.salesProducts.tabs.records': 'Publish records', 'channel.salesProducts.actions.save': 'Save', 'channel.salesProducts.actions.add': 'Add', 'channel.salesProducts.actions.edit': 'Edit', 'channel.salesProducts.actions.delete': 'Delete', 'channel.salesProducts.actions.publish': 'Publish', 'channel.salesProducts.actions.rollback': 'Rollback to this version', 'channel.salesProducts.customerGuide.editing': 'Editing', 'channel.salesProducts.customerGuide.cancel': 'Cancel', 'channel.salesProducts.customerGuide.useTemplate': 'Use template', 'channel.salesProducts.customerGuide.clear': 'Clear', 'channel.salesProducts.customerGuide.source': 'Markdown source', 'channel.salesProducts.customerGuide.preview': 'Preview', 'channel.salesProducts.customerGuide.previewEmpty': 'Preview will appear here after you enter Markdown', 'channel.salesProducts.customerGuide.placeholder': 'Enter customer-facing notes (Markdown supported)', 'channel.salesProducts.customerGuide.empty': 'No customer guide yet. Click Edit or Use template', 'channel.salesProducts.customerGuide.selectProduct': 'Select a sales product on the left first', 'channel.salesProducts.price.effectiveVersion': 'Effective version: {version}', 'channel.salesProducts.rules.schemeTitle': 'Shipping scheme', 'channel.salesProducts.rules.scheme.costLowest': 'Lowest cost', 'channel.salesProducts.rules.scheme.timeFastest': 'Fastest time', 'channel.salesProducts.rules.scheme.overallBest': 'Best overall', 'channel.salesProducts.rules.scheme.explanation': '(Use a scoring mechanism, the lowest score is considered optimal)', 'channel.salesProducts.table.providers.serialNo': 'No.', 'channel.salesProducts.table.providers.providerName': 'Provider name', 'channel.salesProducts.table.providers.serviceChannel': 'Service channel', 'channel.salesProducts.table.providers.weight': 'Weight', 'channel.salesProducts.table.providers.customers': 'Customers', 'channel.salesProducts.table.providers.actions': 'Action', 'channel.salesProducts.table.providers.placeholder.providerName': 'Enter provider name', 'channel.salesProducts.table.providers.placeholder.serviceChannel': 'Enter service channel', 'channel.salesProducts.table.price.status': 'Status', 'channel.salesProducts.publish.tabs.price': 'Price', 'channel.salesProducts.publish.tabs.rules': 'Rules', 'channel.salesProducts.publish.versionRemark': 'Version note', 'channel.salesProducts.publish.noRemark': 'No notes', 'channel.salesProducts.modal.publishDateTitle': 'Select publish date', 'channel.salesProducts.modal.publishDate.placeholder': 'Please select date', 'channel.salesProducts.modal.actions.cancel': 'Cancel', 'channel.salesProducts.modal.actions.ok': 'OK', 'channel.salesProducts.form.productCode': 'Product code', 'channel.salesProducts.form.productName': 'Product name', 'channel.salesProducts.form.group': 'Group', 'channel.salesProducts.form.efficiency': 'Transit time', 'channel.salesProducts.form.customerWaybill': 'Customer waybill', 'channel.salesProducts.form.blacklistArea': 'Blacklist area', 'channel.salesProducts.form.remoteAreaDivision': 'Remote area division', 'channel.salesProducts.form.priceArea': 'Price area', 'channel.salesProducts.form.weightCalculationRule': 'Weight rule', 'channel.salesProducts.form.weightRounding': 'Weight rounding', 'channel.salesProducts.form.productDescription': 'Product description', 'channel.salesProducts.form.preStorageScript': 'Pre-storage script', 'channel.salesProducts.form.placeholder.input': 'Please enter', 'channel.salesProducts.form.placeholder.min': 'Min', 'channel.salesProducts.form.placeholder.max': 'Max', 'channel.salesProducts.form.placeholder.select': 'Please select', 'channel.salesProducts.referencePreview.view': 'View details', 'channel.salesProducts.referencePreview.title': 'View: {name}', 'channel.salesProducts.referencePreview.noSelection': 'Please select an item first', 'channel.salesProducts.referencePreview.loadFailed': 'Failed to load details', 'channel.salesProducts.referencePreview.empty': 'No detail data', 'channel.salesProducts.drawer.tabs.basic': 'Basic info', 'channel.salesProducts.drawer.tabs.priceList': 'Price table', 'channel.salesProducts.drawer.form.costItem': 'Cost item', 'channel.salesProducts.drawer.form.costUnit': 'Cost unit', 'channel.salesProducts.drawer.form.currency': 'Currency', 'channel.salesProducts.drawer.form.chargingCondition': 'Charging condition', 'channel.salesProducts.drawer.section.billingFactors': 'Billing factors', 'channel.salesProducts.drawer.table.billingFactors.serialNo': 'No.', 'channel.salesProducts.drawer.table.billingFactors.factor': 'Factor', 'channel.salesProducts.drawer.table.billingFactors.factorValues': 'Factor values', 'channel.salesProducts.drawer.table.billingFactors.actions': 'Action', 'channel.salesProducts.drawer.section.priceListTitle': 'Freight', 'channel.salesProducts.drawer.table.priceList.division': 'Division', 'channel.salesProducts.drawer.table.priceList.cargoType': 'Cargo type', 'channel.salesProducts.drawer.table.priceList.billingWeight': 'Billing weight/kg', 'channel.salesProducts.drawer.table.priceList.calculationFormula': 'Formula', 'channel.salesProducts.drawer.table.priceList.calculatedValue': 'Value', 'channel.salesProducts.drawer.table.priceList.customerGroup1': 'Customer group 1', 'channel.salesProducts.drawer.table.priceList.customerGroup2': 'Customer group 2', 'channel.salesProducts.drawer.footer.cancel': 'Cancel', 'channel.salesProducts.drawer.footer.generatePriceList': 'Generate price table', 'channel.salesProducts.drawer.footer.save': 'Save', // Channel - Service Channels 'channel.serviceChannels.search.placeholder': 'Enter channel name', 'channel.serviceChannels.search.refresh': 'Refresh list', 'channel.serviceChannels.search.addProvider': 'Add provider', 'channel.serviceChannels.search.addChannel': 'Add channel', 'channel.serviceChannels.leftMenu.editProvider': 'Edit provider', 'channel.serviceChannels.leftMenu.deleteProvider': 'Delete provider', 'channel.serviceChannels.leftMenu.addChannelHere': 'Add channel', 'channel.serviceChannels.leftMenu.editChannel': 'Edit channel', 'channel.serviceChannels.tabs.config': 'Channel config', 'channel.serviceChannels.tabs.price': 'Channel pricing', 'channel.serviceChannels.tabs.record': 'Publish records', 'channel.serviceChannels.actions.save': 'Save', 'channel.serviceChannels.actions.add': 'Add', 'channel.serviceChannels.actions.edit': 'Edit', 'channel.serviceChannels.actions.delete': 'Delete', 'channel.serviceChannels.form.channelCode': 'Channel code', 'channel.serviceChannels.form.channelName': 'Channel name', 'channel.serviceChannels.form.timeLimit': 'Transit time', 'channel.serviceChannels.form.forecastConfig': 'Forecast config', 'channel.serviceChannels.form.forecastType': 'Forecast number type', 'channel.serviceChannels.form.forecastType.standard': 'Standard forecast', 'channel.serviceChannels.form.forecastType.custom': 'Custom forecast', 'channel.serviceChannels.form.forecastCode': 'Forecast channel code', 'channel.serviceChannels.form.description': 'Channel description', 'channel.serviceChannels.form.preScript': 'Pre-forecast script', 'channel.serviceChannels.form.placeholder.input': 'Please enter', 'channel.serviceChannels.form.placeholder.min': 'Min', 'channel.serviceChannels.form.placeholder.max': 'Max', 'channel.serviceChannels.form.placeholder.selectForecastType': 'Please select forecast number type', 'channel.serviceChannels.form.placeholder.forecastCode': 'Enter forecast channel code', 'channel.serviceChannels.form.placeholder.description': 'Enter channel description', 'channel.serviceChannels.form.placeholder.preScript': 'Enter pre-forecast script', 'channel.serviceChannels.price.effectiveVersion': 'Effective version: {version}', 'channel.serviceChannels.price.table.serialNo': 'No.', 'channel.serviceChannels.price.table.status': 'Status', 'channel.serviceChannels.price.table.priceName': 'Price name', 'channel.serviceChannels.price.table.costItem': 'Cost item', 'channel.serviceChannels.price.table.costUnit': 'Cost unit', 'channel.serviceChannels.price.table.currency': 'Currency', 'channel.serviceChannels.price.table.billingFactors': 'Billing factors', 'channel.serviceChannels.price.table.modifyTime': 'Modify time', 'channel.serviceChannels.price.table.modifier': 'Modifier', 'channel.serviceChannels.price.table.actions': 'Action', 'channel.serviceChannels.record.tabs.price': 'Price', 'channel.serviceChannels.record.tabs.rules': 'Rules', 'channel.serviceChannels.record.actions.publish': 'Publish', 'channel.serviceChannels.record.actions.rollback': 'Rollback to this version', 'channel.serviceChannels.record.versionRemark': 'Version note', 'channel.serviceChannels.record.noRemark': 'No notes', 'channel.serviceChannels.record.versionNumber': 'Version: {version}', 'channel.serviceChannels.modal.publishDateTitle': 'Select publish date', 'channel.serviceChannels.modal.publishDate.placeholder': 'Please select date', 'channel.serviceChannels.modal.actions.cancel': 'Cancel', 'channel.serviceChannels.modal.actions.ok': 'OK', 'channel.serviceChannels.drawer.title.addPrice': 'Add price config', 'channel.serviceChannels.drawer.tabs.basic': 'Basic info', 'channel.serviceChannels.drawer.tabs.priceList': 'Price table', 'channel.serviceChannels.drawer.form.costItem': 'Cost item', 'channel.serviceChannels.drawer.form.costUnit': 'Cost unit', 'channel.serviceChannels.drawer.form.currency': 'Currency', 'channel.serviceChannels.drawer.form.chargingCondition': 'Charging condition', 'channel.serviceChannels.drawer.section.billingFactors': 'Billing factors', 'channel.serviceChannels.drawer.table.billingFactors.serialNo': 'No.', 'channel.serviceChannels.drawer.table.billingFactors.factor': 'Factor', 'channel.serviceChannels.drawer.table.billingFactors.factorValues': 'Factor values', 'channel.serviceChannels.drawer.table.billingFactors.actions': 'Action', 'channel.serviceChannels.drawer.footer.cancel': 'Cancel', 'channel.serviceChannels.drawer.footer.generatePriceList': 'Generate price table', 'channel.serviceChannels.drawer.footer.save': 'Save', 'channel.serviceChannels.createTime': 'Created: {time}', // Channel - Blacklist/Remote Zones (shared) 'channel.area.listTitle': 'List', 'channel.area.search.placeholder': 'Enter keyword', 'channel.area.search.refresh': 'Refresh list', 'channel.area.search.addArea': 'Add area', 'channel.area.empty': 'No data', 'channel.area.actions.addDetail': 'Add area detail', 'channel.area.actions.edit': 'Edit', 'channel.area.actions.delete': 'Delete', 'channel.area.pagination.total': 'Total {count} records', 'channel.area.pagination.prev': 'Previous', 'channel.area.pagination.next': 'Next', 'channel.area.pagination.perPage': 'per page', 'channel.area.pagination.goTo': 'Go to', 'channel.area.pagination.page': 'page', 'channel.area.form.keyword': 'Keyword', 'channel.area.form.areaName': 'Area name', 'channel.area.form.country': 'Country/Region', 'channel.area.form.province': 'State/Province', 'channel.area.form.city': 'City', 'channel.area.form.leftPostCode': 'Start postcode', 'channel.area.form.rightPostCode': 'End postcode', 'channel.area.form.placeholder.keyword': 'Enter keyword', 'channel.area.form.placeholder.areaName': 'Enter area name', 'channel.area.form.placeholder.input': 'Please enter', 'channel.area.form.rules.areaNameRequired': 'Please enter area name', 'channel.area.form.rules.countryRequired': 'Please select country/region', 'channel.area.form.rules.maxLength128': 'Cannot exceed 128 characters', 'channel.area.form.rules.maxLength30': 'Cannot exceed 30 characters', 'channel.area.form.rules.noChinese': 'Cannot contain Chinese characters', 'channel.area.form.rules.noSpacesOnly': 'Start postcode cannot be spaces only', 'channel.area.form.rules.noSpacesOnlyEnd': 'End postcode cannot be spaces only', 'channel.area.modal.addArea': 'Add area', 'channel.area.modal.editArea': 'Edit area', 'channel.area.modal.addDetail': 'Add area detail', 'channel.area.modal.editDetail': 'Edit area detail', 'channel.area.modal.deleteConfirm': 'Are you sure to delete?', 'channel.area.modal.deleteConfirmDetail': 'Confirm deletion?', 'channel.area.modal.warningTitle': 'Warning', 'channel.area.table.serialNo': 'No.', 'channel.area.table.leftPostcode': 'Start postcode', 'channel.area.table.rightPostcode': 'End postcode', 'channel.area.table.leftPostCode': 'Start postcode code', 'channel.area.table.rightPostCode': 'End postcode code', 'channel.area.table.remark': 'Remark', 'channel.area.table.actions': 'Action', 'channel.area.message.deleteSuccess': 'Deleted successfully', 'channel.area.message.loadFailed': 'Failed to load data', 'channel.area.message.invalidPage': 'Please enter a valid page number', 'channel.area.search.button.query': 'Query', 'channel.area.search.button.reset': 'Reset', // Channel - Weight Rules 'channel.weightRules.listTitle': 'List', 'channel.weightRules.search.placeholder': 'Enter keyword', 'channel.weightRules.search.refresh': 'Refresh list', 'channel.weightRules.search.addRule': 'Add rule', 'channel.weightRules.empty': 'No data', 'channel.weightRules.actions.add': 'Add', 'channel.weightRules.actions.delete': 'Delete', 'channel.weightRules.pagination.total': 'Total {count} records', 'channel.weightRules.pagination.prev': 'Previous', 'channel.weightRules.pagination.next': 'Next', 'channel.weightRules.pagination.perPage': 'per page', 'channel.weightRules.pagination.goTo': 'Go to', 'channel.weightRules.pagination.page': 'page', 'channel.weightRules.form.keyword': 'Keyword', 'channel.weightRules.form.ruleName': 'Area name', 'channel.weightRules.form.condition': 'Condition expression', 'channel.weightRules.form.billableWeight': 'Billable weight value', 'channel.weightRules.form.volumetricFactor': 'Volumetric factor', 'channel.weightRules.form.placeholder.keyword': 'Enter keyword', 'channel.weightRules.form.placeholder.ruleName': 'Enter area name', 'channel.weightRules.form.placeholder.condition': 'Enter condition expression', 'channel.weightRules.form.placeholder.billableWeight': 'Enter billable weight value', 'channel.weightRules.form.placeholder.volumetricFactor': 'Enter volumetric factor', 'channel.weightRules.form.rules.ruleNameRequired': 'Please enter area name', 'channel.weightRules.form.rules.conditionRequired': 'Please enter condition expression', 'channel.weightRules.form.rules.billableWeightRequired': 'Please enter billable weight value', 'channel.weightRules.form.rules.volumetricFactorRequired': 'Please enter volumetric factor', 'channel.weightRules.modal.addArea': 'Add area', 'channel.weightRules.modal.editArea': 'Edit area', 'channel.weightRules.modal.addRule': 'Add rule', 'channel.weightRules.modal.editRule': 'Edit rule', 'channel.weightRules.modal.deleteConfirm': 'Are you sure to delete?', 'channel.weightRules.modal.deleteConfirmDetail': 'Confirm deletion?', 'channel.weightRules.modal.warningTitle': 'Warning', 'channel.weightRules.table.serialNo': 'No.', 'channel.weightRules.table.condition': 'Condition expression', 'channel.weightRules.table.billableWeight': 'Billable weight value', 'channel.weightRules.table.volumetricFactor': 'Volumetric factor', 'channel.weightRules.table.actions': 'Action', 'channel.weightRules.message.deleteSuccess': 'Deleted successfully', 'channel.weightRules.message.loadFailed': 'Failed to load data', 'channel.weightRules.message.invalidPage': 'Please enter a valid page number', 'channel.weightRules.search.button.query': 'Query', 'channel.weightRules.search.button.reset': 'Reset', 'channel.weightRules.updateTime': 'Updated: {time}', // Channel - Weight Rounding 'channel.weightRounding.listTitle': 'List', 'channel.weightRounding.search.placeholder': 'Enter keyword', 'channel.weightRounding.search.refresh': 'Refresh list', 'channel.weightRounding.search.addRounding': 'Add rounding', 'channel.weightRounding.empty': 'No data', 'channel.weightRounding.actions.add': 'Add', 'channel.weightRounding.actions.delete': 'Delete', 'channel.weightRounding.pagination.total': 'Total {count} records', 'channel.weightRounding.pagination.prev': 'Previous', 'channel.weightRounding.pagination.next': 'Next', 'channel.weightRounding.pagination.perPage': 'per page', 'channel.weightRounding.pagination.goTo': 'Go to', 'channel.weightRounding.pagination.page': 'page', 'channel.weightRounding.form.keyword': 'Keyword', 'channel.weightRounding.form.roundingName': 'Rounding name', 'channel.weightRounding.form.startValue': 'Start value', 'channel.weightRounding.form.endValue': 'End value', 'channel.weightRounding.form.public': 'Rounding value (kg)', 'channel.weightRounding.form.placeholder.keyword': 'Enter keyword', 'channel.weightRounding.form.placeholder.roundingName': 'Enter rounding name', 'channel.weightRounding.form.placeholder.startValue': 'Enter start value', 'channel.weightRounding.form.placeholder.endValue': 'Enter end value', 'channel.weightRounding.form.placeholder.public': 'e.g. 0.5 means round up per 0.5 kg', 'channel.weightRounding.form.rules.roundingNameRequired': 'Please enter rounding name', 'channel.weightRounding.form.rules.startValueRequired': 'Please enter start value', 'channel.weightRounding.form.rules.endValueRequired': 'Please enter end value', 'channel.weightRounding.form.rules.publicRequired': 'Please enter rounding value', 'channel.weightRounding.modal.addRounding': 'Add rounding', 'channel.weightRounding.modal.editRounding': 'Edit rounding', 'channel.weightRounding.modal.addRule': 'Add rule', 'channel.weightRounding.modal.editRule': 'Edit rule', 'channel.weightRounding.modal.deleteConfirm': 'Are you sure to delete?', 'channel.weightRounding.modal.deleteConfirmDetail': 'Confirm deletion?', 'channel.weightRounding.modal.warningTitle': 'Warning', 'channel.weightRounding.table.serialNo': 'No.', 'channel.weightRounding.table.startValue': 'Start value', 'channel.weightRounding.table.endValue': 'End value', 'channel.weightRounding.table.public': 'Rounding value (kg)', 'channel.weightRounding.table.actions': 'Action', 'channel.weightRounding.message.deleteSuccess': 'Deleted successfully', 'channel.weightRounding.message.loadFailed': 'Failed to load data', 'channel.weightRounding.message.invalidPage': 'Please enter a valid page number', 'channel.weightRounding.search.button.query': 'Query', 'channel.weightRounding.search.button.reset': 'Reset', 'channel.weightRounding.updateTime': 'Updated: {time}', // Channel - Auto Trigger 'channel.autoTrigger.actions.add': 'Add', 'channel.autoTrigger.pagination.total': 'Total {count} records', 'channel.autoTrigger.pagination.prev': 'Previous', 'channel.autoTrigger.pagination.next': 'Next', 'channel.autoTrigger.pagination.perPage': 'per page', 'channel.autoTrigger.table.serialNo': 'No.', 'channel.autoTrigger.table.ruleName': 'Rule name', 'channel.autoTrigger.table.priority': 'Priority', 'channel.autoTrigger.table.status': 'Status', 'channel.autoTrigger.table.operation': 'Operation', 'channel.autoTrigger.table.triggerTiming': 'Trigger timing', 'channel.autoTrigger.table.triggerCondition': 'Trigger condition', 'channel.autoTrigger.table.promptMessage': 'Prompt message', 'channel.autoTrigger.table.notifier': 'Notifier', 'channel.autoTrigger.table.createTime': 'Create time', 'channel.autoTrigger.table.creator': 'Creator', 'channel.autoTrigger.table.actions': 'Action', 'channel.autoTrigger.actions.edit': 'Edit', 'channel.autoTrigger.actions.delete': 'Delete', 'channel.autoTrigger.message.statusEnabled': 'Status enabled', 'channel.autoTrigger.message.statusDisabled': 'Status disabled', 'channel.autoTrigger.message.deletePending': 'Delete function pending', 'channel.autoTrigger.message.editPending': 'Edit function pending', 'channel.autoTrigger.message.addPending': 'Add function pending', 'channel.autoTrigger.empty': 'No data', 'channel.autoTrigger.form.ruleNameRequired': 'Please enter a rule name', 'channel.autoTrigger.form.promptRequired': 'Please enter a prompt message', 'channel.autoTrigger.form.ruleNamePlaceholder': 'e.g. UK oversize intercept', 'channel.autoTrigger.form.promptPlaceholder': 'e.g. Oversize — order blocked', 'channel.autoTrigger.form.notifierPlaceholder': 'Optional notifier users for warn/problem', 'channel.autoTrigger.form.loadExample': 'Load oversize example', 'channel.autoTrigger.form.legacyTitle': 'Legacy plain-text condition detected — rebuild with the builder below', 'channel.autoTrigger.form.testFormula': 'Test formula', 'channel.autoTrigger.form.testSample': 'Sample data', 'channel.autoTrigger.form.testMatched': 'Matched', 'channel.autoTrigger.form.testNotMatched': 'Not matched', 'channel.autoTrigger.form.testFailed': 'Formula test failed', 'channel.autoTrigger.form.sampleCountry': 'Country', 'channel.autoTrigger.form.sampleCustomer': 'Customer name', 'channel.autoTrigger.form.sampleProduct': 'Product code', 'channel.autoTrigger.form.sampleLength': 'Length', 'channel.autoTrigger.form.sampleWidth': 'Width', 'channel.autoTrigger.form.sampleHeight': 'Height', // Channel - Issue Template 'channel.issueTemplate.actions.add': 'Add', 'channel.issueTemplate.actions.edit': 'Edit', 'channel.issueTemplate.actions.delete': 'Delete', 'channel.issueTemplate.pagination.total': 'Total {count} records', 'channel.issueTemplate.pagination.prev': 'Previous', 'channel.issueTemplate.pagination.next': 'Next', 'channel.issueTemplate.table.status': 'Status', 'channel.issueTemplate.table.organization': 'Organization', 'channel.issueTemplate.table.issueType': 'Issue Type', 'channel.issueTemplate.table.title': 'Title', 'channel.issueTemplate.table.content': 'Content', 'channel.issueTemplate.table.notifyMethod': 'Notify Method', 'channel.issueTemplate.org.platform': 'Platform Default', 'channel.issueTemplate.issueType.address': 'Address Issue', 'channel.issueTemplate.issueType.customs': 'Customs Issue', 'channel.issueTemplate.issueType.weight': 'Weight Issue', 'channel.issueTemplate.issueType.document': 'Document Issue', 'channel.issueTemplate.issueType.cargo': 'Cargo Issue', 'channel.issueTemplate.issueType.channel': 'Channel Issue', 'channel.issueTemplate.issueType.payment': 'Payment Issue', 'channel.issueTemplate.issueType.other': 'Other', 'channel.issueTemplate.notify.inApp': 'In-app', 'channel.issueTemplate.notify.email': 'Email', 'channel.issueTemplate.notify.sms': 'SMS', 'channel.issueTemplate.notify.feishu': 'Feishu', 'channel.issueTemplate.notify.wechat': 'WeChat', 'channel.issueTemplate.message.statusEnabled': 'Enabled', 'channel.issueTemplate.message.statusDisabled': 'Disabled', 'channel.issueTemplate.message.deleteConfirm': 'Delete this issue template?', 'channel.issueTemplate.message.loadFailed': 'Failed to load', 'channel.issueTemplate.message.saveFailed': 'Failed to save', // Track Center - Track Order 'track.order.search.placeholder.orderNo': 'Enter order number', 'track.order.search.placeholder.isExternal': 'Please select if external', 'track.order.search.label.showTrajectory': 'Show track', 'track.order.search.label.hideTrajectory': 'Hide track', 'track.order.search.placeholder.time': 'Enter time', 'track.order.search.placeholder.timezone': 'Enter timezone', 'track.order.search.placeholder.location': 'Enter location', 'track.order.search.placeholder.content': 'Enter content', 'track.order.search.placeholder.remark': 'Enter remark', 'track.order.drawer.tabs.detail': 'Detail', 'track.order.drawer.tabs.pushRecord': 'Push record', 'track.order.drawer.tabs.log': 'Log', 'track.order.drawer.tabs.pullConfig': 'Track pull config', 'track.order.drawer.tabs.track': 'Order tracking', 'track.order.drawer.tabs.externalTrack': 'External order tracking', 'track.order.drawer.tabs.small': 'Small package', 'track.order.drawer.tabs.main': 'Main order', 'track.order.table.orderType': 'Order type', 'track.order.table.orderNo': 'Customer order number', 'track.order.table.customerShortName': 'Customer short name', 'track.order.table.thirdPartyOrderNo': 'Last mile order number', 'track.order.table.estimatedDeliveryTime': 'Estimated delivery time', 'track.order.table.deliveryTimezone': 'Delivery timezone', 'track.order.table.latestTrajectoryStatus': 'Latest trajectory status', 'track.order.table.latestTrajectoryContent': 'Latest trajectory content', 'track.order.table.latestTrajectoryContentEn': 'Latest trajectory content (EN)', 'track.order.table.latestTrajectoryTime': 'Latest trajectory time', 'track.order.table.latestTrajectoryTimezone': 'Latest trajectory timezone', 'track.order.table.latestTrajectoryLocation': 'Latest trajectory location', 'track.order.table.isComplete': 'Is complete', 'track.order.table.createTime': 'Create time', 'track.order.table.actions': 'Action', 'track.order.table.trackNo': 'Last mile order number', 'track.order.table.otherNo': 'Other order number', 'track.order.table.product': 'Sales product', 'track.order.table.channel': 'Service channel', 'track.order.table.apiCode': 'API service provider', 'track.order.table.countryCode': 'Country', 'track.order.table.province': 'Province/State', 'track.order.table.city': 'City', 'track.order.table.postcode': 'Postcode', 'track.order.table.email': 'Email', 'track.order.detail.title.trajectoryCode': 'Track code', 'track.order.detail.title.trajectoryContent': 'Track content', 'track.order.detail.title.trajectoryContentEn': 'Track content (EN)', 'track.order.detail.title.remark': 'Remark', 'track.order.detail.title.createUser': 'Creator', 'track.order.detail.title.trajectoryType': 'Track type', 'track.order.detail.title.trackTime': 'Track time', 'track.order.detail.title.trackTimeZone': 'Track timezone', 'track.order.detail.title.pushDetail': 'Push detail', 'track.order.detail.title.originTrackContent': 'Service provider source track content', 'track.order.detail.title.serviceProvider': 'Service provider', 'track.order.detail.title.trackPlaceCity': 'Track location (city)', 'track.order.detail.title.trackPlaceProvince': 'Track location (province/state)', 'track.order.detail.title.trackPlaceNation': 'Track location (country/region)', 'track.order.detail.title.trackPlacePostcode': 'Track location postcode', 'track.order.detail.title.trackPlace': 'Track location', 'track.order.detail.title.isVisibility': 'Is visible', 'track.order.detail.trajectoryType.external': 'External service provider created', 'track.order.detail.trajectoryType.internal': 'Internal system created', 'track.order.detail.trajectoryType.manual': 'Manual created', 'track.order.detail.showAllSourceTrajectory': 'Show all source tracks from service provider', 'track.order.pagination.total': 'Total {count} records', 'track.order.pagination.prev': 'Previous', 'track.order.pagination.next': 'Next', 'track.order.pagination.perPage': 'per page', 'track.order.pagination.goTo': 'Go to', 'track.order.pagination.page': 'page', 'track.order.table.serialNo': 'No.', 'track.order.table.appName': 'Application', 'track.order.actions.addTrajectory': 'Add track', 'track.order.actions.updateTrajectory': 'Update track', 'track.order.actions.refreshTrajectory': 'Refresh track', 'track.order.actions.deleteTrajectory': 'Delete track', 'track.order.actions.pushTrajectory': 'Push track', 'track.order.actions.deleteOrder': 'Delete order', 'track.order.actions.batchUpdatePullConfig': 'Batch update pull config', 'track.order.modal.addTrajectory': 'Add track', 'track.order.modal.updateTrajectory': 'Update track', 'track.order.modal.deleteTrajectory': 'Delete track', 'track.order.modal.pushTrajectory': 'Push track', 'track.order.modal.viewDetail': 'View detail', 'track.order.modal.deleteSingleTrajectory': 'Are you sure to delete track {content}?', 'track.order.modal.deleteMultipleTrajectory': 'Are you sure to delete the following {count} tracks?', 'track.order.modal.deleteOrder': 'Are you sure to delete order {orderNo}?', 'track.order.modal.deleteMultipleOrders': 'Are you sure to delete the following {count} orders?', 'track.order.message.selectSameOrderType': 'Please select the same order type and subsystem', 'track.order.message.selectSameOrderTypeOnly': 'Please select the same order type', 'track.order.message.cannotDeleteExternal': 'Tracks from external service providers cannot be deleted', 'track.order.message.operationSuccess': 'Operation successful, please check the result later.', 'track.order.message.refreshSuccess': 'Operation successful, please check the result later.', 'track.order.message.invalidPage': 'Page number out of range', 'track.order.log.table.optionType': 'Operation type', 'track.order.log.table.content': 'Log source text', 'track.order.log.table.createUserName': 'Operator', 'track.order.log.table.createTime': 'Operation time', 'track.order.pushRecord.table.requestId': 'Request ID', 'track.order.pushRecord.table.isSuccess': 'Is success', 'track.order.pushRecord.table.message': 'Message', 'track.order.pushRecord.table.optionType': 'Operation type', 'track.order.pushRecord.table.trackStatus': 'Track status', 'track.order.pushRecord.table.trackCode': 'Track content code', 'track.order.pushRecord.table.trackContent': 'Track content', 'track.order.pushRecord.table.trackPlace': 'Track location', 'track.order.pushRecord.table.trackGTMTimeZone': 'Track timezone', 'track.order.pushRecord.table.pushContent': 'Push detail', 'track.order.pushRecord.table.createUser': 'Creator', 'track.order.pushRecord.table.createTime': 'Create time', 'track.order.titleStrs.trajectoryCode': 'Track code', 'track.order.titleStrs.trajectoryContent': 'Track content', 'track.order.titleStrs.trajectoryContentEn': 'Track content (EN)', 'track.order.common.yes': 'Yes', 'track.order.common.no': 'No', 'track.order.pullConfig.appKey': 'App Key', 'track.order.pullConfig.orderType': 'Order Type', 'track.order.pullConfig.orderNos': 'Order Numbers', 'track.order.pullConfig.items': 'Config Items', 'track.order.pullConfig.noData': 'No data', 'track.order.pullConfig.table.index': 'No.', 'track.order.pullConfig.table.pullOrderNo': 'Pull order no', 'track.order.pullConfig.table.serviceCode': 'Service provider', 'track.order.pullConfig.table.startCode': 'Start track pull', 'track.order.pullConfig.table.endCode': 'End track pull', 'track.order.pullConfig.table.silenceTime': 'Silence before start (h)', 'track.order.pullConfig.table.stopTime': 'Silence after end (h)', 'track.order.pullConfig.table.pullStatus': 'Pull status', 'track.order.pullConfig.table.startTime': 'Cron start time', 'track.order.pullConfig.table.endTime': 'Cron end time', 'track.order.pullConfig.pullStatus.initial': 'Initial', 'track.order.pullConfig.pullStatus.silenceBeforeStart': 'Silence before start', 'track.order.pullConfig.pullStatus.pulling': 'Pulling', 'track.order.pullConfig.pullStatus.silenceAfterEnd': 'Silence after end', 'track.order.pullConfig.pullStatus.completed': 'Completed', 'track.order.modal.columnConfig': 'Column config', 'track.order.modal.columnOrderTitle': 'Column order settings', 'track.order.modal.currentOrder': 'Current order', 'track.order.modal.editOrder': 'Edit order', 'track.order.modal.moveUp': 'Move up', 'track.order.modal.moveDown': 'Move down', 'track.order.modal.resetDefault': 'Reset default', 'track.order.pushRecord.title': 'Push record', 'track.order.pushRecord.table.pushContentCol': 'Push content', 'track.order.pushRecord.table.pushTime': 'Push time', 'track.order.pushRecord.table.pushStatus': 'Push status', 'track.order.pushRecord.table.pushResult': 'Push result', 'track.order.modal.batchInput': 'Batch input', 'track.order.modal.multiValueTips': 'Enter multiple values, one per line; paste comma-separated data to convert to rows; support copy, paste, cut; duplicates are auto-removed', 'track.order.modal.multiValuePlaceholder': 'Enter values, one per line, or paste comma-separated data', 'track.order.modal.valueCount': '{count} values', 'track.order.modal.noOrderNo': 'No order numbers', 'track.order.pagination.selectedCount': 'Selected', 'track.order.pagination.records': ' records', // Track Center - Warning Order 'track.warningOrder.tabs.return': 'Track return', 'track.warningOrder.tabs.transitTime': 'Transit time', 'track.warningOrder.tabs.complete': 'Trajectory complete', 'track.warningOrder.status.aboutToTimeout': 'About to timeout', 'track.warningOrder.status.timeout': 'Timeout', 'track.warningOrder.status.completed': 'Completed', 'track.warningOrder.status.timeoutCompleted': 'Timeout completed', 'track.warningOrder.status.closed': 'Closed', 'track.warningOrder.actions.addTrajectory': 'Add track', 'track.warningOrder.actions.refreshTrajectory': 'Refresh track', 'track.warningOrder.actions.pushTrajectory': 'Push track', 'track.warningOrder.pushRecord.title': 'Push record', 'track.warningOrder.modal.addTrajectory': 'Add track', 'track.warningOrder.modal.missingTrackDetail': 'Missing track detail', 'track.warningOrder.pagination.total': 'Total {count} records', 'track.warningOrder.pagination.prev': 'Previous', 'track.warningOrder.pagination.next': 'Next', 'track.warningOrder.pagination.perPage': 'per page', 'track.warningOrder.pagination.goTo': 'Go to', 'track.warningOrder.pagination.page': 'page', 'track.warningOrder.table.serialNo': 'No.', 'track.warningOrder.table.orderNo': 'Order number', 'track.warningOrder.table.status': 'Status', 'track.warningOrder.table.createTime': 'Create time', 'track.warningOrder.message.loadFailed': 'Failed to load data', 'track.warningOrder.message.invalidPage': 'Please enter a valid page number', // Track Center - Track State 'track.state.search.placeholder': 'Enter track status code or name', 'track.state.actions.add': 'Add', 'track.state.actions.edit': 'Edit', 'track.state.actions.delete': 'Delete', 'track.state.modal.add': 'Add', 'track.state.modal.edit': 'Edit', 'track.state.modal.deleteConfirm': 'Are you sure to delete? If track content is bound to this status, deletion is prohibited. Please confirm.', 'track.state.modal.warningTitle': 'Warning', 'track.state.message.deleteSuccess': 'Deleted successfully', 'track.state.table.serialNo': 'No.', 'track.state.table.statusCode': 'Track status code', 'track.state.table.status': 'Track status', 'track.state.table.statusEn': 'Track status (EN)', 'track.state.table.isComplete': 'Is complete', 'track.state.table.isBroadcast': 'Is broadcast', 'track.state.table.createTime': 'Create time', 'track.state.table.creator': 'Creator', 'track.state.table.modifyTime': 'Modify time', 'track.state.table.modifier': 'Modifier', 'track.state.table.application': 'Application', 'track.state.table.actions': 'Action', 'track.state.form.statusCode': 'Track status code', 'track.state.form.statusCodeRequired': 'Please enter track status code', 'track.state.form.statusCodePlaceholder': 'Enter track status code', 'track.state.form.status': 'Track status', 'track.state.form.statusRequired': 'Please enter track status', 'track.state.form.statusPlaceholder': 'Enter track status', 'track.state.form.statusEn': 'Track status (EN)', 'track.state.form.statusEnRequired': 'Please enter track status (EN)', 'track.state.form.statusEnOnlyAlphanumeric': 'Only letters, numbers and underscores allowed', 'track.state.form.statusEnPlaceholder': 'Enter track status (EN)', 'track.state.form.isComplete': 'Is complete', 'track.state.form.isCompletePlaceholder': 'Please select if complete', 'track.state.form.isBroadcast': 'Is broadcast', 'track.state.form.isBroadcastPlaceholder': 'Please select if broadcast', 'track.state.form.application': 'Application', 'track.state.form.applicationRequired': 'Please select application', 'track.state.form.applicationPlaceholder': 'Please select application', 'track.state.common.yes': 'Yes', 'track.state.common.no': 'No', // Track Center - Track Flag 'track.flag.search.placeholder': 'Enter flag name', 'track.flag.actions.add': 'Add', 'track.flag.actions.edit': 'Edit', 'track.flag.actions.delete': 'Delete', 'track.flag.modal.add': 'Add', 'track.flag.modal.edit': 'Edit', 'track.flag.modal.deleteConfirm': 'Are you sure to delete? Deletion will affect track flag push. Please confirm.', 'track.flag.modal.warningTitle': 'Warning', 'track.flag.message.deleteSuccess': 'Deleted successfully', 'track.flag.table.serialNo': 'No.', 'track.flag.table.flag': 'Flag', 'track.flag.table.code': 'Code', 'track.flag.table.isBroadcast': 'Is broadcast', 'track.flag.table.createTime': 'Create time', 'track.flag.table.creator': 'Creator', 'track.flag.table.modifyTime': 'Modify time', 'track.flag.table.modifier': 'Modifier', 'track.flag.table.application': 'Application', 'track.flag.table.actions': 'Action', 'track.flag.form.flag': 'Flag', 'track.flag.form.flagRequired': 'Please enter flag', 'track.flag.form.flagOnlyChinese': 'Only Chinese characters allowed', 'track.flag.form.flagPlaceholder': 'Enter flag', 'track.flag.form.code': 'Code', 'track.flag.form.codeRequired': 'Please enter 2 uppercase letters', 'track.flag.form.codePlaceholder': 'Enter 2 uppercase letters', 'track.flag.form.isBroadcast': 'Is broadcast', 'track.flag.form.isBroadcastPlaceholder': 'Please select if broadcast', 'track.flag.form.application': 'Application', 'track.flag.form.applicationRequired': 'Please select application', 'track.flag.form.applicationPlaceholder': 'Please select application', 'track.flag.common.yes': 'Yes', 'track.flag.common.no': 'No', // Track Center - Track Content 'track.content.modal.addTitle': 'Add track content', 'track.content.modal.deleteConfirm': 'Are you sure to delete? If templates are bound to this track content, deletion is prohibited. Please confirm.', 'track.content.modal.warningTitle': 'Warning', 'track.content.message.deleteSuccess': 'Deleted successfully', 'track.content.search.placeholder': 'Enter track code or content', 'track.content.form.application': 'Application', 'track.content.form.applicationRequired': 'Please select application', 'track.content.form.applicationPlaceholder': 'Please select application', 'track.content.actions.add': 'Add', 'track.content.actions.edit': 'Edit', 'track.content.actions.delete': 'Delete', 'track.content.table.serialNo': 'No.', 'track.content.table.trajectoryCode': 'Track code', 'track.content.table.trajectoryContent': 'Track content', 'track.content.table.trajectoryContentEn': 'Track content (EN)', 'track.content.table.status': 'Status', 'track.content.table.flag': 'Track flag', 'track.content.table.isExternal': 'Is external', 'track.content.table.isRepeatable': 'Is repeatable', 'track.content.table.allowManualModify': 'Allow manual modify', 'track.content.table.allowManualCreate': 'Allow manual create', 'track.content.table.createTime': 'Create time', 'track.content.table.creator': 'Creator', 'track.content.table.modifyTime': 'Modify time', 'track.content.table.modifier': 'Modifier', 'track.content.table.application': 'Application', 'track.content.table.actions': 'Action', 'track.content.form.status': 'Status', 'track.content.form.statusPlaceholder': 'Please select', 'track.content.form.statusRequired': 'Please select status', 'track.content.form.trajectoryCode': 'Track code', 'track.content.form.trajectoryCodePlaceholder': 'Enter track code', 'track.content.form.trajectoryCodeRequired': 'Please enter track code', 'track.content.form.trajectoryContent': 'Track content', 'track.content.form.trajectoryContentPlaceholder': 'Enter track content', 'track.content.form.trajectoryContentRequired': 'Please enter track content', 'track.content.form.trajectoryContentEn': 'Track content (EN)', 'track.content.form.trajectoryContentEnPlaceholder': 'Enter track content (EN)', 'track.content.form.trajectoryContentEnRequired': 'Please enter track content (EN)', 'track.content.form.trajectoryContentEnNoChinese': 'Chinese characters not allowed', 'track.content.form.trackContentEnNoChinese': 'Chinese characters not allowed', 'track.content.form.flag': 'Track flag', 'track.content.form.flagPlaceholder': 'Please select', 'track.content.form.isExternal': 'Is external', 'track.content.form.isExternalPlaceholder': 'Please select if external', 'track.content.form.isRepeatable': 'Is repeatable', 'track.content.form.isRepeatablePlaceholder': 'Please select if repeatable', 'track.content.form.allowManualCreate': 'Support manual create', 'track.content.form.allowManualCreatePlaceholder': 'Please select if support manual create', 'track.content.form.allowManualModify': 'Support manual modify', 'track.content.form.allowManualModifyPlaceholder': 'Please select if support manual modify', 'track.content.titleStrs.statusCode': 'Track status code', 'track.content.titleStrs.status': 'Track status', 'track.content.titleStrs.flag': 'Flag', 'track.content.titleStrs.code': 'Code', 'track.content.titleStrs.isBroadcast': 'Is broadcast', 'track.content.common.yes': 'Yes', 'track.content.common.no': 'No', // Track Center - Track Push 'track.push.table.serialNo': 'No.', 'track.push.table.pushOrder': 'Push order', 'track.push.table.trajectoryCode': 'Track code', 'track.push.table.trajectoryContent': 'Track content', 'track.push.table.trajectoryContentEn': 'Track content (EN)', 'track.push.table.trackCode': 'Track code', 'track.push.table.trackContent': 'Track content', 'track.push.table.trackContentEn': 'Track content (EN)', 'track.push.table.standardTrajectory': 'Standard trajectory', 'track.push.table.standardTrack': 'Standard track', 'track.push.table.systemStandardTrack': 'System standard track', 'track.push.table.pushTrajectoryCode': 'Push track code', 'track.push.table.pushTrajectoryStatus': 'Push track status', 'track.push.table.pushTrajectoryContent': 'Push track content', 'track.push.table.pushTrajectoryContentEn': 'Push track content (EN)', 'track.push.table.pushExtendedField': 'Push extended field', 'track.push.table.actions': 'Action', 'track.push.form.application': 'Application', 'track.push.form.applicationRequired': 'Please select application', 'track.push.form.applicationPlaceholder': 'Please select application', 'track.push.form.customer': 'Customer', 'track.push.form.customerPlaceholder': 'Enter customer', 'track.push.form.customerRequired': 'Please select customer', 'track.push.form.serviceProvider': 'Service provider', 'track.push.form.serviceProviderPlaceholder': 'Please select service provider', 'track.push.form.serviceProviderRequired': 'Please select service provider', 'track.push.form.isAutoPush': 'Is auto push', 'track.push.form.isAutoPushPlaceholder': 'Please select if auto push', 'track.push.form.supportRepush': 'Support repush', 'track.push.form.supportRepushPlaceholder': 'Please select if support repush', 'track.push.form.supportDelete': 'Support delete', 'track.push.form.supportDeletePlaceholder': 'Please select if support delete', 'track.push.form.isFullPush': 'Is full push', 'track.push.form.isFullPushPlaceholder': 'Please select if full push', 'track.push.form.isLatestFullPush': 'Is full push (latest)', 'track.push.form.isLatestFullPushPlaceholder': 'Please select if full push latest', 'track.push.form.pushTimeStyle': 'Push time style', 'track.push.form.pushTimeStyle.none': 'Default', 'track.push.form.pushTimeStyle.timestamp': 'Timestamp', 'track.push.form.pushTimeStyle.timezone': 'Time + timezone', 'track.push.form.time': 'Time', 'track.push.form.timePlaceholder': 'Time format: yyyy-MM-dd HH:mm:ss or yyyy/MM/dd HH:mm:ss', 'track.push.form.timezone': 'Timezone', 'track.push.form.timezonePlaceholder': 'Timezone format: GMT/UTC', 'track.push.form.trajectoryCode': 'Track code', 'track.push.form.trajectoryCodeRequired': 'Please select track code', 'track.push.form.trackCode': 'Track code', 'track.push.form.trackCodeRequired': 'Please select track code', 'track.push.form.pushTrajectoryStatus': 'Push track status', 'track.push.form.pushTrajectoryStatusPlaceholder': 'Enter parameter value', 'track.push.form.pushTrackStatus': 'Push track status', 'track.push.form.pushTrackStatusPlaceholder': 'Enter parameter value', 'track.push.form.pushTrajectoryCode': 'Push track code', 'track.push.form.pushTrackCode': 'Push track code', 'track.push.form.pushTrajectoryContent': 'Push track content', 'track.push.form.pushTrackContent': 'Push track content', 'track.push.form.pushTrajectoryContentEn': 'Push track content (EN)', 'track.push.form.pushTrackContentEn': 'Push track content (EN)', 'track.push.form.pushExtendedField': 'Push track extended field', 'track.push.form.swapTrackContent': 'Swap track content', 'track.push.actions.add': 'Add', 'track.push.actions.edit': 'Edit', 'track.push.actions.delete': 'Delete', 'track.push.modal.deleteConfirm': 'Are you sure to delete?', 'track.push.modal.warningTitle': 'Warning', 'track.push.message.deleteSuccess': 'Deleted successfully', 'track.push.search.placeholder': 'Enter service provider name or appkey', 'track.push.actions.refresh': 'Refresh list', 'track.push.actions.addPush': 'Add push', 'track.push.common.yes': 'Yes', 'track.push.common.no': 'No', 'track.push.titleStrs.trajectoryCode': 'Track code', 'track.push.titleStrs.trajectoryContent': 'Track content', 'track.push.titleStrs.trackCode': 'Track code', 'track.push.titleStrs.trackContent': 'Track content', // Track Center - Warning Region (shared with channel.area keys) 'track.region.search.placeholder': 'Enter keyword', 'track.region.search.refresh': 'Refresh list', 'track.region.search.addArea': 'Add area', 'track.region.search.button.query': 'Query', 'track.region.search.button.reset': 'Reset', 'track.region.empty': 'No data', 'track.region.actions.add': 'Add', 'track.region.actions.edit': 'Edit', 'track.region.actions.delete': 'Delete', 'track.region.modal.addArea': 'Add area', 'track.region.modal.editArea': 'Edit area', 'track.region.modal.add': 'Add', 'track.region.modal.edit': 'Edit', 'track.region.modal.warningTitle': 'Tips', 'track.region.modal.deleteConfirm': 'Are you sure to delete this area?', 'track.region.modal.deleteConfirmContent': 'Are you sure to delete this area detail?', 'track.region.message.deleteSuccess': 'Deleted successfully', 'track.region.form.keyword': 'Keyword', 'track.region.form.areaName': 'Area name', 'track.region.form.country': 'Country/Region', 'track.region.form.province': 'State/Province', 'track.region.form.city': 'City', 'track.region.form.leftPostCode': 'Start postcode', 'track.region.form.rightPostCode': 'End postcode', 'track.region.form.placeholder.keyword': 'Enter keyword', 'track.region.form.placeholder.areaName': 'Enter area name', 'track.region.form.placeholder.input': 'Please enter', 'track.region.form.rules.areaNameRequired': 'Please enter area name', 'track.region.form.rules.countryRequired': 'Please select country/region', 'track.region.form.rules.maxLength128': 'Cannot exceed 128 characters', 'track.region.form.rules.maxLength30': 'Cannot exceed 30 characters', 'track.region.form.rules.noChinese': 'Cannot contain Chinese characters', 'track.region.form.rules.noSpacesOnly': 'Start postcode cannot be spaces only', 'track.region.form.rules.noSpacesOnlyEnd': 'End postcode cannot be spaces only', 'track.region.table.serialNo': 'No.', 'track.region.table.country': 'Country/Region', 'track.region.table.province': 'State/Province', 'track.region.table.city': 'City', 'track.region.table.leftPostCode': 'Start postcode', 'track.region.table.rightPostCode': 'End postcode', 'track.region.table.actions': 'Action', // Track Center - Warning Config 'track.warningConfig.tabs.complete': 'Track complete', 'track.warningConfig.tabs.transitTime': 'Transit time', 'track.warningConfig.tabs.returnTime': 'Track return', 'track.warningConfig.search.placeholder.customer': 'Enter customer short name', 'track.warningConfig.search.label.customer': 'Customer short name', 'track.warningConfig.search.label.kpiName': 'KPI name', 'track.warningConfig.search.placeholder.kpiName': 'Enter KPI name', 'track.warningConfig.search.label.status': 'Status', 'track.warningConfig.search.status.enabled': 'Enabled', 'track.warningConfig.search.status.disabled': 'Disabled', 'track.warningConfig.search.button.query': 'Query', 'track.warningConfig.search.button.reset': 'Reset', 'track.warningConfig.actions.refresh': 'Refresh list', 'track.warningConfig.actions.addRule': 'Add warning rule', 'track.warningConfig.actions.addScene': 'Add scene', 'track.warningConfig.actions.editScene': 'Edit scene', 'track.warningConfig.message.getRuleItemsFailed': 'Failed to get scene rule items data', 'track.warningConfig.message.getSceneFailed': 'Failed to get scene data', 'track.warningConfig.message.deleteSuccess': 'Deleted successfully', 'track.warningConfig.message.selectRuleFirst': 'Please select a warning rule item from the left list first', 'track.warningConfig.message.selectRule': 'Please select a warning rule from the left first', 'track.warningConfig.message.enterAtLeastOneFactor': 'Please enter at least one factor value', 'track.warningConfig.message.saveSuccess': 'Saved successfully', 'track.warningConfig.message.getSceneDetailFailed': 'Failed to get scene details', 'track.warningConfig.modal.deletePushConfirm': 'Confirm to delete this push?', 'track.warningConfig.modal.deleteSceneConfirm': 'Confirm to delete [{summary}]?', 'track.warningConfig.modal.warningTitle': 'Warning', 'track.warningConfig.factor.type.cargoType': 'Cargo type', 'track.warningConfig.factor.type.month': 'Month', 'track.warningConfig.factor.type.division': 'Division', 'track.warningConfig.factor.type.isTransit': 'Is transit', 'track.warningConfig.factor.type.port': 'Port', 'track.warningConfig.factor.type.salesProduct': 'Sales product', // Track Center - Track Pull 'track.pull.table.trackKeyword': 'Pull track keyword', 'track.pull.table.trackKeywordReverse': 'Pull track keyword (filter)', 'track.pull.table.trackPlaceValue': 'Fallback track location', 'track.pull.table.standardTrack': 'Standard track', 'track.pull.actions.add': 'Add', 'track.pull.actions.edit': 'Edit', 'track.pull.actions.delete': 'Delete', 'track.pull.actions.addPull': 'Add pull', 'track.pull.modal.deleteConfirm': 'Are you sure to delete this pull?', 'track.pull.modal.deleteContentConfirm': 'Are you sure to delete this pull content?', 'track.pull.modal.warningTitle': 'Warning', 'track.pull.message.deleteSuccess': 'Deleted successfully', ...localeSettings, ...localeMessageBox, ...localeLogin, ...localeWechat, ...localeH5TrackQuery, ...localeWorkplace, ...localeMonitor, ...localeSearchTable, ...localeCardList, ...localeStepForm, ...localeGroupForm, ...localeSuccess, ...localeError, ...locale403, ...locale404, ...locale500, };