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,29 @@
export const lang = {
//title为每个页面的标题
title: 'Case Studies',
// 案例列表
completionTime: 'Completion: {time}',
viewPdfFile: 'View PDF File',
// 在线留言弹窗
messagePopup: {
title: 'Leave a Message',
},
// 表单
form: {
name: 'Name',
namePlaceholder: 'Please enter your name',
contact: 'Contact',
mobilePlaceholder: 'Please enter your phone number',
messageContent: 'Message',
messagePlaceholder: 'Please enter your message',
},
// 提示
toast: {
loading: 'Loading',
fileNotExist: 'File does not exist',
},
}

View File

@@ -21,6 +21,13 @@ export const lang = {
searchTip: 'Please enter search keywords'
},
// diy custom page
diy: {
networkError: 'Network error, please try again later',
noDiyData: 'Custom page data not configured',
locationNotAvailable: 'Location not available',
},
//customer service
customer: {
weChatKefu: 'WeChat Customer Service',
@@ -53,6 +60,65 @@ export const lang = {
fromFloatButton: 'Inquiry from floating button',
},
// WeChat Work JS-SDK
wxworkJssdk: {
notInitialized: 'WeChat Work JS-SDK not initialized',
},
// WeChat Channel
wechatChannel: {
notWechat: 'Current environment is not a WeChat Mini Program',
lowVersion: 'WeChat base library version is too low, requires 2.19.2 or above',
notSupported: 'Current environment does not support WeChat Channel',
missingFields: 'Missing required field: {field}',
playFailed: 'WeChat video playback failed!',
},
// util utility functions
util: {
// upload
uploading: 'Uploading image',
uploadSuccess: 'Upload successful',
uploadFailed: 'Upload failed',
// copy
copySuccess: 'Copied successfully',
// date format
dateYear: 'Y',
dateMonth: 'M',
dateDay: 'D',
// week days
weekSunday: 'Sun',
weekMonday: 'Mon',
weekTuesday: 'Tue',
weekWednesday: 'Wed',
weekThursday: 'Thu',
weekFriday: 'Fri',
weekSaturday: 'Sat',
},
// AI service
aiService: {
// WebSocket errors
wsDomainInvalid: 'WebSocket domain configuration invalid',
wsAuthFailed: 'WebSocket authentication failed',
wsConnectionFailed: 'WebSocket connection failed',
wsConnectionClosed: 'WebSocket connection closed unexpectedly',
// Service errors
serviceUnavailable: 'AI service temporarily unavailable, please try again later',
serviceResponseError: 'AI service returned an error',
invalidResponse: 'Invalid response',
// Service status
statusNormal: 'Service normal',
statusAbnormal: 'Service abnormal',
statusCheckFailed: 'Service check failed',
// Conversation
conversationIdRequired: 'conversation_id is a required parameter',
getHistoryFailed: 'Failed to get conversation history',
getHistoryError: 'Error getting conversation history, please try again later',
// Connection
connectionFailed: 'Connection failed',
},
getDynacode: 'Get Code',
login: 'Login/Register',

View File

@@ -0,0 +1,26 @@
export const lang = {
// ===== ns-form component =====
'nsForm': {
// Selector placeholders
selectPlaceholder: 'Please select',
selectProvinceCity: 'Please select province and city',
selectProvinceCityDistrict: 'Please select province, city and district',
// Validation - required
pleaseInput: 'Please enter {title}',
pleaseSelect: 'Please select {title}',
pleaseSelectAtLeastOne: 'Please select at least one {title}',
pleaseUploadAtLeastOne: 'Please upload at least one {title}',
// Validation - format
idCardInvalid: 'Invalid ID card number',
mobileInvalid: 'Invalid mobile number',
// Validation - range
endDateBeforeStartDate: 'End date cannot be earlier than start date',
endTimeBeforeStartTime: 'End time must be later than start time',
// Image upload
maxUploadImages: 'Upload up to {max} images',
}
}

View File

@@ -0,0 +1,31 @@
export const lang = {
// ===== ns-payment component =====
'nsPayment': {
// Popup title
paymentMethod: 'Payment Method',
// Pay amount
payAmount: 'Pay {amount} CNY',
// Balance deduction
balanceDeduction: 'Balance Deduction',
availableBalance: 'Available ¥{amount}',
// Empty state
noPaymentMethod: 'No payment methods configured yet!',
// Button
confirmPay: 'Confirm Payment',
// Payment method names
alipay: 'Alipay',
wechatpay: 'WeChat Pay',
// Toast messages
pleaseSelectPaymentMethod: 'Please select a payment method!',
paying: 'Processing payment...',
payInfoNotFound: 'Failed to get payment info!',
paymentCancelled: 'Payment cancelled',
paymentFailed: 'Payment failed, reason: {reason}',
}
}

View File

@@ -0,0 +1,25 @@
export const lang = {
// ===== ns-select-time component =====
'nsSelectTime': {
// Popup titles
selectDeliveryTime: 'Select Delivery Time',
selectPickupTime: 'Select Pickup Time',
// Date labels
today: 'Today',
tomorrow: 'Tomorrow',
// Week day names (Sunday to Saturday, index 0-6 matches getDay())
sunday: 'Sun',
monday: 'Mon',
tuesday: 'Tue',
wednesday: 'Wed',
thursday: 'Thu',
friday: 'Fri',
saturday: 'Sat',
// Immediate delivery prefix/suffix (wraps time range, e.g. "Immediate delivery (09:00-10:00)")
immediateDeliveryPrefix: 'Immediate delivery (',
immediateDeliverySuffix: ')',
}
}

View File

@@ -0,0 +1,31 @@
export const lang = {
// ===== payment component =====
payment: {
// Popup title
title: 'Payment Method',
// Pay amount
payAmount: 'Pay {money} yuan',
// Balance payment
balancePay: 'Balance Payment',
availableBalance: 'Available {symbol}{balance}',
// Empty state
noPaymentMethod: 'No payment method configured!',
// Button
confirmPay: 'Confirm Payment',
// Payment method names
alipay: 'Alipay',
wechatpay: 'WeChat Pay',
// Toast messages
pleaseSelectPayMethod: 'Please select a payment method!',
paying: 'Paying...',
payInfoNotFound: 'Payment info not found!',
payCancelled: 'You have cancelled the payment',
payFailed: 'Payment failed, reason: {reason}',
}
}

View File

@@ -0,0 +1,27 @@
export const lang = {
// ===== privacy-popup component =====
privacyPopup: {
// Popup title
title: 'Privacy Protection Notice',
// Description text
descPrefix: 'Thank you for using {appName}. Before using, please read and agree to the',
descSuffix: '. When you tap "Agree and Continue", it means you have understood and agree to the terms, which will be legally binding on you. If you disagree, you will not be able to continue using {appName}.',
// Button text
disagreeBtn: 'Disagree',
agreeBtn: 'Agree and Continue',
// Default values - Mini Program
defaultContractNameMp: 'User Privacy Protection Guide',
defaultAppNameMp: 'this Mini Program',
// Default values - H5/Web
defaultAppNameH5: 'this App',
defaultContractNameH5: '《Privacy Policy》',
defaultServiceNameH5: '《User Service Agreement》',
// Toast message
disagreeTip: 'You have not agreed to the privacy policy, related features are unavailable',
}
}

View File

@@ -0,0 +1,32 @@
export const lang = {
// ===== register-reward component =====
registerReward: {
// Point reward
pointReward: 'Point Reward',
points: 'points',
pointDesc: 'Use for cash deduction or product exchange',
// Growth value
growthValue: 'Growth Value',
growthDesc: 'Used to upgrade membership level',
// Balance reward
balanceReward: 'Red Packet Reward',
yuan: ' yuan',
balanceDesc: 'Non-withdrawable, usable for orders',
// Coupon reward
couponReward: 'Coupon Reward',
// Coupon description - with minimum spend
couponMinSpendDiscount: 'Spend {atLeast}, get {discount}% off',
couponMinSpendReduce: 'Spend {atLeast}, save {money}',
// Coupon description - no threshold
couponNoThresholdDiscount: 'No threshold, {discount}% off',
couponNoThresholdReduce: 'No threshold, save {money}',
// Action button
viewNow: 'View Now',
}
}

View File

@@ -0,0 +1,21 @@
export const lang = {
// ===== wxwork-contact component =====
wxworkContact: {
// Default button text
defaultBtnText: 'Add WeChat Work Customer Service',
// Confirm popup
popupTitle: 'Add WeChat Work Customer Service',
popupContent: 'After clicking confirm, you will be redirected to WeChat Work to add a professional customer service agent',
cancelBtn: 'Cancel',
confirmBtn: 'Confirm',
// Tips
tipTitle: 'Tip',
jumpSuccess: 'Jump successful',
jumpFailed: 'Jump failed, please check WeChat Work configuration',
notConfigured: 'WeChat Work customer service not configured',
sdkNotInitialized: 'WeChat Work SDK not initialized',
openProfileFailed: 'Failed to open user profile',
}
}

View File

@@ -1,18 +1,18 @@
export const lang = {
//title为每个页面的标题
title: 'Electronic Card',
onlineMessage: 'Online Message',
call: 'One-click Call',
copy: 'Copy',
copyFailed: 'Copy Failed',
copySuccess: 'Copy Success',
oneClickNavigation: 'One-click Navigation',
name: 'Name',
contactInfo: 'Contact Info',
messageContent: 'Message Content',
pleaseEnterName: 'Please enter your name',
pleaseEnterMobile: 'Please enter your phone number',
pleaseEnterMessage: 'Please enter your message',
submit: 'Submit',
exclusiveCustomerService: 'Exclusive Customer Service'
// Section titles
enterpriseFiles: 'Enterprise Files',
enterpriseVideos: 'Enterprise Videos',
// Share
contactUs: 'Contact Us',
// Toast messages
videoUrlNotExist: 'Video URL does not exist',
pleaseFillName: 'Please fill in your name',
invalidMobileFormat: 'Invalid mobile number format',
pleaseFillMessage: 'Please fill in the message content',
submitSuccess: 'Submitted successfully',
submitFailed: 'Submission failed, please try again',
}

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',
}
}

View File

@@ -1,12 +1,32 @@
export const lang = {
//title为每个页面的标题
title: 'Find Password',
findPassword: 'Find Password',
accountPlaceholder: 'Please enter mobile number',
captchaPlaceholder: 'Please enter verification code',
dynacodePlaceholder: 'Please enter dynamic code',
passwordPlaceholder: 'Please enter new password',
rePasswordPlaceholder: 'Please confirm new password',
next: 'Next',
save: 'Confirm Modification'
}
// Find Password
find: {
// Step titles
step0Title: 'Please enter your phone number',
step1Title: 'Please enter the verification code',
step2Title: 'Please set a new password',
// Step tips
step0Tip: 'Please confirm your account is bound to this phone number',
step1Tip: 'Verification code sent to: {mobile}',
step2Tip: 'We recommend a simple and memorable password',
// Button text
resendCode: 'Resend',
resendCountdown: 'Resend ({seconds}s)',
// Validation error messages
mobileInvalid: 'Please enter a valid phone number',
mobileNotRegistered: 'This phone number is not registered',
passwordRequired: 'Please enter password',
passwordTooShort: 'Password must be at least {length} characters',
passwordMismatch: 'The two passwords do not match',
// Password complexity提示 (in concatenation order, including separators)
passwordComplexityPrefix: 'Password must contain',
complexityNumber: ' numbers',
complexityLowercase: ', lowercase letters',
complexityUppercase: ', uppercase letters',
complexitySymbol: ', special characters',
}
};

View File

@@ -7,9 +7,17 @@ export const lang = {
mobilePhone: 'Mobile Number',
mobilePhonePlaceholder: 'Please enter mobile number',
accountType: 'Account Type',
bankInfo: 'Branch Information',
bankInfoPlaceholder: 'Please enter branch information',
bankName: 'Bank Name',
bankNamePlaceholder: 'Please enter bank name',
withdrawalAccount: 'Withdrawal Account',
withdrawalAccountPlaceholder: 'Please enter withdrawal account',
save: 'Save'
}
save: 'Save',
pleaseEnterName: 'Please enter name',
pleaseEnterMobile: 'Please enter mobile number',
pleaseEnterValidMobile: 'Please enter a valid mobile number',
pleaseSelectAccountType: 'Please select account type',
pleaseEnterBankName: 'Please enter bank name',
pleaseEnterWithdrawalAccount: 'Please enter withdrawal account',
addSuccess: 'Added successfully',
editSuccess: 'Modified successfully'
}

View File

@@ -1,3 +1,19 @@
export const lang = {
title: 'Account Cancellation',
}
riskTip: 'Risk Warning: After confirming the application, your assets will be cleared and cannot be recovered!',
accountAssets: 'Account Assets',
point: 'Points',
cashBalance: 'Cash Balance',
storedValueBalance: 'Stored Value Balance',
coupon: 'Coupons',
orderAssets: 'Order Assets',
waitDelivery: 'Pending Shipment',
waitReceive: 'Pending Receipt',
refunding: 'Refunding',
fenxiaoAssets: 'Distribution Assets',
withdrawableCommission: 'Withdrawable Commission',
withdrawingCommission: 'Withdrawing Commission',
waitSettleOrder: 'Pending Settlement Orders',
prevStep: 'Previous',
confirmApply: 'Confirm Application',
}

View File

@@ -1,4 +1,38 @@
export const lang = {
//title为每个页面的标题
title: 'Membership Card'
}
//title is the title of each page
title: 'Membership Card',
// Member info
validUntil: 'Valid until: ',
// Membership card description
enjoyDiscountAnd: ' can enjoy consumption discounts and',
memberGiftBenefits: 'member gift packages and other benefits',
// Member benefits
memberBenefits: 'Member Benefits',
freeShipping: 'Free Shipping',
enjoyFreeShipping: 'Enjoy free shipping service',
consumptionDiscount: 'Consumption Discount',
enjoyDiscountOnSomeProducts: 'Enjoy {discount}% off on some products',
pointsReward: 'Points Reward',
earnPointsMultiplier: 'Earn {multiplier}x points on orders',
// Welcome gift
welcomeGift: 'Welcome Gift',
pointsGift: 'Points Gift',
giftPoints: 'Get {points} points',
redPacketGift: 'Red Packet Gift',
giftRedPacket: 'Get {amount} yuan red packet',
couponGift: 'Coupon Gift',
giftCoupons: 'Get {count} coupons',
// Action buttons
renewNow: 'Renew Now',
// Popup
cardDescription: 'Membership Card Description',
// Share
shareTitle: 'Exclusive member benefits, come and experience',
}

View File

@@ -1,4 +1,47 @@
export const lang = {
//title为每个页面的标题
title: 'My Coupons'
}
//title is the title of each page
title: 'My Coupons',
// ====== Tabs ======
// Unused
tabUnused: 'Unused',
// Used
tabUsed: 'Used',
// Expired
tabExpired: 'Expired',
// ====== Coupon Info ======
// Discount display: {discount}% off
discountText: '{discount}% off',
// Minimum amount condition: Available with {amount} yuan spend
minAmountCondition: 'Min. {amount} available',
// No threshold coupon
noThresholdCoupon: 'No threshold coupon',
// Specified goods
specifiedGoods: 'Specified goods',
// Maximum discount: (Max discount {amount} yuan)
maxDiscount: '(Max discount {amount})',
// ====== Valid Period ======
// Valid period prefix
validPeriodPrefix: 'Valid: ',
// Long-term valid
longTermValid: 'Long-term valid',
// ====== Buttons & Status ======
// Use now
useNow: 'Use Now',
// Used
used: 'Used',
// Expired
expired: 'Expired',
// ====== Empty State ======
// No coupons yet
emptyText: 'No coupons yet',
// Go shopping
goShopping: 'Go Shopping',
// ====== Toast Messages ======
// Merchant has not enabled coupons
merchantNotEnabled: 'Merchant has not enabled coupons'
}

View File

@@ -1,5 +1,5 @@
export const lang = {
//title为每个页面的标题
//title is the title of each page
title: 'Member Level',
defaultLevelTips: 'You are already the highest level member!',
tag: 'Exclusive Tag',
@@ -13,5 +13,48 @@ export const lang = {
equity: 'Benefits',
giftPackage: 'Upgrade Gift Pack',
levelExplain: 'Level Explanation',
upgradeTips: 'Upgrade membership to enjoy exclusive benefits'
}
upgradeTips: 'Upgrade membership to enjoy exclusive benefits',
// Current level label
currentLevelLabel: 'Current Level: ',
// Growth rules
growthRules: 'Growth Rules',
// Current level tag
currentLevelTag: 'Current Level',
// Current growth value
currentGrowthValue: 'Current Growth',
// Next level progress tip
growthToNextLevel: 'Earn {needGrowth} more growth points to become {levelName}',
// Max level reached
maxLevelReached: 'You have reached the highest level',
// Member benefits
memberBenefits: 'Member Benefits',
// Free shipping
freeShipping: 'Free Shipping',
freeShippingDesc: 'Free shipping on all products',
// Consumption discount
consumptionDiscount: 'Consumption Discount',
noDiscountDesc: 'No consumption discount or other benefits',
discountDescWithValue: 'Enjoy {discount}% consumption discount',
// Points reward
pointsReward: 'Points Reward',
pointsRewardDesc: 'Earn {multiplier}x points multiplier',
// Member gift pack
memberGift: 'Member Gift Pack',
// Points gift
pointsGift: 'Points Gift',
giftPoints: 'Gift: {points} points',
// Red packet gift
redPacketGift: 'Red Packet Gift',
giftRedPacket: 'Gift: {amount} yuan red packet',
// Coupon gift
couponGift: 'Coupon Gift',
giftCoupons: 'Gift: {count} coupons',
// Coupon popup
coupons: 'Coupons',
// Currency unit
yuan: ' yuan',
// Discount unit
zhe: '% off',
// Loading tip
navigatingToDetail: 'Navigating to detail page'
}

View File

@@ -0,0 +1,18 @@
export const lang = {
//title is the title of each page
title: 'Growth Value Rules',
// Table headers
level: 'Level',
growthValue: 'Growth Value',
// What is growth value
whatIsGrowthValue: 'What is Growth Value',
growthValueDescription: 'Growth value is calculated from purchases after a consumer becomes a member of the store. Growth value determines the membership level. The higher the membership level, the more member benefits and gift packages you can enjoy.',
// How to get growth value
howToGetGrowthValue: 'How to Earn Growth Value',
ruleRegister: '1. Earn x growth points for registering as a member.',
ruleRecharge: '2. Earn x growth points for recharging balance.',
ruleCheckin: '3. Earn x growth points for daily check-in.',
ruleConsume: '4. Earn x growth points for every x yuan spent when the transaction is completed.',
// Loading tip
navigatingToDetail: 'Navigating to detail page'
}

View File

@@ -1,3 +1,28 @@
export const lang = {
title: 'Payment Password',
}
// Tips
passwordTips: 'Please enter a 6-digit payment password. It is recommended not to use repeated or consecutive numbers.',
codeSentTips: 'Verification code has been sent to {mobile}. Please enter the 4-digit code below.',
// Action tips
inputSmsCode: 'Enter SMS verification code',
setPayPassword: 'Please set payment password',
inputAgain: 'Please enter again',
// Buttons
confirm: 'Confirm',
getCode: 'Get Code',
getDynacode: 'Get Dynamic Code',
// Modal
tipsTitle: 'Tip',
bindMobileFirst: 'You need to bind your mobile number first to set a payment password. Bind now?',
// Toast
modifySuccess: 'Modified successfully',
passwordMismatch: 'The two passwords do not match',
// Countdown
resendAfter: 'Resend after {seconds}s',
}

View File

@@ -1,4 +1,39 @@
export const lang = {
//title为每个页面的标题
//title is the title of each page
title: 'Merchant Home',
// Search
searchPlaceholder: 'Please enter the product you want to search for',
// Description expand/collapse
desc: {
scrollUpToViewMore: 'Swipe up to view more',
collapse: '↑ Collapse',
expand: '↓ Expand',
},
// Sort
sort: {
comprehensive: 'Comprehensive',
sales: 'Sales',
price: 'Price',
filter: 'Filter',
},
// Goods list
goods: {
consultNow: 'Consult Now',
sold: 'Sold {num}{unit}',
defaultUnit: 'pcs',
noGoods: 'No products',
},
// Filter drawer
filter: {
title: 'Filter',
allCategories: 'All Categories',
all: 'All',
reset: 'Reset',
confirm: 'Confirm',
},
}

View File

@@ -2,4 +2,71 @@ export const lang = {
//title为每个页面的标题
title: 'Edit Product',
addTitle: 'Add Product',
// Product status
grounding: {
offShelf: 'Off Shelf',
onShelf: 'On Shelf',
},
// Pickup type
pickupType: {
sameDay: 'Same Day Delivery',
nextDay: 'Next Day Delivery',
dayAfter: 'Day After Delivery',
},
// Virtual delivery type
virtualDeliver: {
auto: 'Automatic Delivery',
manual: 'Manual Delivery',
verify: 'In-store Verification',
},
// Virtual receive type
virtualReceive: {
auto: 'Automatic Receipt',
buyerConfirm: 'Buyer Confirm Receipt',
},
// Validity type
validityType: {
permanent: 'Permanent',
daysAfterPurchase: 'Valid for Days After Purchase',
specifiedDate: 'Specified Expiry Date',
},
// Card code
carmi: {
add: 'Add Card Code',
addWithCount: 'Add Card Code [{count}]',
},
// Limit type
limitType: {
single: 'Single Purchase Limit',
longTerm: 'Long-term Purchase Limit',
},
// Messages
message: {
goodsNotExist: 'Product does not exist',
maxCategory: 'Product can belong to multiple categories, maximum 10',
pleaseEnterGoodsName: 'Please enter product name',
subtitleMaxLength: 'Product description cannot exceed {max} characters',
pleaseUploadGoodsImage: 'Please upload product images',
pleaseEnterSalePrice: 'Please enter sale price',
salePriceFormatError: '[Sale Price] format input error',
originalPriceFormatError: '[Original Price] format input error',
pleaseEnterStock: 'Please enter stock',
stockFormatError: '[Stock] format input error',
minOrderFormatError: '[Minimum Order] format input error',
minOrderNotLessThanZero: 'Minimum order quantity cannot be less than 0',
},
// Placeholder
placeholder: {
selectGoodsForm: 'Please select product form',
selectSupplier: 'Please select supplier',
},
}

View File

@@ -1,4 +1,50 @@
export const lang = {
//title为每个页面的标题
title: 'Order Details'
}
//title for each page
title: 'Order Details',
// ====== Order Status ======
status: {
pendingPayment: 'Pending Payment',
completed: 'Completed',
closed: 'Closed'
},
// ====== Goods ======
goods: {
points: 'points'
},
// ====== Order Info ======
orderInfo: {
orderNo: 'Order No.:',
copy: 'Copy',
outTradeNo: 'Trade No.:',
createTime: 'Created:',
closeTime: 'Closed:'
},
// ====== Amount ======
amount: {
pointsUsed: 'Points Used',
deliveryFee: 'Shipping',
totalPayable: 'Total Payable:'
},
// ====== Buttons ======
button: {
close: 'Close',
pay: 'Pay'
},
// ====== Modal ======
modal: {
tip: 'Tip',
confirmClose: 'Are you sure to close this exchange?'
},
// ====== Toast Messages ======
toast: {
orderInfoNotFound: 'Order information not found!',
closeSuccess: 'Closed successfully'
}
}

View File

@@ -9,5 +9,24 @@ export const lang = {
waitEvaluate: 'Pending Review',
waitUse: 'Pending Use',
update: "Release to refresh",
updateIng: "Loading..."
}
updateIng: "Loading...",
// Search
searchPlaceholder: 'Please enter product name/order number',
// Order info
orderNo: 'Order No.: ',
totalGoods: '{num} items total',
actualPayment: 'Total: ',
remainingTime: 'Remaining: ',
// Action buttons
evaluate: 'Review',
review: 'Add Review',
viewDetail: 'View Details',
// Status Tabs (mapped by status value)
status: {
all: 'All',
waitpay: 'Pending Payment',
waitsend: 'Pending Shipment',
waitconfirm: 'Pending Receipt',
waitrate: 'Completed'
}
}

View File

@@ -96,6 +96,26 @@ export const lang = {
confirm: 'OK'
},
// ====== Promotion Description ======
promotion: {
title: 'Discounts & Gifts',
yuan: ' yuan',
piece: ' pcs',
points: ' points',
manjianFirst: 'Spend {limit}{unit}, save {money} yuan',
manjianMore: '; Spend {limit}{unit}, save {money} yuan',
couponDiscountFirst: 'get {num} {discount}% off coupon',
couponDiscountMore: ', get {num} {discount}% off coupon',
couponMoneyFirst: 'get {num} {money} yuan coupon',
couponMoneyMore: ', get {num} {money} yuan coupon',
mansongFirst: 'Spend {limit}{unit}, {text}',
mansongMore: '; Spend {limit}{unit}, {text}',
pointGain: 'earn {point} points',
pointFirst: 'Spend {limit}{unit}, {pointText}',
pointMore: '; Spend {limit}{unit}, {pointText}',
freeShipping: 'Free shipping on orders over {limit}{unit}'
},
// ====== Buyer Message Popup ======
buyerMessagePopup: {
title: 'Buyer Message',

View File

@@ -1,4 +1,37 @@
export const lang = {
//title为每个页面的标题
title: 'Apply for Refund',
}
// ====== Refund Type Selection ======
refundType: {
refundOnly: 'Refund Only',
refundOnlyDesc: 'Item not received, or seller agreed to refund without return',
returnRefund: 'Return & Refund',
returnRefundDesc: 'Item received, need to return the goods'
},
// ====== Refund Form ======
form: {
refundReason: 'Refund Reason:',
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'
}
}

View File

@@ -0,0 +1,29 @@
export const lang = {
// Search
searchPlaceholder: 'Please enter product keywords',
// Sort
comprehensive: 'Comprehensive',
points: 'Points',
newArrival: 'New Arrival',
filter: 'Filter',
// Goods list
stock: 'Stock',
noGoods: 'No point products available',
// Filter drawer
pointRange: 'Point Range',
minPlaceholder: 'Min',
maxPlaceholder: 'Max',
allCategories: 'All Categories',
all: 'All',
reset: 'Reset',
confirm: 'Confirm',
// Tips
pleaseEnterMaxPrice: 'Please enter the maximum price',
priceCannotBeLessThanZero: 'Filter price cannot be less than 0',
minCannotBeGreaterThanMax: 'Minimum price cannot be greater than maximum price',
maxCannotBeLessThanMin: 'Maximum price cannot be less than minimum price',
}

View File

@@ -59,5 +59,32 @@ export const lang = {
pointsSuffix: ' pts',
submitOrder: 'Submit Order',
shortByForMinimum: '{amount} more for minimum order'
},
// ====== Toast Messages ======
toast: {
orderDataNotFound: 'Failed to get data required for order creation!',
pleaseEnterMobile: 'Please enter your mobile number',
pleaseEnterCorrectMobile: 'Please enter a valid mobile number',
noDeliveryMethod: 'Merchant has not set up delivery methods',
pleaseSelectAddress: 'Please select your delivery address first',
noPickupStore: 'No stores available for pickup, please choose another delivery method',
pleaseEnterReservedMobile: 'Please enter your reserved phone number',
pleaseEnterCorrectReservedMobile: 'Please enter a valid reserved phone number',
pleaseSelectPickupTime: 'Please select pickup time',
noDeliveryStore: 'No stores available for delivery, please choose another delivery method',
pleaseSelectDeliveryTime: 'Please select delivery time'
},
// ====== Modal ======
modal: {
orderNotCreated: 'Order Not Created',
goToSet: 'Go to Set'
},
// ====== Time Selection ======
time: {
today: 'Today',
tomorrow: 'Tomorrow'
}
}

View File

@@ -1,4 +1,14 @@
export const lang = {
//title为每个页面的标题
title: 'Recharge List'
}
title: 'Recharge List',
rechargeAmount: 'Recharge Amount',
rechargeRecords: 'Recharge Records',
placeholderEnterAmount: 'Please enter recharge amount',
yuan: 'yuan',
salePrice: 'Sale price {price} yuan',
amount: 'Amount',
confirmRecharge: 'Confirm Recharge',
recharge: 'Recharge',
pleaseEnterAmount: 'Please enter recharge amount',
pleaseSelectPackage: 'Please select a package'
}

View File

@@ -1,4 +1,29 @@
export const lang = {
//title为每个页面的标题
title: '案例展示',
// 案例列表
completionTime: '完成时间:{time}',
viewPdfFile: '查看PDF文件',
// 在线留言弹窗
messagePopup: {
title: '在线留言',
},
// 表单
form: {
name: '姓名',
namePlaceholder: '请输入您的姓名',
contact: '联系方式',
mobilePlaceholder: '请输入您的手机号',
messageContent: '留言内容',
messagePlaceholder: '请输入留言内容',
},
// 提示
toast: {
loading: '正在加载',
fileNotExist: '文件不存在',
},
}

View File

@@ -28,6 +28,13 @@ export const lang = {
weChatWorkKefu: '企业微信客服',
},
// diy 自定义页面
diy: {
networkError: '网络异常,请稍后重试',
noDiyData: '未配置自定义页面数据',
locationNotAvailable: '未获取到定位',
},
// 客服服务
customerService: {
openFailed: '打开客服失败',
@@ -53,6 +60,65 @@ export const lang = {
fromFloatButton: '来自悬浮按钮的咨询',
},
// 企业微信JS-SDK
wxworkJssdk: {
notInitialized: '企业微信JS-SDK未初始化',
},
// 微信视频号
wechatChannel: {
notWechat: '当前环境不是微信小程序',
lowVersion: '当前微信基础库版本过低,需要 2.19.2 或以上版本',
notSupported: '当前环境不支持微信视频号',
missingFields: '缺少必要字段: {field}',
playFailed: '微信视频播放失败!',
},
// util 工具函数
util: {
// 上传相关
uploading: '图片上传中',
uploadSuccess: '上传成功',
uploadFailed: '上传失败',
// 复制相关
copySuccess: '复制成功',
// 日期格式
dateYear: '年',
dateMonth: '月',
dateDay: '日',
// 星期
weekSunday: '周日',
weekMonday: '周一',
weekTuesday: '周二',
weekWednesday: '周三',
weekThursday: '周四',
weekFriday: '周五',
weekSaturday: '周六',
},
// AI 客服服务
aiService: {
// WebSocket 相关错误
wsDomainInvalid: 'WebSocket 域名配置无效',
wsAuthFailed: 'WebSocket 认证失败',
wsConnectionFailed: 'WebSocket 连接失败',
wsConnectionClosed: 'WebSocket 连接意外关闭',
// 服务相关错误
serviceUnavailable: 'AI服务暂时不可用,请稍后重试',
serviceResponseError: 'AI服务返回错误',
invalidResponse: '无效响应',
// 服务状态
statusNormal: '服务正常',
statusAbnormal: '服务异常',
statusCheckFailed: '服务检查失败',
// 会话相关
conversationIdRequired: '会话ID(conversation_id)是必填参数',
getHistoryFailed: '获取会话历史失败',
getHistoryError: '获取会话历史时发生错误,请稍后重试',
// 连接相关
connectionFailed: '连接失败',
},
login: '登录/注册',
loginTips: '点击登录 享受更多精彩信息',
toLogin: '去登录',

View File

@@ -0,0 +1,26 @@
export const lang = {
// ===== ns-form 组件 =====
'nsForm': {
// 选择器占位文本
selectPlaceholder: '请选择',
selectProvinceCity: '请选择省市',
selectProvinceCityDistrict: '请选择省市区/县',
// 验证提示 - 必填
pleaseInput: '请输入{title}',
pleaseSelect: '请选择{title}',
pleaseSelectAtLeastOne: '请至少选择一个{title}',
pleaseUploadAtLeastOne: '请至少上传一张{title}',
// 验证提示 - 格式校验
idCardInvalid: '身份证输入不合法',
mobileInvalid: '手机号输入不合法',
// 验证提示 - 范围校验
endDateBeforeStartDate: '结束日期不能小于开始日期',
endTimeBeforeStartTime: '结束时间必须大于开始时间',
// 图片上传
maxUploadImages: '最多上传{max}张图片',
}
}

View File

@@ -0,0 +1,31 @@
export const lang = {
// ===== ns-payment 组件 =====
'nsPayment': {
// 弹窗标题
paymentMethod: '支付方式',
// 支付金额
payAmount: '支付金额{amount}元',
// 余额抵扣
balanceDeduction: '余额抵扣',
availableBalance: '可用¥{amount}',
// 空状态
noPaymentMethod: '平台尚未配置支付方式!',
// 按钮
confirmPay: '确认支付',
// 支付方式名称
alipay: '支付宝支付',
wechatpay: '微信支付',
// 提示文案
pleaseSelectPaymentMethod: '请选择支付方式!',
paying: '支付中...',
payInfoNotFound: '未获取到支付信息!',
paymentCancelled: '您已取消支付',
paymentFailed: '支付失败,失败原因: {reason}',
}
}

View File

@@ -0,0 +1,25 @@
export const lang = {
// ===== ns-select-time 组件 =====
'nsSelectTime': {
// 弹窗标题
selectDeliveryTime: '选择送达时间',
selectPickupTime: '选择自提时间',
// 日期标签
today: '今天',
tomorrow: '明天',
// 星期名称(按周日到周六顺序,索引 0-6 对应 getDay() 返回值)
sunday: '周日',
monday: '周一',
tuesday: '周二',
wednesday: '周三',
thursday: '周四',
friday: '周五',
saturday: '周六',
// 立即配送前后缀(用于拼接时间范围,如"立即配送(09:00-10:00)")
immediateDeliveryPrefix: '立即配送(',
immediateDeliverySuffix: ')',
}
}

View File

@@ -0,0 +1,31 @@
export const lang = {
// ===== payment 组件 =====
payment: {
// 弹窗标题
title: '支付方式',
// 支付金额
payAmount: '支付金额{money}元',
// 余额支付
balancePay: '余额支付',
availableBalance: '可用{symbol}{balance}',
// 空状态
noPaymentMethod: '平台尚未配置支付方式!',
// 按钮
confirmPay: '确认支付',
// 支付方式名称
alipay: '支付宝支付',
wechatpay: '微信支付',
// 提示文案
pleaseSelectPayMethod: '请选择支付方式!',
paying: '支付中...',
payInfoNotFound: '未获取到支付信息!',
payCancelled: '您已取消支付',
payFailed: '支付失败,失败原因: {reason}',
}
}

View File

@@ -0,0 +1,27 @@
export const lang = {
// ===== privacy-popup 组件 =====
privacyPopup: {
// 弹窗标题
title: '用户隐私保护提示',
// 描述文本
descPrefix: '感谢您使用{appName},在使用前您应当阅读并同意',
descSuffix: ',当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用{appName}相关功能。',
// 按钮文字
disagreeBtn: '不同意',
agreeBtn: '同意并继续',
// 默认值 - 小程序端
defaultContractNameMp: '用户隐私保护指引',
defaultAppNameMp: '本小程序',
// 默认值 - H5/Web 端
defaultAppNameH5: '本应用',
defaultContractNameH5: '《隐私条款》',
defaultServiceNameH5: '《用户服务协议》',
// 提示文案
disagreeTip: '未同意隐私协议,无法使用相关功能',
}
}

View File

@@ -0,0 +1,32 @@
export const lang = {
// ===== register-reward 组件 =====
registerReward: {
// 积分奖励
pointReward: '积分奖励',
points: '积分',
pointDesc: '用于下单时抵现或兑换商品等',
// 成长值
growthValue: '成长值',
growthDesc: '用于提升会员等级',
// 红包奖励
balanceReward: '红包奖励',
yuan: '元',
balanceDesc: '不可提现下单时可用',
// 优惠券奖励
couponReward: '优惠券奖励',
// 优惠券描述 - 有门槛
couponMinSpendDiscount: '满{atLeast}打{discount}折',
couponMinSpendReduce: '满{atLeast}减{money}',
// 优惠券描述 - 无门槛
couponNoThresholdDiscount: '无门槛,打{discount}折',
couponNoThresholdReduce: '无门槛,减{money}',
// 操作按钮
viewNow: '立即查看',
}
}

View File

@@ -0,0 +1,21 @@
export const lang = {
// ===== wxwork-contact 组件 =====
wxworkContact: {
// 按钮默认文字
defaultBtnText: '添加企业微信客服',
// 确认弹窗
popupTitle: '添加企业微信客服',
popupContent: '点击确定后将跳转至企业微信,添加专业客服为您服务',
cancelBtn: '取消',
confirmBtn: '确定',
// 提示相关
tipTitle: '提示',
jumpSuccess: '跳转成功',
jumpFailed: '跳转失败,请检查企业微信配置',
notConfigured: '未配置企业微信客服信息',
sdkNotInitialized: '企业微信SDK未初始化',
openProfileFailed: '打开用户资料失败',
}
}

View File

@@ -1,18 +1,18 @@
export const lang = {
//title为每个页面的标题
title: '电子名片',
onlineMessage: '在线留言',
call: '一键拨打',
copy: '复制',
copyFailed: '复制失败',
copySuccess: '复制成功',
oneClickNavigation: '一键导航',
name: '姓名',
contactInfo: '联系方式',
messageContent: '留言内容',
pleaseEnterName: '请输入您的姓名',
pleaseEnterMobile: '请输入您的手机号',
pleaseEnterMessage: '请输入留言内容',
submit: '提交',
exclusiveCustomerService: '专属客服'
// 区块标题
enterpriseFiles: '企业文件',
enterpriseVideos: '企业视频',
// 分享
contactUs: '联系我们',
// 提示信息
videoUrlNotExist: '视频地址不存在',
pleaseFillName: '请填写姓名',
invalidMobileFormat: '手机号格式不正确',
pleaseFillMessage: '请填写留言内容',
submitSuccess: '提交成功',
submitFailed: '提交失败,请重试',
}

View File

@@ -1,4 +1,56 @@
export const lang = {
//title为每个页面的标题
title: '优惠券领取'
title: '优惠券领取',
// ====== 标签页 ======
// 全部
tabAll: '全部',
// 满减券
tabReward: '满减券',
// 折扣券
tabDiscount: '折扣券',
// ====== 优惠券信息 ======
// 折扣单位:{discount}折
discountText: '{discount}折',
// 满减使用条件:满{atLeast}元可用
minSpendAvailable: '满{atLeast}元可用',
// 无门槛优惠券
noThresholdCoupon: '无门槛优惠券',
// 指定商品
specifiedGoods: '指定商品',
// 全场商品
allGoods: '全场商品',
// 最大优惠:(最大优惠{amount}元)
maxDiscount: '(最大优惠{amount}元)',
// ====== 有效期 ======
// 有效期至:有效期:{date}
validPeriodDate: '有效期:{date}',
// 领取后N天有效:有效期:领取之日起{days}日内有效
validPeriodDays: '有效期:领取之日起{days}日内有效',
// 长期有效:有效期:长期有效
validPeriodLong: '有效期:长期有效',
// ====== 按钮与状态 ======
// 领取
receive: '领取',
// 去使用
useNow: '去使用',
// 已抢光
soldOut: '已抢光',
// 已过期
expired: '已过期',
// 已达上限
limitReached: '已达上限',
// ====== 空状态 ======
// 暂无可领取的优惠券
emptyText: '暂无可领取的优惠券',
// ====== 提示消息 ======
// 商家未开启优惠券
merchantNotEnabled: '商家未开启优惠券',
// 领取成功提示
receiveSuccess: '领取成功,快去使用吧'
}

View File

@@ -1,4 +1,47 @@
export const lang = {
//title为每个页面的标题
title: '领取优惠券'
title: '领取优惠券',
// ====== 优惠券信息 ======
// 折扣显示:{discount}折
discountText: '{discount}折',
// 满减使用条件:满{atLeast}元使用
minSpendUsage: '满{atLeast}元使用',
// 无门槛优惠券
noThresholdCoupon: '无门槛优惠券',
// 有效期至:有效期至 {endTime}
validUntil: '有效期至 {endTime}',
// 领取后N天有效:领取之日起{fixedTerm}天内有效
validDaysAfterReceive: '领取之日起{fixedTerm}天内有效',
// 长期有效
longTermValid: '长期有效',
// 适用门店:适用门店:{storeName}
applicableStores: '适用门店:{storeName}',
// 扫码分享提示
scanShareTip: '注:扫描二维码或点击右上角进行分享',
// ====== 按钮文案 ======
receive: '领取',
// 优惠券已领完
couponSoldOut: '来迟了该优惠券已被领取完了!',
// 活动已结束
activityEnded: '该优惠券活动已结束!',
// 活动已关闭
activityClosed: '该优惠券活动已关闭',
// 领取已达上限
receiveLimitReached: '该优惠券领取已达到上限!',
// ====== 提示消息 ======
// 商家未开启优惠券
merchantNotEnabled: '商家未开启优惠券',
// 领取成功
receiveSuccess: '领取成功',
// ====== 分享文案 ======
// 恭喜获得代金券:恭喜您获得一张{money}元的优惠券
congratsMoneyCoupon: '恭喜您获得一张{money}元的优惠券',
// 恭喜获得折扣券:恭喜您获得一张{discount}折优惠券
congratsDiscountCoupon: '恭喜您获得一张{discount}折优惠券',
// 满减可用描述:满{atLeast}元可用
minSpendAvailable: '满{atLeast}元可用'
}

View File

@@ -85,6 +85,8 @@ export const lang = {
couponSoldOut: '已抢光',
couponClaimed: '已领取',
couponReceive: '领取',
couponAlreadyClaimed: '您已领取过该优惠券,快去使用吧',
couponClaimSuccess: '领取成功,快去使用吧',
// 促销活动
promotion: '促销',
@@ -92,6 +94,18 @@ export const lang = {
fullGift: '满送',
freeShipping: '包邮',
// 满减活动文案模板
manjianUnitYuan: '元',
manjianUnitPiece: '件',
manjianItemSeparator: ';',
fullReductionItem: '满{limit}{unit}减{money}元',
fullGiftPoints: '送{point}积分',
fullGiftDiscountCoupon: '送{count}张{discount}折优惠券',
fullGiftMoneyCoupon: '送{count}张{money}元优惠券',
fullGiftConnector: '、送',
fullGiftItem: '满{limit}{unit}{gift}',
freeShippingItem: '满{limit}{unit}包邮',
// 商品留言
productMessage: '商品留言',
@@ -106,4 +120,60 @@ export const lang = {
// 通用按钮
confirm: '确定',
// 商品详情视图组件(goods-detail-view)
detailView: {
// 配送区域
notConfigured: '未配置',
serviceLabel: '服务',
// 商家认证
officialCertifiedMerchant: '官方认证商家,值得信赖!',
// 弹窗标题
deliveryTitle: '配送',
merchantsServiceTitle: '商品服务',
storeListTitle: '门店列表',
// 门店相关
distance: '距离{distance}',
businessHours: '营业时间:{time}',
// 社群
addCommunity: '添加',
// 评价区域
evaluate: '评价',
noEvaluate: '暂无评价',
viewAll: '查看全部',
// 规格属性
specAttrTitle: '规格属性',
expand: '展开',
collapse: '收起',
// PDF文档
defaultDocName: '商品文档',
viewDocDetail: '点击查看文档详情',
view: '查看',
// 海报
saveImage: '保存图片',
longPressToSave: '长按图片进行保存',
// 分享弹窗
shareTitle: '分享',
shareToFriends: '分享给好友',
shareToGoodsCircle: '分享到好物圈',
generateSharePoster: '生成分享海报',
copyLink: '复制链接',
cancelShare: '取消分享',
// 提示消息
posterGenerating: '海报生成中...',
saveSuccess: '保存成功',
saveFailed: '保存失败,请稍后重试',
loading: '正在加载',
fileNotExist: '文件不存在',
}
}

View File

@@ -1,12 +1,32 @@
export const lang = {
//title为每个页面的标题
title: '找回密码',
findPassword: '找回密码',
accountPlaceholder: '请输入手机号',
captchaPlaceholder: "请输入验证码",
dynacodePlaceholder: '请输入动态码',
passwordPlaceholder: '请输入新密码',
rePasswordPlaceholder: '请确认新密码',
next: '下一步',
save: '确认修改'
}
// 找回密码
find: {
// 步骤标题
step0Title: '请输入手机号',
step1Title: '请输入验证码',
step2Title: '请设置新的密码',
// 步骤提示
step0Tip: '请确认您的账号已绑定此手机号',
step1Tip: '已将验证码发送至手机号:{mobile}',
step2Tip: '建议您的新密码以简单好记为标准',
// 按钮文字
resendCode: '重新获取',
resendCountdown: '重新获取({seconds}s)',
// 验证错误提示
mobileInvalid: '请输入正确的手机号',
mobileNotRegistered: '该手机号未注册',
passwordRequired: '请输入密码',
passwordTooShort: '密码长度不能小于{length}位',
passwordMismatch: '两次密码不一致',
// 密码复杂度提示(按拼接顺序,含分隔符)
passwordComplexityPrefix: '密码需包含',
complexityNumber: '数字',
complexityLowercase: '、小写字母',
complexityUppercase: '、大写字母',
complexitySymbol: '、特殊字符',
}
};

View File

@@ -7,9 +7,17 @@ export const lang = {
mobilePhone: '手机号码',
mobilePhonePlaceholder: '请输入手机号',
accountType: '账号类型',
bankInfo: '支行信息',
bankInfoPlaceholder: '请输入支行信息',
bankName: '银行名称',
bankNamePlaceholder: '请输入银行名称',
withdrawalAccount: '提现账号',
withdrawalAccountPlaceholder: '请输入提现账号',
save: '保存'
save: '保存',
pleaseEnterName: '请输入姓名',
pleaseEnterMobile: '请输入手机号',
pleaseEnterValidMobile: '请输入正确的手机号',
pleaseSelectAccountType: '请选择账户类型',
pleaseEnterBankName: '请输入银行名称',
pleaseEnterWithdrawalAccount: '请输入提现账号',
addSuccess: '添加成功',
editSuccess: '修改成功'
}

View File

@@ -1,3 +1,19 @@
export const lang = {
title: '账号注销',
}
riskTip: '风险提示:确认申请后您的资产将被清空且不可找回!',
accountAssets: '账户资产',
point: '积分',
cashBalance: '现金余额',
storedValueBalance: '储值余额',
coupon: '优惠券',
orderAssets: '订单资产',
waitDelivery: '待发货',
waitReceive: '待收货',
refunding: '退款中',
fenxiaoAssets: '分销资产',
withdrawableCommission: '可提现佣金',
withdrawingCommission: '提现中佣金',
waitSettleOrder: '待结算订单',
prevStep: '上一步',
confirmApply: '确认申请',
}

View File

@@ -1,4 +1,38 @@
export const lang = {
//title为每个页面的标题
title: '会员卡'
title: '会员卡',
// 会员信息
validUntil: '有效期至:',
// 会员卡描述
enjoyDiscountAnd: '可享受消费折扣和',
memberGiftBenefits: '会员大礼包等权益',
// 会员权益
memberBenefits: '会员权益',
freeShipping: '全场包邮',
enjoyFreeShipping: '享受商品包邮服务',
consumptionDiscount: '消费折扣',
enjoyDiscountOnSomeProducts: '部分商品下单可享{discount}折优惠',
pointsReward: '积分回馈',
earnPointsMultiplier: '下单享{multiplier}倍积分回馈',
// 开卡礼包
welcomeGift: '开卡礼包',
pointsGift: '积分礼包',
giftPoints: '赠送{points}积分',
redPacketGift: '红包礼包',
giftRedPacket: '赠送{amount}元红包',
couponGift: '优惠券礼包',
giftCoupons: '赠送{count}张优惠券',
// 操作按钮
renewNow: '立即续费',
// 弹窗
cardDescription: '会员卡说明',
// 分享
shareTitle: '专属会员权益,快来体验',
}

View File

@@ -1,4 +1,47 @@
export const lang = {
//title为每个页面的标题
title: '我的优惠券'
title: '我的优惠券',
// ====== 标签页 ======
// 未使用
tabUnused: '未使用',
// 已使用
tabUsed: '已使用',
// 已过期
tabExpired: '已过期',
// ====== 优惠券信息 ======
// 折扣显示:{discount}折
discountText: '{discount}折',
// 满减使用条件:满{amount}元可用
minAmountCondition: '满{amount}元可用',
// 无门槛优惠券
noThresholdCoupon: '无门槛优惠券',
// 指定商品
specifiedGoods: '指定商品',
// 最大优惠:(最大优惠{amount}元)
maxDiscount: '(最大优惠{amount}元)',
// ====== 有效期 ======
// 有效期前缀
validPeriodPrefix: '有效期:',
// 长期有效
longTermValid: '长期有效',
// ====== 按钮与状态 ======
// 去使用
useNow: '去使用',
// 已使用
used: '已使用',
// 已过期
expired: '已过期',
// ====== 空状态 ======
// 暂无优惠券
emptyText: '暂无优惠券',
// 去逛逛
goShopping: '去逛逛',
// ====== 提示消息 ======
// 商家未开启优惠券
merchantNotEnabled: '商家未开启优惠券'
}

View File

@@ -13,5 +13,48 @@ export const lang = {
equity: '权益',
giftPackage: '升级礼包',
levelExplain: '等级说明',
upgradeTips: '升级会员,享专属权益'
upgradeTips: '升级会员,享专属权益',
// 当前等级标签
currentLevelLabel: '当前等级:',
// 成长规则
growthRules: '成长规则',
// 当前等级角标
currentLevelTag: '当前等级',
// 当前成长值
currentGrowthValue: '当前成长值',
// 距离下一等级提示
growthToNextLevel: '再获得{needGrowth}成长值成为{levelName}',
// 最高等级提示
maxLevelReached: '您现在已经是最高等级',
// 会员权益
memberBenefits: '会员权益',
// 包邮服务
freeShipping: '包邮服务',
freeShippingDesc: '提供商品包邮服务',
// 消费折扣
consumptionDiscount: '享受消费折扣服务',
noDiscountDesc: '不享受任何消费折扣和其他权益',
discountDescWithValue: '提供{discount}折消费折扣',
// 积分回馈
pointsReward: '享受积分回馈服务',
pointsRewardDesc: '提供{multiplier}倍积分回馈倍率',
// 会员礼包
memberGift: '会员礼包',
// 积分礼包
pointsGift: '积分礼包',
giftPoints: '赠送{points}积分',
// 红包礼包
redPacketGift: '红包礼包',
giftRedPacket: '赠送{amount}元红包',
// 优惠券礼包
couponGift: '优惠券礼包',
giftCoupons: '赠送{count}张优惠券',
// 优惠券弹窗
coupons: '优惠券',
// 货币单位
yuan: '元',
// 折扣单位
zhe: '折',
// 加载提示
navigatingToDetail: '将前往详情页面'
}

View File

@@ -0,0 +1,18 @@
export const lang = {
//title为每个页面的标题
title: '成长值说明',
// 表格表头
level: '等级',
growthValue: '成长值',
// 什么是成长值
whatIsGrowthValue: '什么是成长值',
growthValueDescription: '成长值是消费者在店铺成为会员后,通过消费计算出来的值。成长值决定会员等级,会员等级越高,所享受的会员权益和会员礼包就越多。',
// 如何获得成长值
howToGetGrowthValue: '如何获得成长值',
ruleRegister: '1、注册会员送x成长值。',
ruleRecharge: '2、会员充值到余额送x成长值。',
ruleCheckin: '3、会员签到送x成长值。',
ruleConsume: '4、会员消费x元,交易完成即可获得x个成长值。',
// 加载提示
navigatingToDetail: '将前往详情页面'
}

View File

@@ -1,3 +1,28 @@
export const lang = {
title: '支付密码',
}
// 提示文案
passwordTips: '请输入6位支付密码,建议不要使用重复或连续数字',
codeSentTips: '验证码已发送至{mobile}请在下方输入4位数字验证码',
// 操作提示
inputSmsCode: '输入短信验证码',
setPayPassword: '请设置支付密码',
inputAgain: '请再次输入',
// 按钮
confirm: '确认',
getCode: '获取验证码',
getDynacode: '获取动态码',
// 弹窗
tipsTitle: '提示',
bindMobileFirst: '设置支付密码需要先绑定手机号,是否立即绑定?',
// Toast
modifySuccess: '修改成功',
passwordMismatch: '两次输入的密码不一致',
// 倒计时
resendAfter: '{seconds}s后可重新获取',
}

View File

@@ -1,4 +1,39 @@
export const lang = {
//title为每个页面的标题
title: '商户首页',
// 搜索
searchPlaceholder: '请输入您要搜索的商品',
// 描述展开/收起
desc: {
scrollUpToViewMore: '上滑查看更多',
collapse: '↑ 收起',
expand: '↓ 展开',
},
// 排序
sort: {
comprehensive: '综合',
sales: '销量',
price: '价格',
filter: '筛选',
},
// 商品列表
goods: {
consultNow: '立即咨询',
sold: '已售{num}{unit}',
defaultUnit: '件',
noGoods: '暂无商品',
},
// 筛选弹窗
filter: {
title: '筛选',
allCategories: '全部分类',
all: '全部',
reset: '重置',
confirm: '确定',
},
}

View File

@@ -2,4 +2,71 @@ export const lang = {
//title为每个页面的标题
title: '编辑商品',
addTitle: '添加商品',
// 商品状态
grounding: {
offShelf: '下架',
onShelf: '上架',
},
// 提货方式
pickupType: {
sameDay: '当日达',
nextDay: '次日达',
dayAfter: '隔日达',
},
// 虚拟发货方式
virtualDeliver: {
auto: '自动发货',
manual: '手动发货',
verify: '到店核销',
},
// 虚拟收货方式
virtualReceive: {
auto: '自动收货',
buyerConfirm: '买家确认收货',
},
// 核销有效期类型
validityType: {
permanent: '永久',
daysAfterPurchase: '购买后几日有效',
specifiedDate: '指定过期日期',
},
// 卡密
carmi: {
add: '添加卡密',
addWithCount: '添加卡密【{count}】',
},
// 限购类型
limitType: {
single: '单次限购',
longTerm: '长期限购',
},
// 提示消息
message: {
goodsNotExist: '商品不存在',
maxCategory: '商品可以属于多个分类,最多10个',
pleaseEnterGoodsName: '请输入商品名称',
subtitleMaxLength: '商品简介不能超过{max}个字符',
pleaseUploadGoodsImage: '请上传商品图片',
pleaseEnterSalePrice: '请输入销售价',
salePriceFormatError: '[销售价]格式输入错误',
originalPriceFormatError: '[原价价]格式输入错误',
pleaseEnterStock: '请输入库存',
stockFormatError: '[库存]格式输入错误',
minOrderFormatError: '[起售]格式输入错误',
minOrderNotLessThanZero: '起售数量不能小于0',
},
// 下拉默认选项
placeholder: {
selectGoodsForm: '请选择商品表单',
selectSupplier: '请选择供应商',
},
}

View File

@@ -1,4 +1,50 @@
export const lang = {
//title为每个页面的标题
title: '订单详情'
title: '订单详情',
// ====== 订单状态区 ======
status: {
pendingPayment: '待支付',
completed: '已完成',
closed: '已关闭'
},
// ====== 商品区 ======
goods: {
points: '积分'
},
// ====== 订单概况区 ======
orderInfo: {
orderNo: '订单编号:',
copy: '复制',
outTradeNo: '订单交易号:',
createTime: '创建时间:',
closeTime: '关闭时间:'
},
// ====== 金额区 ======
amount: {
pointsUsed: '使用积分',
deliveryFee: '运费',
totalPayable: '实付金额:'
},
// ====== 按钮区 ======
button: {
close: '关闭',
pay: '支付'
},
// ====== 弹窗 ======
modal: {
tip: '提示',
confirmClose: '确定关闭此次兑换?'
},
// ====== 提示消息 ======
toast: {
orderInfoNotFound: '未获取到订单信息!',
closeSuccess: '关闭成功'
}
}

View File

@@ -9,5 +9,24 @@ export const lang = {
waitEvaluate: '待评价',
waitUse: '待使用',
update: "释放刷新",
updateIng: "加载中..."
updateIng: "加载中...",
// 搜索
searchPlaceholder: '请输入商品名称/订单编号',
// 订单信息
orderNo: '订单号:',
totalGoods: '共{num}件商品',
actualPayment: '实付款:',
remainingTime: '剩余时间:',
// 操作按钮
evaluate: '评价',
review: '追评',
viewDetail: '查看详情',
// 状态 Tab(与 status 值对应,用于模板动态映射)
status: {
all: '全部',
waitpay: '待付款',
waitsend: '待发货',
waitconfirm: '待收货',
waitrate: '已完成'
}
}

View File

@@ -96,6 +96,26 @@ export const lang = {
confirm: '确定'
},
// ====== 满减送活动描述 ======
promotion: {
title: '满减送',
yuan: '元',
piece: '件',
points: '积分',
manjianFirst: '购买可享受满{limit}{unit}减{money}元',
manjianMore: ';满{limit}{unit}减{money}元',
couponDiscountFirst: '送{num}张{discount}折优惠券',
couponDiscountMore: '、送{num}张{discount}折优惠券',
couponMoneyFirst: '送{num}张{money}元优惠券',
couponMoneyMore: '、送{num}张{money}元优惠券',
mansongFirst: '购物满{limit}{unit}{text}',
mansongMore: ';满{limit}{unit}{text}',
pointGain: '可得{point}积分',
pointFirst: '购物满{limit}{unit}{pointText}',
pointMore: ';满{limit}{unit}{pointText}',
freeShipping: '购物满{limit}{unit}包邮'
},
// ====== 买家留言弹窗 ======
buyerMessagePopup: {
title: '买家留言',

View File

@@ -1,4 +1,37 @@
export const lang = {
//title为每个页面的标题
title: '申请退款',
// ====== 退款类型选择 ======
refundType: {
refundOnly: '退款无需退货',
refundOnlyDesc: '没收到货,或与卖家协商同意无需退货只退款',
returnRefund: '退货退款',
returnRefundDesc: '已收到货,需退还收到的货物'
},
// ====== 退款表单 ======
form: {
refundReason: '退款原因:',
refundAmount: '退款金额:',
refundRemark: '退款说明',
pleaseSelect: '请选择',
remarkPlaceholder: '请输入退款说明(选填)'
},
// ====== 退款原因弹窗 ======
reasonPopup: {
title: '退款原因',
confirm: '确定'
},
// ====== 提示信息 ======
toast: {
noRefundInfo: '未获取到该订单项退款信息'
},
// ====== 表单验证 ======
validate: {
pleaseSelectRefundReason: '请选择退款原因'
}
}

View File

@@ -0,0 +1,29 @@
export const lang = {
// 搜索
searchPlaceholder: '请输入商品关键词',
// 排序
comprehensive: '综合',
points: '积分',
newArrival: '上新时间',
filter: '筛选',
// 商品列表
stock: '库存',
noGoods: '暂无积分商品',
// 筛选弹窗
pointRange: '积分区间',
minPlaceholder: '最低',
maxPlaceholder: '最高',
allCategories: '全部分类',
all: '全部',
reset: '重置',
confirm: '确定',
// 提示
pleaseEnterMaxPrice: '请输入最高价',
priceCannotBeLessThanZero: '筛选价格不能小于0',
minCannotBeGreaterThanMax: '最低价不能大于最高价',
maxCannotBeLessThanMin: '最高价不能小于最低价',
}

View File

@@ -59,5 +59,32 @@ export const lang = {
pointsSuffix: '积分',
submitOrder: '提交订单',
shortByForMinimum: '差{amount}起送'
},
// ====== Toast 提示 ======
toast: {
orderDataNotFound: '未获取到创建订单所需数据!',
pleaseEnterMobile: '请输入您的手机号码',
pleaseEnterCorrectMobile: '请输入正确的手机号码',
noDeliveryMethod: '商家未设置配送方式',
pleaseSelectAddress: '请先选择您的收货地址',
noPickupStore: '没有可提货的门店,请选择其他配送方式',
pleaseEnterReservedMobile: '请输入预留手机',
pleaseEnterCorrectReservedMobile: '请输入正确的预留手机',
pleaseSelectPickupTime: '请选择自提时间',
noDeliveryStore: '没有可配送的门店,请选择其他配送方式',
pleaseSelectDeliveryTime: '请选择配送时间'
},
// ====== 弹窗 ======
modal: {
orderNotCreated: '订单未创建',
goToSet: '去设置'
},
// ====== 时间选择 ======
time: {
today: '今天',
tomorrow: '明天'
}
}

View File

@@ -1,4 +1,14 @@
export const lang = {
//title为每个页面的标题
title: '充值列表'
title: '充值列表',
rechargeAmount: '充值金额',
rechargeRecords: '充值记录',
placeholderEnterAmount: '请输入充值金额',
yuan: '元',
salePrice: '售价 {price} 元',
amount: '金额',
confirmRecharge: '确认充值',
recharge: '充值',
pleaseEnterAmount: '请输入充值金额',
pleaseSelectPackage: '请选择套餐'
}