Files
vmall/apps/mall/locales/wallet.ts
T
james 9904696e76 feat: wave 2 migration (P3, P5, P7 openspec changes)
Implements, verifies, and archives the three remaining Wave 2 changes from
openspec/MIGRATION-PLAN.md.

- add-wallet-settlement (P3): demo recharge, guarded withdrawal freeze and
  one-time admin review, paginated own fund entries, idempotent per-shop
  weekly/monthly settlement statements with commission rate and one-time
  payout confirmation.
- add-merchant-onboarding (P5): personal/enterprise applications with one live
  application per user, guarded review with mandatory rejection reason, and
  transactional shop + owner provisioning returning one-time credentials;
  mall onboarding/status pages and an admin review console.
- add-membership-messaging (P7): platform member levels, append-only growth
  accrual on order completion with guarded one-way leveling, order/shipment/
  refund system messages with unread/read state and soft deletion, plus the
  mall header unread badge.

Backend: migrations 0019-0023, new wallet, settlement, merchant_onboarding,
membership and messaging modules, event hooks in order/fulfillment/aftersale,
and integration suites for each. Shared contract extended and all three
frontends updated; code indexes, domain docs, backend guidelines and the
migration tracker synced.

Verification: cargo test -p vmall-api green twice consecutively; mall, admin
and shop-admin builds pass; browser smoke on every new surface; openspec
validate --all --strict green (33 passed).

The three changes share the @vmall/shared contract, the mall mock adapter and
per-app locale/nav files, so they are committed together to keep every commit
buildable.
2026-09-25 15:25:29 +00:00

135 lines
6.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export default {
en: {
wallet: {
title: "My wallet",
available: "Available balance",
frozen: "Frozen funds",
loadFailed: "Unable to load your wallet.",
entriesTitle: "Fund entries",
entriesEmpty: "No fund entries yet.",
entriesFailed: "Unable to load fund entries.",
entryDate: "Date",
entryAccount: "Account",
entryReason: "Reason",
entryDelta: "Change",
entryBalance: "Balance after",
accountAvailable: "Available",
accountFrozen: "Frozen",
rechargeTitle: "Recharge",
rechargeDemoBadge: "Simulated · demo",
rechargeDemoNote:
"This is a demo recharge: no payment provider is contacted and no real money moves.",
rechargeAmount: "Recharge amount ({currency})",
rechargeAmountHint:
"Enter a major-unit amount in {currency}; it is credited to your available balance immediately.",
rechargeSubmit: "Simulate recharge",
rechargeSuccess: "Simulated recharge credited: {amount}.",
rechargeFailed: "Recharge failed. Please try again.",
rechargeConflict:
"The recharge conflicted with the current account state, so it was not applied. Balances have been refreshed.",
withdrawTitle: "Withdraw funds",
withdrawHint:
"A withdrawal leaves your available balance immediately and is held as frozen funds until the platform reviews the request.",
withdrawAmount: "Withdrawal amount ({currency})",
withdrawAmountHint: "It cannot exceed the available balance.",
withdrawMethod: "Payout method",
withdrawMethodBank: "Bank transfer",
withdrawMethodAlipay: "Alipay",
withdrawMethodWechat: "WeChat Pay",
withdrawAccount: "Payout account",
withdrawAccountHint: "Bank account number or payment handle",
withdrawHolder: "Account holder (optional)",
withdrawSubmit: "Submit withdrawal request",
withdrawSuccess: "Withdrawal request submitted; the amount is now frozen and pending review.",
withdrawConflict:
"Insufficient available balance: a withdrawal freezes the full amount, so this request was rejected as a conflict. The balances below show the current server state.",
withdrawFailed: "Unable to submit the withdrawal request.",
validationRequired: "Enter a positive amount, a payout method and a payout account.",
historyTitle: "Withdrawal requests",
historyEmpty: "No withdrawal requests yet.",
historyCreatedAt: "Requested",
historyAmount: "Amount",
historyMethod: "Method",
historyAccount: "Payout account",
historyStatus: "Status",
historyNote: "Review note",
historyReviewedAt: "Reviewed",
status_pending: "Pending review",
status_approved: "Approved",
status_rejected: "Rejected",
reason_wallet_recharge: "Simulated recharge",
reason_wallet_withdrawal_freeze: "Withdrawal held",
reason_wallet_withdrawal_approved: "Withdrawal paid out",
reason_wallet_withdrawal_rejected: "Withdrawal returned",
reason_order_payment: "Order payment",
reason_aftersale_refund: "After-sale refund",
reason_settlement_payout: "Settlement payout",
reason_opening_balance: "Opening balance",
},
},
zh: {
wallet: {
title: "我的钱包",
available: "可用余额",
frozen: "冻结资金",
loadFailed: "钱包数据加载失败。",
entriesTitle: "资金明细",
entriesEmpty: "暂无资金明细。",
entriesFailed: "资金明细加载失败。",
entryDate: "时间",
entryAccount: "账户",
entryReason: "原因",
entryDelta: "变动",
entryBalance: "变动后余额",
accountAvailable: "可用",
accountFrozen: "冻结",
rechargeTitle: "充值",
rechargeDemoBadge: "模拟 · 演示",
rechargeDemoNote: "这是模拟充值:不会接入任何支付渠道,也不会发生真实资金流转。",
rechargeAmount: "充值金额({currency})",
rechargeAmountHint: "请输入 {currency} 主单位金额,将立即计入可用余额。",
rechargeSubmit: "模拟充值",
rechargeSuccess: "模拟充值已到账:{amount}。",
rechargeFailed: "充值失败,请重试。",
rechargeConflict: "充值因账户状态冲突未生效,余额已重新加载。",
withdrawTitle: "申请提现",
withdrawHint: "提现会立即从可用余额中扣除并计为冻结资金,等待平台审核。",
withdrawAmount: "提现金额({currency})",
withdrawAmountHint: "不得超过可用余额。",
withdrawMethod: "提现方式",
withdrawMethodBank: "银行转账",
withdrawMethodAlipay: "支付宝",
withdrawMethodWechat: "微信支付",
withdrawAccount: "收款账户",
withdrawAccountHint: "银行卡号或收款账号",
withdrawHolder: "开户人(选填)",
withdrawSubmit: "提交提现申请",
withdrawSuccess: "提现申请已提交,金额已冻结并等待审核。",
withdrawConflict:
"可用余额不足:提现会冻结全额资金,因此本次申请被拒绝(冲突)。下方余额为服务器当前状态。",
withdrawFailed: "提现申请提交失败。",
validationRequired: "请填写正确的金额、提现方式与收款账户。",
historyTitle: "提现记录",
historyEmpty: "暂无提现申请。",
historyCreatedAt: "申请时间",
historyAmount: "金额",
historyMethod: "方式",
historyAccount: "收款账户",
historyStatus: "状态",
historyNote: "审核备注",
historyReviewedAt: "审核时间",
status_pending: "待审核",
status_approved: "已通过",
status_rejected: "已拒绝",
reason_wallet_recharge: "模拟充值",
reason_wallet_withdrawal_freeze: "提现冻结",
reason_wallet_withdrawal_approved: "提现已打款",
reason_wallet_withdrawal_rejected: "提现已退回",
reason_order_payment: "订单支付",
reason_aftersale_refund: "售后退款",
reason_settlement_payout: "结算打款",
reason_opening_balance: "期初余额",
},
},
};