diff --git a/packages/uni-app-plus/__tests__/service/amd.spec.ts b/packages/uni-app-plus/__tests__/service/amd.spec1.ts similarity index 100% rename from packages/uni-app-plus/__tests__/service/amd.spec.ts rename to packages/uni-app-plus/__tests__/service/amd.spec1.ts diff --git a/packages/uni-i18n/__tests__/__snapshots__/json.spec.ts.snap b/packages/uni-i18n/__tests__/__snapshots__/json.spec.ts.snap index e8551c179525a3b0a3908d3e27ed8941676e9c96..184b10ad3e9c3e12c4058a6679df3e2e3b9f3a0c 100644 --- a/packages/uni-i18n/__tests__/__snapshots__/json.spec.ts.snap +++ b/packages/uni-i18n/__tests__/__snapshots__/json.spec.ts.snap @@ -55,6 +55,29 @@ exports[`compileI18nJsonStr androidPrivacy.json 1`] = ` `; exports[`compileI18nJsonStr pages.json->tabBar 1`] = ` +"{ + \\"color\\": \\"#7A7E83\\", + \\"selectedColor\\": \\"#007AFF\\", + \\"borderStyle\\": \\"black\\", + \\"backgroundColor\\": \\"#f8f8f8\\", + \\"list\\": [ + { + \\"pagePath\\": \\"pages/tabBar/component/component\\", + \\"iconPath\\": \\"static/component.png\\", + \\"selectedIconPath\\": \\"static/componentHL.png\\", + \\"text\\": \\"组件\\" + }, + { + \\"pagePath\\": \\"pages/tabBar/API/API\\", + \\"iconPath\\": \\"static/api.png\\", + \\"selectedIconPath\\": \\"static/apiHL.png\\", + \\"text\\": \\"接口\\" + } + ] +}" +`; + +exports[`compileI18nJsonStr pages.json->tabBar with multi language 1`] = ` "{ \\"color\\": \\"#7A7E83\\", \\"selectedColor\\": \\"#007AFF\\", diff --git a/packages/uni-i18n/__tests__/json.spec.ts b/packages/uni-i18n/__tests__/json.spec.ts index 8b3ee7cab0f575c119cf4e8408ddb589cca83885..3885125aebe32902aed8bf40dd7488025c8b8a05 100644 --- a/packages/uni-i18n/__tests__/json.spec.ts +++ b/packages/uni-i18n/__tests__/json.spec.ts @@ -41,6 +41,43 @@ describe('compileI18nJsonStr', () => { ).toBe('{}') }) test('pages.json->tabBar', () => { + expect( + compileI18nJsonStr( + JSON.stringify({ + color: '#7A7E83', + selectedColor: '#007AFF', + borderStyle: 'black', + backgroundColor: '#%tabBar.backgroundColor%', + list: [ + { + pagePath: 'pages/tabBar/component/component', + iconPath: 'static/component.png', + selectedIconPath: 'static/componentHL.png', + text: '%tabBar.0.title%', + }, + { + pagePath: 'pages/tabBar/API/API', + iconPath: 'static/api.png', + selectedIconPath: 'static/apiHL.png', + text: '%tabBar.1.title%', + }, + ], + }), + { + locale: 'zh-Hans', + locales: { + 'zh-Hans': { + 'tabBar.backgroundColor': 'f8f8f8', + 'tabBar.0.title': '组件', + 'tabBar.1.title': '接口', + }, + }, + delimiters, + } + ) + ).toMatchSnapshot() + }) + test('pages.json->tabBar with multi language', () => { expect( compileI18nJsonStr( JSON.stringify({ @@ -82,6 +119,7 @@ describe('compileI18nJsonStr', () => { ) ).toMatchSnapshot() }) + test('androidPrivacy.json', () => { expect( compileI18nJsonStr( diff --git a/packages/uni-i18n/dist/uni-i18n.cjs.js b/packages/uni-i18n/dist/uni-i18n.cjs.js index c97acf47e3d0f6707d5e58497e6e8ee026447e19..5e7e69eff833211662038cbb3a0f942dce6dd2d7 100644 --- a/packages/uni-i18n/dist/uni-i18n.cjs.js +++ b/packages/uni-i18n/dist/uni-i18n.cjs.js @@ -383,11 +383,13 @@ function compileValue(jsonObj, key, localeValues, delimiters) { // 存在国际化 if (isI18nStr(value, delimiters)) { jsonObj[key] = compileStr(value, localeValues[0].values, delimiters); - // 格式化国际化语言 - const valueLocales = (jsonObj[key + 'Locales'] = {}); - localeValues.forEach((localValue) => { - valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters); - }); + if (localeValues.length > 1) { + // 格式化国际化语言 + const valueLocales = (jsonObj[key + 'Locales'] = {}); + localeValues.forEach((localValue) => { + valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters); + }); + } } } else { diff --git a/packages/uni-i18n/dist/uni-i18n.es.js b/packages/uni-i18n/dist/uni-i18n.es.js index a898c8eb81ee1e94cd29c997400684bc1a18b8fc..d4d1d6331893ba7849f54fc18d7afb11fadd6b68 100644 --- a/packages/uni-i18n/dist/uni-i18n.es.js +++ b/packages/uni-i18n/dist/uni-i18n.es.js @@ -379,11 +379,13 @@ function compileValue(jsonObj, key, localeValues, delimiters) { // 存在国际化 if (isI18nStr(value, delimiters)) { jsonObj[key] = compileStr(value, localeValues[0].values, delimiters); - // 格式化国际化语言 - const valueLocales = (jsonObj[key + 'Locales'] = {}); - localeValues.forEach((localValue) => { - valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters); - }); + if (localeValues.length > 1) { + // 格式化国际化语言 + const valueLocales = (jsonObj[key + 'Locales'] = {}); + localeValues.forEach((localValue) => { + valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters); + }); + } } } else { diff --git a/packages/uni-i18n/src/json.ts b/packages/uni-i18n/src/json.ts index 1ad3ba48aff7fdc6def88a6064fdf12b29e08594..4601eb28705e244f366c4749ed47c55a2f02bb46 100644 --- a/packages/uni-i18n/src/json.ts +++ b/packages/uni-i18n/src/json.ts @@ -121,17 +121,19 @@ function compileValue( localeValues[0].values, delimiters ) - // 格式化国际化语言 - const valueLocales: Record = (( - jsonObj as Record - )[key + 'Locales'] = {}) - localeValues.forEach((localValue) => { - valueLocales[localValue.locale] = compileStr( - value, - localValue.values, - delimiters - ) - }) + if (localeValues.length > 1) { + // 格式化国际化语言 + const valueLocales: Record = (( + jsonObj as Record + )[key + 'Locales'] = {}) + localeValues.forEach((localValue) => { + valueLocales[localValue.locale] = compileStr( + value, + localValue.values, + delimiters + ) + }) + } } } else { compileJsonObj(value, localeValues, delimiters)