From fad9d8e58f13fe5039a781a24e20752f8ab15248 Mon Sep 17 00:00:00 2001 From: pndewit <2362039+pndewit@users.noreply.github.com> Date: Wed, 24 Nov 2021 09:49:46 +0100 Subject: [PATCH] feat(localize): add option to show the key as a fallback when a locale is missing a translation --- .changeset/fast-trees-prove.md | 5 +++++ packages/localize/src/LocalizeManager.js | 10 ++++++++-- packages/localize/test/LocalizeManager.test.js | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 .changeset/fast-trees-prove.md diff --git a/.changeset/fast-trees-prove.md b/.changeset/fast-trees-prove.md new file mode 100644 index 000000000..b66edfe35 --- /dev/null +++ b/.changeset/fast-trees-prove.md @@ -0,0 +1,5 @@ +--- +'@lion/localize': minor +--- + +add option to show the key as a fallback when a locale is missing a translation diff --git a/packages/localize/src/LocalizeManager.js b/packages/localize/src/LocalizeManager.js index 94dd1c572..0ac0c8d77 100644 --- a/packages/localize/src/LocalizeManager.js +++ b/packages/localize/src/LocalizeManager.js @@ -14,13 +14,19 @@ import isLocalizeESModule from './isLocalizeESModule.js'; */ export class LocalizeManager { // eslint-disable-line no-unused-vars - constructor({ autoLoadOnLocaleChange = false, fallbackLocale = '' } = {}) { + constructor({ + autoLoadOnLocaleChange = false, + fallbackLocale = '', + showKeyAsFallback = false, + } = {}) { /** @private */ this.__delegationTarget = document.createDocumentFragment(); /** @protected */ this._autoLoadOnLocaleChange = !!autoLoadOnLocaleChange; /** @protected */ this._fallbackLocale = fallbackLocale; + /** @protected */ + this._showKeyAsFallback = showKeyAsFallback; /** * @type {Object.>} @@ -574,7 +580,7 @@ export class LocalizeManager { messages, ); - return String(result || ''); + return String(result || (this._showKeyAsFallback ? key : '')); } /** diff --git a/packages/localize/test/LocalizeManager.test.js b/packages/localize/test/LocalizeManager.test.js index 46d4dc01f..7cd880741 100644 --- a/packages/localize/test/LocalizeManager.test.js +++ b/packages/localize/test/LocalizeManager.test.js @@ -677,6 +677,20 @@ describe('LocalizeManager', () => { ); }); }); + + describe('show key as fallback', () => { + it('shows the key as a fallback when a translation cannot be found', () => { + manager = new LocalizeManager({ showKeyAsFallback: true }); + manager.addData('en-GB', 'my-ns', { greeting: 'Hello!' }); + expect(manager.msg('my-ns:unknownKey')).to.equal('my-ns:unknownKey'); + }); + + it('shows nothing when a translation cannot be found by default', () => { + manager = new LocalizeManager(); + manager.addData('en-GB', 'my-ns', { greeting: 'Hello!' }); + expect(manager.msg('my-ns:unknownKey')).to.equal(''); + }); + }); }); describe('When supporting external translation tools like Google Translate', () => {