All checks were successful
Build and Deploy Front / deploy (push) Successful in 6m25s
下单/H5 仓库地址展示与排序备注;映射明细加载优化与发布后保留选中;接口明细加载期不再误报未保存。 Co-authored-by: Cursor <cursoragent@cursor.com>
1018 lines
51 KiB
TypeScript
1018 lines
51 KiB
TypeScript
export default {
|
||
'h5.center.title': 'Customer Center',
|
||
'h5.tab.assistant': 'AI Advisor',
|
||
'h5.tab.price': 'Rates',
|
||
'h5.tab.createOrder': 'Order',
|
||
'h5.tab.orders': 'Orders',
|
||
'h5.tab.me': 'Me',
|
||
|
||
'h5.assistant.quick.price': 'How do I check shipping rates?',
|
||
'h5.assistant.quick.pay': 'How do I pay a pending order?',
|
||
'h5.assistant.quick.track': 'How often is tracking updated?',
|
||
'h5.assistant.quick.issue': 'What if my shipment has an issue?',
|
||
'h5.assistant.tip.defaultTitle': 'Ask anything',
|
||
'h5.assistant.tip.defaultDesc': 'Rates, payment, tracking, and issues — just ask',
|
||
'h5.assistant.tip.waybillTitle': 'Waybill context loaded',
|
||
'h5.assistant.tip.waybillDesc': 'Ask about tracking, fees, or issues without pasting the number',
|
||
'h5.assistant.tip.priceTitle': 'Quote context loaded',
|
||
'h5.assistant.tip.priceDesc': 'The input is prefilled with your quote — keep asking',
|
||
'h5.assistant.clearContext': 'Clear',
|
||
|
||
'h5.price.title': 'Check Rates',
|
||
'h5.price.subtitle': 'Pick a country and weight — compare and order fast',
|
||
'h5.price.country': 'Destination',
|
||
'h5.price.countryPlaceholder': 'Select destination',
|
||
'h5.price.countrySearchPh': 'Search name or ISO2, e.g. USA / US',
|
||
'h5.price.origin': 'From warehouse',
|
||
'h5.price.originAny': 'Any warehouse',
|
||
'h5.price.destination': 'Destination',
|
||
'h5.price.postalCode': 'Postcode',
|
||
'h5.price.postalCodePh': 'Optional — better zoning',
|
||
'h5.price.packageWeight': 'Package weight',
|
||
'h5.price.cargoAttr': 'Cargo type',
|
||
'h5.price.cargoPick': 'Select',
|
||
'h5.price.cargoAny': 'Any',
|
||
'h5.price.weight': 'Weight',
|
||
'h5.price.weightPlaceholder': '0',
|
||
'h5.price.dimensions': 'Dimensions (cm, optional)',
|
||
'h5.price.length': 'L',
|
||
'h5.price.width': 'W',
|
||
'h5.price.height': 'H',
|
||
'h5.price.query': 'Get quotes',
|
||
'h5.price.querying': 'Checking…',
|
||
'h5.price.editQuery': 'Edit',
|
||
'h5.price.reset': 'Reset',
|
||
'h5.price.sort.recommend': 'Recommend',
|
||
'h5.price.sort.price': 'Price',
|
||
'h5.price.sort.time': 'Speed',
|
||
'h5.price.resultCount': '{n} quotes',
|
||
'h5.price.recommendTag': 'Best',
|
||
'h5.price.tag.priceOptimal': 'Best price',
|
||
'h5.price.tag.timeOptimal': 'Fastest',
|
||
'h5.price.tag.best': 'Best',
|
||
'h5.price.dimensionsToggle': 'More',
|
||
'h5.price.moreOptional': 'Optional',
|
||
'h5.price.moreActive': '{n} filled',
|
||
'h5.price.moreDimsLabel': 'Size (cm)',
|
||
'h5.price.moreGeoLabel': 'State / City',
|
||
'h5.price.dimensionsHint': 'Size for volumetric weight; state/city helps zoning without postal code',
|
||
'h5.price.lengthPh': 'L',
|
||
'h5.price.widthPh': 'W',
|
||
'h5.price.heightPh': 'H',
|
||
'h5.price.provincePh': 'State',
|
||
'h5.price.cityPh': 'City',
|
||
'h5.price.accuracy.postalCta': 'Estimate only — add a postal code for better accuracy',
|
||
'h5.price.accuracy.fillPostal': 'Add postal code',
|
||
'h5.price.accuracy.dismiss': 'Dismiss',
|
||
'h5.price.ai.title': 'AI route pick',
|
||
'h5.price.ai.entry': 'Not sure which? Enter a product name for AI pick',
|
||
'h5.price.ai.placeholder': 'e.g. lipstick, apparel, power bank',
|
||
'h5.price.ai.action': 'AI Recommend',
|
||
'h5.price.ai.needQuotes': 'Run a quote search first, then use AI recommend',
|
||
'h5.price.ai.needName': 'Please enter a product name',
|
||
'h5.price.hint.estimated': 'Indicative only; final after inbound',
|
||
'h5.price.hint.estimatedShort': 'Est. · final after inbound',
|
||
'h5.price.hint.dduExtra': 'Duties may apply at destination',
|
||
'h5.price.chargeableWeightShort': 'Billable {w}KG',
|
||
'h5.price.askAdvisor': 'Ask AI',
|
||
'h5.price.askAiCanShip': 'Can this ship?',
|
||
'h5.price.askAiCheaper': 'Anything cheaper?',
|
||
'h5.price.goOrder': 'Place order',
|
||
'h5.price.goOrderHint': 'Opening place-order…',
|
||
'h5.price.empty': 'Enter country and weight to get quotes',
|
||
'h5.price.noResult': 'No quotes found. Adjust filters or ask the advisor.',
|
||
'h5.price.delivery': 'Transit',
|
||
'h5.price.workingDays': 'business days',
|
||
'h5.price.chargeableWeight': 'Chargeable wt',
|
||
'h5.price.required': 'Please enter destination and weight',
|
||
'h5.price.referenceTip': 'Estimates only — final charges may differ',
|
||
'h5.price.referenceBanner': 'Estimates only. Tap Details for route guide.',
|
||
'h5.price.referenceBannerShort': 'Estimates only',
|
||
'h5.price.referencePrice': 'Est.',
|
||
'h5.price.productGroup': 'Product group',
|
||
'h5.price.cargo': 'Cargo type',
|
||
'h5.price.warehouse': 'Warehouse',
|
||
'h5.price.tradeTerms': 'Trade terms',
|
||
'h5.price.tradeTerms.ddp': 'DDP (duties included)',
|
||
'h5.price.tradeTerms.ddu': 'DDU (duties excluded)',
|
||
'h5.price.detailShort': 'Details',
|
||
'h5.price.viewDetail': 'Route details',
|
||
'h5.price.detailTitle': 'Route details',
|
||
'h5.price.detailTitleNamed': '{name} · Details',
|
||
'h5.price.routeGuide': 'Route guide',
|
||
'h5.price.guideEmpty': 'No route guide yet',
|
||
'h5.price.guideMissing': 'Missing product info for route details',
|
||
'h5.price.guideFailed': 'Failed to load route details',
|
||
'h5.price.freight': 'Freight',
|
||
'h5.price.otherFees': 'Other fees',
|
||
'h5.price.shortcut.US': 'US',
|
||
'h5.price.shortcut.GB': 'UK',
|
||
'h5.price.shortcut.DE': 'DE',
|
||
'h5.price.shortcut.CA': 'CA',
|
||
'h5.price.shortcut.FR': 'FR',
|
||
'h5.price.shortcut.ES': 'ES',
|
||
'h5.price.shortcut.MX': 'MX',
|
||
'h5.price.shortcut.BR': 'BR',
|
||
'h5.price.shortcut.NZ': 'NZ',
|
||
'h5.price.shortcut.IT': 'IT',
|
||
'h5.price.shortcut.NL': 'NL',
|
||
|
||
'h5.orders.title': 'My Orders',
|
||
'h5.orders.searchPlaceholder': 'Waybill / customer / tracking no.',
|
||
'h5.orders.search': 'Search',
|
||
'h5.orders.empty': 'No orders',
|
||
'h5.orders.emptyGoPrice': 'Check rates',
|
||
'h5.orders.fulfill.domestic': 'Domestic',
|
||
'h5.orders.loadMore': 'Load more',
|
||
'h5.orders.todo': 'To-do',
|
||
// Waybill statuses in H5 bootstrap — avoid blocking on full en-US after login
|
||
'order.myOrders.status.draft': 'Draft',
|
||
'order.myOrders.status.predeclared': 'Predeclared',
|
||
'order.myOrders.status.pendingAllocation': 'Pending allocation',
|
||
'order.myOrders.status.pendingPayment': 'Pending payment',
|
||
'order.myOrders.status.pendingShip': 'Pending ship',
|
||
'order.myOrders.status.pendingOnline': 'Pending online',
|
||
'order.myOrders.status.shipping': 'Shipping',
|
||
'order.myOrders.status.deliverySuccess': 'Delivered',
|
||
'order.myOrders.status.deliveryFailed': 'Delivery failed',
|
||
'order.myOrders.status.deleted': 'Deleted',
|
||
'order.myOrders.status.problematic': 'Problematic',
|
||
'order.myOrders.status.claimed': 'Claimed',
|
||
'h5.orders.group.all': 'All',
|
||
'h5.orders.group.actionNeeded': 'Action needed',
|
||
'h5.orders.group.fulfill': 'Fulfill',
|
||
'h5.orders.group.warehouse': 'In warehouse',
|
||
'h5.orders.group.shipping': 'In transit',
|
||
'h5.orders.group.done': 'Delivered',
|
||
'h5.orders.group.issue': 'Issues',
|
||
'h5.orders.pay': 'Pay',
|
||
'h5.orders.track': 'Track',
|
||
'h5.orders.askAdvisor': 'Ask AI',
|
||
'h5.orders.actions.predeclare': 'Re-predeclare',
|
||
'h5.orders.actions.edit': 'Edit',
|
||
'h5.orders.actions.intercept': 'Intercept',
|
||
'h5.orders.actions.cancelIntercept': 'Cancel intercept',
|
||
'h5.orders.actions.busy': 'Working…',
|
||
'h5.orders.batch.entry': 'Batch',
|
||
'h5.orders.batch.done': 'Done',
|
||
'h5.orders.batch.hint': 'Select orders to pay, pre-declare, intercept, or merge pickup. Numbers show eligible count.',
|
||
'h5.orders.batch.selectAll': 'Select page',
|
||
'h5.orders.batch.unselectAll': 'Clear page',
|
||
'h5.orders.batch.selected': '{count} selected',
|
||
'h5.orders.batch.needPay': 'No payable orders in selection',
|
||
'h5.orders.batch.needPredeclare': 'No draft orders to pre-declare',
|
||
'h5.orders.batch.needIntercept': 'No orders eligible to intercept',
|
||
'h5.orders.batch.needCancelIntercept': 'No orders eligible to cancel intercept',
|
||
'h5.orders.batch.needPickup': 'No orders eligible for merge pickup (pre-declared, same warehouse, unbound)',
|
||
'h5.orders.batch.pickupSkipped': 'Skipped {count} orders not eligible for merge pickup',
|
||
'h5.orders.batch.interceptConfirm': 'Intercept {count} selected orders?',
|
||
'h5.orders.batch.cancelInterceptConfirm': 'Cancel intercept on {count} selected orders?',
|
||
'h5.orders.intercept.confirmTitle': 'Submit intercept?',
|
||
'h5.orders.intercept.confirmContent': 'This will request an intercept downstream. Continue?',
|
||
'h5.orders.intercept.confirmOk': 'Submit',
|
||
'h5.orders.intercept.cancelConfirmTitle': 'Cancel intercept?',
|
||
'h5.orders.intercept.cancelConfirmContent': 'This clears the intercept flag. Continue?',
|
||
'h5.orders.intercept.cancelConfirmOk': 'Confirm',
|
||
'h5.orders.intercept.submitSuccess': 'Intercept submitted',
|
||
'h5.orders.intercept.submitFailed': 'Intercept failed',
|
||
'h5.orders.intercept.cancelSuccess': 'Intercept cancelled',
|
||
'h5.orders.intercept.cancelFailed': 'Failed to cancel intercept',
|
||
'h5.orders.predeclareOk': 'Pre-declared',
|
||
'h5.orders.predeclareFailed': 'Pre-declare failed',
|
||
'h5.orders.detail': 'Details',
|
||
'h5.orders.copySuccess': 'Copied',
|
||
'h5.orders.copyFailed': 'Copy failed',
|
||
'h5.orders.payable': 'Due',
|
||
'h5.orders.paid': 'Paid',
|
||
'h5.orders.signTime': 'Signed: ',
|
||
'h5.orders.etaSignTime': 'ETA: ',
|
||
'h5.orders.createTime': 'Created: ',
|
||
'h5.orders.signEarly': '{hours}h earlier than ETA',
|
||
'h5.orders.signLate': '{hours}h later than ETA',
|
||
'h5.orders.signOnTime': 'On time',
|
||
'h5.orders.mergePickup.entry': 'Merge pickup',
|
||
'h5.orders.mergePickup.title': 'Schedule door pickup',
|
||
'h5.orders.mergePickup.cancel': 'Cancel',
|
||
'h5.orders.mergePickup.hint': 'Pre-declared waybills not yet on a pickup sheet, same warehouse only',
|
||
'h5.orders.mergePickup.stepSelect': 'Select',
|
||
'h5.orders.mergePickup.stepForm': 'Details',
|
||
'h5.orders.mergePickup.heroTitle': 'Select waybills to merge',
|
||
'h5.orders.mergePickup.selectableCount': '{count} eligible on this page',
|
||
'h5.orders.mergePickup.predeclaredOnly': 'Pre-declared only',
|
||
'h5.orders.mergePickup.selected': '{count} selected',
|
||
'h5.orders.mergePickup.selectedWithWarehouse': '{count} selected · {warehouse}',
|
||
'h5.orders.mergePickup.next': 'Next',
|
||
'h5.orders.mergePickup.submit': 'Create pickup',
|
||
'h5.orders.mergePickup.createTitle': 'Pickup details',
|
||
'h5.orders.mergePickup.createSub': 'Step 2 · Address & time',
|
||
'h5.orders.mergePickup.needSelect': 'Select waybills first',
|
||
'h5.orders.mergePickup.emptyPredeclared': 'No eligible pre-declared waybills',
|
||
'h5.orders.mergePickup.summaryWarehouse': 'Warehouse',
|
||
'h5.orders.mergePickup.summaryOrders': 'Waybills',
|
||
'h5.orders.mergePickup.moreOptions': 'More options',
|
||
'h5.orders.mergePickup.timePresetTomorrowAm': 'Tomorrow 10:00',
|
||
'h5.orders.mergePickup.timePresetTomorrowPm': 'Tomorrow 14:00',
|
||
'h5.orders.mergePickup.timePresetDayAfterAm': 'Day after 10:00',
|
||
'h5.orders.mergePickup.timeCustom': 'Custom',
|
||
'h5.orders.mergePickup.noSender': 'Add a sender address first',
|
||
'h5.orders.mergePickup.reason.notPredeclared': 'Pre-declared only',
|
||
'h5.orders.mergePickup.reason.alreadyBound': 'Already bound to pickup',
|
||
'h5.orders.mergePickup.reason.noWarehouse': 'Missing warehouse',
|
||
'h5.orders.mergePickup.reason.differentWarehouse': 'Same warehouse required',
|
||
|
||
'h5.orders.detail.title': 'Order detail',
|
||
'h5.orders.detail.overview': 'Overview',
|
||
'h5.orders.detail.track': 'Tracking',
|
||
'h5.orders.detail.fee': 'Fees',
|
||
'h5.orders.detail.waybillNo': 'Waybill',
|
||
'h5.orders.detail.customerOrderNo': 'Customer no.',
|
||
'h5.orders.detail.trackingNo': 'Tracking no.',
|
||
'h5.orders.detail.status': 'Status',
|
||
'h5.orders.detail.channel': 'Channel',
|
||
'h5.orders.detail.country': 'Country',
|
||
'h5.orders.detail.consignee': 'Consignee',
|
||
'h5.orders.detail.weight': 'Chargeable wt',
|
||
'h5.orders.detail.noTrack': 'No tracking yet',
|
||
'h5.orders.detail.noFee': 'No fee details',
|
||
'h5.orders.detail.close': 'Close',
|
||
'h5.orders.detail.predeclareFailReason': 'Pre-declare failure',
|
||
'h5.orders.detail.predeclare': 'Pre-declare again',
|
||
'h5.orders.detail.predeclaring': 'Pre-declaring…',
|
||
'h5.orders.detail.predeclareOk': 'Pre-declared',
|
||
'h5.orders.detail.predeclareFailed': 'Pre-declare failed',
|
||
'h5.orders.detail.fulfillProgress': 'Fulfill progress',
|
||
'h5.orders.detail.domesticTracking': 'Domestic tracking',
|
||
'h5.orders.detail.bindQty': 'Bind qty',
|
||
|
||
'h5.me.guestTitle': 'Welcome to Customer Center',
|
||
'h5.me.guestDesc':
|
||
'Tap authorize in WeChat to sign in. New users can register or bind first.',
|
||
'h5.me.register': 'WeChat register',
|
||
'h5.me.bind': 'Bind existing account',
|
||
'h5.me.bindWechat': 'Bind WeChat',
|
||
'h5.me.bindWechatOpenInWechat': 'Please open this page in WeChat to bind WeChat',
|
||
'h5.me.passwordLogin': 'Password login',
|
||
'h5.me.needLogin': 'Please register or sign in first',
|
||
'h5.me.scanLogin': 'WeChat authorize sign-in',
|
||
|
||
'h5.wxQr.loading': 'Loading QR code…',
|
||
'h5.wxQr.loadFailed': 'Failed to load QR code. Please refresh.',
|
||
'h5.wxQr.refresh': 'Refresh QR code',
|
||
'h5.wxQr.refreshExpired': 'Tap to refresh QR code',
|
||
'h5.wxQr.longPress': 'Long-press → “Recognize QR Code in Image”',
|
||
'h5.wxQr.valid': 'QR code is valid for 10 minutes',
|
||
'h5.wxQr.expired': 'QR code expired',
|
||
'h5.wxQr.expiredTip': 'Refresh before scanning to avoid a failed login',
|
||
'h5.wxQr.scanned': 'Scanned. Signing you in…',
|
||
'h5.wxQr.success': 'Signed in',
|
||
|
||
'h5.login.title': 'Sign in',
|
||
'h5.login.brand': 'IDE Customer Center',
|
||
'h5.login.brandName': 'IDE',
|
||
'h5.login.brandHint': 'Welcome to your IDE portal',
|
||
'h5.login.tab.wechat': 'WeChat',
|
||
'h5.login.tab.password': 'Account',
|
||
'h5.login.switchPassword': 'Sign in with password',
|
||
'h5.login.switchWechat': 'WeChat authorize sign-in',
|
||
'h5.login.or': 'or',
|
||
'h5.login.oauthLogin': 'Sign in with WeChat',
|
||
'h5.login.oauthRedirecting': 'Opening WeChat authorization…',
|
||
'h5.login.oauthLoggingIn': 'Authorized. Signing you in…',
|
||
'h5.login.oauthFailed': 'WeChat sign-in failed. Please retry.',
|
||
'h5.login.openInWechat': 'Open this page in WeChat to use WeChat authorize sign-in',
|
||
'h5.login.accountPlaceholder': 'Phone / email / customer code',
|
||
'h5.login.passwordPlaceholder': 'Enter password',
|
||
'h5.login.accountRequired': 'Please enter account',
|
||
'h5.login.passwordRequired': 'Please enter password',
|
||
'h5.login.agreePrefix': 'I have read and agree to the ',
|
||
'h5.login.privacy': 'Privacy Policy',
|
||
'h5.login.and': ' and ',
|
||
'h5.login.terms': 'Terms',
|
||
'h5.login.needAgree': 'Please accept the Privacy Policy and Terms first',
|
||
'h5.login.submit': 'Sign in',
|
||
'h5.login.submitting': 'Signing in...',
|
||
'h5.login.success': 'Signed in',
|
||
'h5.login.failed': 'Sign-in failed. Check your account and password.',
|
||
'h5.login.newUserHint': 'No account?',
|
||
'h5.login.goRegister': 'Register with WeChat',
|
||
|
||
'h5.recharge.title': 'Recharge',
|
||
'h5.recharge.amount': 'Amount',
|
||
'h5.recharge.custom': 'Custom',
|
||
'h5.recharge.customPlaceholder': 'Enter amount',
|
||
'h5.recharge.payType': 'Payment method',
|
||
'h5.recharge.wechat': 'WeChat Pay',
|
||
'h5.recharge.alipay': 'Alipay',
|
||
'h5.recharge.qrTip': 'Scan to transfer, then upload the voucher',
|
||
'h5.recharge.voucher': 'Transfer voucher (optional)',
|
||
'h5.recharge.upload': 'Upload',
|
||
'h5.recharge.submit': 'Submit for review',
|
||
'h5.recharge.needAmount': 'Please select or enter an amount',
|
||
'h5.recharge.success': 'Submitted. Pending review.',
|
||
'h5.recharge.failed': 'Submit failed',
|
||
'h5.recharge.backMe': 'Back to Me',
|
||
'h5.recharge.done': 'Done',
|
||
|
||
'h5.orderType.title': 'Choose order type',
|
||
'h5.orderType.subtitle': 'Select the type of order to create',
|
||
'h5.orderType.logistics': 'Shipping order',
|
||
'h5.orderType.logisticsDesc': 'Ship overseas — recipient & declaration',
|
||
'h5.orderType.pickup': 'Pickup order',
|
||
'h5.orderType.pickupDesc': 'Select pre-declared waybills to schedule door pickup',
|
||
|
||
'h5.contact.title': 'Add your contact details',
|
||
'h5.contact.desc':
|
||
'Please leave a phone number and email before ordering or scheduling pickup. We use them for customs documents, delivery updates, and fee confirmations — so shipments are not delayed waiting for a reply.',
|
||
'h5.contact.cancel': 'Cancel',
|
||
'h5.contact.saveContinue': 'Save & continue',
|
||
'h5.contact.saved': 'Saved — you can continue',
|
||
'h5.contact.saveFailed': 'Save failed. Please retry.',
|
||
'h5.contact.phoneInvalid': 'Enter a valid phone number',
|
||
'h5.contact.emailInvalid': 'Enter a valid email',
|
||
'h5.contact.requiredToast': 'Add phone and email to continue ordering',
|
||
'h5.pickupCreate.title': 'Create pickup order',
|
||
|
||
'h5.placeOrder.title': 'Place order',
|
||
'h5.placeOrder.editTitle': 'Edit order',
|
||
'h5.placeOrder.save': 'Save',
|
||
'h5.placeOrder.saving': 'Saving…',
|
||
'h5.placeOrder.editSaved': 'Order saved',
|
||
'h5.placeOrder.editSaveFailed': 'Save failed',
|
||
'h5.placeOrder.editLoadFailed': 'Failed to load order',
|
||
'h5.placeOrder.mock': 'Mock order',
|
||
'h5.placeOrder.mockFilled': 'Mock order filled',
|
||
'h5.placeOrder.stepBasic': 'Basic',
|
||
'h5.placeOrder.stepReceiver': 'Receiver',
|
||
'h5.placeOrder.stepDeclaration': 'Declaration',
|
||
'h5.placeOrder.fromPriceCheck': 'Some fields were filled from price check',
|
||
'h5.placeOrder.handoffFilled': 'Filled: {items}',
|
||
'h5.placeOrder.clientNo': 'Customer order No.',
|
||
'h5.placeOrder.clientNoPh': 'Auto-generated or enter your own',
|
||
'h5.placeOrder.product': 'Shipping method',
|
||
'h5.placeOrder.productPh': 'Select product',
|
||
'h5.placeOrder.additionalServices': 'Additional services',
|
||
'h5.placeOrder.cargo': 'Cargo type',
|
||
'h5.placeOrder.warehouse': 'Warehouse',
|
||
'h5.placeOrder.weight': 'Weight (kg)',
|
||
'h5.placeOrder.weightPh': 'Enter weight',
|
||
'h5.placeOrder.dimensions': 'Dimensions (cm)',
|
||
'h5.placeOrder.length': 'L',
|
||
'h5.placeOrder.width': 'W',
|
||
'h5.placeOrder.height': 'H',
|
||
'h5.placeOrder.sender': 'Sender address',
|
||
'h5.placeOrder.senderPh': 'Select saved sender',
|
||
'h5.placeOrder.senderEmpty': 'No sender address yet. Add one before placing an order.',
|
||
'h5.placeOrder.addSender': 'Add sender',
|
||
'h5.placeOrder.cancelAddSender': 'Cancel',
|
||
'h5.placeOrder.senderNamePh': 'Sender name',
|
||
'h5.placeOrder.senderPhonePh': 'Phone',
|
||
'h5.placeOrder.senderProvincePh': 'Province / State',
|
||
'h5.placeOrder.senderCityPh': 'City',
|
||
'h5.placeOrder.senderAddressPh': 'Street address',
|
||
'h5.placeOrder.saveSender': 'Save sender',
|
||
'h5.placeOrder.savingSender': 'Saving…',
|
||
'h5.placeOrder.senderSaved': 'Sender address saved',
|
||
'h5.placeOrder.senderSaveFailed': 'Failed to save sender address',
|
||
'h5.placeOrder.default': 'Default',
|
||
'h5.placeOrder.receiverName': 'Recipient',
|
||
'h5.placeOrder.receiverPhone': 'Phone',
|
||
'h5.placeOrder.company': 'Company',
|
||
'h5.placeOrder.telePhone': 'Tel',
|
||
'h5.placeOrder.email': 'Email',
|
||
'h5.placeOrder.streetNumber': 'House No.',
|
||
'h5.placeOrder.country': 'Country',
|
||
'h5.placeOrder.address': 'Address 1',
|
||
'h5.placeOrder.address2': 'Address 2',
|
||
'h5.placeOrder.address3': 'Address 3',
|
||
'h5.placeOrder.city': 'City',
|
||
'h5.placeOrder.province': 'State / Province',
|
||
'h5.placeOrder.zip': 'Postal code',
|
||
'h5.placeOrder.taxNo': 'Tax No.',
|
||
'h5.placeOrder.taxType': 'Tax type',
|
||
'h5.placeOrder.certificateNo': 'ID No.',
|
||
'h5.placeOrder.certificateType': 'ID type',
|
||
'h5.placeOrder.typePh': 'Number, e.g. 0',
|
||
'h5.placeOrder.eori': 'EORI',
|
||
'h5.placeOrder.vat': 'VAT',
|
||
'h5.placeOrder.currency': 'Declared currency',
|
||
'h5.placeOrder.declaredTotal': 'Declared total',
|
||
'h5.placeOrder.declaredTotalPh': 'Editable — reverse unit price',
|
||
'h5.placeOrder.inboundMethod': 'Inbound method',
|
||
'h5.placeOrder.inboundSelfShip': 'Self ship',
|
||
'h5.placeOrder.inboundDoorPickup': 'Door pickup',
|
||
'h5.placeOrder.inboundDoorPickupHint':
|
||
'Door pickup is a paid service. Please fill in the pickup address and expected time.',
|
||
'h5.placeOrder.selfShipAddressTitle': 'Ship to warehouse',
|
||
'h5.placeOrder.selfShipRecipient': 'Recipient',
|
||
'h5.placeOrder.selfShipPhone': 'Phone',
|
||
'h5.placeOrder.selfShipAddress': 'Address',
|
||
'h5.placeOrder.selfShipRemark': 'Remark',
|
||
'h5.placeOrder.selfShipCopy': 'Copy',
|
||
'h5.placeOrder.selfShipCopySuccess': 'Warehouse shipping info copied',
|
||
'h5.placeOrder.selfShipSelectWarehouse': 'Select a warehouse first',
|
||
'h5.placeOrder.selfShipCurrent': 'Current',
|
||
'h5.placeOrder.selfShipNoWarehouse': 'No warehouse info yet. Retry later or contact support.',
|
||
'h5.placeOrder.selfShipNoAddressConfigured':
|
||
'No warehouse has a shipping address configured. Contact support.',
|
||
'h5.placeOrder.selfShipAddressEmpty': 'No shipping address configured',
|
||
'h5.placeOrder.selfShipAddressHint':
|
||
'Ship to the selected warehouse address yourself. Put the client number on the courier label so the warehouse can match it.',
|
||
'h5.placeOrder.pickupAddress': 'Pickup address',
|
||
'h5.placeOrder.pickupAddressPh': 'Select a saved sender address',
|
||
'h5.placeOrder.expectPickupTime': 'Expected pickup time',
|
||
'h5.placeOrder.expectPickupTimePh': 'Select expected pickup time',
|
||
'h5.placeOrder.carrierService': 'Carrier service',
|
||
'h5.placeOrder.carrierServicePh': 'Select a domestic pickup product (optional)',
|
||
'h5.placeOrder.doorPickupBatchHint':
|
||
'For multiple shipments, select orders in My Orders to create pickups in bulk',
|
||
'h5.placeOrder.showReceiverOptional': 'More optional',
|
||
'h5.placeOrder.hideReceiverOptional': 'Hide optional',
|
||
'h5.placeOrder.enName': 'Item name (EN)',
|
||
'h5.placeOrder.cnName': 'Item name (CN)',
|
||
'h5.placeOrder.sku': 'SKU',
|
||
'h5.placeOrder.unit': 'Unit',
|
||
'h5.placeOrder.unitPrice': 'Unit price',
|
||
'h5.placeOrder.unitWeight': 'Unit weight',
|
||
'h5.placeOrder.qty': 'Qty',
|
||
'h5.placeOrder.amount': 'Amount',
|
||
'h5.placeOrder.itemWeight': 'Weight',
|
||
'h5.placeOrder.imHsCode': 'Import HS',
|
||
'h5.placeOrder.exHsCode': 'Export HS',
|
||
'h5.placeOrder.declareElement': 'Export declare element',
|
||
'h5.placeOrder.brand': 'Brand',
|
||
'h5.placeOrder.model': 'Model',
|
||
'h5.placeOrder.material': 'Material',
|
||
'h5.placeOrder.enMaterial': 'Material (EN)',
|
||
'h5.placeOrder.purpose': 'Purpose',
|
||
'h5.placeOrder.originCountry': 'Origin',
|
||
'h5.placeOrder.category': 'Category',
|
||
'h5.placeOrder.specifications': 'Specs',
|
||
'h5.placeOrder.salesLink': 'Sales link',
|
||
'h5.placeOrder.comment': 'Comment',
|
||
'h5.placeOrder.itemTitle': 'Item {n}',
|
||
'h5.placeOrder.showMore': 'More fields',
|
||
'h5.placeOrder.hideMore': 'Hide more',
|
||
'h5.placeOrder.addItem': 'Add item',
|
||
'h5.placeOrder.removeItem': 'Remove',
|
||
'h5.placeOrder.err.itemsEmpty': 'Add at least one declaration item',
|
||
'h5.placeOrder.err.itemLine': 'Item {n}: {msg}',
|
||
'h5.placeOrder.prev': 'Back',
|
||
'h5.placeOrder.next': 'Next',
|
||
'h5.placeOrder.aiParse': 'AI analyze',
|
||
'h5.placeOrder.aiParseTitle': 'Paste address · AI analyze',
|
||
'h5.placeOrder.aiParseHint':
|
||
'About 60% of overseas delivery failures are due to incomplete address info',
|
||
'h5.placeOrder.aiParsePlaceholder':
|
||
'e.g. John Smith, +1 310-555-0199, 1001 Sunset Blvd, Los Angeles, CA 90001, USA',
|
||
'h5.placeOrder.aiParseProvider': 'AI provider',
|
||
'h5.placeOrder.aiParseModel': 'Model',
|
||
'h5.placeOrder.aiParseSkill': 'Skill card',
|
||
'h5.placeOrder.aiParseNeedProvider': 'Select an AI provider',
|
||
'h5.placeOrder.aiParseNeedModel': 'Select a model',
|
||
'h5.placeOrder.aiParseNeedSkill': 'Select a skill card',
|
||
'h5.placeOrder.aiParseCancel': 'Close',
|
||
'h5.placeOrder.aiParseConfirm': 'AI analyze & fill',
|
||
'h5.placeOrder.aiParseLoading': 'Analyzing…',
|
||
'h5.placeOrder.aiParseEmpty': 'Paste an address first',
|
||
'h5.placeOrder.aiParseSuccess': 'Recipient fields updated',
|
||
'h5.placeOrder.aiParseFailed': 'AI analyze failed',
|
||
'h5.placeOrder.aiParseComplete': 'Address looks complete and was filled in',
|
||
'h5.placeOrder.aiParseRequiredOk': 'Required fields OK. ',
|
||
'h5.placeOrder.aiParseRequiredOkShort': 'Required fields OK — please double-check details',
|
||
'h5.placeOrder.aiParseIncomplete': 'Still incomplete — please fill remaining fields',
|
||
'h5.placeOrder.aiParseMissingRequired': 'Missing required: ',
|
||
'h5.placeOrder.aiParseMissingRecommended': 'Suggested: ',
|
||
'h5.placeOrder.submit': 'Confirm order',
|
||
'h5.placeOrder.submitting': 'Submitting…',
|
||
'h5.placeOrder.successTitle': 'Order created',
|
||
'h5.placeOrder.successContent': 'You can view and pay the order in Orders.',
|
||
'h5.placeOrder.goOrders': 'Go to Orders',
|
||
'h5.placeOrder.stay': 'Stay',
|
||
'h5.placeOrder.failed': 'Failed to create order',
|
||
'h5.placeOrder.failTitle': 'Order was not placed',
|
||
'h5.placeOrder.failTitleDraft': 'Pre-declaration failed (draft saved)',
|
||
'h5.placeOrder.failWhat': 'Failure reason',
|
||
'h5.placeOrder.failHow': 'Tip',
|
||
'h5.placeOrder.failRaw': 'System response',
|
||
'h5.placeOrder.failDraftNote': 'Draft saved — edit then pre-declare',
|
||
'h5.placeOrder.failNotSavedNote': 'Order was not saved',
|
||
'h5.placeOrder.failContinue': 'Continue editing',
|
||
'h5.placeOrder.failSaveDraft': 'Save as draft',
|
||
'h5.placeOrder.failSaveDraftOk': 'Saved as draft',
|
||
'h5.placeOrder.failSaveDraftFailed': 'Failed to save draft',
|
||
'h5.placeOrder.failSaveDraftGo': 'Open draft',
|
||
'h5.placeOrder.failSaveDraftStay': 'Stay',
|
||
'h5.placeOrder.failGoDraft': 'Open draft & pre-declare',
|
||
'h5.placeOrder.failAbandon': 'Discard',
|
||
'h5.placeOrder.failCancelDraft': 'Cancel (delete draft)',
|
||
'h5.placeOrder.failAbandonTitle': 'Discard this form?',
|
||
'h5.placeOrder.failAbandonContent': 'The current form will be cleared.',
|
||
'h5.placeOrder.failAbandonOk': 'Discard',
|
||
'h5.placeOrder.failAbandonDone': 'Cleared',
|
||
'h5.placeOrder.failCancelDraftTitle': 'Cancel this submission?',
|
||
'h5.placeOrder.failCancelDraftContent': 'The draft just saved will be deleted.',
|
||
'h5.placeOrder.failCancelDraftOk': 'Delete draft',
|
||
'h5.placeOrder.failKeep': 'Keep editing',
|
||
'h5.placeOrder.failCancelDraftDone': 'Draft deleted',
|
||
'h5.placeOrder.failCancelDraftFailed': 'Failed to delete',
|
||
'h5.placeOrder.optionsFailed': 'Failed to load options',
|
||
'h5.placeOrder.err.clientNo': 'Enter customer order No.',
|
||
'h5.placeOrder.err.product': 'Select shipping method',
|
||
'h5.placeOrder.err.cargo': 'Select cargo type',
|
||
'h5.placeOrder.err.warehouse': 'Select warehouse',
|
||
'h5.placeOrder.err.weight': 'Enter weight',
|
||
'h5.placeOrder.err.length': 'Enter length',
|
||
'h5.placeOrder.err.width': 'Enter width',
|
||
'h5.placeOrder.err.height': 'Enter height',
|
||
'h5.placeOrder.err.sender': 'Select a sender address',
|
||
'h5.placeOrder.err.senderEmpty': 'Add a sender address before placing an order',
|
||
'h5.placeOrder.err.inboundPickupSender': 'Door pickup requires a pickup address',
|
||
'h5.placeOrder.err.expectPickupTime': 'Door pickup requires an expected pickup time',
|
||
'h5.placeOrder.err.senderForm': 'Enter sender name and street address',
|
||
'h5.placeOrder.err.receiverName': 'Enter recipient',
|
||
'h5.placeOrder.err.receiverPhone': 'Enter phone',
|
||
'h5.placeOrder.err.country': 'Select country',
|
||
'h5.placeOrder.err.address': 'Enter address',
|
||
'h5.placeOrder.err.zip': 'Enter postal code',
|
||
'h5.placeOrder.err.currency': 'Select currency',
|
||
'h5.placeOrder.err.enName': 'Enter English item name',
|
||
'h5.placeOrder.err.unitPrice': 'Enter unit price',
|
||
'h5.placeOrder.err.unitWeight': 'Enter unit weight',
|
||
'h5.placeOrder.err.qty': 'Enter quantity',
|
||
'h5.placeOrder.packageQty': 'Packages',
|
||
'h5.placeOrder.packageQtyPh': 'Default 1',
|
||
'h5.placeOrder.packageQtyHint': 'How many boxes in this shipment — usually 1',
|
||
'h5.placeOrder.exportCustomsMode': 'Export customs mode',
|
||
'h5.placeOrder.exportCustomsModePh': 'Optional — defaults to simplified',
|
||
'h5.placeOrder.summaryNeedTitle': 'Summary declaration needs filings',
|
||
'h5.placeOrder.summaryNeedDesc':
|
||
'Choose your export qualification and enter the ecommerce platform for compliance.',
|
||
'h5.placeOrder.exportQualification': 'Export qualification',
|
||
'h5.placeOrder.exportQualificationPh': 'Select a filing',
|
||
'h5.placeOrder.exportQualificationEmpty':
|
||
'No filings yet. Please add them on desktop (Export Qualification) first.',
|
||
'h5.placeOrder.exportQualificationLoadFailed': 'Failed to load export qualifications',
|
||
'h5.placeOrder.platformCode': 'Ecommerce platform',
|
||
'h5.placeOrder.platformCodePh': 'e.g. Amazon / eBay / Shopify',
|
||
'h5.placeOrder.receiverAddressBook': 'Saved recipients',
|
||
'h5.placeOrder.receiverAddressBookPh': 'Fill from address book',
|
||
'h5.placeOrder.receiverAddressBookHint':
|
||
'Pick a saved address, or fill manually and tap Save for next time',
|
||
'h5.placeOrder.saveReceiver': 'Save',
|
||
'h5.placeOrder.savingReceiver': 'Saving…',
|
||
'h5.placeOrder.saveReceiverRequired': 'Enter recipient name and address line 1 first',
|
||
'h5.placeOrder.saveReceiverSuccess': 'Recipient address saved',
|
||
'h5.placeOrder.saveReceiverFailed': 'Failed to save recipient address',
|
||
'h5.placeOrder.receiverLoadFailed': 'Failed to load recipient addresses',
|
||
'h5.placeOrder.pickSku': 'Pick warehouse SKU',
|
||
'h5.placeOrder.pickSkuHint': 'Auto-fills name, weight, HS codes — then confirm unit price',
|
||
'h5.placeOrder.skuPickTitle': 'Select warehouse SKU',
|
||
'h5.placeOrder.skuPickTip':
|
||
'Tap a SKU to fill declaration fields. Empty rows are preferred; otherwise a new row is added.',
|
||
'h5.placeOrder.skuPickSearch': 'Search SKU code or name',
|
||
'h5.placeOrder.skuPickEmpty': 'No SKUs yet. Add warehouse items on desktop first.',
|
||
'h5.placeOrder.skuPickUse': 'Use',
|
||
'h5.placeOrder.skuPickPrev': 'Prev',
|
||
'h5.placeOrder.skuPickNext': 'Next',
|
||
'h5.placeOrder.skuPickFilled': 'Declaration filled — please confirm required fields',
|
||
'h5.placeOrder.isMagnetic': 'Battery / magnetic',
|
||
'h5.placeOrder.isMagneticHint': 'Turn on if the item has a battery or strong magnet',
|
||
'h5.placeOrder.skuImage': 'Product image',
|
||
'h5.placeOrder.skuImagePh': 'Image URL (optional)',
|
||
'h5.placeOrder.brandType': 'Brand type',
|
||
'h5.placeOrder.distribution': 'Fulfillment note',
|
||
'h5.placeOrder.attributes': 'Attributes',
|
||
'h5.placeOrder.customsGuideTitle': 'Which customs mode?',
|
||
'h5.placeOrder.customsGuideLead':
|
||
'Not sure? Start with whether you need tax refund or a formal customs declaration.',
|
||
'h5.placeOrder.customsGuideSimpleBadge': 'Best for most shippers',
|
||
'h5.placeOrder.customsGuideSimpleTitle': '9610 simplified',
|
||
'h5.placeOrder.customsGuideSimpleDesc': 'Faster shipping with fewer steps for everyday parcels.',
|
||
'h5.placeOrder.customsGuideSimpleLi1': 'Usually no export qualification required',
|
||
'h5.placeOrder.customsGuideSimpleLi2': 'Great when you just need to ship out',
|
||
'h5.placeOrder.customsGuideSummaryBadge': 'Tax refund / formal filing',
|
||
'h5.placeOrder.customsGuideSummaryTitle': '9610 summary',
|
||
'h5.placeOrder.customsGuideSummaryDesc':
|
||
'Formal customs path — prepare export qualification filings first.',
|
||
'h5.placeOrder.customsGuideSummaryLi1': 'Select an export qualification when ordering',
|
||
'h5.placeOrder.customsGuideSummaryLi2': 'Enter ecommerce platform (e.g. Amazon)',
|
||
'h5.placeOrder.customsGuideSummaryLi3': 'Maintain filings on desktop beforehand',
|
||
'h5.placeOrder.customsGuideNote':
|
||
'Still unsure? Choose simplified, or ask your dedicated advisor.',
|
||
'h5.placeOrder.customsGuideOk': 'Got it',
|
||
'h5.placeOrder.err.packageQty': 'Enter package quantity',
|
||
'h5.placeOrder.err.exportQualification': 'Select export qualification for summary mode',
|
||
'h5.placeOrder.err.platformCode': 'Enter ecommerce platform for summary mode',
|
||
|
||
'h5.me.coupons': 'Coupons',
|
||
'h5.me.couponsDesc': 'Save more on every order',
|
||
'h5.me.couponsDescReady': '{count} ready to use',
|
||
'h5.me.storeOrders': 'Store orders',
|
||
'h5.me.storeOrdersDesc': 'Pull, sync & track fulfillment',
|
||
'h5.me.opening': 'Loading…',
|
||
'h5.me.openFailed': 'Failed to open, please retry',
|
||
'h5.me.invite': 'Invite',
|
||
'h5.me.inviteDesc': 'Invite friends — both win',
|
||
'h5.me.commission': 'Commission',
|
||
'h5.me.commissionDesc': 'Withdraw or top up balance',
|
||
'h5.me.placeOrder': 'Order',
|
||
'h5.me.placeOrderDesc': 'Ship in a few taps',
|
||
'h5.me.section.services': 'Services',
|
||
'h5.me.section.account': 'Account',
|
||
'h5.me.onlineKf': 'Dedicated advisor',
|
||
'h5.me.section.journey': 'Shipping guide',
|
||
|
||
'h5.storeOrders.title': 'Store orders',
|
||
'h5.storeOrders.searchPlaceholder': 'Platform order no.',
|
||
'h5.storeOrders.search': 'Search',
|
||
'h5.storeOrders.empty': 'No store orders yet',
|
||
'h5.storeOrders.loadMore': 'Load more',
|
||
'h5.storeOrders.loadFailed': 'Failed to load. Try again.',
|
||
'h5.storeOrders.recipient': 'Recipient',
|
||
'h5.storeOrders.amount': 'Amount',
|
||
'h5.storeOrders.itemCount': '{n} item(s)',
|
||
'h5.storeOrders.linkedServiceNo': 'Linked waybill',
|
||
'h5.storeOrders.detail': 'Details',
|
||
'h5.storeOrders.sync': 'Sync',
|
||
'h5.storeOrders.syncing': 'Syncing…',
|
||
'h5.storeOrders.syncOk': 'Synced',
|
||
'h5.storeOrders.syncFailed': 'Sync failed',
|
||
'h5.storeOrders.copied': 'Copied',
|
||
'h5.storeOrders.copyFailed': 'Copy failed',
|
||
'h5.storeOrders.platform.all': 'All platforms',
|
||
'h5.storeOrders.platform.label': 'Platform',
|
||
'h5.storeOrders.status.all': 'All',
|
||
'h5.storeOrders.status.pending': 'Pending',
|
||
'h5.storeOrders.status.toShip': 'To ship',
|
||
'h5.storeOrders.status.shipped': 'Shipped',
|
||
'h5.storeOrders.status.suspended': 'Suspended',
|
||
'h5.storeOrders.status.canceled': 'Canceled',
|
||
'h5.storeOrders.status.completed': 'Completed',
|
||
'h5.storeOrders.noProduct': 'No product info',
|
||
'h5.storeOrders.fetchLabel': 'Get label',
|
||
'h5.storeOrders.fetchLabelBusy': 'Fetching…',
|
||
'h5.storeOrders.fetchLabelOk': 'Label ready',
|
||
'h5.storeOrders.fetchLabelEmpty': 'No label yet',
|
||
'h5.storeOrders.fetchLabelFailed': 'Failed to fetch label',
|
||
'h5.storeOrders.pull.entry': 'Pull',
|
||
'h5.storeOrders.batch.entry': 'Batch',
|
||
'h5.storeOrders.batch.done': 'Done',
|
||
'h5.storeOrders.batch.hint': 'Select orders to sync, RTS or create waybills; Pull needs no selection',
|
||
'h5.storeOrders.batch.selectAll': 'Select page',
|
||
'h5.storeOrders.batch.unselectAll': 'Clear page',
|
||
'h5.storeOrders.batch.selected': '{count} selected',
|
||
'h5.storeOrders.batch.needSelect': 'Select orders first',
|
||
'h5.storeOrders.batch.syncConfirm': 'Sync {count} selected order(s)?',
|
||
'h5.storeOrders.batch.actionResult': '{success} ok, {fail} failed',
|
||
'h5.storeOrders.batch.rts': 'Ready to ship',
|
||
'h5.storeOrders.batch.rtsConfirm': 'Mark {count} order(s) ready to ship?',
|
||
'h5.storeOrders.batch.rtsSkipTemu': '({count} Temu skipped)',
|
||
'h5.storeOrders.batch.needRts': 'No RTS-eligible orders (Temu/suspended excluded)',
|
||
'h5.storeOrders.batch.rtsFailed': 'Ready-to-ship failed',
|
||
'h5.storeOrders.batch.createLogistics': 'Create waybill',
|
||
'h5.storeOrders.batch.createFulfill': 'Create fulfill',
|
||
'h5.storeOrders.batch.needCreate': 'Select pending orders without a linked waybill',
|
||
'h5.storeOrders.batch.createMax': 'Up to 50 orders per batch',
|
||
'h5.storeOrders.batch.createFiltered': '{count} ineligible order(s) excluded',
|
||
'h5.storeOrders.create.logisticsTitle': 'Create waybill',
|
||
'h5.storeOrders.create.fulfillTitle': 'Create fulfill waybill',
|
||
'h5.storeOrders.create.hint': 'Create logistics for {count} order(s)',
|
||
'h5.storeOrders.create.logisticsLead': 'Pick product, check address & lines, then submit',
|
||
'h5.storeOrders.create.fulfillLead': 'Pick warehouse, bind stock, then create',
|
||
'h5.storeOrders.create.readyMeta': '{total} order(s) · {ready} ready',
|
||
'h5.storeOrders.create.product': 'Service / product',
|
||
'h5.storeOrders.create.productRequired': 'Select a sales product',
|
||
'h5.storeOrders.create.pickProduct': 'Select a product',
|
||
'h5.storeOrders.create.searchProduct': 'Search product',
|
||
'h5.storeOrders.create.warehouse': 'Warehouse',
|
||
'h5.storeOrders.create.warehouseRequired': 'Select a warehouse',
|
||
'h5.storeOrders.create.pickWarehouse': 'Select a warehouse',
|
||
'h5.storeOrders.create.searchWarehouse': 'Search warehouse',
|
||
'h5.storeOrders.create.noProduct': 'No sales products',
|
||
'h5.storeOrders.create.noWarehouse': 'No warehouses',
|
||
'h5.storeOrders.create.fulfillTip': 'Tap Auto-bind first, then fix remaining orders manually',
|
||
'h5.storeOrders.create.autoBind': 'Auto-bind inventory',
|
||
'h5.storeOrders.create.autoBinding': 'Binding…',
|
||
'h5.storeOrders.create.autoBindResult': '{ok} matched, {fail} failed',
|
||
'h5.storeOrders.create.autoBindFailed': 'Auto-bind failed',
|
||
'h5.storeOrders.create.orderList': 'Orders to create',
|
||
'h5.storeOrders.create.bindQtyShort': 'Bound {n}',
|
||
'h5.storeOrders.create.tabInfo': 'Address / items',
|
||
'h5.storeOrders.create.tabBind': 'Stock bind',
|
||
'h5.storeOrders.create.receiverTitle': 'Recipient',
|
||
'h5.storeOrders.create.linesTitle': 'Line items',
|
||
'h5.storeOrders.create.bindTitle': 'Bound inventory',
|
||
'h5.storeOrders.create.bindMeta': 'Order {order} / Bound {bind}',
|
||
'h5.storeOrders.create.qtyDiff': 'Qty mismatch: order {order} / bound {bind}',
|
||
'h5.storeOrders.create.bindEmpty': 'Not bound yet — auto-bind or pick below',
|
||
'h5.storeOrders.create.pickInventory': 'Pick inventory',
|
||
'h5.storeOrders.create.searchInventory': 'Search SKU / name',
|
||
'h5.storeOrders.create.available': 'Avail {n}',
|
||
'h5.storeOrders.create.noInventoryCand': 'No inventory candidates',
|
||
'h5.storeOrders.create.tagReceiver': 'Missing recipient',
|
||
'h5.storeOrders.create.tagLines': 'No lines',
|
||
'h5.storeOrders.create.tagUnbound': 'Unbound',
|
||
'h5.storeOrders.create.tagBound': '{n} bound',
|
||
'h5.storeOrders.create.tagQtyDiff': 'Qty mismatch',
|
||
'h5.storeOrders.create.tagQtyOk': 'Bound',
|
||
'h5.storeOrders.create.tagOk': 'Ready',
|
||
'h5.storeOrders.create.formIncomplete': 'Fix highlighted / unbound orders first',
|
||
'h5.storeOrders.create.logisticsConfirm':
|
||
'Create {count} waybill(s) with {product}. Continue?',
|
||
'h5.storeOrders.create.fulfillConfirm':
|
||
'Create {count} fulfill waybill(s) with {product} from {warehouse}. Continue?',
|
||
'h5.storeOrders.create.cancel': 'Cancel',
|
||
'h5.storeOrders.create.submit': 'Create',
|
||
'h5.storeOrders.create.submitting': 'Creating…',
|
||
'h5.storeOrders.create.result': '{success} ok, {fail} failed',
|
||
'h5.storeOrders.create.success': 'Created {count} order(s)',
|
||
'h5.storeOrders.create.partial': '{success} ok, {fail} failed. {detail}',
|
||
'h5.storeOrders.create.failed': 'Create failed',
|
||
'h5.storeOrders.create.noMappedSku': 'Order {no} has no mapped shippable SKU',
|
||
'h5.storeOrders.create.noInventory': 'Order {no}: no inventory for SKU {sku}',
|
||
'h5.storeOrders.create.inventoryShort': 'Order {no}: short stock for {sku}',
|
||
'h5.storeOrders.pull.title': 'Pull from stores',
|
||
'h5.storeOrders.pull.hint': 'Pick stores and date range to pull orders',
|
||
'h5.storeOrders.pull.stores': 'Stores',
|
||
'h5.storeOrders.pull.noStore': 'No authorized stores',
|
||
'h5.storeOrders.pull.range': 'Date range',
|
||
'h5.storeOrders.pull.today': 'Today',
|
||
'h5.storeOrders.pull.days7': 'Last 7 days',
|
||
'h5.storeOrders.pull.days30': 'Last 30 days',
|
||
'h5.storeOrders.pull.cancel': 'Cancel',
|
||
'h5.storeOrders.pull.submit': 'Pull orders',
|
||
'h5.storeOrders.pull.submitting': 'Pulling…',
|
||
'h5.storeOrders.pull.selectStore': 'Select at least one store',
|
||
'h5.storeOrders.pull.result': '{success} ok, {fail} failed',
|
||
'h5.storeOrders.pull.failed': 'Pull failed',
|
||
'h5.storeOrders.detail.title': 'Order detail',
|
||
'h5.storeOrders.detail.failed': 'Order missing or failed to load',
|
||
'h5.storeOrders.detail.basic': 'Basics',
|
||
'h5.storeOrders.detail.recipient': 'Recipient',
|
||
'h5.storeOrders.detail.lines': 'Line items',
|
||
'h5.storeOrders.detail.shipping': 'Fulfillment',
|
||
'h5.storeOrders.detail.noLines': 'No line items',
|
||
'h5.storeOrders.detail.shipExcluded': 'Not shipping',
|
||
'h5.storeOrders.detail.openLabel': 'Open label',
|
||
'h5.storeOrders.detail.platformStatus': 'Platform status',
|
||
'h5.storeOrders.detail.items': 'Items',
|
||
'h5.storeOrders.detail.orderTime': 'Ordered at',
|
||
'h5.storeOrders.detail.lastSync': 'Last sync',
|
||
'h5.storeOrders.detail.phone': 'Phone',
|
||
'h5.storeOrders.detail.email': 'Email',
|
||
'h5.storeOrders.detail.country': 'Country',
|
||
'h5.storeOrders.detail.province': 'State/Province',
|
||
'h5.storeOrders.detail.city': 'City',
|
||
'h5.storeOrders.detail.zip': 'ZIP',
|
||
'h5.storeOrders.detail.address1': 'Address 1',
|
||
'h5.storeOrders.detail.address2': 'Address 2',
|
||
'h5.storeOrders.detail.labelNo': 'Label no.',
|
||
|
||
'h5.journey.title': 'Shipping guide',
|
||
'h5.journey.lead': 'Quote → order → pickup → pay → deliver',
|
||
'h5.journey.expand': 'Expand',
|
||
'h5.journey.collapse': 'Collapse',
|
||
'h5.journey.summaryPay': '{count} pending payment(s) — expand to continue',
|
||
'h5.journey.payCta': 'Pay {count} order(s)',
|
||
'h5.journey.badge': 'For you',
|
||
'h5.journey.tip': 'Tip: create a logistics order first, then ship or request pickup. Pending payments highlight “Pay”.',
|
||
'h5.journey.step.price': 'Get a quote',
|
||
'h5.journey.step.priceHint': 'Pick country & weight, compare first',
|
||
'h5.journey.step.warehouse': 'Warehouse address',
|
||
'h5.journey.step.warehouseHint': 'Copy recipient / phone / address',
|
||
'h5.journey.step.order': 'Create logistics order',
|
||
'h5.journey.step.orderHint': 'Fill receiver & declaration',
|
||
'h5.journey.step.ship': 'Pickup / ship to warehouse',
|
||
'h5.journey.step.shipHint': 'After ordering: self-ship or request pickup',
|
||
'h5.journey.step.pay': 'Pay freight',
|
||
'h5.journey.step.payHint': 'Pay pending orders with balance',
|
||
'h5.journey.step.done': 'Track & deliver',
|
||
'h5.journey.step.doneHint': 'Follow tracking until signed',
|
||
|
||
'h5.journey.warehouse.title': 'Warehouse addresses',
|
||
'h5.journey.warehouse.lead': 'Ship to these warehouses and note your customer code for inbound.',
|
||
'h5.journey.warehouse.empty': 'No warehouse addresses',
|
||
'h5.journey.warehouse.copy': 'Copy',
|
||
'h5.journey.warehouse.recipient': 'Recipient: ',
|
||
'h5.journey.warehouse.phone': 'Phone: ',
|
||
'h5.journey.warehouse.address': 'Address: ',
|
||
'h5.journey.warehouse.remark': 'Remark: ',
|
||
|
||
'h5.journey.ship.title': 'Pickup / ship to warehouse',
|
||
'h5.journey.ship.lead': 'Create a logistics order first. Then either self-ship to the warehouse, or add a sender address and request pickup.',
|
||
'h5.journey.ship.selfTitle': 'I’ll ship myself',
|
||
'h5.journey.ship.selfDesc': 'Copy warehouse address and mark your customer code',
|
||
'h5.journey.ship.pickupTitle': 'Request pickup',
|
||
'h5.journey.ship.pickupDesc': 'Add sender address, then create a pickup (after ordering)',
|
||
'h5.journey.ship.senderTitle': 'Sender addresses',
|
||
'h5.journey.ship.addSender': 'Add',
|
||
'h5.journey.ship.cancelAdd': 'Cancel',
|
||
'h5.journey.ship.noSender': 'No sender address yet — add one first',
|
||
'h5.journey.ship.senderName': 'Sender name',
|
||
'h5.journey.ship.phone': 'Phone',
|
||
'h5.journey.ship.province': 'State / Province',
|
||
'h5.journey.ship.city': 'City',
|
||
'h5.journey.ship.address': 'Street address',
|
||
'h5.journey.ship.saveSender': 'Save sender address',
|
||
'h5.journey.ship.senderRequired': 'Enter sender name and address',
|
||
'h5.journey.ship.senderSaved': 'Sender address saved',
|
||
'h5.journey.ship.senderFailed': 'Failed to save',
|
||
'h5.journey.ship.pickupFormTitle': 'Create pickup',
|
||
'h5.journey.ship.warehouse': 'Warehouse',
|
||
'h5.journey.ship.product': 'Shipping product',
|
||
'h5.journey.ship.cargoName': 'Cargo name',
|
||
'h5.journey.ship.weight': 'Weight (kg)',
|
||
'h5.journey.ship.pickupTime': 'Pickup time',
|
||
'h5.journey.ship.pickupTimePh': 'YYYY-MM-DD HH:mm:ss',
|
||
'h5.journey.ship.createPickup': 'Submit pickup',
|
||
'h5.journey.ship.pickSender': 'Select a sender address',
|
||
'h5.journey.ship.pickWarehouse': 'Select a warehouse',
|
||
'h5.journey.ship.pickProduct': 'Select a product',
|
||
'h5.journey.ship.pickCargo': 'Enter cargo name',
|
||
'h5.journey.ship.pickWeight': 'Enter a valid weight',
|
||
'h5.journey.ship.pickupOk': 'Pickup created',
|
||
'h5.journey.ship.pickupFailed': 'Failed to create pickup',
|
||
'h5.me.todoTitle': 'To-do',
|
||
|
||
'h5.coupons.title': 'My coupons',
|
||
'h5.coupons.empty': 'No coupons',
|
||
'h5.coupons.unnamed': 'Coupon',
|
||
'h5.coupons.tab.available': 'Available',
|
||
'h5.coupons.tab.locked': 'Locked',
|
||
'h5.coupons.tab.used': 'Used',
|
||
'h5.coupons.tab.expired': 'Expired',
|
||
'h5.coupons.minOrder': 'Min order {amount}',
|
||
'h5.coupons.noThreshold': 'No minimum',
|
||
'h5.coupons.use': 'Use now',
|
||
'h5.coupons.discountUnit': ' off',
|
||
'h5.coupons.expiringSoon': 'Expiring soon',
|
||
'h5.coupons.badge.newcomer': 'New',
|
||
'h5.coupons.validLabel': 'Valid',
|
||
'h5.coupons.howLabel': 'How',
|
||
'h5.coupons.how.fixed': 'Select at checkout. Min order {amount} to redeem',
|
||
'h5.coupons.how.direct': 'Select at checkout for an instant face-value off',
|
||
'h5.coupons.how.percent': 'Select at checkout. Min order {amount} for percent off',
|
||
'h5.coupons.how.shipping': 'Select at checkout. Min order {amount} off base freight',
|
||
'h5.coupons.how.unlock': 'Complete first delivery to unlock the ¥15 coupon',
|
||
|
||
'h5.invite.title': 'Invite friends',
|
||
'h5.invite.tab.share': 'Share invite',
|
||
'h5.invite.tab.referees': 'Invited',
|
||
'h5.invite.lead':
|
||
'Friends get ¥5 on register. After their orders are delivered, you earn a percent of paid base freight.',
|
||
'h5.invite.locked': 'Upgrade to V1 to invite friends',
|
||
'h5.invite.code': 'Invite code',
|
||
'h5.invite.link': 'Invite link (open in WeChat)',
|
||
'h5.invite.copy': 'Copy',
|
||
'h5.invite.copySuccess': 'Copied',
|
||
'h5.invite.copyShare': 'Copy invite message',
|
||
'h5.invite.share': 'Share',
|
||
'h5.invite.shareTitle': 'Join with my invite',
|
||
'h5.invite.qrTip': 'Friends scan or long-press in WeChat to register via the official account',
|
||
'h5.invite.posterAlt': 'Invite poster',
|
||
'h5.invite.posterLoading': 'Generating poster…',
|
||
'h5.invite.posterFailed': 'Failed to generate poster. Please retry.',
|
||
'h5.invite.posterRetry': 'Retry',
|
||
'h5.invite.savePoster': 'Save poster',
|
||
'h5.invite.posterSaved': 'Poster saved',
|
||
'h5.invite.posterTip': 'Long-press to recognize the QR, or save and share with friends',
|
||
'h5.invite.referees': 'Invited friends',
|
||
'h5.invite.refereesEmpty': 'No friends have registered with your invite yet',
|
||
'h5.invite.empty': 'No invite data',
|
||
|
||
'h5.commission.title': 'My commission',
|
||
'h5.commission.balance': 'Withdrawable',
|
||
'h5.commission.total': 'Total earned',
|
||
'h5.commission.pending': 'Pending',
|
||
'h5.commission.transfer': 'Transfer to balance',
|
||
'h5.commission.withdraw': 'Withdraw',
|
||
'h5.commission.empty': 'No commission data',
|
||
'h5.commission.transferOk': 'Transfer submitted',
|
||
'h5.commission.withdrawOk': 'Withdraw request submitted',
|
||
'h5.commission.amountPh': 'Enter amount',
|
||
|
||
'h5.pay.title': 'Confirm payment',
|
||
'h5.pay.amountDue': 'Amount due',
|
||
'h5.pay.waybillNo': 'Waybill',
|
||
'h5.pay.orderTotal': 'Order due',
|
||
'h5.pay.methodBalance': 'Pay with balance',
|
||
'h5.pay.methodHint': 'Will be deducted from your account balance',
|
||
'h5.pay.confirm': 'Pay now',
|
||
'h5.pay.paying': 'Paying…',
|
||
'h5.pay.cancel': 'Cancel',
|
||
'h5.pay.empty': 'No payable orders',
|
||
'h5.pay.noFeeRows': 'No fee details',
|
||
'h5.pay.success': 'Paid successfully',
|
||
'h5.pay.failed': 'Payment failed',
|
||
'h5.pay.invalidAmount': 'Invalid amount — cannot pay',
|
||
'h5.pay.loadFailed': 'Failed to load fee details',
|
||
'h5.pay.balanceLowTitle': 'Insufficient balance',
|
||
'h5.pay.balanceLow': 'Your balance is not enough for this payment. Recharge first, then come back to pay.',
|
||
'h5.pay.goRecharge': 'Recharge',
|
||
'h5.pay.later': 'Later',
|
||
'h5.me.balance': 'Balance',
|
||
'h5.me.recharge': 'Recharge',
|
||
'h5.me.points': '12-month points',
|
||
'h5.me.pointsToNext': '{points} to {name}',
|
||
'h5.me.pointsTopLevel': 'Top level reached',
|
||
'h5.me.lowBalance': 'Low balance — recharge soon',
|
||
'h5.me.greet.morning': 'Good morning',
|
||
'h5.me.greet.noon': 'Good noon',
|
||
'h5.me.greet.afternoon': 'Good afternoon',
|
||
'h5.me.greet.evening': 'Good evening',
|
||
'h5.me.greet.night': 'Still up late',
|
||
'h5.me.todoAction': '{count} pending payment',
|
||
'h5.me.todoIssue': '{count} issue',
|
||
'h5.me.todoGo': 'Handle',
|
||
'h5.me.pickupTitle': 'Pickup orders',
|
||
'h5.me.pickupSummary': '{count} order(s) — tap to view',
|
||
'h5.me.pickupEmpty': 'No pickup orders yet. Choose "Pickup order" when placing orders to merge pickup.',
|
||
'h5.me.pickupGo': 'View',
|
||
'h5.pickup.title': 'Pickup orders',
|
||
'h5.pickup.empty': 'No pickup orders yet. Choose "Pickup order" when placing orders to merge pickup.',
|
||
'h5.pickup.loadFailed': 'Failed to load',
|
||
'h5.pickup.loadMore': 'Load more',
|
||
'h5.pickup.loading': 'Loading…',
|
||
'h5.pickup.pickupTime': 'Scheduled pickup',
|
||
'h5.pickup.parcelCount': '{count} parcel(s)',
|
||
'h5.pickup.filter.all': 'All',
|
||
'h5.pickup.filter.pendingPayment': 'Unpaid',
|
||
'h5.pickup.detail.title': 'Pickup order detail',
|
||
'h5.pickup.detail.receivable': 'Pickup fee due',
|
||
'h5.pickup.detail.warehouse': 'Warehouse',
|
||
'h5.pickup.detail.expectTime': 'Expected pickup',
|
||
'h5.pickup.detail.sender': 'Pickup address',
|
||
'h5.pickup.detail.carrierWaybill': 'Carrier waybill',
|
||
'h5.pickup.detail.createTime': 'Created',
|
||
'h5.pickup.detail.orders': 'Linked shipments',
|
||
'h5.pickup.detail.noOrders': 'No linked shipments',
|
||
'h5.pickup.detail.pay': 'Pay pickup fee',
|
||
'h5.pickup.detail.payOk': 'Pickup fee paid',
|
||
'h5.pickup.rebind.stepAdd': 'Add shipments',
|
||
'h5.pickup.rebind.heroTitle': 'Select shipments to add',
|
||
'h5.pickup.rebind.hint': 'Pre-declared only, not bound to pickup; warehouse: {warehouse}',
|
||
'h5.pickup.rebind.confirmAdd': 'Confirm add',
|
||
'h5.pickup.rebind.addHint': 'Choose pre-declared shipments in the same warehouse as this pickup order',
|
||
'h5.pickup.rebind.goAdd': 'Select shipments',
|
||
'h5.pickup.rebind.confirmRemove': 'Confirm remove',
|
||
'h5.pickup.rebind.removeCount': '{count} selected',
|
||
'h5.pickup.rebind.needRemove': 'Select shipments to remove first',
|
||
'h5.pickup.quick.pay': 'Pay',
|
||
'h5.pickup.quick.schedule': 'Schedule',
|
||
'h5.pickup.quick.rebind': 'Rebind',
|
||
'h5.pickup.quick.cancel': 'Cancel',
|
||
'h5.me.editProfile': 'Edit profile',
|
||
'h5.me.addressManage': 'Addresses',
|
||
'h5.me.resetPassword': 'Change password',
|
||
'h5.me.openapi': 'Open API credentials',
|
||
'h5.me.language': 'Switch language',
|
||
'h5.me.followOfficial': 'Follow official account',
|
||
'h5.me.followOfficialMissing': 'Official account link is not configured. Please contact support.',
|
||
'h5.me.logout': 'Sign out',
|
||
'h5.me.logoutConfirm': 'Sign out now?',
|
||
'h5.me.customerCode': 'Code',
|
||
'h5.me.copySuccess': 'Copied',
|
||
'h5.me.defaultName': 'Customer',
|
||
'h5.me.oldPassword': 'Current password',
|
||
'h5.me.newPassword': 'New password',
|
||
'h5.me.confirmPassword': 'Confirm password',
|
||
'h5.me.passwordRequired': 'Enter current and new password',
|
||
'h5.me.passwordMismatch': 'Passwords do not match',
|
||
'h5.me.changePasswordSuccess': 'Password changed. Please sign in again.',
|
||
'h5.me.updateSuccess': 'Saved',
|
||
'h5.me.updateFailed': 'Save failed',
|
||
'h5.me.save': 'Save',
|
||
'h5.address.title': 'Addresses',
|
||
'h5.address.addTitle': 'Add address',
|
||
'h5.address.editTitle': 'Edit address',
|
||
'h5.address.add': 'Add address',
|
||
'h5.address.edit': 'Edit',
|
||
'h5.address.delete': 'Delete',
|
||
'h5.address.default': 'Default',
|
||
'h5.address.setDefault': 'Set default',
|
||
'h5.address.setDefaultTip': 'Set as default for this type',
|
||
'h5.address.setDefaultOk': 'Default address updated',
|
||
'h5.address.deleteOk': 'Deleted',
|
||
'h5.address.empty': 'No addresses yet',
|
||
'h5.address.loadFailed': 'Failed to load addresses',
|
||
'h5.address.saveFailed': 'Save failed',
|
||
'h5.address.typeLabel': 'Address type',
|
||
'h5.address.type.sender': 'Domestic sender',
|
||
'h5.address.type.pickup': 'Domestic pickup',
|
||
'h5.address.type.receiver': 'Overseas receiver',
|
||
'h5.address.type.return': 'Domestic return',
|
||
'h5.address.senderName': 'Contact',
|
||
'h5.address.senderNamePh': 'Name',
|
||
'h5.address.phone': 'Phone',
|
||
'h5.address.addressName': 'Alias',
|
||
'h5.address.addressNamePh': 'e.g. Home / Office',
|
||
'h5.address.countryCode': 'Country code',
|
||
'h5.address.province': 'State / Province',
|
||
'h5.address.city': 'City',
|
||
'h5.address.street': 'Street address',
|
||
'h5.address.streetPh': 'Street, building, unit…',
|
||
'h5.address.zipCode': 'ZIP / Postal',
|
||
'h5.address.nameRequired': 'Enter contact name',
|
||
'h5.address.streetRequired': 'Enter street address',
|
||
};
|