feat: 新增多语言文案与组件国际化适配

本次提交完成了大量多语言相关的新增与优化工作:
1. 新增充值、案例、会员资产、订单等页面的中文/英文翻译文案
2. 新增企业微信客服、时间选择、支付弹窗等组件的多语言包
3. 优化工具函数与自定义页面的多语言适配,替换硬编码提示文案
4. 新增会员等级规则、积分商品、退款管理等页面的国际化支持
5. 修复企业微信JS-SDK的错误提示文案硬编码问题
This commit is contained in:
2026-06-26 09:09:46 +08:00
parent 2d8846c64c
commit 066ca61d97
97 changed files with 2704 additions and 716 deletions

View File

@@ -1,4 +1,56 @@
export const lang = {
//title为每个页面的标题
title: 'Coupon Collection'
}
//title is the title of each page
title: 'Coupon Collection',
// ====== Tabs ======
// All
tabAll: 'All',
// Reward coupon
tabReward: 'Reward',
// Discount coupon
tabDiscount: 'Discount',
// ====== Coupon Info ======
// Discount display: {discount} off
discountText: '{discount}% off',
// Minimum spend condition: Available with {atLeast} yuan spend
minSpendAvailable: 'Available with {atLeast} yuan spend',
// No threshold coupon
noThresholdCoupon: 'No threshold coupon',
// Specified goods
specifiedGoods: 'Specified goods',
// All goods
allGoods: 'All goods',
// Maximum discount: (Max discount {amount} yuan)
maxDiscount: '(Max discount {amount} yuan)',
// ====== Valid Period ======
// Valid until: Valid until {date}
validPeriodDate: 'Valid until: {date}',
// Valid for N days after receipt: Valid for {days} days after receipt
validPeriodDays: 'Valid for {days} days after receipt',
// Long-term valid: Long-term valid
validPeriodLong: 'Long-term valid',
// ====== Buttons & Status ======
// Receive
receive: 'Receive',
// Use now
useNow: 'Use Now',
// Sold out
soldOut: 'Sold Out',
// Expired
expired: 'Expired',
// Limit reached
limitReached: 'Limit Reached',
// ====== Empty State ======
// No available coupons
emptyText: 'No available coupons',
// ====== Toast Messages ======
// Merchant not enabled coupons
merchantNotEnabled: 'Merchant has not enabled coupons',
// Receive success message
receiveSuccess: 'Successfully received, go use it now'
}

View File

@@ -1,4 +1,47 @@
export const lang = {
//title为每个页面的标题
title: 'Receive Coupon'
}
//title is the title of each page
title: 'Receive Coupon',
// ====== Coupon Info ======
// Discount display: {discount} off
discountText: '{discount}% off',
// Minimum spend condition: Spend {atLeast} yuan to use
minSpendUsage: 'Spend {atLeast} yuan to use',
// No threshold coupon
noThresholdCoupon: 'No threshold coupon',
// Valid until: Valid until {endTime}
validUntil: 'Valid until {endTime}',
// Valid for N days after receipt: Valid for {fixedTerm} days after receipt
validDaysAfterReceive: 'Valid for {fixedTerm} days after receipt',
// Long-term valid
longTermValid: 'Long-term valid',
// Applicable stores: Applicable stores: {storeName}
applicableStores: 'Applicable stores: {storeName}',
// Scan QR code share tip
scanShareTip: 'Note: Scan QR code or click top-right to share',
// ====== Button Text ======
receive: 'Receive',
// Coupon sold out
couponSoldOut: 'Sorry, this coupon has been fully claimed!',
// Activity ended
activityEnded: 'This coupon activity has ended!',
// Activity closed
activityClosed: 'This coupon activity has been closed',
// Receive limit reached
receiveLimitReached: 'Coupon receive limit reached!',
// ====== Toast Messages ======
// Merchant not enabled coupons
merchantNotEnabled: 'Merchant has not enabled coupons',
// Receive success
receiveSuccess: 'Successfully received',
// ====== Share Text ======
// Congrats money coupon: Congratulations, you got a {money} yuan coupon
congratsMoneyCoupon: 'Congratulations, you got a {money} yuan coupon',
// Congrats discount coupon: Congratulations, you got a {discount}% off coupon
congratsDiscountCoupon: 'Congratulations, you got a {discount}% off coupon',
// Minimum spend available: Available with {atLeast} yuan spend
minSpendAvailable: 'Available with {atLeast} yuan spend'
}

View File

@@ -92,6 +92,8 @@ export const lang = {
couponSoldOut: 'Sold out',
couponClaimed: 'Claimed',
couponReceive: 'Claim',
couponAlreadyClaimed: 'You have already claimed this coupon',
couponClaimSuccess: 'Coupon claimed successfully',
// Promotions
promotion: 'Promotion',
@@ -99,6 +101,18 @@ export const lang = {
fullGift: 'Full Gift',
freeShipping: 'Free Shipping',
// Manjian promotion text templates
manjianUnitYuan: 'yuan',
manjianUnitPiece: 'pcs',
manjianItemSeparator: '; ',
fullReductionItem: 'Spend {limit} {unit}, save {money}',
fullGiftPoints: '{point} points',
fullGiftDiscountCoupon: '{count} {discount}% off coupon(s)',
fullGiftMoneyCoupon: '{count} {money} yuan coupon(s)',
fullGiftConnector: ' + ',
fullGiftItem: 'Spend {limit} {unit}, get {gift}',
freeShippingItem: 'Free shipping on {limit} {unit}',
// Product Message
productMessage: 'Product Message',
@@ -113,4 +127,60 @@ export const lang = {
// Common Button
confirm: 'Confirm',
// Goods detail view component (goods-detail-view)
detailView: {
// Delivery area
notConfigured: 'Not configured',
serviceLabel: 'Service',
// Merchant certification
officialCertifiedMerchant: 'Officially certified merchant, trustworthy!',
// Popup titles
deliveryTitle: 'Delivery',
merchantsServiceTitle: 'Product Services',
storeListTitle: 'Store List',
// Store related
distance: '{distance} away',
businessHours: 'Hours: {time}',
// Community
addCommunity: 'Add',
// Evaluate area
evaluate: 'Reviews',
noEvaluate: 'No reviews yet',
viewAll: 'View all',
// Spec attributes
specAttrTitle: 'Specifications',
expand: 'Expand',
collapse: 'Collapse',
// PDF document
defaultDocName: 'Product Document',
viewDocDetail: 'Click to view document details',
view: 'View',
// Poster
saveImage: 'Save Image',
longPressToSave: 'Long press to save',
// Share popup
shareTitle: 'Share',
shareToFriends: 'Share to Friends',
shareToGoodsCircle: 'Share to Good Circle',
generateSharePoster: 'Generate Poster',
copyLink: 'Copy Link',
cancelShare: 'Cancel',
// Toast messages
posterGenerating: 'Generating poster...',
saveSuccess: 'Saved successfully',
saveFailed: 'Save failed, please try again later',
loading: 'Loading',
fileNotExist: 'File does not exist',
}
}