Files
vmall/apps/mall/locales/marketing.ts
T
james e540b91491 feat(mall): live group-buying page with open or join intent
The group-buying page lists active activities, the group price against the
catalog price, and each open group with its paid-member count and expiry. A
shopper opens a group or picks one to join; either way the activity SKU goes
into the cart and the intent is carried to checkout, which submits it and hides
the coupon picker for that order. Payment and order detail show the snapshotted
group price.

The group-buying fixtures leave the page; the fixed-data adapter still serves
the domain as the rollback path.
2026-09-18 13:22:47 +00:00

133 lines
4.6 KiB
TypeScript

export default {
en: {
marketing: {
seckillTitle: "Flash sale",
seckillBreadcrumb: "Flash sale",
currentSession: "Now",
upcoming: "Coming soon",
ended: "Ended",
countdown: "Ends in {time}",
seckillPrice: "Flash price",
originalPrice: "Original price",
progress: "Sold {n}%",
buyNow: "Grab now",
grabFailed: "Unable to add this item right now.",
flashTag: "Flash sale",
noSeckillProducts: "No flash-sale products right now.",
collectiveTitle: "Group deals",
collectiveBreadcrumb: "Group deals",
collectiveBannerAlt: "Group deal promotion",
peopleGroup: "{n} people group",
peopleJoined: "{n} people joined",
joinGroup: "Join",
openGroup: "Open a group",
chooseGroup: "Choose a group to join.",
groupFailed: "Unable to start the group order.",
paidMembers: "{n}/{total} joined",
noOpenGroups: "No open groups yet.",
noCollectiveProducts: "No group deals right now.",
integralTitle: "Points mall",
integralBreadcrumb: "Points mall",
integralBannerAlt: "Points mall promotion",
loginPrompt: "Sign in to see your points",
pointsBalance: "My points",
customize: "Personal customization",
shipping: "Ships within 24 hours",
support: "Priority support",
recommendation: "Popular rewards",
points: "{n} points",
marketPrice: "Market price",
stock: "Stock {n}",
redeem: "Redeem now",
redeemed: "Redeemed",
mockNotice: "Demo redemption completed",
login: "Sign in",
register: "Create account",
noIntegralProducts: "No rewards available right now.",
addressLabel: "Ship to",
noAddress: "No saved address.",
addAddress: "Add one in your account",
addressRequired: "Add a shipping address before redeeming.",
qty: "Qty",
redeemSuccess: "Redeemed as {no}.",
redeemConflict: "Unable to redeem: not enough points or stock.",
redeemFailed: "Unable to redeem right now.",
redemptionHistory: "My redemptions",
orderNo: "Order no.",
reward: "Reward",
pointsCost: "Points",
createdAt: "Date",
redemptionStatus: {
pending_fulfillment: "Pending",
fulfilled: "Fulfilled",
cancelled: "Cancelled",
},
},
},
zh: {
marketing: {
seckillTitle: "限时秒杀",
seckillBreadcrumb: "秒杀活动",
currentSession: "正在进行",
upcoming: "即将开始",
ended: "已结束",
countdown: "距结束 {time}",
seckillPrice: "秒杀价",
originalPrice: "原价",
progress: "已抢 {n}%",
buyNow: "马上抢",
grabFailed: "加入购物车失败,请稍后重试。",
flashTag: "秒杀价",
noSeckillProducts: "当前暂无秒杀商品。",
collectiveTitle: "拼团购",
collectiveBreadcrumb: "拼团",
collectiveBannerAlt: "拼团活动",
peopleGroup: "{n}人团",
peopleJoined: "{n}人已拼",
joinGroup: "去拼团",
openGroup: "我要开团",
chooseGroup: "请选择一个团。",
groupFailed: "拼团下单失败,请稍后重试。",
paidMembers: "已参团 {n}/{total}",
noOpenGroups: "暂无进行中的团。",
noCollectiveProducts: "当前暂无拼团商品。",
integralTitle: "积分商城",
integralBreadcrumb: "积分商城",
integralBannerAlt: "积分商城活动",
loginPrompt: "登录后查看您的积分",
pointsBalance: "我的积分",
customize: "私人定制",
shipping: "24小时发货",
support: "优先客服",
recommendation: "热门推荐",
points: "{n}积分",
marketPrice: "市场价",
stock: "库存 {n}",
redeem: "立即兑换",
redeemed: "已兑换",
mockNotice: "模拟兑换成功",
login: "登录",
register: "注册",
noIntegralProducts: "当前暂无积分商品。",
addressLabel: "收货地址",
noAddress: "暂无收货地址。",
addAddress: "前往账户添加",
addressRequired: "请先添加收货地址。",
qty: "数量",
redeemSuccess: "兑换成功,订单号 {no}。",
redeemConflict: "兑换失败:积分或库存不足。",
redeemFailed: "兑换失败,请稍后重试。",
redemptionHistory: "我的兑换",
orderNo: "订单号",
reward: "兑换商品",
pointsCost: "积分",
createdAt: "日期",
redemptionStatus: {
pending_fulfillment: "待发货",
fulfilled: "已发货",
cancelled: "已取消",
},
},
},
} as const;