// App-local message extensions, deep-merged over @vmall/shared locales. // Add keys here (never edit the shared locale files from an app agent). export const enExtra = { auth: { shopRoleError: "This account is not authorized for the merchant console.", }, nav: { coupons: "Coupons", flashSales: "Flash sales", groupBuying: "Group buying", shopProfile: "Shop profile", aftersales: "After-sales", freightTemplates: "Freight templates", reviews: "Reviews", }, shop: { profileSaved: "Shop profile saved.", bilingualRequired: "Both English and Chinese text are required.", profileLogo: "Logo URL", profileBanner: "Banner URL", profileCompany: "Company", profileRegion: "Region", profileAddressEn: "Address (English)", profileAddressZh: "Address (中文)", profileNoticeEn: "Notice (English)", profileNoticeZh: "Notice (中文)", profileAfterSaleEn: "After-sale policy (English)", profileAfterSaleZh: "After-sale policy (中文)", dashboardTitle: "Merchant dashboard", profile: "Shop profile", shopStatus: "Shop status", slug: "Slug", totalProducts: "Total products", publishedProducts: "Published products", pendingPaymentOrders: "Pending payment", paidOrders: "Paid orders", fulfillingOrders: "Fulfilling orders", shippedOrders: "Shipped orders", pendingInvoices: "Pending invoice requests", productList: "Product catalog", orderList: "Orders", shipmentList: "Shipments", invoiceList: "Invoices", filterStatus: "Filter by status", filterOrderStatus: "Filter by order status", created: "Created", skuCount: "SKUs", noSkus: "No SKUs", newProduct: "New product", saveProduct: "Save product", updateProduct: "Update product", productSaved: "Product saved.", slugInvalid: "Use lowercase letters, numbers, and dashes only.", productNameRequired: "English product name is required.", categoryOptional: "No category", imagesHint: "One URL per line", skuManager: "SKU manager", skuPriceMajor: "Price (major units)", stock: "Stock", active: "Active", addSku: "Add SKU", skuSaved: "SKU saved.", skuWeight: "Weight (g)", skuWeightGrams: "Weight (grams, optional)", skuWeightInvalid: "Weight must be a positive integer.", freightTemplate: "Freight template", freightTemplateDefault: "Shop default", actions: "Actions", edit: "Edit", invoiceNo: "Invoice no.", noInvoice: "—", status: "Status", orderNo: "Order no.", items: "Items", total: "Total", details: "Details", address: "Shipping address", recipient: "Recipient", phone: "Phone", carrier: "Carrier", trackingNo: "Tracking number", shippingCompany: "Shipping company", selectShippingCompany: "Select a shipping company", shippingCompanyRequired: "Choose a shipping company.", shipmentQuantities: "Shipment quantities", unshipped: "Unshipped", createShipment: "Create shipment", shipmentCreated: "Shipment created.", issueInvoice: "Issue invoice", taxNo: "Tax number", kind: "Type", couponList: "Coupons", newCoupon: "New coupon", editCoupon: "Edit coupon", couponTitleEn: "Title (English)", couponTitleZh: "Title (中文)", couponAmount: "Discount (minor units)", couponThreshold: "Minimum spend (minor units)", couponCurrency: "Currency", couponStock: "Claim stock", couponEnabled: "Enabled", couponStartsAt: "Starts at", couponEndsAt: "Ends at", createCoupon: "Create coupon", updateCoupon: "Update coupon", couponSaved: "Coupon saved.", couponDeleted: "Coupon deleted.", couponTitleRequired: "Both language titles are required.", couponAmountInvalid: "Discount must be a positive integer.", couponThresholdInvalid: "Minimum spend cannot be negative.", couponStockInvalid: "Claim stock cannot be negative.", couponWindowInvalid: "End must not precede start.", enabledOn: "Enabled", enabledOff: "Disabled", flashSaleList: "Flash sales", newFlashSale: "New session", editFlashSale: "Edit session", flashLabelEn: "Label (English)", flashLabelZh: "Label (中文)", flashStartsAt: "Starts at", flashEndsAt: "Ends at", flashEnabled: "Enabled", createFlashSale: "Create session", updateFlashSale: "Update session", flashSaleSaved: "Session saved.", flashItemSaved: "Activity item saved.", flashItems: "Activity items", noFlashItems: "No activity items yet.", newFlashItem: "Add activity item", editFlashItem: "Edit activity item", flashSku: "SKU", flashSelectSku: "Select a SKU", flashSalePrice: "Sale price (minor units)", flashReservedStock: "Reserved stock", flashPerCustomerLimit: "Per-customer limit", saveFlashItem: "Save item", flashOriginalPrice: "Catalog price", flashSold: "Sold", flashRemaining: "Remaining", flashLabelRequired: "Both language labels are required.", flashSkuRequired: "Choose a SKU.", flashPriceInvalid: "Sale price must be a positive integer.", flashStockInvalid: "Reserved stock cannot be negative.", flashLimitInvalid: "Per-customer limit must be a positive integer.", flashWindowInvalid: "End must not precede start.", groupBuyingList: "Group buying", newGroupActivity: "New activity", editGroupActivity: "Edit activity", groupNameEn: "Name (English)", groupNameZh: "Name (中文)", groupDescriptionEn: "Description (English)", groupDescriptionZh: "Description (中文)", groupSku: "SKU", groupPrice: "Group price (minor units)", groupRequiredMembers: "Required paid members", groupLifetimeHours: "Group lifetime (hours)", groupStartsAt: "Starts at", groupEndsAt: "Ends at", groupEnabled: "Enabled", createGroupActivity: "Create activity", updateGroupActivity: "Update activity", groupActivitySaved: "Activity saved.", groupOpenGroups: "Open groups", groupNoOpenGroups: "No open groups.", groupPaidMembers: "Joined", groupExpiresAt: "Expires", groupNameRequired: "Both language names are required.", groupSkuRequired: "Choose a SKU.", groupPriceInvalid: "Group price must be a positive integer.", groupMembersInvalid: "At least two paid members are required.", groupLifetimeInvalid: "Group lifetime must be a positive number of hours.", groupWindowInvalid: "End must not precede start.", }, freight: { title: "Freight templates", newTemplate: "New template", editTemplate: "Edit template", name: "Template name", pricingMethod: "Pricing method", methodByPiece: "By piece", methodByWeight: "By weight", unitPiece: "pcs", unitGram: "g", firstFeeShort: "First fee", additionalFeeShort: "Additional fee", firstFeeMajor: "First fee (major units)", additionalFeeMajor: "Additional fee (major units)", firstUnit: "First unit", additionalUnit: "Additional unit", freeThresholdMajor: "Free shipping over (major units, optional)", alwaysFree: "Always free", isDefault: "Default template", defaultTag: "Default", createTemplate: "Create template", updateTemplate: "Update template", saved: "Freight template saved.", deleted: "Freight template deleted.", setDefault: "Set as default", defaultSaved: "Default template updated.", nameRequired: "Template name is required.", feeInvalid: "Fees must be non-negative amounts.", unitInvalid: "Unit sizes must be positive integers.", thresholdInvalid: "Free-shipping threshold must be a non-negative amount.", regionRules: "Region rules", noRegionRules: "No region rules yet.", addRule: "Add rule", ruleRegions: "Regions (comma separated)", ruleRegionsRequired: "Each rule needs at least one region.", deleteRule: "Delete rule", deleteRuleConfirm: "Delete this region rule?", deleteConfirm: "Delete this freight template?", }, aftersale: { title: "After-sales", detail: "After-sale detail", buyer: "Buyer", amount: "Refund amount", remaining: "Remaining refundable", reason: "Reason", item: "Item", order: "Order", viewOrder: "View order", evidence: "Evidence", noEvidence: "No evidence provided.", returnShipping: "Return shipping", messages: "Messages", noMessages: "No messages yet.", messageEn: "Message (English)", messageZh: "Message (中文)", messageEvidence: "Evidence URL (optional)", sendMessage: "Send message", messageSent: "Message sent.", approve: "Approve", reject: "Reject", confirmReceipt: "Confirm return receipt", refund: "Issue refund", approved: "Application approved.", rejected: "Application rejected.", receiptConfirmed: "Return receipt confirmed.", refunded: "Refund completed.", staleAction: "The after-sale state changed while you were acting; the latest state is shown below.", reopened: "Reopened", role: { buyer: "Buyer", merchant: "Merchant", platform: "Platform", }, kind: { refund_only: "Refund only", return_refund: "Return & refund", }, status: { pending: "Pending", approved: "Approved", rejected: "Rejected", buyer_shipping: "Return in transit", merchant_confirmed: "Return received", refunded: "Refunded", cancelled: "Cancelled", }, }, review: { title: "Product reviews", product: "Product", buyer: "Buyer", rating: "Rating", content: "Review", createdAt: "Reviewed at", replyStatus: "Reply status", replied: "Replied", unreplied: "Not replied", reply: "Reply", replyPlaceholder: "Type the reply to this customer…", replyAt: "Replied at", replySaved: "Reply sent.", replyConflict: "This review already has a reply; the latest state is shown below.", replyRequired: "Reply text is required.", }, } as Record; export const zhExtra = { auth: { shopRoleError: "此账号无权访问商家控制台。", }, nav: { coupons: "优惠券", flashSales: "秒杀", groupBuying: "拼团", reviews: "评价", shopProfile: "店铺资料", aftersales: "售后", freightTemplates: "运费模板", }, shop: { profileSaved: "店铺资料已保存。", bilingualRequired: "中英文内容均为必填项。", profileLogo: "Logo 链接", profileBanner: "横幅链接", profileCompany: "公司", profileRegion: "地区", profileAddressEn: "地址(英文)", profileAddressZh: "地址(中文)", profileNoticeEn: "公告(英文)", profileNoticeZh: "公告(中文)", profileAfterSaleEn: "售后政策(英文)", profileAfterSaleZh: "售后政策(中文)", dashboardTitle: "商家仪表盘", profile: "店铺信息", shopStatus: "店铺状态", slug: "别名", totalProducts: "商品总数", publishedProducts: "已上架商品", pendingPaymentOrders: "待支付订单", paidOrders: "已支付订单", fulfillingOrders: "履约中订单", shippedOrders: "已发货订单", pendingInvoices: "待处理发票申请", productList: "商品目录", orderList: "订单", shipmentList: "发货单", invoiceList: "发票", filterStatus: "按状态筛选", filterOrderStatus: "按订单状态筛选", created: "创建时间", skuCount: "SKU 数量", noSkus: "暂无 SKU", newProduct: "新建商品", saveProduct: "保存商品", updateProduct: "更新商品", productSaved: "商品已保存。", slugInvalid: "只能使用小写字母、数字和短横线。", productNameRequired: "英文商品名称为必填项。", categoryOptional: "无分类", imagesHint: "每行一个链接", skuManager: "SKU 管理", skuPriceMajor: "价格(主单位)", stock: "库存", active: "启用", skuSaved: "SKU 已保存。", skuWeight: "重量(克)", skuWeightGrams: "重量(克,可选)", skuWeightInvalid: "重量必须为正整数。", freightTemplate: "运费模板", freightTemplateDefault: "店铺默认", actions: "操作", edit: "编辑", addSku: "添加 SKU", status: "状态", invoiceNo: "发票号", noInvoice: "—", items: "商品数", total: "合计", details: "详情", address: "收货地址", recipient: "收货人", phone: "电话", carrier: "承运商", trackingNo: "物流单号", shippingCompany: "物流公司", selectShippingCompany: "请选择物流公司", shippingCompanyRequired: "请选择物流公司。", shipmentQuantities: "发货数量", unshipped: "待发货", createShipment: "创建发货单", shipmentCreated: "发货单已创建。", issueInvoice: "开具发票", taxNo: "税号", kind: "类型", couponList: "优惠券", newCoupon: "新建优惠券", editCoupon: "编辑优惠券", couponTitleEn: "标题(英文)", couponTitleZh: "标题(中文)", couponAmount: "优惠金额(最小单位)", couponThreshold: "使用门槛(最小单位)", couponCurrency: "币种", couponStock: "可领取库存", couponEnabled: "启用", couponStartsAt: "开始时间", couponEndsAt: "结束时间", createCoupon: "创建优惠券", updateCoupon: "更新优惠券", couponSaved: "优惠券已保存。", couponDeleted: "优惠券已删除。", couponTitleRequired: "中英文标题均为必填项。", couponAmountInvalid: "优惠金额必须为正整数。", couponThresholdInvalid: "使用门槛不能为负数。", couponStockInvalid: "可领取库存不能为负数。", couponWindowInvalid: "结束时间不能早于开始时间。", enabledOn: "已启用", enabledOff: "已停用", flashSaleList: "秒杀活动", newFlashSale: "新建场次", editFlashSale: "编辑场次", flashLabelEn: "标题(英文)", flashLabelZh: "标题(中文)", flashStartsAt: "开始时间", flashEndsAt: "结束时间", flashEnabled: "启用", createFlashSale: "创建场次", updateFlashSale: "更新场次", flashSaleSaved: "场次已保存。", flashItemSaved: "活动商品已保存。", flashItems: "活动商品", noFlashItems: "暂无活动商品。", newFlashItem: "添加活动商品", editFlashItem: "编辑活动商品", flashSku: "SKU", flashSelectSku: "请选择 SKU", flashSalePrice: "秒杀价(最小单位)", flashReservedStock: "活动库存", flashPerCustomerLimit: "每人限购", saveFlashItem: "保存商品", flashOriginalPrice: "原价", flashSold: "已售", flashRemaining: "剩余", flashLabelRequired: "中英文标题均为必填项。", flashSkuRequired: "请选择 SKU。", flashPriceInvalid: "秒杀价必须为正整数。", flashStockInvalid: "活动库存不能为负数。", flashLimitInvalid: "每人限购必须为正整数。", flashWindowInvalid: "结束时间不能早于开始时间。", groupBuyingList: "拼团活动", newGroupActivity: "新建活动", editGroupActivity: "编辑活动", groupNameEn: "名称(英文)", groupNameZh: "名称(中文)", groupDescriptionEn: "描述(英文)", groupDescriptionZh: "描述(中文)", groupSku: "SKU", groupPrice: "拼团价(最小单位)", groupRequiredMembers: "成团人数", groupLifetimeHours: "团有效期(小时)", groupStartsAt: "开始时间", groupEndsAt: "结束时间", groupEnabled: "启用", createGroupActivity: "创建活动", updateGroupActivity: "更新活动", groupActivitySaved: "活动已保存。", groupOpenGroups: "进行中的团", groupNoOpenGroups: "暂无进行中的团。", groupPaidMembers: "已参团", groupExpiresAt: "到期", groupNameRequired: "中英文名称均为必填项。", groupSkuRequired: "请选择 SKU。", groupPriceInvalid: "拼团价必须为正整数。", groupMembersInvalid: "成团人数至少为 2。", groupLifetimeInvalid: "团有效期必须为正数小时。", groupWindowInvalid: "结束时间不能早于开始时间。", }, freight: { title: "运费模板", newTemplate: "新建运费模板", editTemplate: "编辑运费模板", name: "模板名称", pricingMethod: "计价方式", methodByPiece: "按件", methodByWeight: "按重量", unitPiece: "件", unitGram: "克", firstFeeShort: "首费", additionalFeeShort: "续费", firstFeeMajor: "首费(主单位)", additionalFeeMajor: "续费(主单位)", firstUnit: "首段单位量", additionalUnit: "续段单位量", freeThresholdMajor: "满额免运费(主单位,可留空)", alwaysFree: "全程包邮", isDefault: "默认模板", defaultTag: "默认", createTemplate: "创建模板", updateTemplate: "更新模板", saved: "运费模板已保存。", deleted: "运费模板已删除。", setDefault: "设为默认", defaultSaved: "默认模板已更新。", nameRequired: "模板名称为必填项。", feeInvalid: "费用必须为非负金额。", unitInvalid: "单位量必须为正整数。", thresholdInvalid: "免运费门槛必须为非负金额。", regionRules: "地区规则", noRegionRules: "暂无地区规则。", addRule: "添加规则", ruleRegions: "地区(逗号分隔)", ruleRegionsRequired: "每条规则至少填写一个地区。", deleteRule: "删除规则", deleteRuleConfirm: "确定删除该地区规则?", deleteConfirm: "确定删除该运费模板?", }, aftersale: { title: "售后", detail: "售后详情", buyer: "买家", amount: "退款金额", remaining: "剩余可退", reason: "申请原因", item: "商品", order: "订单", viewOrder: "查看订单", evidence: "凭证", noEvidence: "暂无凭证。", returnShipping: "退货物流", messages: "留言", noMessages: "暂无留言。", messageEn: "留言(英文)", messageZh: "留言(中文)", messageEvidence: "凭证链接(可选)", sendMessage: "发送留言", messageSent: "留言已发送。", approve: "批准", reject: "拒绝", confirmReceipt: "确认收货", refund: "退款", approved: "已批准申请。", rejected: "已拒绝申请。", receiptConfirmed: "已确认收货。", refunded: "退款已完成。", staleAction: "售后状态已发生变化,下方为最新状态。", reopened: "已重新申请", role: { buyer: "买家", merchant: "商家", platform: "平台", }, kind: { refund_only: "仅退款", return_refund: "退货退款", }, status: { pending: "待处理", approved: "已批准", rejected: "已拒绝", buyer_shipping: "买家退货中", merchant_confirmed: "商家已收货", refunded: "已退款", cancelled: "已取消", }, }, review: { title: "商品评价", product: "商品", buyer: "买家", rating: "星级", content: "评价内容", createdAt: "评价时间", replyStatus: "回复状态", replied: "已回复", unreplied: "未回复", reply: "回复", replyPlaceholder: "输入给买家的回复…", replyAt: "回复时间", replySaved: "回复已发送。", replyConflict: "该评价已有回复,已为你展示最新状态。", replyRequired: "回复内容不能为空。", }, } as Record;