From c7810f16f746ff33505a45eb9c93090a2398ff5e Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Mon, 29 Jun 2026 15:29:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E6=96=87=E6=A1=88=E5=B9=B6=E4=BF=AE=E5=A4=8D=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=9B=BD=E9=99=85=E5=8C=96=E8=B0=83=E7=94=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增多语言文件覆盖组件、页面、公共模块的翻译文案 2. 修复多处动态拼接lang key的调用,增加兜底逻辑避免空值或原始key暴露 3. 补全DIY组件、业务页面的国际化适配 4. 新增P2动态key国际化处理方案文档 --- common/js/auth.js | 8 +- common/js/goods_detail_base.js | 4 +- common/js/lang.js | 16 + common/js/map/openMap.js | 3 +- components-diy/diy-channel-video.vue | 6 +- components-diy/diy-goods-recommend.vue | 26 +- components-diy/diy-kefu.vue | 2 +- components-diy/diy-listmenu.vue | 3 +- components-diy/diy-live.vue | 22 +- components-diy/diy-map.vue | 4 +- components-diy/diy-notes.vue | 18 +- components-diy/diy-search.vue | 5 +- components-diy/diy-tab.vue | 4 +- components-diy/diy-text.vue | 4 +- components/chat-message/chat-message.vue | 4 +- components/ns-chat/ns-chat-goods.vue | 4 +- components/ns-chat/ns-chat-receiveGoods.vue | 6 +- components/ns-goods-sku/ns-goods-sku.vue | 2 +- .../ns-video-player-popup.vue | 2 +- components/payment/payment.vue | 2 +- components/pick-regions/pick-regions.vue | 4 +- i18n-audit-report.md | 222 +++++++++++++ lang/en-us/agreement/contenr.js | 9 + lang/en-us/common.js | 13 + .../en-us/components-diy/diy-channel-video.js | 5 + .../components-diy/diy-goods-recommend.js | 5 + lang/en-us/components-diy/diy-kefu.js | 5 + lang/en-us/components-diy/diy-listmenu.js | 5 + lang/en-us/components-diy/diy-live.js | 7 + lang/en-us/components-diy/diy-map.js | 5 + lang/en-us/components-diy/diy-notes.js | 5 + lang/en-us/components-diy/diy-search.js | 5 + lang/en-us/components-diy/diy-text.js | 5 + lang/en-us/components/chat-message.js | 11 + lang/en-us/components/ns-chat-goods.js | 11 + lang/en-us/components/ns-chat-receiveGoods.js | 13 + lang/en-us/components/ns-goods-sku.js | 9 + .../en-us/components/ns-video-player-popup.js | 9 + lang/en-us/components/pick-regions.js | 11 + lang/en-us/fenxiao/bill.js | 16 +- lang/en-us/file-preview/file-preview.js | 9 + lang/en-us/goods/brand.js | 7 +- lang/en-us/goods/list.js | 2 + lang/en-us/goods/not_exist.js | 5 + lang/en-us/help/detail.js | 8 +- lang/en-us/help/list.js | 8 +- lang/en-us/index/diy.js | 7 +- lang/en-us/login/login.js | 7 +- lang/en-us/member/cancelrefuse.js | 11 + lang/en-us/member/cancelsuccess.js | 9 + lang/en-us/member/index.js | 6 + lang/en-us/member/public.js | 11 + lang/en-us/notice/detail.js | 8 +- lang/en-us/notice/list.js | 14 +- lang/en-us/order/refund.js | 11 +- lang/en-us/recharge/order_list.js | 7 + lang/en-us/seal/structure.js | 23 ++ lang/zh-cn/agreement/contenr.js | 9 + lang/zh-cn/common.js | 13 + .../zh-cn/components-diy/diy-channel-video.js | 5 + .../components-diy/diy-goods-recommend.js | 5 + lang/zh-cn/components-diy/diy-kefu.js | 5 + lang/zh-cn/components-diy/diy-listmenu.js | 5 + lang/zh-cn/components-diy/diy-live.js | 7 + lang/zh-cn/components-diy/diy-map.js | 5 + lang/zh-cn/components-diy/diy-notes.js | 5 + lang/zh-cn/components-diy/diy-search.js | 5 + lang/zh-cn/components-diy/diy-text.js | 5 + lang/zh-cn/components/chat-message.js | 11 + lang/zh-cn/components/ns-chat-goods.js | 11 + lang/zh-cn/components/ns-chat-receiveGoods.js | 13 + lang/zh-cn/components/ns-goods-sku.js | 9 + .../zh-cn/components/ns-video-player-popup.js | 9 + lang/zh-cn/components/pick-regions.js | 11 + lang/zh-cn/fenxiao/bill.js | 14 +- lang/zh-cn/file-preview/file-preview.js | 9 + lang/zh-cn/goods/brand.js | 7 +- lang/zh-cn/goods/list.js | 2 + lang/zh-cn/goods/not_exist.js | 5 + lang/zh-cn/help/detail.js | 4 +- lang/zh-cn/help/list.js | 4 +- lang/zh-cn/index/diy.js | 7 +- lang/zh-cn/login/login.js | 41 +-- lang/zh-cn/member/cancelrefuse.js | 11 + lang/zh-cn/member/cancelsuccess.js | 9 + lang/zh-cn/member/index.js | 6 + lang/zh-cn/member/public.js | 11 + lang/zh-cn/notice/detail.js | 4 +- lang/zh-cn/notice/list.js | 6 +- lang/zh-cn/order/refund.js | 11 +- lang/zh-cn/recharge/order_list.js | 7 + lang/zh-cn/seal/structure.js | 23 ++ p2-solution-plan.md | 119 +++++++ pages_goods/public/js/list.js | 2 + pages_order/list.vue | 2 +- pages_order/public/js/refundMethod.js | 4 +- pages_promotion/fenxiao/bill.vue | 6 +- pages_tool/agreement/contenr.vue | 6 +- pages_tool/file-preview/file-preview.vue | 8 +- pages_tool/goods/brand.vue | 2 +- pages_tool/goods/not_exist.vue | 2 +- pages_tool/help/detail.vue | 2 +- pages_tool/help/list.vue | 2 +- pages_tool/index/diy.vue | 2 +- pages_tool/login/login.vue | 8 +- pages_tool/member/cancelrefuse.vue | 8 +- pages_tool/member/cancelsuccess.vue | 6 +- pages_tool/member/index.vue | 2 +- pages_tool/member/public/js/member-public.js | 4 +- pages_tool/notice/detail.vue | 2 +- pages_tool/notice/list.vue | 4 +- pages_tool/pay/cashier.vue | 2 +- pages_tool/recharge/order_list.vue | 4 +- pages_tool/seal/structure.vue | 6 +- scripts/verify-p2-keys.js | 306 ++++++++++++++++++ 115 files changed, 1343 insertions(+), 153 deletions(-) create mode 100644 i18n-audit-report.md create mode 100644 lang/en-us/components-diy/diy-channel-video.js create mode 100644 lang/en-us/components-diy/diy-goods-recommend.js create mode 100644 lang/en-us/components-diy/diy-kefu.js create mode 100644 lang/en-us/components-diy/diy-listmenu.js create mode 100644 lang/en-us/components-diy/diy-live.js create mode 100644 lang/en-us/components-diy/diy-map.js create mode 100644 lang/en-us/components-diy/diy-notes.js create mode 100644 lang/en-us/components-diy/diy-search.js create mode 100644 lang/en-us/components-diy/diy-text.js create mode 100644 lang/en-us/components/chat-message.js create mode 100644 lang/en-us/components/ns-chat-goods.js create mode 100644 lang/en-us/components/ns-chat-receiveGoods.js create mode 100644 lang/en-us/components/ns-goods-sku.js create mode 100644 lang/en-us/components/ns-video-player-popup.js create mode 100644 lang/en-us/components/pick-regions.js create mode 100644 lang/en-us/member/public.js create mode 100644 lang/zh-cn/components-diy/diy-channel-video.js create mode 100644 lang/zh-cn/components-diy/diy-goods-recommend.js create mode 100644 lang/zh-cn/components-diy/diy-kefu.js create mode 100644 lang/zh-cn/components-diy/diy-listmenu.js create mode 100644 lang/zh-cn/components-diy/diy-live.js create mode 100644 lang/zh-cn/components-diy/diy-map.js create mode 100644 lang/zh-cn/components-diy/diy-notes.js create mode 100644 lang/zh-cn/components-diy/diy-search.js create mode 100644 lang/zh-cn/components-diy/diy-text.js create mode 100644 lang/zh-cn/components/chat-message.js create mode 100644 lang/zh-cn/components/ns-chat-goods.js create mode 100644 lang/zh-cn/components/ns-chat-receiveGoods.js create mode 100644 lang/zh-cn/components/ns-goods-sku.js create mode 100644 lang/zh-cn/components/ns-video-player-popup.js create mode 100644 lang/zh-cn/components/pick-regions.js create mode 100644 lang/zh-cn/member/public.js create mode 100644 p2-solution-plan.md create mode 100644 scripts/verify-p2-keys.js diff --git a/common/js/auth.js b/common/js/auth.js index d125d8e..60fd437 100644 --- a/common/js/auth.js +++ b/common/js/auth.js @@ -33,8 +33,8 @@ export default { } else { fallbackFunc && fallbackFunc(res); this.$util.showToast({ - title: res.message ? res.message : '小程序配置错误' - }); + title: res.message ? res.message : this.$lang('common.auth.miniProgramConfigError') + }); } } }) @@ -74,8 +74,8 @@ export default { } else { fallbackFunc && fallbackFunc(res); this.$util.showToast({ - title: res.message ? res.message : '小程序配置错误' - }); + title: res.message ? res.message : this.$lang('common.auth.miniProgramConfigError') + }); } } }) diff --git a/common/js/goods_detail_base.js b/common/js/goods_detail_base.js index de2f153..b37dc85 100644 --- a/common/js/goods_detail_base.js +++ b/common/js/goods_detail_base.js @@ -141,7 +141,7 @@ export default { }); this.goodsSkuDetail.swiperHeight = maxHeight + 'px'; - this.goodsSkuDetail.unit = this.goodsSkuDetail.unit || "件"; + this.goodsSkuDetail.unit = this.goodsSkuDetail.unit || this.$lang('unit.piece'); // 当前商品SKU规格 if (this.goodsSkuDetail.sku_spec_format) this.goodsSkuDetail.sku_spec_format = JSON.parse(this.goodsSkuDetail.sku_spec_format); @@ -199,7 +199,7 @@ export default { if (this.$refs.goodsDetailView) { // 初始化商品详情视图数据 - this.goodsSkuDetail.unit = this.goodsSkuDetail.unit || "件"; + this.goodsSkuDetail.unit = this.goodsSkuDetail.unit || this.$lang('unit.piece'); // 解决轮播图数量不一致时,切换到第一个 if (this.swiperCurrent > this.goodsSkuDetail.sku_images.length) { diff --git a/common/js/lang.js b/common/js/lang.js index 7f7fe01..165d5e6 100644 --- a/common/js/lang.js +++ b/common/js/lang.js @@ -42,6 +42,12 @@ const SHARED_LANG_PACKS = [ 'components/register-reward', 'components/wxwork-contact', 'components/yuyue-date', + 'components/chat-message', + 'components/pick-regions', + 'components/ns-goods-sku', + 'components/ns-chat-receiveGoods', + 'components/ns-chat-goods', + 'components/ns-video-player-popup', 'components-diy/diy-article', 'components-diy/diy-bargain', 'components-diy/diy-category', @@ -58,6 +64,16 @@ const SHARED_LANG_PACKS = [ 'components-diy/diy-seckill', 'components-diy/diy-store', 'components-diy/diy-video', + 'components-diy/diy-search', + 'components-diy/diy-map', + 'components-diy/diy-kefu', + 'components-diy/diy-channel-video', + 'components-diy/diy-live', + 'components-diy/diy-listmenu', + 'components-diy/diy-text', + 'components-diy/diy-goods-recommend', + 'components-diy/diy-notes', + 'member/public', ]; function toCamelCaseName(name) { diff --git a/common/js/map/openMap.js b/common/js/map/openMap.js index 6c6a560..89ce913 100644 --- a/common/js/map/openMap.js +++ b/common/js/map/openMap.js @@ -1,5 +1,6 @@ import util from '@/common/js/util.js' import TransformCoordinate from './transformCoordinate.js' +import Lang from '@/common/js/lang.js' function openMapByDefault(latitude, longitude, name) { uni.openLocation({ @@ -8,7 +9,7 @@ function openMapByDefault(latitude, longitude, name) { name: name, fail: (e) => { uni.showModal({ - content: '打开地图失败,请稍后重试' + content: Lang.lang('common.map.openMapFailed') }) }, }) diff --git a/components-diy/diy-channel-video.vue b/components-diy/diy-channel-video.vue index 36056e6..fac5af7 100644 --- a/components-diy/diy-channel-video.vue +++ b/components-diy/diy-channel-video.vue @@ -17,7 +17,7 @@ {{ value.videoTitle }} - {{ value.viewCount }}次观看 + {{ $lang('components-diy.diyChannelVideo.viewCountSuffix', { count: value.viewCount }) }} @@ -29,7 +29,7 @@ - {{ value.viewCount }}次观看 + {{ $lang('components-diy.diyChannelVideo.viewCountSuffix', { count: value.viewCount }) }} @@ -37,7 +37,7 @@ {{ value.videoTitle }} - {{ value.viewCount }}次观看 + {{ $lang('components-diy.diyChannelVideo.viewCountSuffix', { count: value.viewCount }) }} diff --git a/components-diy/diy-goods-recommend.vue b/components-diy/diy-goods-recommend.vue index 54929c4..c7441d4 100644 --- a/components-diy/diy-goods-recommend.vue +++ b/components-diy/diy-goods-recommend.vue @@ -50,19 +50,19 @@ - ¥{{ showMarketPrice(dataItem) }} - - 售{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : '件' }} - - - - - - - - - + ¥{{ showMarketPrice(dataItem) }} + + {{ $lang('components-diy.diyGoodsRecommend.soldPrefix') }}{{ dataItem.sale_num }}{{ dataItem.unit ? dataItem.unit : $lang('unit.piece') }} + + + + + + + + +