Files
vmall/apps/mall/locales/marketing.ts
T
james 059572f6f3 feat(mall): live points mall with address-aware redemption
The points page loads the published catalog and the customer's live points
through the shared client, redeems with a chosen saved address, refreshes the
balance, and lists the customer's redemption history with its fulfilment state.
The INTEGRAL_PRODUCTS and USER_STATS imports leave the page; the fixed-data
adapter still serves the points domain as the rollback path.
2026-09-18 12:43:00 +00:00

119 lines
4.0 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",
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: "View deal",
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: "马上抢",
noSeckillProducts: "当前暂无秒杀商品。",
collectiveTitle: "拼团购",
collectiveBreadcrumb: "拼团",
collectiveBannerAlt: "拼团活动",
peopleGroup: "{n}人团",
peopleJoined: "{n}人已拼",
joinGroup: "查看详情",
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;