From 87962762578ce8e1a1ce51dca41ec3f441188575 Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 20 Aug 2021 15:58:31 +0800 Subject: [PATCH] fix: cli-i18n fallbacks --- packages/uni-cli-i18n/__tests__/env.spec.js | 10 +++++----- packages/uni-cli-i18n/__tests__/locales.spec.js | 13 +++++++++++++ packages/uni-cli-i18n/lib/index.js | 17 +++++++++++++---- packages/uni-cli-i18n/lib/locale.js | 10 ++++++++++ 4 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 packages/uni-cli-i18n/__tests__/locales.spec.js create mode 100644 packages/uni-cli-i18n/lib/locale.js diff --git a/packages/uni-cli-i18n/__tests__/env.spec.js b/packages/uni-cli-i18n/__tests__/env.spec.js index 876a21647..167ddb97f 100644 --- a/packages/uni-cli-i18n/__tests__/env.spec.js +++ b/packages/uni-cli-i18n/__tests__/env.spec.js @@ -1,12 +1,12 @@ describe('env', () => { it('CLI', () => { - process.env.LANG = 'fr' - const i18n = require('../lib/index') - expect(i18n.getLocale()).toBe('fr') + process.env.LANG = 'es' + const { getLocale } = require('../lib/locale') + expect(getLocale()).toBe('es') }) it('HBuilderX', () => { process.env.UNI_HBUILDERX_LANGID = 'fr' - const i18n = require('../lib/index') - expect(i18n.getLocale()).toBe('fr') + const { getLocale } = require('../lib/locale') + expect(getLocale()).toBe('fr') }) }) diff --git a/packages/uni-cli-i18n/__tests__/locales.spec.js b/packages/uni-cli-i18n/__tests__/locales.spec.js new file mode 100644 index 000000000..d90410ed0 --- /dev/null +++ b/packages/uni-cli-i18n/__tests__/locales.spec.js @@ -0,0 +1,13 @@ + + +describe('locales', () => { + it('default', () => { + const i18n = require('../lib/index') + expect(i18n.setLocale('fr')).toBe('en') + }) + it('fallbacks', () => { + const i18n = require('../lib/index') + expect(i18n.setLocale('zh')).toBe('zh_CN') + expect(i18n.setLocale('zh_SG')).toBe('zh_CN') + }) +}) \ No newline at end of file diff --git a/packages/uni-cli-i18n/lib/index.js b/packages/uni-cli-i18n/lib/index.js index ddb702b24..c78a0d996 100644 --- a/packages/uni-cli-i18n/lib/index.js +++ b/packages/uni-cli-i18n/lib/index.js @@ -1,8 +1,9 @@ const { I18n } = require('i18n') -const { osLocale } = require('os-locale-s/cjs') -const { format } = require('./lang') +const { getLocale } = require('./locale') -const defaultLocale = format(process.env.UNI_HBUILDERX_LANGID || osLocale.sync({ spawn: false, cache: false }) || 'en') +const defaultLocale = 'en' + +const locale = getLocale() const i18n = new I18n() @@ -24,7 +25,15 @@ locales.forEach(item => { i18n.configure({ staticCatalog, - defaultLocale + defaultLocale, + retryInDefaultLocale: true, + fallbacks: { + 'en_*': 'en', + 'zh': 'zh_CN', + 'zh_*': 'zh_CN', + } }) +i18n.setLocale(locale) + module.exports = i18n diff --git a/packages/uni-cli-i18n/lib/locale.js b/packages/uni-cli-i18n/lib/locale.js new file mode 100644 index 000000000..fa9c4051b --- /dev/null +++ b/packages/uni-cli-i18n/lib/locale.js @@ -0,0 +1,10 @@ +const { format } = require('./lang') +const { osLocale } = require('os-locale-s/cjs') + +function getLocale () { + return format(process.env.UNI_HBUILDERX_LANGID || osLocale.sync({ spawn: false, cache: false }) || defaultLocale) +} + +module.exports = { + getLocale +} -- GitLab