feat: add and optimize multiple multilingual language packs

1. 新增拼团、砍价、分销、支付、地址、账户等多业务场景的中英文本地化文案
2. 替换项目中硬编码的文本为多语言调用,统一前端页面文案展示
3. 新增多个业务组件的国际化语言配置文件
This commit is contained in:
2026-06-26 10:17:33 +08:00
parent 066ca61d97
commit 66a579d48c
73 changed files with 1378 additions and 380 deletions

View File

@@ -0,0 +1,19 @@
export const lang = {
// Head text: 低至0元免费拿
freeGet: 'Get it free from ¥0',
// Progress text: 已砍
bargained: 'Bargained',
// Progress text: ,仅差
onlyDiff: ', only',
// Progress text: 最低可砍至
minBargainTo: 'Min. bargain to',
// Button text: 继续砍价
continueBargain: 'Continue',
// Sold count: 已砍{num}件
soldCount: '{num} sold',
}

View File

@@ -0,0 +1,16 @@
export const lang = {
// Group buy people count
peopleGroup: '{num}-person group',
// Sold count
soldCount: '{num} sold',
// Points reward
backPoints: '+{num} pts',
// Cash reward
backCash: '+¥{num}',
// Coupon reward
backCoupon: 'Coupon',
}

View File

@@ -0,0 +1,16 @@
export const lang = {
// Header subtitle: participating people count (style-2)
peopleParticipating: 'participating',
// Header subtitle: successful group buy people count
peopleGroupSuccess: 'joined successfully',
// Group buy people count tag
peopleGroup: '{num}-person group',
// Sold count
soldCount: '{num} sold',
// Join group button
joinGroup: 'Join Group',
}

View File

@@ -0,0 +1,27 @@
export const lang = {
// ===== ns-birthday-gift component =====
nsBirthdayGift: {
// Title
birthdayGift: 'Birthday Gift',
// Blessing message
defaultBlessing: 'Thank you for your continued support. On your birthday, we send you our most sincere blessings!',
// Points
points: 'points',
pointDesc: 'Use for cash deduction or product exchange',
// Red packet
yuanRedPacket: ' yuan red packet',
nonWithdrawable: 'Non-withdrawable red packet',
withdrawable: 'Withdrawable red packet',
// Coupon
yuanCoupon: ' yuan coupon',
discount: '% off',
couponDesc: 'Use for cash deduction or product exchange',
// Action button
viewNow: 'View Now',
}
}

View File

@@ -0,0 +1,24 @@
export const lang = {
// ===== ns-new-gift component =====
nsNewGift: {
// Thank you hint - with activity name parameter
thankYouHint: 'Thank you for your continued support. As a token of appreciation, we offer the following benefits for our members during the {activityName} festival',
// Points
points: 'points',
pointDesc: 'Use for deduction when purchasing products in activities',
// Red packet
yuanRedPacket: ' yuan red packet',
nonWithdrawableDesc: 'Non-withdrawable red packet',
withdrawableDesc: 'Withdrawable red packet',
// Coupon
yuanCoupon: ' yuan coupon',
discount: '% off',
couponDesc: 'Use for cash deduction or product exchange when ordering',
// Action button
viewNow: 'View Now',
}
}

View File

@@ -0,0 +1,16 @@
export const lang = {
// ===== ns-goods-promotion component =====
'nsGoodsPromotion': {
// Promotion tags
discount: 'Limited Discount',
groupbuy: 'Group Buy',
pintuan: 'Group Bargain',
seckill: 'Flash Sale',
topic: 'Topic Event',
bargain: 'Bargain',
pinfan: 'Group Rebate',
// Title text
participatingTip: 'This product is participating in {promotionName}',
}
}

View File

@@ -1,5 +1,36 @@
export const lang = {
//title为每个页面的标题
//title is the title of each page
// title: 'Distribution Product List',
title: ''
}
title: '',
// Category navigation
all: 'All',
// Goods list
share: 'Share',
earnCommission: 'Earn {money}',
noGoods: 'No distribution products',
// Bottom action buttons
shareFriends: 'Share with Friends',
generatePoster: 'Generate Poster',
// Share popup
shareTitle: 'Share',
shareToFriends: 'Share with Friends',
shareToGoodsCircle: 'Share to Good Things Circle',
generateSharePoster: 'Generate Share Poster',
copyLink: 'Copy Link',
cancelShare: 'Cancel Share',
// Poster popup
saveImage: 'Save Image',
longPressSaveImage: 'Long Press to Save Image',
// Toast / Loading messages
merchantNotOpenFenxiao: 'Merchant has not enabled distribution',
center: 'Center',
posterGenerating: 'Generating poster...',
saveSuccess: 'Saved successfully',
saveFail: 'Save failed, please try again later',
}

View File

@@ -1,5 +1,34 @@
export const lang = {
//title为每个页面的标题
// title: 'Distribution Orders',
title: ''
}
title: '',
// Top category tabs
all: 'All',
pendingSettlement: 'Pending Settlement',
settled: 'Settled',
refunded: 'Refunded',
// Order status
statusPendingSettlement: 'Pending Settlement',
statusSettled: 'Settled',
statusRefunded: 'Refunded',
// Commission related
earnPrefix: 'Earn ',
// Order total
totalLabel: 'Total: ',
// Empty states
noOrders: 'No orders yet',
noPendingSettlementOrders: 'No pending settlement orders',
noSettledOrders: 'No settled orders',
noRefundedOrders: 'No refunded orders',
// Toast提示
merchantNotOpenFenxiao: 'Merchant has not enabled distribution',
// Title suffix
orderSuffix: ' Orders'
}

View File

@@ -1,4 +1,26 @@
export const lang = {
//title为每个页面的标题
title: 'Order Details'
}
//title is the page title
title: 'Order Details',
// Item count
totalItems: '{count} items',
// Order status
statusRefunded: 'Refunded',
statusSettled: 'Settled',
statusPendingSettlement: 'Pending Settlement',
// Total
totalLabel: 'Total: ',
// Commission details
commissionDetail: 'Commission Details',
orderNo: 'Order No.: ',
commissionLevel: 'Commission Level: ',
levelText: 'Level {level}',
commissionAmount: 'Commission Amount: ',
// Toast messages
merchantNotOpenFenxiao: 'Merchant has not enabled distribution',
orderInfoNotFound: 'Order information not found!'
}

View File

@@ -1,4 +1,23 @@
export const lang = {
//title为每个页面的标题
title: 'Promotion Poster'
}
title: 'Promotion Poster',
// H5 tip
longPressTip: 'Long press to identify the QR code in the image',
// Buttons
savePoster: 'Save Poster',
// Auth dialog
dialogTitle: 'Tip',
authDeniedMessage: 'You have denied the authorization request to save images to the album. Images cannot be saved. Please authorize before proceeding.',
cancel: 'Cancel',
authorizeNow: 'Authorize Now',
// Toast messages
saveSuccess: 'Saved successfully',
saveFail: 'Save failed, please try again later',
downloadFail: 'Download failed',
posterGenerateFail: 'Poster generation failed',
merchantNotOpenFenxiao: 'Merchant has not enabled distribution'
}

View File

@@ -1,4 +1,24 @@
export const lang = {
//title为每个页面的标题
title: 'Ranking',
// Top action buttons
clickToWithdraw: 'Withdraw',
myTeam: 'My Team',
// Commission ranking (profit)
distributionCommission: 'Distribution Commission',
todayCommission: '{amount} Yuan',
commissionRanking: 'Commission Ranking',
// Promotion ranking (invited_num)
promotionCount: 'Promotion Count',
promotionPeople: '{count} people',
promotionRanking: 'Promotion Ranking',
// Ranking tip
rankingTip: 'You are ranked #{ranking}',
// Empty state
noData: 'No data',
}

View File

@@ -1,5 +1,23 @@
export const lang = {
//title为每个页面的标题
// title: 'My Team'
title: ''
}
title: '',
// Level tabs
levelOne: 'Level 1',
levelTwo: 'Level 2',
// Member info
joinTime: 'Join Date: ',
// Stats units
peopleUnit: ' people',
orderUnit: ' orders',
currencyUnit: ' Yuan',
// Empty state
noData: 'No data',
// Toast messages
merchantNotOpenFenxiao: 'Merchant has not enabled distribution',
}

View File

@@ -1,5 +1,31 @@
export const lang = {
//title为每个页面的标题
// title: 'Withdrawal Application'
title: ''
}
title: '',
// Withdrawal account
withdrawTo: 'Withdraw to',
wechatDefaultWallet: 'WeChat default wallet',
pleaseAddWithdrawAccount: 'Please add a withdrawal account',
balance: 'Balance',
// Withdrawal amount
withdrawAmountLabel: 'Withdrawal amount:',
withdrawableAmountLabel: 'Withdrawable amount:',
withdrawAll: 'Withdraw all',
// Withdrawal description
minWithdrawAmountTip: 'Minimum withdrawal amount: {symbol}{min}, ',
maxWithdrawAmountTip: 'Maximum withdrawal amount: {symbol}{max}, ',
serviceFeeTip: 'Service fee: {rate}',
// Buttons
withdrawBtn: 'Withdraw',
// Toast messages
pleaseEnterWithdrawAmount: 'Please enter the withdrawal amount',
withdrawAmountExceeds: 'Withdrawal amount exceeds available balance',
withdrawAmountBelowMin: 'Withdrawal amount is below the minimum',
pleaseAddWithdrawMethod: 'Please add a withdrawal method first',
withdrawApplySuccess: 'Withdrawal application submitted successfully',
}

View File

@@ -1,5 +1,26 @@
export const lang = {
//title为每个页面的标题
// title: 'Withdrawal Records'
title: ''
}
title: '',
// Transfer type
transferTypeBalance: 'Balance',
transferTypeAlipay: 'Alipay',
transferTypeBank: 'Bank Card',
transferTypeWechatpay: 'WeChat',
// Status
statusTransferred: 'Transferred',
statusPendingReview: 'Pending Review',
statusReviewed: 'Reviewed',
statusRejected: 'Rejected',
// Empty state
noWithdrawRecords: 'No withdrawal records',
// Title suffix
detailSuffix: ' Details',
// Toast messages
merchantNotOpenFenxiao: 'Merchant has not enabled distribution',
}

View File

@@ -9,5 +9,29 @@ export const lang = {
newAddAccount: 'Add New Account',
del: 'Delete',
update: 'Modify',
emptyText: 'No accounts available'
}
emptyText: 'No accounts available',
// 提现到余额
withdrawToBalance: 'Withdraw to Balance',
// 提现账号:{account}
withdrawalAccountLabel: 'Account: {account}',
// 银行名称:{bankName}
bankNameLabel: 'Bank Name: {bankName}',
// 设为默认账户
setAsDefault: 'Set as Default',
// 暂无账户信息,请添加
emptyTip: 'No account information yet, please add one',
// 操作提示
operationTip: 'Operation Tip',
// 确定要删除该账户吗?
confirmDeleteAccount: 'Are you sure you want to delete this account?',
// 删除成功
deleteSuccess: 'Deleted successfully',
// 删除失败
deleteFailed: 'Delete failed',
// 提现类型:银行
withdrawTypeBank: 'Bank',
// 提现类型:支付宝
withdrawTypeAlipay: 'Alipay',
// 提现类型:微信
withdrawTypeWechat: 'WeChat'
}

View File

@@ -1,9 +1,18 @@
export const lang = {
//title为每个页面的标题
//title is the title of each page
title: 'Shipping Address',
newAddAddress: 'Add Shipping Address',
getAddress: 'Get Address with One Click',
is_default: 'Default',
modify: 'Edit',
del: 'Delete'
}
del: 'Delete',
setAsDefault: 'Set as Default Address',
emptyTip: 'No shipping address yet, please add one',
operationTip: 'Operation Tip',
confirmDelete: 'Are you sure you want to delete this address?',
cannotDeleteDefault: 'Default address cannot be deleted',
deleteSuccess: 'Deleted successfully',
deleteFail: 'Delete failed',
setDefaultSuccess: 'Default address updated successfully',
pcWechatNotSupportGetAddress: 'PC WeChat does not support one-click address retrieval',
}

View File

@@ -1,4 +1,34 @@
export const lang = {
//title为每个页面的标题
title: 'Apply for Withdrawal'
}
title: 'Apply for Withdrawal',
// 提现到
withdrawTo: 'Withdraw to',
// 微信默认钱包
wechatDefaultWallet: 'WeChat Default Wallet',
// 请添加提现方式
pleaseAddWithdrawMethod: 'Please add a withdrawal method',
// 提现金额
withdrawAmount: 'Withdrawal Amount',
// 可提现余额:
withdrawableBalance: 'Withdrawable Balance: ',
// 全部提现
withdrawAll: 'Withdraw All',
// 最小提现金额为{min},手续费为{rate}
minWithdrawAndFeeTip: 'Minimum withdrawal amount is {min}, fee is {rate}',
// 提现
withdraw: 'Withdraw',
// 提现记录
withdrawalRecords: 'Withdrawal Records',
// 未开启提现
withdrawalNotEnabled: 'Withdrawal not enabled',
// 请输入提现金额
pleaseEnterWithdrawAmount: 'Please enter withdrawal amount',
// 提现金额超出可提现金额
withdrawAmountExceedsBalance: 'Withdrawal amount exceeds available balance',
// 提现金额小于最低提现金额
withdrawAmountBelowMinimum: 'Withdrawal amount is below minimum',
// 请先添加提现方式
pleaseAddWithdrawMethodFirst: 'Please add a withdrawal method first',
// 提现申请成功
withdrawApplySuccess: 'Withdrawal application submitted successfully'
}

View File

@@ -1,4 +1,10 @@
export const lang = {
//title为每个页面的标题
title: 'Balance Details'
}
title: 'Balance Details',
emptyTips: 'No balance details',
yuan: ' Yuan',
filterAll: 'All',
filterIncome: 'Income',
filterExpense: 'Expense',
dateFormatYM: '{month}/{year}'
}

View File

@@ -1,3 +1,21 @@
export const lang = {
//title is the title of each page
title: 'Account Cancellation',
}
// Step 1: Submit Application
step1Name: 'Submit Application',
step1Desc: 'Your application has been submitted, please wait patiently~',
// Step 2: Pending Review
step2Name: 'Pending Review',
step2Desc: 'Under review. Your account will be deleted directly after approval',
// Step 3: Approved, Cancellation Completed
step3Name: 'Approved, Cancellation Completed',
step3Desc: 'Your account has been successfully cancelled. Looking forward to meeting you again',
// Back
back: 'Back',
// Revoke Application
revokeApplication: 'Revoke Application',
// Risk Warning
riskTip: 'Risk Warning',
// Are you sure you want to revoke the application?
revokeConfirm: 'Are you sure you want to revoke the application?',
}

21
lang/en-us/merch/list.js Normal file
View File

@@ -0,0 +1,21 @@
export const lang = {
// Default button text
buyText: 'Buy',
// Modal dialog
modal: {
title: 'Notice',
merchantNotExist: 'Merchant does not exist',
},
// Share title
shareTitle: 'Found {count} quality products related to "{keyword}"',
// Price filter messages
priceFilter: {
pleaseEnterMaxPrice: 'Please enter the maximum price',
priceCannotBeLessThanZero: 'Filter price cannot be less than 0',
minCannotExceedMax: 'Minimum price cannot exceed maximum price',
maxCannotBeLessThanMin: 'Maximum price cannot be less than minimum price',
},
}

View File

@@ -1,4 +1,32 @@
export const lang = {
//title为每个页面的标题
title: 'Apply for Refund',
}
//title is the title of each page
title: 'Batch Refund',
// ====== Refund Form ======
form: {
refundReason: 'Refund Reason:',
refundType: 'Refund Type:',
refundOnly: 'Refund Only',
returnRefund: 'Return & Refund',
refundAmount: 'Refund Amount:',
refundRemark: 'Refund Remark',
pleaseSelect: 'Please Select',
remarkPlaceholder: 'Please enter refund remark (optional)'
},
// ====== Refund Reason Popup ======
reasonPopup: {
title: 'Refund Reason',
confirm: 'Confirm'
},
// ====== Toast Messages ======
toast: {
noRefundInfo: 'Failed to get refund information for this order item'
},
// ====== Form Validation ======
validate: {
pleaseSelectRefundReason: 'Please select a refund reason'
}
}

20
lang/en-us/pay/cashier.js Normal file
View File

@@ -0,0 +1,20 @@
export const lang = {
pay: {
cashier: {
// Pay button
confirmPay: 'Confirm Payment',
// Empty states
noPayMethodConfigured: 'No payment method configured!',
orderAlreadyPaid: 'This order has been paid',
noPayInfo: 'Payment information not found',
// Payment methods
alipay: 'Alipay',
wechatpay: 'WeChat Pay',
// Messages
pleaseSelectPayMethod: 'Please select a payment method!',
paying: 'Processing payment...',
paymentCancelled: 'Payment cancelled',
paymentFailed: 'Payment failed, reason: {reason}',
}
}
};

View File

@@ -1,10 +1,25 @@
export const lang = {
//title为每个页面的标题
title: 'Payment Result',
paymentSuccess: 'Payment Successful',
paymentFail: 'Payment Failed',
goHome: 'Back to Home',
memberCenter: 'Member Center',
payMoney: 'Payment Amount',
unit: 'Yuan'
}
pay: {
result: {
//title is the page title
title: 'Payment Result',
paymentSuccess: 'Payment Successful',
paymentFail: 'Payment Failed',
goHome: 'Back to Home',
memberCenter: 'Member Center',
payMoney: 'Payment Amount',
unit: 'Yuan',
// consumption rewards
congratulations: 'Congratulations, you have received',
points: 'Points',
growthValue: 'Growth Value',
couponsCount: '{count} Coupons',
// action buttons
rechargeRecords: 'Recharge Records',
memberCard: 'Member Card',
viewOrder: 'View Order',
// toast messages
noPayInfo: 'Payment information not found!',
}
}
}

View File

@@ -1,5 +1,30 @@
export const lang = {
//title为每个页面的标题
title: 'Points Exchange',
emptyTips: 'No more data available'
}
emptyTips: 'No more data available',
// Order status
statusAll: 'All',
statusPendingPayment: 'Pending Payment',
statusCompleted: 'Completed',
statusClosed: 'Closed',
// Order info
orderNo: 'Order No.: ',
points: 'points',
// Action buttons
closeBtn: 'Close',
payBtn: 'Pay',
viewDetails: 'View Details',
// Empty state
emptyText: 'No point exchange orders yet',
goBrowse: 'Go Browse',
// Tips
merchantNotEnabled: 'Merchant has not enabled points mall',
tip: 'Tip',
confirmCloseExchange: 'Are you sure to close this exchange?',
closeSuccess: 'Closed successfully'
}