refactor(i18n): 扁平化所有国际化语言文件的翻译结构

移除多层嵌套的翻译对象,将所有翻译项直接挂载到顶层lang对象上,统一代码结构
This commit is contained in:
2026-07-03 16:36:28 +08:00
parent e4c9b7fd59
commit a27e3518da
22 changed files with 237 additions and 351 deletions

View File

@@ -1,16 +1,10 @@
export const lang = {
//title为每个页面的标题
title: 'Bill',
// fenxiao/bill.vue page new translation items
fenxiao: {
// Bill
bill: {
// Bill number prefix
billNoPrefix: 'Bill No.:',
// No bill information
noBill: 'No bill information',
// Distribution is not enabled by merchant
addonClosed: 'Distribution is not enabled by merchant',
},
},
// Bill number prefix
billNoPrefix: 'Bill No.:',
// No bill information
noBill: 'No bill information',
// Distribution is not enabled by merchant
addonClosed: 'Distribution is not enabled by merchant',
}

View File

@@ -3,17 +3,14 @@ export const lang = {
// title: 'Withdrawal Details',
title: '',
// Detail labels
withdrawalDetail: {
currentStatus: 'Current Status',
transactionNo: 'Transaction No.',
serviceFee: 'Service Fee',
applyTime: 'Apply Time',
auditTime: 'Audit Time',
bankName: 'Bank Name',
receivingAccount: 'Receiving Account',
refuseReason: 'Rejection Reason',
transferTypeName: 'Transfer Method',
transferTime: 'Transfer Time',
},
currentStatus: 'Current Status',
transactionNo: 'Transaction No.',
serviceFee: 'Service Fee',
applyTime: 'Apply Time',
auditTime: 'Audit Time',
bankName: 'Bank Name',
receivingAccount: 'Receiving Account',
refuseReason: 'Rejection Reason',
transferTypeName: 'Transfer Method',
transferTime: 'Transfer Time',
}

View File

@@ -4,33 +4,31 @@ export const lang = {
captchaPlaceholder: 'Please enter verification code',
next: 'Next',
// Find Password
find: {
// Step titles
step0Title: 'Please enter your phone number',
step1Title: 'Please enter the verification code',
step2Title: 'Please set a new password',
// 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',
// 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)',
// 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',
// 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',
}
// Password complexity提示 (in concatenation order, including separators)
passwordComplexityPrefix: 'Password must contain',
complexityNumber: ' numbers',
complexityLowercase: ', lowercase letters',
complexityUppercase: ', uppercase letters',
complexitySymbol: ', special characters',
};

View File

@@ -2,47 +2,45 @@ export const lang = {
// title is the page title
title: 'Bind Mobile',
bindMobile: {
// One-click authorization binding
oneClickAuthBind: 'One-Click Authorization Binding',
// Manual binding
manualBind: 'Manual Binding',
// One-click authorization binding
oneClickAuthBind: 'One-Click Authorization Binding',
// Manual binding
manualBind: 'Manual Binding',
// Phone number
phoneNumber: 'Phone Number',
// Please enter phone number
pleInputMobile: 'Please enter phone number',
// Please enter a valid phone number
surePhoneNumber: 'Please enter a valid phone number',
// Phone number
phoneNumber: 'Phone Number',
// Please enter phone number
pleInputMobile: 'Please enter phone number',
// Please enter a valid phone number
surePhoneNumber: 'Please enter a valid phone number',
// Verification code
confirmCode: 'Verification Code',
// Please enter verification code
confirmCodeInput: 'Please enter verification code',
// Verification code
confirmCode: 'Verification Code',
// Please enter verification code
confirmCodeInput: 'Please enter verification code',
// SMS verification code
smsCode: 'SMS Verification Code',
// Please enter dynamic code
animateCodeInput: 'Please enter dynamic code',
// Get dynamic code
findanimateCode: 'Get Dynamic Code',
// Code sent
codeSent: 'Sent ({seconds}s)',
// Do not click repeatedly
doNotRepeatedlyClick: 'Do not click repeatedly',
// SMS verification code
smsCode: 'SMS Verification Code',
// Please enter dynamic code
animateCodeInput: 'Please enter dynamic code',
// Get dynamic code
findanimateCode: 'Get Dynamic Code',
// Code sent
codeSent: 'Sent ({seconds}s)',
// Do not click repeatedly
doNotRepeatedlyClick: 'Do not click repeatedly',
// Save / Bind
save: 'Bind',
// Binding successful
bindSuccess: 'Binding Successful',
// Same as original phone number, no need to modify
alikePhone: 'Same as original phone number, no need to modify',
// Save / Bind
save: 'Bind',
// Binding successful
bindSuccess: 'Binding Successful',
// Same as original phone number, no need to modify
alikePhone: 'Same as original phone number, no need to modify',
// Tip text
tipTitle: 'Notice',
// Enjoy more services after binding your mobile number
bindBenefitTip: 'Enjoy more services after binding your mobile number',
// Send code tip
sendCodeTip: 'Click "Get Dynamic Code" and a verification code will be sent to your mobile number {mobile}',
},
// Tip text
tipTitle: 'Notice',
// Enjoy more services after binding your mobile number
bindBenefitTip: 'Enjoy more services after binding your mobile number',
// Send code tip
sendCodeTip: 'Click "Get Dynamic Code" and a verification code will be sent to your mobile number {mobile}',
}

View File

@@ -59,9 +59,6 @@ export const lang = {
privacyPolicy: 'Privacy Policy',
registrationAgreement: 'Registration Agreement',
// member/index.vue page new translation items
index: {
// I got it
iKnow: 'Got it',
},
// I got it
iKnow: 'Got it',
}

View File

@@ -75,19 +75,5 @@ export const lang = {
doNotRepeatedlyClick: "Do not click repeatedly",
pleaseSelectRegion: "Please select region",
pleaseInputDetailAddress: "Please enter detailed address",
member: {
info: {
avatar: 'Avatar',
nickname: 'Nickname',
name: 'Name',
gender: 'Gender',
birthday: 'Birthday',
mobile: 'Mobile',
password: 'Password',
cancellation: 'Cancel Account',
logout: 'Log Out'
}
}
pleaseInputDetailAddress: "Please enter detailed address"
}

View File

@@ -1,11 +1,7 @@
export const lang = {
// member/public member common mixin
member: {
public: {
// Risk warning
riskWarningTitle: 'Risk Warning',
// Confirm account cancellation
cancelAccountConfirm: 'Are you sure you want to cancel the current account?',
},
},
// Risk warning
riskWarningTitle: 'Risk Warning',
// Confirm account cancellation
cancelAccountConfirm: 'Are you sure you want to cancel the current account?',
}

View File

@@ -4,14 +4,5 @@ export const lang = {
signinNotEnabled: 'Merchant has not enabled member check-in',
signinClosed: 'Check-in is not available',
shareDesc: 'Check in daily, earn points and rewards non-stop',
shareTitle: 'Check-in Rewards: Check in daily, earn points and rewards non-stop',
member: {
signin: {
title: 'Check-in Rewards',
signinNotEnabled: 'Merchant has not enabled member check-in',
signinClosed: 'Check-in is not available',
shareDesc: 'Check in daily, earn points and rewards non-stop',
shareTitle: 'Check-in Rewards: Check in daily, earn points and rewards non-stop'
}
}
shareTitle: 'Check-in Rewards: Check in daily, earn points and rewards non-stop'
}

View File

@@ -1,21 +1,17 @@
export const lang = {
pay: {
cashier: {
title: '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}',
}
}
title: '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,25 +1,21 @@
export const lang = {
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!',
}
}
//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,10 +1,4 @@
export const lang = {
title: 'WeChat Pay',
openInBrowserTip: 'Tap the top-right menu and open in browser',
pay: {
wxPay: {
title: 'WeChat Pay',
openInBrowserTip: 'Tap the top-right menu and open in browser'
}
}
openInBrowserTip: 'Tap the top-right menu and open in browser'
};

View File

@@ -1,16 +1,10 @@
export const lang = {
//title为每个页面的标题
title: '账单',
// fenxiao/bill.vue 页面新增翻译项
fenxiao: {
// 账单
bill: {
// 账单编号前缀
billNoPrefix: '账单编号:',
// 暂无账单信息
noBill: '暂无账单信息',
// 商家未开启分销
addonClosed: '商家未开启分销',
},
},
// 账单编号前缀
billNoPrefix: '账单编号:',
// 暂无账单信息
noBill: '暂无账单信息',
// 商家未开启分销
addonClosed: '商家未开启分销',
}

View File

@@ -3,17 +3,14 @@ export const lang = {
// title: '提现详情',
title: '',
// 详情标签
withdrawalDetail: {
currentStatus: '当前状态',
transactionNo: '交易号',
serviceFee: '手续费',
applyTime: '申请时间',
auditTime: '审核时间',
bankName: '银行名称',
receivingAccount: '收款账号',
refuseReason: '拒绝理由',
transferTypeName: '转账方式名称',
transferTime: '转账时间',
},
currentStatus: '当前状态',
transactionNo: '交易号',
serviceFee: '手续费',
applyTime: '申请时间',
auditTime: '审核时间',
bankName: '银行名称',
receivingAccount: '收款账号',
refuseReason: '拒绝理由',
transferTypeName: '转账方式名称',
transferTime: '转账时间',
}

View File

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

View File

@@ -2,47 +2,45 @@ export const lang = {
// title为每个页面的标题
title: '绑定手机号',
bindMobile: {
// 一键授权绑定
oneClickAuthBind: '一键授权绑定',
// 手动绑定
manualBind: '手动绑定',
// 一键授权绑定
oneClickAuthBind: '一键授权绑定',
// 手动绑定
manualBind: '手动绑定',
// 手机号
phoneNumber: '手机号',
// 请输入手机号
pleInputMobile: '请输入手机号',
// 请输入正确的手机号
surePhoneNumber: '请输入正确的手机号',
// 手机号
phoneNumber: '手机号',
// 请输入手机号
pleInputMobile: '请输入手机号',
// 请输入正确的手机号
surePhoneNumber: '请输入正确的手机号',
// 验证码
confirmCode: '验证码',
// 请输入验证码
confirmCodeInput: '请输入验证码',
// 验证码
confirmCode: '验证码',
// 请输入验证码
confirmCodeInput: '请输入验证码',
// 短信验证码
smsCode: '短信验证码',
// 请输入动态码
animateCodeInput: '请输入动态码',
// 获取动态码
findanimateCode: '获取动态码',
// 已发送
codeSent: '已发送({seconds}s)',
// 请勿重复点击
doNotRepeatedlyClick: '请勿重复点击',
// 短信验证码
smsCode: '短信验证码',
// 请输入动态码
animateCodeInput: '请输入动态码',
// 获取动态码
findanimateCode: '获取动态码',
// 已发送
codeSent: '已发送({seconds}s)',
// 请勿重复点击
doNotRepeatedlyClick: '请勿重复点击',
// 保存/绑定
save: '绑定',
// 绑定成功
bindSuccess: '绑定成功',
// 与原手机号一致,无需修改
alikePhone: '与原手机号一致,无需修改',
// 保存/绑定
save: '绑定',
// 绑定成功
bindSuccess: '绑定成功',
// 与原手机号一致,无需修改
alikePhone: '与原手机号一致,无需修改',
// 提示文案
tipTitle: '温馨提示',
// 绑定手机号后可享受更多服务
bindBenefitTip: '绑定手机号后可享受更多服务',
// 发送动态码提示
sendCodeTip: '点击"获取动态码",将会向您的手机号{mobile}发送验证码',
},
// 提示文案
tipTitle: '温馨提示',
// 绑定手机号后可享受更多服务
bindBenefitTip: '绑定手机号后可享受更多服务',
// 发送动态码提示
sendCodeTip: '点击"获取动态码",将会向您的手机号{mobile}发送验证码',
}

View File

@@ -62,9 +62,6 @@ export const lang = {
privacyPolicy: '隐私协议',
registrationAgreement: '注册协议',
// member/index.vue 页面新增翻译项
index: {
// 我知道了
iKnow: '我知道了',
},
// 我知道了
iKnow: '我知道了',
}

View File

@@ -75,19 +75,5 @@ export const lang = {
doNotRepeatedlyClick: "请勿重复点击",
pleaseSelectRegion: "请选择所在地区",
pleaseInputDetailAddress: "请输入详细地址",
member: {
info: {
avatar: '头像',
nickname: '昵称',
name: '姓名',
gender: '性别',
birthday: '生日',
mobile: '手机号',
password: '密码',
cancellation: '注销账号',
logout: '退出登录'
}
}
pleaseInputDetailAddress: "请输入详细地址"
}

View File

@@ -1,11 +1,7 @@
export const lang = {
// member/public 会员公共 mixin
member: {
public: {
// 风险提示
riskWarningTitle: '风险提示',
// 注销账号确认
cancelAccountConfirm: '确定要注销当前账号吗?',
},
},
// 风险提示
riskWarningTitle: '风险提示',
// 注销账号确认
cancelAccountConfirm: '确定要注销当前账号吗?',
}

View File

@@ -4,14 +4,5 @@ export const lang = {
signinNotEnabled: '商家未开启会员签到',
signinClosed: '签到未开启',
shareDesc: '天天签到,积分好礼送不停',
shareTitle: '签到有礼,天天签到,积分好礼送不停',
member: {
signin: {
title: '签到有礼',
signinNotEnabled: '商家未开启会员签到',
signinClosed: '签到未开启',
shareDesc: '天天签到,积分好礼送不停',
shareTitle: '签到有礼,天天签到,积分好礼送不停'
}
}
shareTitle: '签到有礼,天天签到,积分好礼送不停'
}

View File

@@ -1,21 +1,17 @@
export const lang = {
pay: {
cashier: {
title: '收银台',
// 支付按钮
confirmPay: '确认支付',
// 空状态
noPayMethodConfigured: '店铺尚未配置支付方式!',
orderAlreadyPaid: '该支付单据已支付',
noPayInfo: '未获取到支付信息',
// 支付方式
alipay: '支付宝支付',
wechatpay: '微信支付',
// 提示信息
pleaseSelectPayMethod: '请选择支付方式!',
paying: '支付中...',
paymentCancelled: '您已取消支付',
paymentFailed: '支付失败,失败原因: {reason}',
}
}
title: '收银台',
// 支付按钮
confirmPay: '确认支付',
// 空状态
noPayMethodConfigured: '店铺尚未配置支付方式!',
orderAlreadyPaid: '该支付单据已支付',
noPayInfo: '未获取到支付信息',
// 支付方式
alipay: '支付宝支付',
wechatpay: '微信支付',
// 提示信息
pleaseSelectPayMethod: '请选择支付方式!',
paying: '支付中...',
paymentCancelled: '您已取消支付',
paymentFailed: '支付失败,失败原因: {reason}',
};

View File

@@ -1,25 +1,21 @@
export const lang = {
pay: {
result: {
//title为每个页面的标题
title: '支付结果',
paymentSuccess: '支付成功',
paymentFail: '支付失败',
goHome: '回到首页',
memberCenter: '会员中心',
payMoney: '支付金额',
unit: '元',
// 消费奖励
congratulations: '恭喜您获得',
points: '积分',
growthValue: '成长值',
couponsCount: '{count}张优惠券',
// 操作按钮
rechargeRecords: '充值记录',
memberCard: '会员卡',
viewOrder: '查看订单',
// 提示信息
noPayInfo: '未获取到支付信息!',
}
}
//title为每个页面的标题
title: '支付结果',
paymentSuccess: '支付成功',
paymentFail: '支付失败',
goHome: '回到首页',
memberCenter: '会员中心',
payMoney: '支付金额',
unit: '元',
// 消费奖励
congratulations: '恭喜您获得',
points: '积分',
growthValue: '成长值',
couponsCount: '{count}张优惠券',
// 操作按钮
rechargeRecords: '充值记录',
memberCard: '会员卡',
viewOrder: '查看订单',
// 提示信息
noPayInfo: '未获取到支付信息!',
}

View File

@@ -1,10 +1,4 @@
export const lang = {
title: '微信支付',
openInBrowserTip: '点击右上角跳转到浏览器打开',
pay: {
wxPay: {
title: '微信支付',
openInBrowserTip: '点击右上角跳转到浏览器打开'
}
}
openInBrowserTip: '点击右上角跳转到浏览器打开'
};