From c2b38476eabb5da22178a4145b637eb81f51973d Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Tue, 16 Jun 2026 18:03:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor(lang):=20=E4=BC=98=E5=8C=96=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=BF=BB=E8=AF=91=E5=87=BD=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BC=A0=E5=85=A5=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改lang.js的翻译方法,支持传入默认值参数,当找不到对应翻译时使用传入的默认值;同时更新member-public.js中的调用方式,简化多语言调用代码 --- common/js/lang.js | 12 ++++++++++-- pages_tool/member/public/js/member-public.js | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/common/js/lang.js b/common/js/lang.js index 0b08be8..511113c 100644 --- a/common/js/lang.js +++ b/common/js/lang.js @@ -542,8 +542,13 @@ export default { // ------- 优化2: 字段解析结果缓存(命中直接返回) ------- const fieldCacheKey = `${locale}__${langPath}__${_overrideVersion}__${field}`; const cachedFieldResult = _fieldResultCache[fieldCacheKey]; + const hasDefault = arguments.length > 1 && typeof arguments[1] === 'string' && arguments[1] !== ''; if (cachedFieldResult !== undefined) { let value = cachedFieldResult; + // 没找到翻译且提供了默认值 → 使用默认值 + if (value === field && hasDefault) { + return arguments[1]; + } // 带参数的翻译(如 hello {0})需要在缓存后仍做参数替换 if (arguments.length > 1) { for (let i = 1; i < arguments.length; i++) { @@ -599,8 +604,11 @@ export default { // 将结果存入字段缓存(不含参数替换部分:参数每次可能不同) _fieldResultCache[fieldCacheKey] = value; - // 带参数的翻译 - if (arguments.length > 1) { + // 没找到翻译且提供了默认值 → 使用默认值 + if (value === field && hasDefault) { + value = arguments[1]; + } else if (arguments.length > 1) { + // 带参数的翻译 for (let i = 1; i < arguments.length; i++) { value = String(value).replace("{" + (i - 1) + "}", arguments[i]); } diff --git a/pages_tool/member/public/js/member-public.js b/pages_tool/member/public/js/member-public.js index 8dbdd97..3bd4ae5 100644 --- a/pages_tool/member/public/js/member-public.js +++ b/pages_tool/member/public/js/member-public.js @@ -12,8 +12,8 @@ export default { // 退出登录 logout() { uni.showModal({ - title: this.$lang ? this.$lang('logoutTitle') : '提示', - content: this.$lang ? this.$lang('logoutContent') : '确定要退出登录吗', + title: this.$lang('logoutTitle', '提示'), + content: this.$lang('logoutContent', '确定要退出登录吗'), success: (res) => { if (res.confirm) { this.clearLoginState();