refactor(lang): 优化多语言翻译函数,支持传入默认值
修改lang.js的翻译方法,支持传入默认值参数,当找不到对应翻译时使用传入的默认值;同时更新member-public.js中的调用方式,简化多语言调用代码
This commit is contained in:
@@ -542,8 +542,13 @@ export default {
|
|||||||
// ------- 优化2: 字段解析结果缓存(命中直接返回) -------
|
// ------- 优化2: 字段解析结果缓存(命中直接返回) -------
|
||||||
const fieldCacheKey = `${locale}__${langPath}__${_overrideVersion}__${field}`;
|
const fieldCacheKey = `${locale}__${langPath}__${_overrideVersion}__${field}`;
|
||||||
const cachedFieldResult = _fieldResultCache[fieldCacheKey];
|
const cachedFieldResult = _fieldResultCache[fieldCacheKey];
|
||||||
|
const hasDefault = arguments.length > 1 && typeof arguments[1] === 'string' && arguments[1] !== '';
|
||||||
if (cachedFieldResult !== undefined) {
|
if (cachedFieldResult !== undefined) {
|
||||||
let value = cachedFieldResult;
|
let value = cachedFieldResult;
|
||||||
|
// 没找到翻译且提供了默认值 → 使用默认值
|
||||||
|
if (value === field && hasDefault) {
|
||||||
|
return arguments[1];
|
||||||
|
}
|
||||||
// 带参数的翻译(如 hello {0})需要在缓存后仍做参数替换
|
// 带参数的翻译(如 hello {0})需要在缓存后仍做参数替换
|
||||||
if (arguments.length > 1) {
|
if (arguments.length > 1) {
|
||||||
for (let i = 1; i < arguments.length; i++) {
|
for (let i = 1; i < arguments.length; i++) {
|
||||||
@@ -599,8 +604,11 @@ export default {
|
|||||||
// 将结果存入字段缓存(不含参数替换部分:参数每次可能不同)
|
// 将结果存入字段缓存(不含参数替换部分:参数每次可能不同)
|
||||||
_fieldResultCache[fieldCacheKey] = value;
|
_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++) {
|
for (let i = 1; i < arguments.length; i++) {
|
||||||
value = String(value).replace("{" + (i - 1) + "}", arguments[i]);
|
value = String(value).replace("{" + (i - 1) + "}", arguments[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ export default {
|
|||||||
// 退出登录
|
// 退出登录
|
||||||
logout() {
|
logout() {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: this.$lang ? this.$lang('logoutTitle') : '提示',
|
title: this.$lang('logoutTitle', '提示'),
|
||||||
content: this.$lang ? this.$lang('logoutContent') : '确定要退出登录吗',
|
content: this.$lang('logoutContent', '确定要退出登录吗'),
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
this.clearLoginState();
|
this.clearLoginState();
|
||||||
|
|||||||
Reference in New Issue
Block a user