From 2c2e8b29dd62697dea28d2fe5db105a9f947d18a Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Sat, 11 May 2024 17:58:55 +0900 Subject: [PATCH] fix: allow empty default message --- packages/core-base/src/translate.ts | 7 +++++-- packages/core-base/test/translate.test.ts | 1 + packages/vue-i18n-core/test/composer.test.ts | 10 ++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/core-base/src/translate.ts b/packages/core-base/src/translate.ts index e15860364..da8148706 100644 --- a/packages/core-base/src/translate.ts +++ b/packages/core-base/src/translate.ts @@ -649,8 +649,11 @@ export function translate< : (!messageCompiler ? () => key : key) : fallbackFormat // default by `fallbackFormat` option ? (!messageCompiler ? () => key : key) - : '' - const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '' + : null + const enableDefaultMsg = + fallbackFormat || + (defaultMsgOrKey != null && + (isString(defaultMsgOrKey) || isFunction(defaultMsgOrKey))) const locale = getLocale(context, options) // escape params diff --git a/packages/core-base/test/translate.test.ts b/packages/core-base/test/translate.test.ts index 459401926..222032d95 100644 --- a/packages/core-base/test/translate.test.ts +++ b/packages/core-base/test/translate.test.ts @@ -120,6 +120,7 @@ describe('default option', () => { expect(translate(ctx, 'hello', 'hello, default message!')).toEqual( 'hello, default message!' ) + expect(translate(ctx, 'hello', '')).toEqual('') }) test('boolean true', () => { diff --git a/packages/vue-i18n-core/test/composer.test.ts b/packages/vue-i18n-core/test/composer.test.ts index ae3902b7b..7b31bb91d 100644 --- a/packages/vue-i18n-core/test/composer.test.ts +++ b/packages/vue-i18n-core/test/composer.test.ts @@ -734,6 +734,16 @@ describe('t', () => { await nextTick() expect(t('hello')).toEqual(JA_HELLO) }) + + test('default msg', () => { + const { t } = createComposer({ + locale: 'en', + messages: { + en: { hello: 'Hello!' } + } + }) + expect(t('foo', '')).toEqual('') + }) }) describe('rt', () => {