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') }}
+
+
+
+
+
+
+
+
+