front/src/locale/en-US.ts
zzh fb1e566a21 优化仓储与店铺新增弹窗布局,修复 SKU 表单编译错误。
统一 OMS 表单样式与交互,补齐 i18n 文案。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 18:25:48 +08:00

3588 lines
203 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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',
'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.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.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.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.actions.delete': 'Delete',
'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',
'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,
};