Просмотр исходного кода

完善个人中心,订单流程 ,优惠圈,店铺关注,退款等国际化设置

蒋开心 2 недель назад
Родитель
Сommit
8203f28e43

+ 155 - 2
locale/en.json

@@ -1275,6 +1275,79 @@
   "order.pendingReceipt": "ToReceive",
   "order.pendingReview": "ToReview",
   "order.refundAfterSales": "Refund",
+  "order.all": "All",
+  "order.empty": "No orders",
+  "order.delete": "Delete",
+  "order.discount": "Discount:",
+  "order.freight": "Shipping:",
+  "order.actualPay": "Paid:",
+  "order.editAddress": "Edit Address",
+  "order.cancelOrder": "Cancel",
+  "order.payNow": "Pay Now",
+  "order.viewLogistics": "Track",
+  "order.confirmReceipt": "Confirm Receipt",
+  "order.review": "Review",
+  "order.confirmReceiptContent": "Confirm that you have received the goods?",
+  "order.loadFailed": "Load failed, please try again",
+  "order.deleteFailed": "Delete failed",
+  "order.cancelFailed": "Cancel failed",
+  "order.pleaseWait": "Please wait",
+  "order.shipped": "Shipped",
+  "order.tradeSuccess": "Completed",
+  "order.completed": "Done",
+  "order.closed": "Closed",
+  "order.paymentSuccess": "Paid",
+  "order.refundOrder": "Refund",
+  "order.orderComplete": "Completed",
+  "order.tradeClosed": "Closed",
+  "order.goodsTotal": "Goods total:",
+  "order.orderTotal": "Order total:",
+  "order.actualAmount": "Amount paid:",
+  "order.orderDetail": "Order details",
+  "order.orderNo": "Order No.:",
+  "order.payNo": "Payment No.:",
+  "order.createTime": "Created:",
+  "order.payTime": "Paid at:",
+  "order.deliverTime": "Shipped at:",
+  "order.takeTime": "Received at:",
+  "order.nearby": "(near {0})",
+  "order.waitSellerShip": "Waiting for shipment",
+  "order.closedTip": "Order closed",
+  "order.loading": "Loading...",
+  "order.autoCloseMinutes": "Auto-closes in {0} min",
+  "order.autoCloseHours": "Auto-closes in {0}h {1}min",
+  "order.autoCloseDays": "Auto-closes in {0}d {1}h {2}min",
+  "order.autoConfirmMinutes": "Auto-confirm in {0} min",
+  "order.autoConfirmHours": "Auto-confirm in {0}h {1}min",
+  "order.autoConfirmDays": "Auto-confirm in {0}d {1}h {2}min",
+  "order.autoCommentMinutes": "Auto-review in {0} min",
+  "order.autoCommentHours": "Auto-review in {0}h {1}min",
+  "order.autoCommentDays": "Auto-review in {0}d {1}h {2}min",
+  "order.refund": "Refund",
+  "order.refunding": "Refunding",
+  "order.waitReturn": "Return pending",
+  "order.refundDone": "Refunded",
+  "order.refundClosed": "Refund closed",
+  "order.refundRejected": "Refund rejected",
+  "orderComment.goodsReview": "Product review",
+  "orderComment.placeholder": "Write a review",
+  "orderComment.describe": "Description",
+  "orderComment.logistics": "Shipping",
+  "orderComment.service": "Service",
+  "orderComment.deliver": "Delivery speed",
+  "orderComment.submit": "Submit review",
+  "orderComment.rateShop": "Please rate the shop",
+  "orderComment.failed": "Review failed",
+  "orderComment.score1": "Terrible",
+  "orderComment.score2": "Poor",
+  "orderComment.score3": "Average",
+  "orderComment.score4": "Good",
+  "orderComment.score5": "Excellent",
+  "orderLogistics.officialTel": "Official phone",
+  "orderLogistics.waybillDetail": "Tracking details",
+  "orderLogistics.waitPickup": "Awaiting pickup",
+  "orderConfirm.queryCouponFailed": "Failed to query coupons",
+  "orderConfirm.receiveFailed": "Failed to claim",
   "address.empty": "No shipping address yet",
   "address.addNew": "+ Add New Address",
   "address.confirmDelete": "Are you sure you want to delete this address?",
@@ -1315,5 +1388,85 @@
   "coupon.useNow": "Use Now",
   "coupon.reductionCoupon": "Reduction",
   "coupon.discountCoupon": "Discount",
-  "coupon.shippingCoupon": "Shipping"
-}
+  "coupon.shippingCoupon": "Shipping",
+  "coupon.validUntil": "Valid until {0}",
+  "coupon.unused": "Unused",
+  "coupon.used": "Used",
+  "coupon.expired": "Expired",
+  "follow.empty": "No follows yet",
+  "follow.loading": "Loading...",
+  "footprint.empty": "No footprints yet",
+  "footprint.my": "My Footprint",
+  "footprint.groups": "Group Buy Footprint",
+  "footprint.loading": "Loading footprints...",
+  "collect.empty": "No favorites yet",
+  "collect.goods": "Product Favorites",
+  "collect.groups": "Group Buy Favorites",
+  "collect.loading": "Loading favorites...",
+  "collect.ladder": "Ladder",
+  "collect.groupTag": "{0}-person group",
+  "collect.likes": "Likes {0}",
+  "collect.payment": "Sold {0}",
+  "collect.grouped": "Grouped {0}",
+  "pagesNav.myFavorites": "My Favorites",
+  "pagesNav.liveRoom": "Live",
+  "pagesNav.loginEntry": "Sign In",
+  "pagesNav.login": "Sign In",
+  "pagesNav.register": "Sign Up",
+  "pagesNav.recoverPassword": "Reset Password",
+  "pagesNav.playerTest": "Player Test",
+  "pagesNav.smsVerify": "SMS Verification",
+  "pagesNav.blacklist": "Blocked",
+  "pagesNav.feedback": "Feedback",
+  "pagesNav.resetPassword": "Reset Password",
+  "pagesNav.mallNotice": "Mall Messages",
+  "pagesNav.chatConnecting": "Connecting IM...",
+  "pagesNav.activity": "Activity",
+  "pagesNav.news": "News",
+  "pagesNav.mall": "Mall",
+  "pagesNav.productList": "Products",
+  "pagesNav.productComment": "Reviews",
+  "pagesNav.shop": "Shop",
+  "pagesNav.shopGoods": "Shop Products",
+  "pagesNav.shopInfo": "Shop Info",
+  "pagesNav.confirmOrder": "Confirm Order",
+  "pagesNav.myOrders": "My Orders",
+  "pagesNav.logisticsDetail": "Tracking",
+  "pagesNav.reviewOrder": "Review Order",
+  "pagesNav.paySuccess": "Payment Successful",
+  "pagesNav.addressManage": "Address Manage",
+  "pagesNav.shippingAddress": "Shipping Address",
+  "pagesNav.refundList": "Refunds",
+  "pagesNav.refundDetail": "Refund Details",
+  "pagesNav.refundEdit": "Edit Refund",
+  "pagesNav.refundLog": "Refund History",
+  "pagesNav.couponDetail": "Coupon Details",
+  "pagesNav.couponUse": "Use Coupon",
+  "pagesNav.paying": "Paying",
+  "pagesNav.googlePay": "Google Pay",
+  "pagesNav.hotel": "Hotels",
+  "pagesNav.pay": "Checkout",
+  "refundList.empty": "No refund records",
+  "refundList.close": "Cancel Refund",
+  "refundList.viewDetail": "View Details",
+  "refundList.closedToast": "Refund closed",
+  "refundList.amount": "Refund",
+  "refundList.state0": "Awaiting seller approval",
+  "refundList.state1": "Awaiting buyer return",
+  "refundList.state2": "Seller rejected refund",
+  "refundList.state3": "Platform mediation",
+  "refundList.state4": "Refund completed",
+  "refundList.state5": "Refund closed",
+  "refundList.state6": "Awaiting seller receipt",
+  "refundList.state7": "Third-party refunding",
+  "refundList.state8": "Refund failed",
+  "refundList.info0": "Refund request submitted",
+  "refundList.info1": "Seller approved the refund",
+  "refundList.info2": "You can edit the return request",
+  "refundList.info3": "Platform mediation requested",
+  "refundList.info4": "Refund completed",
+  "refundList.info5": "Refund request closed",
+  "refundList.info6": "Refund after merchant confirms receipt",
+  "refundList.info7": "Refund will return to original payment",
+  "refundList.info8": "Express payment refund failed"
+}

+ 151 - 2
locale/zh-Hans.json

@@ -1248,6 +1248,79 @@
   "order.pendingReceipt": "待收货",
   "order.pendingReview": "待评价",
   "order.refundAfterSales": "退款/售后",
+  "order.all": "全部",
+  "order.empty": "暂无订单",
+  "order.delete": "删除",
+  "order.discount": "优惠:",
+  "order.freight": "运费:",
+  "order.actualPay": "实付:",
+  "order.editAddress": "修改地址",
+  "order.cancelOrder": "取消订单",
+  "order.payNow": "立即付款",
+  "order.viewLogistics": "查看物流",
+  "order.confirmReceipt": "确认收货",
+  "order.review": "评价",
+  "order.confirmReceiptContent": "确认已收到货物?",
+  "order.loadFailed": "加载失败,请稍后重试",
+  "order.deleteFailed": "删除失败",
+  "order.cancelFailed": "取消失败",
+  "order.pleaseWait": "请稍候",
+  "order.shipped": "已发货",
+  "order.tradeSuccess": "交易成功",
+  "order.completed": "已完成",
+  "order.closed": "已关闭",
+  "order.paymentSuccess": "支付成功",
+  "order.refundOrder": "退款订单",
+  "order.orderComplete": "订单完成",
+  "order.tradeClosed": "交易关闭",
+  "order.goodsTotal": "商品总价:",
+  "order.orderTotal": "订单总价:",
+  "order.actualAmount": "实付金额:",
+  "order.orderDetail": "订单详情",
+  "order.orderNo": "订单编号:",
+  "order.payNo": "支付交易号:",
+  "order.createTime": "创建时间:",
+  "order.payTime": "支付时间:",
+  "order.deliverTime": "发货时间:",
+  "order.takeTime": "收货时间:",
+  "order.nearby": "({0})附近",
+  "order.waitSellerShip": "等待卖家发货",
+  "order.closedTip": "订单已关闭",
+  "order.loading": "加载中...",
+  "order.autoCloseMinutes": "剩余 {0} 分钟后自动关闭",
+  "order.autoCloseHours": "剩余 {0} 小时 {1} 分钟后自动关闭",
+  "order.autoCloseDays": "剩余 {0} 天 {1} 小时 {2} 分钟后自动关闭",
+  "order.autoConfirmMinutes": "剩余 {0} 分钟后自动确认收货",
+  "order.autoConfirmHours": "剩余 {0} 小时 {1} 分钟后自动确认收货",
+  "order.autoConfirmDays": "剩余 {0} 天 {1} 小时 {2} 分钟后自动确认收货",
+  "order.autoCommentMinutes": "剩余 {0} 分钟后自动评价",
+  "order.autoCommentHours": "剩余 {0} 小时 {1} 分钟后自动评价",
+  "order.autoCommentDays": "剩余 {0} 天 {1} 小时 {2} 分钟后自动评价",
+  "order.refund": "退款",
+  "order.refunding": "退款中",
+  "order.waitReturn": "待退货",
+  "order.refundDone": "退款完成",
+  "order.refundClosed": "退款关闭",
+  "order.refundRejected": "退款拒绝",
+  "orderComment.goodsReview": "商品评价",
+  "orderComment.placeholder": "评价商品",
+  "orderComment.describe": "描述相符",
+  "orderComment.logistics": "物流服务",
+  "orderComment.service": "服务态度",
+  "orderComment.deliver": "发货速度",
+  "orderComment.submit": "提交评价",
+  "orderComment.rateShop": "请为店铺评分",
+  "orderComment.failed": "评价失败",
+  "orderComment.score1": "极差",
+  "orderComment.score2": "差",
+  "orderComment.score3": "一般",
+  "orderComment.score4": "好",
+  "orderComment.score5": "非常好",
+  "orderLogistics.officialTel": "官方电话",
+  "orderLogistics.waybillDetail": "运单详情",
+  "orderLogistics.waitPickup": "包裹等待揽收",
+  "orderConfirm.queryCouponFailed": "查询优惠券失败",
+  "orderConfirm.receiveFailed": "领取失败",
   "address.empty": "暂无收货地址",
   "address.addNew": "+ 新增收货地址",
   "address.confirmDelete": "确定删除该地址吗?",
@@ -1292,5 +1365,81 @@
   "coupon.validUntil": "有效期至 {0}",
   "coupon.unused": "未使用",
   "coupon.used": "已使用",
-  "coupon.expired": "已过期"
-}
+  "coupon.expired": "已过期",
+  "follow.empty": "暂无关注",
+  "follow.loading": "加载中...",
+  "footprint.empty": "暂无足迹",
+  "footprint.my": "我的足迹",
+  "footprint.groups": "拼团足迹",
+  "footprint.loading": "足迹加载中...",
+  "collect.empty": "暂无收藏",
+  "collect.goods": "商品收藏",
+  "collect.groups": "拼团收藏",
+  "collect.loading": "收藏加载中...",
+  "collect.ladder": "阶梯",
+  "collect.groupTag": "{0}人团拼团",
+  "collect.likes": "喜欢 {0}",
+  "collect.payment": "付款 {0}",
+  "collect.grouped": "已拼 {0} 件",
+  "pagesNav.myFavorites": "我的收藏",
+  "pagesNav.liveRoom": "直播间",
+  "pagesNav.loginEntry": "登录入口",
+  "pagesNav.login": "登录",
+  "pagesNav.register": "注册",
+  "pagesNav.recoverPassword": "找回密码",
+  "pagesNav.playerTest": "播放器测试",
+  "pagesNav.smsVerify": "短信验证",
+  "pagesNav.blacklist": "黑名单",
+  "pagesNav.feedback": "意见反馈",
+  "pagesNav.resetPassword": "重置密码",
+  "pagesNav.mallNotice": "商城消息中心",
+  "pagesNav.chatConnecting": "IM连接中...",
+  "pagesNav.activity": "活动",
+  "pagesNav.news": "资讯",
+  "pagesNav.mall": "商城",
+  "pagesNav.productList": "商品列表",
+  "pagesNav.productComment": "商品评价",
+  "pagesNav.shop": "店铺",
+  "pagesNav.shopGoods": "店铺商品",
+  "pagesNav.shopInfo": "店铺信息",
+  "pagesNav.confirmOrder": "确认订单",
+  "pagesNav.myOrders": "我的订单",
+  "pagesNav.logisticsDetail": "物流详情",
+  "pagesNav.reviewOrder": "评价订单",
+  "pagesNav.paySuccess": "支付成功",
+  "pagesNav.addressManage": "地址管理",
+  "pagesNav.shippingAddress": "收货地址",
+  "pagesNav.refundList": "退款列表",
+  "pagesNav.refundDetail": "退款详情",
+  "pagesNav.refundEdit": "修改退款",
+  "pagesNav.refundLog": "退款记录",
+  "pagesNav.couponDetail": "优惠券详情",
+  "pagesNav.couponUse": "优惠券使用",
+  "pagesNav.paying": "支付中",
+  "pagesNav.googlePay": "Google Pay",
+  "pagesNav.hotel": "酒店",
+  "pagesNav.pay": "收银台",
+  "refundList.empty": "暂无退款记录",
+  "refundList.close": "关闭退款",
+  "refundList.viewDetail": "查看详情",
+  "refundList.closedToast": "退款已关闭",
+  "refundList.amount": "退款",
+  "refundList.state0": "等待卖家同意",
+  "refundList.state1": "等待买家退货",
+  "refundList.state2": "卖家拒绝退款",
+  "refundList.state3": "平台介入处理",
+  "refundList.state4": "退款完成",
+  "refundList.state5": "退款已关闭",
+  "refundList.state6": "等待卖家收货",
+  "refundList.state7": "第三方退款中",
+  "refundList.state8": "退款失败",
+  "refundList.info0": "已成功发起退款申请",
+  "refundList.info1": "卖家已同意退款",
+  "refundList.info2": "可修改退货申请",
+  "refundList.info3": "已申请平台介入",
+  "refundList.info4": "退款已完成",
+  "refundList.info5": "退款申请已关闭",
+  "refundList.info6": "如商户确认收货将退款",
+  "refundList.info7": "退款将原路返回",
+  "refundList.info8": "快捷支付退款失败"
+}

+ 155 - 2
locale/zh-Hant.json

@@ -1301,6 +1301,79 @@
   "order.pendingReceipt": "待收貨",
   "order.pendingReview": "待評價",
   "order.refundAfterSales": "退款/售後",
+  "order.all": "全部",
+  "order.empty": "暫無訂單",
+  "order.delete": "刪除",
+  "order.discount": "優惠:",
+  "order.freight": "運費:",
+  "order.actualPay": "實付:",
+  "order.editAddress": "修改地址",
+  "order.cancelOrder": "取消訂單",
+  "order.payNow": "立即付款",
+  "order.viewLogistics": "查看物流",
+  "order.confirmReceipt": "確認收貨",
+  "order.review": "評價",
+  "order.confirmReceiptContent": "確認已收到貨物?",
+  "order.loadFailed": "加載失敗,請稍後重試",
+  "order.deleteFailed": "刪除失敗",
+  "order.cancelFailed": "取消失敗",
+  "order.pleaseWait": "請稍候",
+  "order.shipped": "已發貨",
+  "order.tradeSuccess": "交易成功",
+  "order.completed": "已完成",
+  "order.closed": "已關閉",
+  "order.paymentSuccess": "支付成功",
+  "order.refundOrder": "退款訂單",
+  "order.orderComplete": "訂單完成",
+  "order.tradeClosed": "交易關閉",
+  "order.goodsTotal": "商品總價:",
+  "order.orderTotal": "訂單總價:",
+  "order.actualAmount": "實付金額:",
+  "order.orderDetail": "訂單詳情",
+  "order.orderNo": "訂單編號:",
+  "order.payNo": "支付交易號:",
+  "order.createTime": "創建時間:",
+  "order.payTime": "支付時間:",
+  "order.deliverTime": "發貨時間:",
+  "order.takeTime": "收貨時間:",
+  "order.nearby": "({0})附近",
+  "order.waitSellerShip": "等待賣家發貨",
+  "order.closedTip": "訂單已關閉",
+  "order.loading": "加載中...",
+  "order.autoCloseMinutes": "剩餘 {0} 分鐘後自動關閉",
+  "order.autoCloseHours": "剩餘 {0} 小時 {1} 分鐘後自動關閉",
+  "order.autoCloseDays": "剩餘 {0} 天 {1} 小時 {2} 分鐘後自動關閉",
+  "order.autoConfirmMinutes": "剩餘 {0} 分鐘後自動確認收貨",
+  "order.autoConfirmHours": "剩餘 {0} 小時 {1} 分鐘後自動確認收貨",
+  "order.autoConfirmDays": "剩餘 {0} 天 {1} 小時 {2} 分鐘後自動確認收貨",
+  "order.autoCommentMinutes": "剩餘 {0} 分鐘後自動評價",
+  "order.autoCommentHours": "剩餘 {0} 小時 {1} 分鐘後自動評價",
+  "order.autoCommentDays": "剩餘 {0} 天 {1} 小時 {2} 分鐘後自動評價",
+  "order.refund": "退款",
+  "order.refunding": "退款中",
+  "order.waitReturn": "待退貨",
+  "order.refundDone": "退款完成",
+  "order.refundClosed": "退款關閉",
+  "order.refundRejected": "退款拒絕",
+  "orderComment.goodsReview": "商品評價",
+  "orderComment.placeholder": "評價商品",
+  "orderComment.describe": "描述相符",
+  "orderComment.logistics": "物流服務",
+  "orderComment.service": "服務態度",
+  "orderComment.deliver": "發貨速度",
+  "orderComment.submit": "提交評價",
+  "orderComment.rateShop": "請為店鋪評分",
+  "orderComment.failed": "評價失敗",
+  "orderComment.score1": "極差",
+  "orderComment.score2": "差",
+  "orderComment.score3": "一般",
+  "orderComment.score4": "好",
+  "orderComment.score5": "非常好",
+  "orderLogistics.officialTel": "官方電話",
+  "orderLogistics.waybillDetail": "運單詳情",
+  "orderLogistics.waitPickup": "包裹等待攬收",
+  "orderConfirm.queryCouponFailed": "查詢優惠券失敗",
+  "orderConfirm.receiveFailed": "領取失敗",
   "address.empty": "暫無收貨地址",
   "address.addNew": "+ 新增收貨地址",
   "address.confirmDelete": "確定刪除該地址嗎?",
@@ -1341,5 +1414,85 @@
   "coupon.useNow": "去使用",
   "coupon.reductionCoupon": "滿減券",
   "coupon.discountCoupon": "折扣券",
-  "coupon.shippingCoupon": "包郵券"
-}
+  "coupon.shippingCoupon": "包郵券",
+  "coupon.validUntil": "有效期至 {0}",
+  "coupon.unused": "未使用",
+  "coupon.used": "已使用",
+  "coupon.expired": "已過期",
+  "follow.empty": "暫無關注",
+  "follow.loading": "加載中...",
+  "footprint.empty": "暫無足跡",
+  "footprint.my": "我的足跡",
+  "footprint.groups": "拼團足跡",
+  "footprint.loading": "足跡加載中...",
+  "collect.empty": "暫無收藏",
+  "collect.goods": "商品收藏",
+  "collect.groups": "拼團收藏",
+  "collect.loading": "收藏加載中...",
+  "collect.ladder": "階梯",
+  "collect.groupTag": "{0}人團拼團",
+  "collect.likes": "喜歡 {0}",
+  "collect.payment": "付款 {0}",
+  "collect.grouped": "已拼 {0} 件",
+  "pagesNav.myFavorites": "我的收藏",
+  "pagesNav.liveRoom": "直播間",
+  "pagesNav.loginEntry": "登錄入口",
+  "pagesNav.login": "登錄",
+  "pagesNav.register": "註冊",
+  "pagesNav.recoverPassword": "找回密碼",
+  "pagesNav.playerTest": "播放器測試",
+  "pagesNav.smsVerify": "短信驗證",
+  "pagesNav.blacklist": "黑名單",
+  "pagesNav.feedback": "意見反饋",
+  "pagesNav.resetPassword": "重置密碼",
+  "pagesNav.mallNotice": "商城消息中心",
+  "pagesNav.chatConnecting": "IM連接中...",
+  "pagesNav.activity": "活動",
+  "pagesNav.news": "資訊",
+  "pagesNav.mall": "商城",
+  "pagesNav.productList": "商品列表",
+  "pagesNav.productComment": "商品評價",
+  "pagesNav.shop": "店鋪",
+  "pagesNav.shopGoods": "店鋪商品",
+  "pagesNav.shopInfo": "店鋪信息",
+  "pagesNav.confirmOrder": "確認訂單",
+  "pagesNav.myOrders": "我的訂單",
+  "pagesNav.logisticsDetail": "物流詳情",
+  "pagesNav.reviewOrder": "評價訂單",
+  "pagesNav.paySuccess": "支付成功",
+  "pagesNav.addressManage": "地址管理",
+  "pagesNav.shippingAddress": "收貨地址",
+  "pagesNav.refundList": "退款列表",
+  "pagesNav.refundDetail": "退款詳情",
+  "pagesNav.refundEdit": "修改退款",
+  "pagesNav.refundLog": "退款記錄",
+  "pagesNav.couponDetail": "優惠券詳情",
+  "pagesNav.couponUse": "優惠券使用",
+  "pagesNav.paying": "支付中",
+  "pagesNav.googlePay": "Google Pay",
+  "pagesNav.hotel": "酒店",
+  "pagesNav.pay": "收銀台",
+  "refundList.empty": "暫無退款記錄",
+  "refundList.close": "關閉退款",
+  "refundList.viewDetail": "查看詳情",
+  "refundList.closedToast": "退款已關閉",
+  "refundList.amount": "退款",
+  "refundList.state0": "等待賣家同意",
+  "refundList.state1": "等待買家退貨",
+  "refundList.state2": "賣家拒絕退款",
+  "refundList.state3": "平台介入處理",
+  "refundList.state4": "退款完成",
+  "refundList.state5": "退款已關閉",
+  "refundList.state6": "等待賣家收貨",
+  "refundList.state7": "第三方退款中",
+  "refundList.state8": "退款失敗",
+  "refundList.info0": "已成功發起退款申請",
+  "refundList.info1": "賣家已同意退款",
+  "refundList.info2": "可修改退貨申請",
+  "refundList.info3": "已申請平台介入",
+  "refundList.info4": "退款已完成",
+  "refundList.info5": "退款申請已關閉",
+  "refundList.info6": "如商戶確認收貨將退款",
+  "refundList.info7": "退款將原路返回",
+  "refundList.info8": "快捷支付退款失敗"
+}

+ 66 - 66
pages.json

@@ -104,7 +104,7 @@
 			"path": "pages/feed/reel",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "視頻",
+				"navigationBarTitleText": "%home.video%",
 				"backgroundColor": "#000000",
 				"app-plus": {
 					"titleNView": false,
@@ -117,7 +117,7 @@
 			"path": "pages/feed/series-reel",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "合輯",
+				"navigationBarTitleText": "%mine.tabSeries%",
 				"backgroundColor": "#000000",
 				"app-plus": {
 					"titleNView": false,
@@ -129,7 +129,7 @@
 		{
 			"path": "pages/favorite/index",
 			"style": {
-				"navigationBarTitleText": "我的收藏",
+				"navigationBarTitleText": "%pagesNav.myFavorites%",
 				"navigationStyle": "custom",
 				"app-plus": {
 					"titleNView": false
@@ -168,14 +168,14 @@
 			"path": "pages/user/collect",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "我的收藏",
+				"navigationBarTitleText": "%pagesNav.myFavorites%",
 				"disableScroll": true
 			}
 		},
 		{
 			"path": "pages/user/follow",
 			"style": {
-				"navigationBarTitleText": "關注店鋪",
+				"navigationBarTitleText": "%mine.followShop%",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 150,
 				"app-plus": {
@@ -187,7 +187,7 @@
 			"path": "pages/user/footprint",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "我的足跡",
+				"navigationBarTitleText": "%footprint.my%",
 				"disableScroll": true
 			}
 		},
@@ -218,7 +218,7 @@
 		{
 			"path": "pages/myuser/myuser",
 			"style": {
-				"navigationBarTitleText": "我的",
+				"navigationBarTitleText": "%mall.mine%",
 				"navigationStyle": "custom",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -293,7 +293,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "直播间",
+				"navigationBarTitleText": "%pagesNav.liveRoom%",
 				"app-plus": {
 					"titleNView": false,
 					"scrollIndicator": "none"
@@ -331,7 +331,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "登录入口",
+				"navigationBarTitleText": "%pagesNav.loginEntry%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -345,7 +345,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "登录",
+				"navigationBarTitleText": "%pagesNav.login%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -359,7 +359,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "注册",
+				"navigationBarTitleText": "%pagesNav.register%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -373,7 +373,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "找回密码",
+				"navigationBarTitleText": "%pagesNav.recoverPassword%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -385,7 +385,7 @@
 		{
 			"path": "pages/dev/ijk-test",
 			"style": {
-				"navigationBarTitleText": "播放器测试",
+				"navigationBarTitleText": "%pagesNav.playerTest%",
 				"navigationBarTextStyle": "white",
 				"navigationBarBackgroundColor": "#1a1f4a",
 				"backgroundColor": "#0e1230"
@@ -395,7 +395,7 @@
 			"path": "pages/account/security",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "賬號與安全",
+				"navigationBarTitleText": "%user.securityTitle%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -407,7 +407,7 @@
 			"path": "pages/account/profile-edit",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "編輯資料",
+				"navigationBarTitleText": "%profileEdit.title%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -419,7 +419,7 @@
 			"path": "pages/account/reset-password",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "修改登入密碼",
+				"navigationBarTitleText": "%user.resetPwdTitle%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -431,7 +431,7 @@
 			"path": "pages/account/sms-verify",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "短信驗證",
+				"navigationBarTitleText": "%pagesNav.smsVerify%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -443,7 +443,7 @@
 			"path": "pages/account/reset-secret",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "設定新密碼",
+				"navigationBarTitleText": "%user.resetSecretHeroTitle%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -455,7 +455,7 @@
 			"path": "pages/account/realname-add",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "實名認證",
+				"navigationBarTitleText": "%user.realnamePageAdd%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -467,7 +467,7 @@
 			"path": "pages/account/realname-info",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "實名信息",
+				"navigationBarTitleText": "%user.realnamePageInfo%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -479,7 +479,7 @@
 			"path": "pages/account/language",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "語言設置",
+				"navigationBarTitleText": "%user.panelLanguage%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -528,7 +528,7 @@
 			"path": "pages/account/notice",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "新消息通知",
+				"navigationBarTitleText": "%user.panelNewMessage%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -540,7 +540,7 @@
 			"path": "pages/account/complaint",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "舉報",
+				"navigationBarTitleText": "%user.panelReport%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -552,7 +552,7 @@
 			"path": "pages/account/complaint-lists",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "我的舉報",
+				"navigationBarTitleText": "%mine.actionComplaint%",
 				"backgroundColor": "#f4f6fb",
 				"enablePullDownRefresh": true,
 				"app-plus": {
@@ -565,7 +565,7 @@
 			"path": "pages/account/blocked",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "黑名單",
+				"navigationBarTitleText": "%pagesNav.blacklist%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -577,7 +577,7 @@
 			"path": "pages/account/about",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "關於我們",
+				"navigationBarTitleText": "%user.panelAbout%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -603,7 +603,7 @@
 			"path": "pages/account/feedback",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "意見反饋",
+				"navigationBarTitleText": "%pagesNav.feedback%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -615,7 +615,7 @@
 			"path": "pages/account/feedback-lists",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "我的反饋",
+				"navigationBarTitleText": "%feedback.myList%",
 				"backgroundColor": "#f4f6fb",
 				"enablePullDownRefresh": true,
 				"app-plus": {
@@ -629,7 +629,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "短信驗證",
+				"navigationBarTitleText": "%pagesNav.smsVerify%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -643,7 +643,7 @@
 			"style": {
 				"navigationBarTextStyle": "white",
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "重置密碼",
+				"navigationBarTitleText": "%pagesNav.resetPassword%",
 				"backgroundColor": "#0e1230",
 				"app-plus": {
 					"titleNView": false,
@@ -680,7 +680,7 @@
 			"path": "pages/notice/mall-notice/index",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "商城消息中心",
+				"navigationBarTitleText": "%pagesNav.mallNotice%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"titleNView": false,
@@ -691,7 +691,7 @@
 		{
 			"path": "pages/notice/chat",
 			"style": {
-				"navigationBarTitleText": "IM连接中...",
+				"navigationBarTitleText": "%pagesNav.chatConnecting%",
 				"backgroundColor": "#ececec",
 				"app-plus": {
 					"titleNView": {
@@ -713,7 +713,7 @@
 			"path": "pages/article/details",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "詳情",
+				"navigationBarTitleText": "%common.webViewTitle%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -725,7 +725,7 @@
 			"path": "pages/article/advert",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "活動",
+				"navigationBarTitleText": "%pagesNav.activity%",
 				"backgroundColor": "#f4f6fb",
 				"app-plus": {
 					"titleNView": false,
@@ -737,7 +737,7 @@
 			"path": "pages/article/list",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "資訊",
+				"navigationBarTitleText": "%pagesNav.news%",
 				"backgroundColor": "#f4f6fb",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -762,7 +762,7 @@
 			"path": "pages/mall/index",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "商城",
+				"navigationBarTitleText": "%pagesNav.mall%",
 				"backgroundColor": "#f5f5f5",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -776,7 +776,7 @@
 			"path": "pages/product/goods",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "商品详情",
+				"navigationBarTitleText": "%mall.productDetail%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"titleNView": false,
@@ -788,7 +788,7 @@
 			"path": "pages/page/search",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "搜索",
+				"navigationBarTitleText": "%search.pageTitle%",
 				"backgroundColor": "#ffffff",
 				"app-plus": {
 					"titleNView": false,
@@ -800,7 +800,7 @@
 			"path": "pages/product/list",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "商品列表",
+				"navigationBarTitleText": "%pagesNav.productList%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"titleNView": false,
@@ -811,7 +811,7 @@
 		{
 			"path": "pages/product/comment",
 			"style": {
-				"navigationBarTitleText": "商品評價",
+				"navigationBarTitleText": "%pagesNav.productComment%",
 				"enablePullDownRefresh": true
 			}
 		},
@@ -819,7 +819,7 @@
 			"path": "pages/shop/index",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "店鋪",
+				"navigationBarTitleText": "%pagesNav.shop%",
 				"enablePullDownRefresh": false
 			}
 		},
@@ -827,7 +827,7 @@
 			"path": "pages/shop/product/list",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "店鋪商品",
+				"navigationBarTitleText": "%pagesNav.shopGoods%",
 				"backgroundColor": "#f5f5f5",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -840,7 +840,7 @@
 		{
 			"path": "pages/shop/info",
 			"style": {
-				"navigationBarTitleText": "店鋪信息",
+				"navigationBarTitleText": "%pagesNav.shopInfo%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"bounce": "vertical"
@@ -851,7 +851,7 @@
 			"path": "pages/cart/index",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "購物車",
+				"navigationBarTitleText": "%cart.title%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"titleNView": false,
@@ -862,7 +862,7 @@
 		{
 			"path": "pages/order/confirm",
 			"style": {
-				"navigationBarTitleText": "確認訂單",
+				"navigationBarTitleText": "%pagesNav.confirmOrder%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"bounce": "vertical"
@@ -873,7 +873,7 @@
 			"path": "pages/order/list",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "我的訂單",
+				"navigationBarTitleText": "%pagesNav.myOrders%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -884,7 +884,7 @@
 		{
 			"path": "pages/order/details",
 			"style": {
-				"navigationBarTitleText": "訂單詳情",
+				"navigationBarTitleText": "%order.orderDetail%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"bounce": "vertical"
@@ -895,7 +895,7 @@
 			"path": "pages/order/logistics",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "物流詳情",
+				"navigationBarTitleText": "%pagesNav.logisticsDetail%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -907,7 +907,7 @@
 			"path": "pages/order/comment",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "評價訂單",
+				"navigationBarTitleText": "%pagesNav.reviewOrder%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -919,7 +919,7 @@
 			"path": "pages/page/success",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "支付成功",
+				"navigationBarTitleText": "%pagesNav.paySuccess%",
 				"backgroundColor": "#ffffff",
 				"app-plus": {
 					"titleNView": false,
@@ -930,7 +930,7 @@
 		{
 			"path": "pages/user/address/addressManage",
 			"style": {
-				"navigationBarTitleText": "地址管理",
+				"navigationBarTitleText": "%pagesNav.addressManage%",
 				"backgroundColor": "#ffffff",
 				"app-plus": {
 					"bounce": "vertical"
@@ -940,7 +940,7 @@
 		{
 			"path": "pages/user/address/address",
 			"style": {
-				"navigationBarTitleText": "收貨地址",
+				"navigationBarTitleText": "%pagesNav.shippingAddress%",
 				"backgroundColor": "#f5f5f5",
 				"app-plus": {
 					"bounce": "vertical"
@@ -960,7 +960,7 @@
 		{
 			"path": "pages/user/refund/lists",
 			"style": {
-				"navigationBarTitleText": "退款列表",
+				"navigationBarTitleText": "%pagesNav.refundList%",
 				"backgroundColor": "#f3f5f7",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -973,7 +973,7 @@
 			"path": "pages/user/refund/details",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "退款詳情",
+				"navigationBarTitleText": "%pagesNav.refundDetail%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -995,7 +995,7 @@
 			"path": "pages/user/refund/edit",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "修改退款",
+				"navigationBarTitleText": "%pagesNav.refundEdit%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -1007,7 +1007,7 @@
 			"path": "pages/user/refund/log",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "退款記錄",
+				"navigationBarTitleText": "%pagesNav.refundLog%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"titleNView": false,
@@ -1018,7 +1018,7 @@
 		{
 			"path": "pages/user/coupon/mycard",
 			"style": {
-				"navigationBarTitleText": "我的優惠券",
+				"navigationBarTitleText": "%mine.myCoupon%",
 				"backgroundColor": "#f3f5f7",
 				"enablePullDownRefresh": false,
 				"app-plus": {
@@ -1029,7 +1029,7 @@
 		{
 			"path": "pages/user/coupon/list",
 			"style": {
-				"navigationBarTitleText": "領取優惠券",
+				"navigationBarTitleText": "%mine.receiveCoupon%",
 				"backgroundColor": "#f3f5f7",
 				"enablePullDownRefresh": false,
 				"app-plus": {
@@ -1040,7 +1040,7 @@
 		{
 			"path": "pages/user/coupon/details",
 			"style": {
-				"navigationBarTitleText": "優惠券詳情",
+				"navigationBarTitleText": "%pagesNav.couponDetail%",
 				"backgroundColor": "#f3f5f7",
 				"app-plus": {
 					"bounce": "vertical"
@@ -1051,7 +1051,7 @@
 			"path": "pages/user/coupon/apply",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "優惠券使用",
+				"navigationBarTitleText": "%pagesNav.couponUse%",
 				"backgroundColor": "#f3f5f7",
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 120,
@@ -1064,7 +1064,7 @@
 		{
 			"path": "pages/user/money/pay",
 			"style": {
-				"navigationBarTitleText": "%pay.title%",
+				"navigationBarTitleText": "%pagesNav.pay%",
 				"app-plus": {
 					"titleNView": {
 						"type": "float",
@@ -1077,7 +1077,7 @@
 			"path": "pages/user/money/pay-webview",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "支付中",
+				"navigationBarTitleText": "%pagesNav.paying%",
 				"backgroundColor": "#ffffff",
 				"app-plus": {
 					"titleNView": false
@@ -1087,7 +1087,7 @@
 		{
 			"path": "pages/user/money/google-pay-success",
 			"style": {
-				"navigationBarTitleText": "Google Pay"
+				"navigationBarTitleText": "%pagesNav.googlePay%"
 			}
 		},
 		{
@@ -1115,7 +1115,7 @@
 		{
 			"path": "pages/user/service",
 			"style": {
-				"navigationBarTitleText": "%user.service%",
+				"navigationBarTitleText": "%user.smartAssistant%",
 				"enablePullDownRefresh": false
 			}
 		},
@@ -1134,7 +1134,7 @@
 			"path": "pages/travel/hotel/index",
 			"style": {
 				"navigationStyle": "custom",
-				"navigationBarTitleText": "酒店",
+				"navigationBarTitleText": "%pagesNav.hotel%",
 				"backgroundColor": "#f7f8fc",
 				"app-plus": {
 					"titleNView": false,
@@ -1183,7 +1183,7 @@
 	},
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "uni-app",
+		"navigationBarTitleText": "%passport.app-name%",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8"
 	}

+ 14 - 14
pages/order/comment.vue

@@ -16,17 +16,17 @@
 
 			<!-- 好评/中评/差评选择 -->
 			<view class="comment padding-lr-bj padding-top-bj">
-				<view class="comment-title">商品評價</view>
+				<view class="comment-title">{{ $t('orderComment.goodsReview') }}</view>
 				<view class="comment-operate">
-					<view class="item" :class="{ action: item.state == 0 }" @tap="stateType(0, index)"><text class="wlIcon-haoping"></text>好評</view>
-					<view class="item" :class="{ action: item.state == 1 }" @tap="stateType(1, index)"><text class="wlIcon-chaping"></text>中評</view>
-					<view class="item" :class="{ action: item.state == 2 }" @tap="stateType(2, index)"><text class="wlIcon-chaping"></text>差評</view>
+					<view class="item" :class="{ action: item.state == 0 }" @tap="stateType(0, index)"><text class="wlIcon-haoping"></text>{{ $t('mall.comment.good') }}</view>
+					<view class="item" :class="{ action: item.state == 1 }" @tap="stateType(1, index)"><text class="wlIcon-chaping"></text>{{ $t('mall.comment.pertinent') }}</view>
+					<view class="item" :class="{ action: item.state == 2 }" @tap="stateType(2, index)"><text class="wlIcon-chaping"></text>{{ $t('mall.comment.poor') }}</view>
 				</view>
 			</view>
 
 			<!-- 评价文字输入 -->
 			<view class="describe cu-form-group margin-bj radius-bock padding-bj">
-				<textarea maxlength="-1" v-model="item.comment" placeholder="評價商品"></textarea>
+				<textarea maxlength="-1" v-model="item.comment" :placeholder="$t('orderComment.placeholder')"></textarea>
 			</view>
 
 			<!-- 评价图片上传(最多4张) -->
@@ -48,7 +48,7 @@
 			<view class="operate-title"><text class="wlIcon-dianpu1 margin-right-sm"></text>{{ shop.shopname }}</view>
 			<!-- 描述相符 -->
 			<view class="score">
-				<view class="title">描述相符</view>
+				<view class="title">{{ $t('orderComment.describe') }}</view>
 				<view class="star-row">
 					<view v-for="s in 5" :key="s" class="star-item" :class="{ active: s <= shop.describe }" @tap="shop.describe = s">★</view>
 				</view>
@@ -56,7 +56,7 @@
 			</view>
 			<!-- 物流服务 -->
 			<view class="score">
-				<view class="title">物流服務</view>
+				<view class="title">{{ $t('orderComment.logistics') }}</view>
 				<view class="star-row">
 					<view v-for="s in 5" :key="s" class="star-item" :class="{ active: s <= shop.logistics }" @tap="shop.logistics = s">★</view>
 				</view>
@@ -64,7 +64,7 @@
 			</view>
 			<!-- 服务态度 -->
 			<view class="score">
-				<view class="title">服務態度</view>
+				<view class="title">{{ $t('orderComment.service') }}</view>
 				<view class="star-row">
 					<view v-for="s in 5" :key="s" class="star-item" :class="{ active: s <= shop.service }" @tap="shop.service = s">★</view>
 				</view>
@@ -72,7 +72,7 @@
 			</view>
 			<!-- 发货速度 -->
 			<view class="score">
-				<view class="title">發貨速度</view>
+				<view class="title">{{ $t('orderComment.deliver') }}</view>
 				<view class="star-row">
 					<view v-for="s in 5" :key="s" class="star-item" :class="{ active: s <= shop.deliver }" @tap="shop.deliver = s">★</view>
 				</view>
@@ -84,7 +84,7 @@
 
 		<!-- 底部提交按钮 -->
 		<view class="wanlian cu-bar tabbar foot flex flex-direction">
-			<button @tap="addData()" class="cu-btn wanl-bg-orange lg">提交評價</button>
+			<button @tap="addData()" class="cu-btn wanl-bg-orange lg">{{ $t('orderComment.submit') }}</button>
 		</view>
 	</view>
 </template>
@@ -135,7 +135,7 @@ export default {
 		 */
 		async addData() {
 			if (this.shop.describe == 0 || this.shop.logistics == 0 || this.shop.service == 0 || this.shop.deliver == 0) {
-				uni.showToast({ title: '請為店鋪評分', icon: 'none' })
+				uni.showToast({ title: this.$t('orderComment.rateShop'), icon: 'none' })
 				return
 			}
 			try {
@@ -152,7 +152,7 @@ export default {
 				})
 				uni.navigateTo({ url: '/pages/page/success?type=comment' })
 			} catch (e) {
-				uni.showToast({ title: '評價失敗', icon: 'none' })
+				uni.showToast({ title: this.$t('orderComment.failed'), icon: 'none' })
 			}
 		},
 
@@ -187,7 +187,7 @@ export default {
 
 		/** 星级评分文字描述 */
 		scoreInfo(index) {
-			return ['', '極差', '差', '一般', '好', '非常好'][index] || ''
+			return ['', this.$t('orderComment.score1'), this.$t('orderComment.score2'), this.$t('orderComment.score3'), this.$t('orderComment.score4'), this.$t('orderComment.score5')][index] || ''
 		}
 	}
 }
@@ -229,4 +229,4 @@ export default {
 /* 颜色 */
 .wanl-bg-orange { background: linear-gradient(135deg, #ff6b35, #ff3d2e) !important; color: #fff !important; }
 .edgeInsetBottom { height: 100rpx; }
-</style>
+</style>

+ 4 - 4
pages/order/confirm.vue

@@ -262,7 +262,7 @@ export default {
         this.orderData = data.orderData
         this.addressData = data.addressData
       } catch (e) {
-        if (e && e.msg === '請添加收貨地址') {
+        if (e && (e.msg === '請添加收貨地址' || e.msg === '请添加收货地址')) {
           this.reload = true
           this.addAddress('newadd')
         } else {
@@ -346,7 +346,7 @@ export default {
           })
           data.coupon = resData
         } catch (e) {
-          uni.showToast({ title: '查詢優惠券失敗', icon: 'none' })
+          uni.showToast({ title: this.$t('orderConfirm.queryCouponFailed'), icon: 'none' })
         }
       }
       this.couponIndex = index
@@ -359,12 +359,12 @@ export default {
         const data = await pullMallCouponReceive({ id: coupon.id })
         coupon.id = data.id
         coupon.state = true
-        uni.showToast({ title: data.msg || '領取成功', icon: 'none' })
+        uni.showToast({ title: data.msg || this.$t('mall.receiveSuccess'), icon: 'none' })
         this.$store.commit('statistics/dynamic', {
           coupon: this.$store.state.statistics.dynamic.coupon + 1
         })
       } catch (e) {
-        uni.showToast({ title: '領取失敗', icon: 'none' })
+        uni.showToast({ title: this.$t('orderConfirm.receiveFailed'), icon: 'none' })
       }
     },
     // 選擇優惠券

+ 46 - 28
pages/order/details.vue

@@ -34,7 +34,7 @@
 						</view>
 						<view class="wanl-pip text-cut-2 text-sm">
 							{{ orderData.address.address.replace(/\//g, ' ') }}
-							<text class="margin-left-xs" v-if="orderData.address.address_name">{{ orderData.address.address_name }})附近</text>
+							<text class="margin-left-xs" v-if="orderData.address.address_name">{{ $t('order.nearby', [orderData.address.address_name]) }}</text>
 						</view>
 					</view>
 				</view>
@@ -68,28 +68,28 @@
 				</view>
 				<!-- 价格明细 -->
 				<view class="price padding-lr-bj padding-tb-bj text-sm order-details-price">
-					<view>商品總價:<text class="text-price">{{ orderData.pay.order_price }}</text></view>
-					<view>運費:<text class="text-price">{{ orderData.pay.freight_price }}</text></view>
-					<view>優惠:<text class="text-price">{{ orderData.pay.discount_price }}</text></view>
-					<view>訂單總價:<text class="text-price">{{ orderData.pay.price }}</text></view>
-					<view class="text-sm" v-if="orderData.pay.actual_payment != 0">實付金額:<text class="text-price wanl-orange">{{ orderData.pay.actual_payment }}</text></view>
+					<view>{{ $t('order.goodsTotal') }}<text class="text-price">{{ orderData.pay.order_price }}</text></view>
+					<view>{{ $t('order.freight') }}<text class="text-price">{{ orderData.pay.freight_price }}</text></view>
+					<view>{{ $t('order.discount') }}<text class="text-price">{{ orderData.pay.discount_price }}</text></view>
+					<view>{{ $t('order.orderTotal') }}<text class="text-price">{{ orderData.pay.price }}</text></view>
+					<view class="text-sm" v-if="orderData.pay.actual_payment != 0">{{ $t('order.actualAmount') }}<text class="text-price wanl-orange">{{ orderData.pay.actual_payment }}</text></view>
 				</view>
 			</view>
 
 			<!-- 订单信息 -->
 			<view class="order bg-white margin-top-bj padding-bj order-details-card" v-if="orderData.order_no">
 				<view class="title" @tap="toMore">
-					<view class="text-sm">訂單詳情</view>
+					<view class="text-sm">{{ $t('order.orderDetail') }}</view>
 					<view><text class="wlIcon-fanhui3" v-if="infoMore"></text><text class="wlIcon-fanhui4" v-else></text></view>
 				</view>
 				<view class="text-sm">
-					<view class="item"><text class="wanl-gray" style="width: 160rpx">訂單編號:</text><text>{{ orderData.order_no }}</text></view>
-					<view class="item"><text class="wanl-gray" style="width: 160rpx">支付交易號:</text><text>{{ orderData.pay.pay_no }}</text></view>
-					<view class="item"><text class="wanl-gray" style="width: 160rpx">創建時間:</text><text>{{ orderData.createtime_text }}</text></view>
+					<view class="item"><text class="wanl-gray" style="width: 160rpx">{{ $t('order.orderNo') }}</text><text>{{ orderData.order_no }}</text></view>
+					<view class="item"><text class="wanl-gray" style="width: 160rpx">{{ $t('order.payNo') }}</text><text>{{ orderData.pay.pay_no }}</text></view>
+					<view class="item"><text class="wanl-gray" style="width: 160rpx">{{ $t('order.createTime') }}</text><text>{{ orderData.createtime_text }}</text></view>
 					<block v-if="infoMore">
-						<view class="item" v-if="orderData.paymenttime"><text class="wanl-gray-dark" style="width: 160rpx">支付時間:</text><text>{{ orderData.paymenttime_text }}</text></view>
-						<view class="item" v-if="orderData.delivertime"><text class="wanl-gray-dark" style="width: 160rpx">發貨時間:</text><text>{{ orderData.delivertime_text }}</text></view>
-						<view class="item" v-if="orderData.taketime"><text class="wanl-gray-dark" style="width: 160rpx">收貨時間:</text><text>{{ orderData.taketime_text }}</text></view>
+						<view class="item" v-if="orderData.paymenttime"><text class="wanl-gray-dark" style="width: 160rpx">{{ $t('order.payTime') }}</text><text>{{ orderData.paymenttime_text }}</text></view>
+						<view class="item" v-if="orderData.delivertime"><text class="wanl-gray-dark" style="width: 160rpx">{{ $t('order.deliverTime') }}</text><text>{{ orderData.delivertime_text }}</text></view>
+						<view class="item" v-if="orderData.taketime"><text class="wanl-gray-dark" style="width: 160rpx">{{ $t('order.takeTime') }}</text><text>{{ orderData.taketime_text }}</text></view>
 					</block>
 				</view>
 			</view>
@@ -106,7 +106,7 @@ export default {
 		return {
 			orderData: {
 				order_no: '',
-				address: { name: '加載中...', mobile: '', address: '', address_name: '' },
+				address: { name: '', mobile: '', address: '', address_name: '' },
 				logistics: { context: '', status: '', time: '' },
 				statetime: ''
 			},
@@ -114,6 +114,9 @@ export default {
 			infoMore: false
 		}
 	},
+	created() {
+		this.orderData.address.name = this.$t('order.loading')
+	},
 	onLoad(option) {
 		this.loadData({ id: option.id })
 	},
@@ -133,29 +136,29 @@ export default {
 					// 待付款:计算自动关闭倒计时
 					var diff = (res.createtime + res.config.cancel * 86400) - Date.parse(new Date()) / 1000
 					var days = Math.floor(diff / 86400), hours = Math.floor(diff % 86400 / 3600), minutes = Math.floor(diff % 86400 % 3600 / 60)
-					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = `剩餘 ${minutes} 分鐘後自動關閉`
-					else if (hours > 0 && days === 0) this.orderData.statetime = `剩餘 ${hours} 小時 ${minutes} 分鐘後自動關閉`
-					else if (days > 0) this.orderData.statetime = `剩餘 ${days} 天 ${hours} 小時 ${minutes} 分鐘後自動關閉`
+					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = this.$t('order.autoCloseMinutes', [minutes])
+					else if (hours > 0 && days === 0) this.orderData.statetime = this.$t('order.autoCloseHours', [hours, minutes])
+					else if (days > 0) this.orderData.statetime = this.$t('order.autoCloseDays', [days, hours, minutes])
 				} else if (res.state == 2) {
-					this.orderData.statetime = '等待賣家發貨'
+					this.orderData.statetime = this.$t('order.waitSellerShip')
 				} else if (res.state == 3) {
 					// 待收货:计算自动确认收货倒计时
 					var diff = (res.delivertime + res.config.receiving * 86400) - Date.parse(new Date()) / 1000
 					var days = Math.floor(diff / 86400), hours = Math.floor(diff % 86400 / 3600), minutes = Math.floor(diff % 86400 % 3600 / 60)
-					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = `剩餘 ${minutes} 分鐘後自動確認收貨`
-					else if (hours > 0 && days === 0) this.orderData.statetime = `剩餘 ${hours} 小時 ${minutes} 分鐘後自動確認收貨`
-					else if (days > 0) this.orderData.statetime = `剩餘 ${days} 天 ${hours} 小時 ${minutes} 分鐘後自動確認收貨`
+					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = this.$t('order.autoConfirmMinutes', [minutes])
+					else if (hours > 0 && days === 0) this.orderData.statetime = this.$t('order.autoConfirmHours', [hours, minutes])
+					else if (days > 0) this.orderData.statetime = this.$t('order.autoConfirmDays', [days, hours, minutes])
 				} else if (res.state == 4) {
 					// 待评价:计算自动评价倒计时
 					var diff = (res.taketime + res.config.comment * 86400) - Date.parse(new Date()) / 1000
 					var days = Math.floor(diff / 86400), hours = Math.floor(diff % 86400 / 3600), minutes = Math.floor(diff % 86400 % 3600 / 60)
-					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = `剩餘 ${minutes} 分鐘後自動評價`
-					else if (hours > 0 && days === 0) this.orderData.statetime = `剩餘 ${hours} 小時 ${minutes} 分鐘後自動評價`
-					else if (days > 0) this.orderData.statetime = `剩餘 ${days} 天 ${hours} 小時 ${minutes} 分鐘後自動評價`
+					if (minutes > 0 && hours === 0 && days === 0) this.orderData.statetime = this.$t('order.autoCommentMinutes', [minutes])
+					else if (hours > 0 && days === 0) this.orderData.statetime = this.$t('order.autoCommentHours', [hours, minutes])
+					else if (days > 0) this.orderData.statetime = this.$t('order.autoCommentDays', [days, hours, minutes])
 				} else if (res.state == 6) {
 					this.orderData.statetime = res.dealtime_text
 				} else if (res.state == 7) {
-					this.orderData.statetime = '訂單已關閉'
+					this.orderData.statetime = this.$t('order.closedTip')
 				}
 			} catch (e) {
 				console.error('[order] loadData', e)
@@ -164,12 +167,27 @@ export default {
 
 		/** 订单状态文字映射 */
 		getStatusText(status) {
-			return ['待付款', '支付成功', '待收貨', '待評價', '退款訂單', '訂單完成', '交易關閉'][status - 1]
+			return [
+				this.$t('order.pendingPayment'),
+				this.$t('order.paymentSuccess'),
+				this.$t('order.pendingReceipt'),
+				this.$t('order.pendingReview'),
+				this.$t('order.refundOrder'),
+				this.$t('order.orderComplete'),
+				this.$t('order.tradeClosed')
+			][status - 1]
 		},
 
 		/** 退款状态文字映射 */
 		getRefund(status) {
-			return ['退款', '退款中', '待退貨', '退款完成', '退款關閉', '退款拒絕'][status]
+			return [
+				this.$t('order.refund'),
+				this.$t('order.refunding'),
+				this.$t('order.waitReturn'),
+				this.$t('order.refundDone'),
+				this.$t('order.refundClosed'),
+				this.$t('order.refundRejected')
+			][status]
 		},
 
 		/** 跳转退款申请/详情 */
@@ -236,4 +254,4 @@ export default {
 .wanl-orange { color: #ff6b35; }
 
 .edgeInsetBottom { height: 30rpx; }
-</style>
+</style>

+ 46 - 38
pages/order/list.vue

@@ -23,7 +23,7 @@
 			<swiper-item class="tab-content order-swiper-item" v-for="(tag, key) in navList" :key="tag.state">
 				<scroll-view class="list-scroll-content order-scroll" scroll-y @scrolltolower="loadData">
 					<!-- 空状态 -->
-					<wanl-empty v-if="tag.loaded === true && tag.orderList.length === 0" text="暫無訂單" />
+					<wanl-empty v-if="tag.loaded === true && tag.orderList.length === 0" :text="$t('order.empty')" />
 
 					<!-- 订单卡片 -->
 					<view v-for="(order, okey) in tag.orderList" :key="order.id" class="order-item order-card">
@@ -37,7 +37,7 @@
 							<view class="margin-right-bj text-sm order-head-right">
 								<text class="state order-state" :style="{ color: order.stateTipColor }">{{ order.stateTip }}</text>
 								<text v-if="order.state === 7" class="margin-left-sm wlIcon-lajitong order-trash"
-									@tap="deleteOrder(order.id, okey)">刪除</text>
+									@tap="deleteOrder(order.id, okey)">{{ $t('order.delete') }}</text>
 							</view>
 						</view>
 
@@ -64,35 +64,35 @@
 
 						<!-- 价格汇总 -->
 						<view class="price-box text-sm flex order-card-foot">
-							<view v-if="order.pay.discount_price > 0" class="margin-right-sm wanl-gray">優惠:<text class="text-price">{{
+							<view v-if="order.pay.discount_price > 0" class="margin-right-sm wanl-gray">{{ $t('order.discount') }}<text class="text-price">{{
 								order.pay.discount_price }}</text></view>
-							<view v-if="order.pay.freight_price > 0" class="margin-right-sm wanl-gray">運費:<text class="text-price">{{
+							<view v-if="order.pay.freight_price > 0" class="margin-right-sm wanl-gray">{{ $t('order.freight') }}<text class="text-price">{{
 								order.pay.freight_price }}</text></view>
-							<view>實付:<text class="text-price">{{ order.pay.price }}</text></view>
+							<view>{{ $t('order.actualPay') }}<text class="text-price">{{ order.pay.price }}</text></view>
 						</view>
 
 						<!-- 待付款操作按钮 -->
 						<view class="action-box padding-bottom-bj" v-if="order.state == 1">
-							<button class="cu-btn round line-black margin-lr-bj order-btn" @tap="editAddress(order.id)">修改地址</button>
-							<button class="cu-btn round line-black order-btn" @tap="cancelOrder(order)">取消訂單</button>
+							<button class="cu-btn round line-black margin-lr-bj order-btn" @tap="editAddress(order.id)">{{ $t('order.editAddress') }}</button>
+							<button class="cu-btn round line-black order-btn" @tap="cancelOrder(order)">{{ $t('order.cancelOrder') }}</button>
 							<button class="cu-btn round margin-lr-bj wanl-bg-orange order-btn-primary"
-								@tap="paymentOrder(order.id)">立即付款</button>
+								@tap="paymentOrder(order.id)">{{ $t('order.payNow') }}</button>
 						</view>
 						<!-- 待发货操作按钮 -->
 						<view class="action-box padding-bottom-bj" v-if="order.state == 2">
-							<button class="cu-btn round line-black order-btn margin-lr-bj" @tap="editAddress(order.id)">修改地址</button>
+							<button class="cu-btn round line-black order-btn margin-lr-bj" @tap="editAddress(order.id)">{{ $t('order.editAddress') }}</button>
 						</view>
 						<!-- 待收货操作按钮 -->
 						<view class="action-box padding-bottom-bj" v-if="order.state == 3">
-							<button class="cu-btn round line-black order-btn" @tap="onLogistics(order.id)">查看物流</button>
+							<button class="cu-btn round line-black order-btn" @tap="onLogistics(order.id)">{{ $t('order.viewLogistics') }}</button>
 							<button class="cu-btn round margin-lr-bj wanl-bg-orange order-btn-primary"
-								@tap="confirmOrder(order)">確認收貨</button>
+								@tap="confirmOrder(order)">{{ $t('order.confirmReceipt') }}</button>
 						</view>
 						<!-- 待评价操作按钮 -->
 						<view class="action-box padding-bottom-bj" v-if="order.state == 4">
-							<button class="cu-btn round line-black order-btn" @tap="onLogistics(order.id)">查看物流</button>
+							<button class="cu-btn round line-black order-btn" @tap="onLogistics(order.id)">{{ $t('order.viewLogistics') }}</button>
 							<button class="cu-btn round margin-lr-bj line-black order-btn-primary-alt"
-								@tap="commentOrder(order.id)">評價</button>
+								@tap="commentOrder(order.id)">{{ $t('order.review') }}</button>
 						</view>
 					</view>
 
@@ -112,16 +112,17 @@ export default {
 		return {
 			tabCurrentIndex: 0,
 			swiperHeight: 0,
-			navList: [
-				{ state: 0, text: '全部', loadingType: 'more', current_page: 1, orderList: [] },
-				{ state: 1, text: '待付款', loadingType: 'more', current_page: 1, orderList: [] },
-				{ state: 2, text: '待發貨', loadingType: 'more', current_page: 1, orderList: [] },
-				{ state: 3, text: '待收貨', loadingType: 'more', current_page: 1, orderList: [] },
-				{ state: 4, text: '待評價', loadingType: 'more', current_page: 1, orderList: [] }
-			]
+			navList: []
 		}
 	},
 	onLoad(options) {
+		this.navList = [
+			{ state: 0, text: this.$t('order.all'), loadingType: 'more', current_page: 1, orderList: [] },
+			{ state: 1, text: this.$t('order.pendingPayment'), loadingType: 'more', current_page: 1, orderList: [] },
+			{ state: 2, text: this.$t('order.pendingShipment'), loadingType: 'more', current_page: 1, orderList: [] },
+			{ state: 3, text: this.$t('order.pendingReceipt'), loadingType: 'more', current_page: 1, orderList: [] },
+			{ state: 4, text: this.$t('order.pendingReview'), loadingType: 'more', current_page: 1, orderList: [] }
+		]
 		if (!options.state) options.state = 0
 		this.tabCurrentIndex = +options.state
 		this.calcSwiperHeight()
@@ -160,7 +161,7 @@ export default {
 				navItem.loadingType = 'more'
 				this.$set(navItem, 'loaded', true)
 				console.error('[order] loadData 失败:', JSON.stringify(e))
-				uni.showToast({ title: '加載失敗,請稍後重試', icon: 'none' })
+				uni.showToast({ title: this.$t('order.loadFailed'), icon: 'none' })
 			}
 		},
 
@@ -188,19 +189,19 @@ export default {
 
 		/** 删除已关闭的订单 */
 		async deleteOrder(order_id, key) {
-			uni.showLoading({ title: '請稍候' })
+			uni.showLoading({ title: this.$t('order.pleaseWait') })
 			try {
 				await postOrderDelete({ id: order_id })
 				this.navList[this.tabCurrentIndex].orderList.splice(key, 1)
 			} catch (e) {
-				uni.showToast({ title: '刪除失敗', icon: 'none' })
+				uni.showToast({ title: this.$t('order.deleteFailed'), icon: 'none' })
 			}
 			uni.hideLoading()
 		},
 
 		/** 取消订单 */
 		async cancelOrder(item) {
-			uni.showLoading({ title: '請稍候' })
+			uni.showLoading({ title: this.$t('order.pleaseWait') })
 			try {
 				await postOrderCancel({ id: item.id })
 				let { stateTip, stateTipColor } = this.orderStateExp(7)
@@ -216,7 +217,7 @@ export default {
 					if (idx !== -1) allList[idx].state = 7
 				}
 			} catch (e) {
-				uni.showToast({ title: '取消失敗', icon: 'none' })
+				uni.showToast({ title: this.$t('order.cancelFailed'), icon: 'none' })
 			}
 			uni.hideLoading()
 		},
@@ -234,8 +235,8 @@ export default {
 		/** 确认收货(弹窗确认) */
 		confirmOrder(item) {
 			uni.showModal({
-				title: '提示',
-				content: '確認已收到貨物?',
+				title: this.$t('common.tip'),
+				content: this.$t('order.confirmReceiptContent'),
 				success: (res) => {
 					if (!res.confirm) return
 					this.doConfirmOrder(item)
@@ -245,13 +246,13 @@ export default {
 
 		/** 执行确认收货 */
 		async doConfirmOrder(item) {
-			uni.showLoading({ title: '請稍候' })
+			uni.showLoading({ title: this.$t('order.pleaseWait') })
 			try {
 				await postOrderConfirm({ id: item.id })
 				let { stateTip, stateTipColor } = this.orderStateExp(4)
 				Object.assign(item, { state: 4, stateTip, stateTipColor })
 			} catch (e) {
-				uni.showToast({ title: '操作失敗', icon: 'none' })
+				uni.showToast({ title: this.$t('addressManage.operationFailed'), icon: 'none' })
 			}
 			uni.hideLoading()
 		},
@@ -260,20 +261,27 @@ export default {
 		orderStateExp(state) {
 			let stateTip = '', stateTipColor = '#333'
 			switch (+state) {
-				case 1: stateTip = '待付款'; stateTipColor = '#f40'; break
-				case 2: stateTip = '待發貨'; break
-				case 3: stateTip = '已發貨'; break
-				case 4: stateTip = '交易成功'; break
-				case 5: stateTip = '交易成功'; break
-				case 6: stateTip = '已完成'; break
-				case 7: stateTip = '已關閉'; stateTipColor = '#777'; break
+				case 1: stateTip = this.$t('order.pendingPayment'); stateTipColor = '#f40'; break
+				case 2: stateTip = this.$t('order.pendingShipment'); break
+				case 3: stateTip = this.$t('order.shipped'); break
+				case 4: stateTip = this.$t('order.tradeSuccess'); break
+				case 5: stateTip = this.$t('order.tradeSuccess'); break
+				case 6: stateTip = this.$t('order.completed'); break
+				case 7: stateTip = this.$t('order.closed'); stateTipColor = '#777'; break
 			}
 			return { stateTip, stateTipColor }
 		},
 
 		/** 退款状态文字映射 */
 		getRefund(status) {
-			return ['退款', '退款中', '待退貨', '退款完成', '退款關閉', '退款拒絕'][status]
+			return [
+				this.$t('order.refund'),
+				this.$t('order.refunding'),
+				this.$t('order.waitReturn'),
+				this.$t('order.refundDone'),
+				this.$t('order.refundClosed'),
+				this.$t('order.refundRejected')
+			][status]
 		},
 
 		/** 修改收货地址 */
@@ -500,4 +508,4 @@ page {
 .edgeInsetBottom {
 	height: 30rpx;
 }
-</style>
+</style>

+ 8 - 5
pages/order/logistics.vue

@@ -9,7 +9,7 @@
 				<view class="cu-avatar lg radius-bock bg-white" :style="{ backgroundImage: 'url(' + data.kuaidi.logo + ')' }"></view>
 				<view class="margin-left-bj">
 					<view>{{ data.kuaidi.name }}</view>
-					<view class="text-min">官方電話 <text class="margin-lr-xs">{{ data.kuaidi.tel }}</text></view>
+					<view class="text-min">{{ $t('orderLogistics.officialTel') }} <text class="margin-lr-xs">{{ data.kuaidi.tel }}</text></view>
 				</view>
 			</view>
 			<!-- 快递单号(点击复制) -->
@@ -20,7 +20,7 @@
 
 		<!-- 物流轨迹时间轴 -->
 		<view class="margin-bj bg-white radius-bock logistics-card" v-if="isLoad">
-			<view class="padding-left-bj padding-top-bj text-sm">運單詳情</view>
+			<view class="padding-left-bj padding-top-bj text-sm">{{ $t('orderLogistics.waybillDetail') }}</view>
 			<view class="order-tracking">
 				<view class="time-axis wanl-gray">
 					<view class="timeaxis-item" v-for="(item, index) in data.express" :key="item.id">
@@ -47,7 +47,7 @@
 					</view>
 					<!-- 底部:包裹等待揽收 -->
 					<view class="timeaxis-item">
-						<view class="text-min">包裹等待攬收</view>
+						<view class="text-min">{{ $t('orderLogistics.waitPickup') }}</view>
 						<view class="timeaxis-node"><text class="wlIcon-dot"></text></view>
 					</view>
 				</view>
@@ -62,10 +62,13 @@ import { pullOrderLogistics } from '@/features/mall/mall-gateway'
 export default {
 	data() {
 		return {
-			data: { order_no: '加載中...', goods: [] },
+			data: { order_no: '', goods: [] },
 			isLoad: false
 		}
 	},
+	created() {
+		this.data.order_no = this.$t('order.loading')
+	},
 	onLoad(option) {
 		this.loadData({ id: option.id })
 	},
@@ -114,4 +117,4 @@ export default {
 
 /* 颜色 */
 .wanl-bg-orange { background: linear-gradient(135deg, #ff6b35, #ff3d2e) !important; color: #fff !important; }
-</style>
+</style>

+ 25 - 22
pages/user/collect.vue

@@ -21,7 +21,7 @@
 		<swiper class="collect-container__main" :current-item-id="currentItemId"
 			:style="{ height: windowHeight + 'px' }" @change="changeCurrent" @animationfinish="animationFinish">
 			<swiper-item v-for="(data, keys) in navList" :key="keys" :item-id="data.type">
-				<wanl-empty text="暫無收藏" src="collect_default3x" v-if="data.dataList.length === 0 && data.loaded" />
+				<wanl-empty :text="$t('collect.empty')" src="collect_default3x" v-if="data.dataList.length === 0 && data.loaded" />
 				<scroll-view class="content" scroll-y @scrolltolower="loadData">
 					<view class="item margin-bj padding-sm bg-white radius-bock" v-for="(item, index) in data.dataList"
 						:key="index" @click="handleGoods(item.id)">
@@ -30,16 +30,16 @@
 						<view class="subject">
 							<view class="text-sm wanl-gray-dark text-cut-2">
 								<view v-if="currentItemId === 'groups'" class="cu-tag sm bg-gradual-red radius margin-right-xs">
-									{{item.is_ladder === 1 ? '階梯' : item.people_num + '人團' + '拼團'}}
+									{{ item.is_ladder === 1 ? $t('collect.ladder') : $t('collect.groupTag', [item.people_num]) }}
 								</view>
 								{{item.title}}
 							</view>
 							<view class="text-price text-red text-df"> {{item.price}} </view>
 							<view class="menu">
 								<view class="wanl-gray-light text-sm">
-									<text class="margin-right-sm">喜歡 {{item.like}}</text>
-									<text v-if="currentItemId === 'goods'">付款 {{item.payment}}</text>
-									<text v-if="currentItemId === 'groups'">已拼 0 件</text>
+									<text class="margin-right-sm">{{ $t('collect.likes', [item.like]) }}</text>
+									<text v-if="currentItemId === 'goods'">{{ $t('collect.payment', [item.payment]) }}</text>
+									<text v-if="currentItemId === 'groups'">{{ $t('collect.grouped', [0]) }}</text>
 								</view>
 								<view class="button text-bold text-30">
 									<text class="wlIcon-lajitong" @click.stop="loadFollow(item.id, index)"></text>
@@ -65,22 +65,10 @@ export default {
 			headTop: 0,
 			currentId: 0,
 			currentItemId: 'goods',
-			navList: [{
-				type: 'goods',
-				type_text: '商品收藏',
-				dataList: [],
-				loadingType: 'more',
-				current_page: 1
-			}, {
-				type: 'groups',
-				type_text: '拼團收藏',
-				dataList: [],
-				loadingType: 'more',
-				current_page: 1
-			}],
+			navList: [],
 			contentText: {
 				contentdown: ' ',
-				contentrefresh: '收藏加載中...',
+				contentrefresh: '',
 				contentnomore: ''
 			}
 		}
@@ -91,11 +79,26 @@ export default {
 		this.headTop = statusBarHeight
 		this.headHeight = statusBarHeight + uni.upx2px(90)
 		this.windowHeight = sysInfo.windowHeight - uni.upx2px(90)
+		this.navList = [{
+			type: 'goods',
+			type_text: this.$t('collect.goods'),
+			dataList: [],
+			loadingType: 'more',
+			current_page: 1
+		}, {
+			type: 'groups',
+			type_text: this.$t('collect.groups'),
+			dataList: [],
+			loadingType: 'more',
+			current_page: 1
+		}]
+		this.contentText.contentrefresh = this.$t('collect.loading')
 		this.loadData()
 	},
 	methods: {
 		async loadData(source) {
 			let navItem = this.navList[this.currentId]
+			if (!navItem) return
 			if (navItem.loadingType == 'noMore') return
 			if (source === 'tabChange' && navItem.loaded === true) return
 			if (navItem.loadingType === 'loading') return
@@ -118,7 +121,7 @@ export default {
 				this.$set(navItem, 'loaded', true)
 			} catch (e) {
 				navItem.loadingType = 'more'
-				console.error('[collect] 加載失敗:', e)
+				console.error('[collect] load failed:', e)
 			}
 		},
 		async loadFollow(id, index) {
@@ -132,7 +135,7 @@ export default {
 					collection: this.$store.state.statistics.dynamic.collection - 1
 				})
 			} catch (e) {
-				console.error('[collect] 取消收藏失敗:', e)
+				console.error('[collect] unfollow failed:', e)
 			}
 		},
 		handleSelect(id, index) {
@@ -217,4 +220,4 @@ export default {
 			}
 		}
 	}
-</style>
+</style>

+ 14 - 14
pages/user/coupon/mycard.vue

@@ -13,7 +13,7 @@
 				<swiper-item class="tab-content" v-for="(tag, key) in navList" :key="tag.state">
 					<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
 						<!-- 空白页 -->
-						<wanl-empty text="暫無優惠券" src="ticket_default3x" v-if="tag.loaded === true && tag.cardList.length === 0" />
+						<wanl-empty :text="$t('coupon.noCoupons')" src="ticket_default3x" v-if="tag.loaded === true && tag.cardList.length === 0" />
 						<!-- 优惠券列表 -->
 						<view class="wanl-coupon">
 							<view v-for="(coupon, seat) in tag.cardList" :key="coupon.id"
@@ -30,24 +30,24 @@
 											<text class="price">{{ Number(coupon.price) }}</text>
 										</view>
 										<view class="cu-tag wanl-gray-dark radius text-sm">
-											滿{{ Number(coupon.limit) }}減{{ Number(coupon.price) }}
+											{{ $t('mall.fullReduction', [Number(coupon.limit), Number(coupon.price)]) }}
 										</view>
 									</block>
 									<block v-if="coupon.type == 'discount' || (coupon.type == 'vip' && coupon.usertype == 'discount')">
 										<view class="colour">
 											<text class="price">{{ Number(coupon.discount) }}</text>
-											<text class="discount"></text>
+											<text class="discount">{{ $t('mall.discountSuffix') }}</text>
 										</view>
 										<view class="cu-tag wanl-gray-dark radius text-sm">
-											滿{{ Number(coupon.limit) }}打{{ Number(coupon.discount) }}折
+											{{ $t('mall.fullDiscount', [Number(coupon.limit), Number(coupon.discount)]) }}
 										</view>
 									</block>
 									<block v-if="coupon.type == 'shipping'">
 										<view class="colour">
-											<text class="price">包郵</text>
+											<text class="price">{{ $t('mall.freeShipping') }}</text>
 										</view>
 										<view class="cu-tag wanl-gray-dark radius text-sm">
-											滿{{ Number(coupon.limit) }}包郵
+											{{ $t('mall.freeShippingFull', [Number(coupon.limit)]) }}
 										</view>
 									</block>
 								</view>
@@ -66,17 +66,17 @@
 									<view class="content text-min">
 										<view class="wanl-gray">
 											<view v-if="coupon.pretype == 'fixed'">
-												<text class="wlIcon-dot"></text>有效期至 {{ coupon.enddate }}
+												<text class="wlIcon-dot"></text>{{ $t('coupon.validUntil', [coupon.enddate]) }}
 											</view>
 											<view v-else-if="coupon.pretype == 'appoint' && coupon.validity != 0">
-												<text class="wlIcon-dot"></text>領取後{{ coupon.validity }}天內有效
+												<text class="wlIcon-dot"></text>{{ $t('coupon.validDays', [coupon.validity]) }}
 											</view>
 											<view v-else>
-												<text class="wlIcon-dot"></text>永久有效
+												<text class="wlIcon-dot"></text>{{ $t('coupon.permanent') }}
 											</view>
 										</view>
 										<view class="cu-btn sm round line-colour" v-if="coupon.state == 1" @tap.stop="onApply(coupon.id)">
-											去使用
+											{{ $t('coupon.useNow') }}
 										</view>
 									</view>
 								</view>
@@ -98,9 +98,9 @@ export default {
 		return {
 			tabCurrentIndex: 0,
 			navList: [
-				{ state: 1, text: '未使用', loadingType: 'more', current_page: 1, cardList: [] },
-				{ state: 2, text: '已使用', loadingType: 'more', current_page: 1, cardList: [] },
-				{ state: 3, text: '已過期', loadingType: 'more', current_page: 1, cardList: [] }
+				{ state: 1, text: this.$t('coupon.unused'), loadingType: 'more', current_page: 1, cardList: [] },
+				{ state: 2, text: this.$t('coupon.used'), loadingType: 'more', current_page: 1, cardList: [] },
+				{ state: 3, text: this.$t('coupon.expired'), loadingType: 'more', current_page: 1, cardList: [] }
 			],
 			couponBg: '/static/coupon/bg_coupon_3x.png',
 			couponUsed: '/static/coupon/img_coupon_beused_3x.png',
@@ -167,4 +167,4 @@ export default {
 page {
 	height: 100%;
 }
-</style>
+</style>

+ 11 - 10
pages/user/follow.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="wanlfind-follow-container">
 		<view class="edgeInsetTop"></view>
-		<wanl-empty src="find_default3x" text="暫無關注" v-if="dataList.length === 0 && status !== 'loading'"/>
+		<wanl-empty src="find_default3x" :text="$t('follow.empty')" v-if="dataList.length === 0 && status !== 'loading'"/>
 		<view v-if="dataList.length > 0" class="wanlfind-follow-container__list">
 			<view class="item padding-bj margin-bj bg-white radius-bock" v-for="(item, index) in dataList"
 				:key="item.id" @click="handleUser(item.user_no)">
@@ -10,13 +10,13 @@
 				<view class="subject">
 					<view class="info">
 						<view v-if="item.shop.isself == 1">
-							<view class="cu-tag sm wanl-bg-redorange radius margin-right-xs">商家</view>
+							<view class="cu-tag sm wanl-bg-redorange radius margin-right-xs">{{ $t('search.shopTag') }}</view>
 							{{item.shop.shopname}}
 						</view>
 						<view class="text-cut-2 margin-bottom-xs" v-else>
-							<view class="cu-tag sm bg-gray radius margin-right-xs" v-if="item.shop.state == 0">個人</view>
-							<view class="cu-tag sm wanl-bg-blue radius margin-right-xs" v-if="item.shop.state == 1">企業</view>
-							<view class="cu-tag sm wanl-bg-orange radius margin-right-xs" v-if="item.shop.state == 2">旗艦</view>
+							<view class="cu-tag sm bg-gray radius margin-right-xs" v-if="item.shop.state == 0">{{ $t('mall.product.personal') }}</view>
+							<view class="cu-tag sm wanl-bg-blue radius margin-right-xs" v-if="item.shop.state == 1">{{ $t('mall.product.enterprise') }}</view>
+							<view class="cu-tag sm wanl-bg-orange radius margin-right-xs" v-if="item.shop.state == 2">{{ $t('mall.product.flagship') }}</view>
 							{{item.shop.shopname}}
 						</view>
 						<view class="wanl-gray-light text-sm text-cut">
@@ -31,7 +31,7 @@
 							<text class="wlIcon-tianjia"></text>
 						</button>
 						<button v-else class="cu-btn radius-bock text-sm" @click.stop="handleFollow(index)">
-							<text class="wlIcon-31guanbi margin-right-xs text-bold"></text>取消關注
+							<text class="wlIcon-31guanbi margin-right-xs text-bold"></text>{{ $t('mall.shop.unfollow') }}
 						</button>
 					</view>
 				</view>
@@ -55,12 +55,13 @@ export default {
 			status: 'loading',
 			contentText: {
 				contentdown: '',
-				contentrefresh: '加載中...',
+				contentrefresh: '',
 				contentnomore: ''
 			}
 		}
 	},
 	onLoad() {
+		this.contentText.contentrefresh = this.$t('follow.loading')
 		this.loadData()
 	},
 	onPullDownRefresh() {
@@ -89,7 +90,7 @@ export default {
 				this.status = res.total == 0 ? 'noMore' : 'more'
 			} catch (e) {
 				uni.stopPullDownRefresh()
-				console.error('[follow] 加載失敗:', e)
+				console.error('[follow] load failed:', e)
 			}
 		},
 		async handleFollow(index) {
@@ -105,7 +106,7 @@ export default {
 				this.$store.commit('statistics/dynamic', { concern })
 				data.isFollow = result.data
 			} catch (e) {
-				console.error('[follow] 關注操作失敗:', e)
+				console.error('[follow] follow action failed:', e)
 			}
 		},
 		handleUser(user_no) {
@@ -148,4 +149,4 @@ export default {
 			}
 		}
 	}
-</style>
+</style>

+ 22 - 19
pages/user/footprint.vue

@@ -21,7 +21,7 @@
       @change="changeCurrent" @animationfinish="animationFinish">
       <swiper-item v-for="(data, keys) in navList" :key="keys" :item-id="data.type"
         :class="data.type === 'groups' ? 'hidden-swiper-item' : ''">
-        <wanl-empty src="find_default3x" text="暫無足跡" v-if="data.arrData.length === 0 && data.loaded" />
+        <wanl-empty src="find_default3x" :text="$t('footprint.empty')" v-if="data.arrData.length === 0 && data.loaded" />
         <scroll-view class="content" scroll-y @scrolltolower="loadData">
           <view v-for="(item, footprint) in data.arrData" :key="footprint">
             <view class="wanl-gray text-sm margin-sm">
@@ -51,24 +51,10 @@ export default {
       headTop: 0,
       currentId: 0,
       currentItemId: 'goods',
-      navList: [{
-        type: 'goods',
-        type_text: '我的足跡',
-        dataList: [],
-        arrData: [],
-        loadingType: 'more',
-        current_page: 1
-      }, {
-        type: 'groups',
-        type_text: '拼團足跡',
-        dataList: [],
-        arrData: [],
-        loadingType: 'more',
-        current_page: 1
-      }],
+      navList: [],
       contentText: {
         contentdown: ' ',
-        contentrefresh: '足跡加載中...',
+        contentrefresh: '',
         contentnomore: ''
       }
     }
@@ -79,11 +65,28 @@ export default {
     this.headTop = statusBarHeight
     this.headHeight = statusBarHeight + uni.upx2px(90)
     this.windowHeight = sysInfo.windowHeight - uni.upx2px(90)
+    this.navList = [{
+      type: 'goods',
+      type_text: this.$t('footprint.my'),
+      dataList: [],
+      arrData: [],
+      loadingType: 'more',
+      current_page: 1
+    }, {
+      type: 'groups',
+      type_text: this.$t('footprint.groups'),
+      dataList: [],
+      arrData: [],
+      loadingType: 'more',
+      current_page: 1
+    }]
+    this.contentText.contentrefresh = this.$t('footprint.loading')
     this.loadData()
   },
   methods: {
     async loadData(source) {
       let navItem = this.navList[this.currentId]
+      if (!navItem) return
       if (navItem.loadingType == 'noMore') return
       if (source === 'tabChange' && navItem.loaded === true) return
       if (navItem.loadingType === 'loading') return
@@ -107,7 +110,7 @@ export default {
         this.$set(navItem, 'loaded', true)
       } catch (e) {
         navItem.loadingType = 'more'
-        console.error('[footprint] 加載失敗:', e)
+        console.error('[footprint] load failed:', e)
       }
     },
     handleSelect(id, index) {
@@ -207,4 +210,4 @@ export default {
 .hidden-swiper-item {
   display: none !important;
 }
-</style>
+</style>

+ 25 - 25
pages/user/refund/lists.vue

@@ -26,7 +26,7 @@
 							<view class="text-cut-2 wanl-black">{{ item.goods.title }}</view>
 							<view class="text-sm margin-top-xs wanl-gray-light">{{ item.goods.difference }}</view>
 							<view class="text-sm margin-top-xs wanl-black">
-								退款<text class="text-price">{{ item.price }}</text>
+								{{ $t('refundList.amount') }}<text class="text-price">{{ item.price }}</text>
 							</view>
 						</view>
 					</view>
@@ -39,14 +39,14 @@
 				<view class="action-box padding-bottom-bj">
 					<button class="cu-btn round line-black"
 						v-if="item.state == 0 || item.state == 1 || item.state == 2 || item.state == 3 || item.state == 6"
-						@tap="closeRefund(index)">關閉退款</button>
-					<button class="cu-btn round margin-lr-bj line-orange" @tap="onRefund(item.id)">查看詳情</button>
+						@tap="closeRefund(index)">{{ $t('refundList.close') }}</button>
+					<button class="cu-btn round margin-lr-bj line-orange" @tap="onRefund(item.id)">{{ $t('refundList.viewDetail') }}</button>
 				</view>
 			</view>
 
 			<!-- 空状态 -->
 			<view v-if="dataList.length == 0 && loaded">
-				<wanl-empty text="暫無退款記錄" />
+				<wanl-empty :text="$t('refundList.empty')" />
 			</view>
 			<view class="edgeInsetBottom"></view>
 			<uni-load-more :status="status" />
@@ -105,13 +105,13 @@ export default {
 		/** 关闭退款 */
 		async closeRefund(index) {
 			let refund = this.dataList[index]
-			uni.showLoading({ title: '請稍候' })
+			uni.showLoading({ title: this.$t('order.pleaseWait') })
 			try {
 				await postRefundClose({ id: refund.id })
 				refund.state = 5
-				uni.showToast({ title: '退款已關閉', icon: 'none' })
+				uni.showToast({ title: this.$t('refundList.closedToast'), icon: 'none' })
 			} catch (e) {
-				uni.showToast({ title: '操作失敗', icon: 'none' })
+				uni.showToast({ title: this.$t('addressManage.operationFailed'), icon: 'none' })
 			}
 			uni.hideLoading()
 		},
@@ -119,30 +119,30 @@ export default {
 		/** 退款状态文字 */
 		getStateText(state) {
 			return [
-				'等待賣家同意',
-				'等待買家退貨',
-				'賣家拒絕退款',
-				'平台介入處理',
-				'退款完成',
-				'退款已關閉',
-				'等待賣家收貨',
-				'第三方退款中',
-				'退款失敗'
+				this.$t('refundList.state0'),
+				this.$t('refundList.state1'),
+				this.$t('refundList.state2'),
+				this.$t('refundList.state3'),
+				this.$t('refundList.state4'),
+				this.$t('refundList.state5'),
+				this.$t('refundList.state6'),
+				this.$t('refundList.state7'),
+				this.$t('refundList.state8')
 			][state]
 		},
 
 		/** 退款状态描述 */
 		getStateInfo(state) {
 			return [
-				'已成功發起退款申請',
-				'賣家已同意退款',
-				'可修改退貨申請',
-				'已申請平台介入',
-				'退款已完成',
-				'退款申請已關閉',
-				'如商戶確認收貨將退款',
-				'退款將原路返回',
-				'快捷支付退款失敗'
+				this.$t('refundList.info0'),
+				this.$t('refundList.info1'),
+				this.$t('refundList.info2'),
+				this.$t('refundList.info3'),
+				this.$t('refundList.info4'),
+				this.$t('refundList.info5'),
+				this.$t('refundList.info6'),
+				this.$t('refundList.info7'),
+				this.$t('refundList.info8')
 			][state]
 		},