Files
james fe354529d0 feat(shop-admin): manage group-buying activities
Add a group-buying page where a shop user lists, creates, edits, and deletes
its own activities, configuring the SKU, localized name and description, group
price, required paid members, active window, and group lifetime, and seeing each
activity's open groups. Expose it as a group-buying navigation entry.
2026-09-18 13:22:47 +00:00

298 lines
11 KiB
TypeScript

// 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",
},
shop: {
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",
skuSaved: "SKU saved.",
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",
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.",
},
} as Record<string, unknown>;
export const zhExtra = {
auth: {
shopRoleError: "此账号无权访问商家控制台。",
},
nav: {
coupons: "优惠券",
flashSales: "秒杀",
groupBuying: "拼团",
},
shop: {
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 已保存。",
actions: "操作",
edit: "编辑",
addSku: "添加 SKU",
status: "状态",
invoiceNo: "发票号",
noInvoice: "—",
items: "商品数",
total: "合计",
details: "详情",
address: "收货地址",
recipient: "收货人",
phone: "电话",
carrier: "承运商",
trackingNo: "物流单号",
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: "结束时间不能早于开始时间。",
},
} as Record<string, unknown>;