From fe9a63cdedd6f35bdc46cc4154faaf24d68f2242 Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 10 Aug 2021 15:48:52 +0300 Subject: [PATCH] feat(core-localization): CB-937 localization fallback --- .../packages/core-localization/src/LocalizationService.ts | 7 ++++++- webapp/packages/core-localization/src/Translate.tsx | 5 +++-- webapp/packages/core-localization/src/useTranslate.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/webapp/packages/core-localization/src/LocalizationService.ts b/webapp/packages/core-localization/src/LocalizationService.ts index 1f8287b8a9..a0fed51b12 100644 --- a/webapp/packages/core-localization/src/LocalizationService.ts +++ b/webapp/packages/core-localization/src/LocalizationService.ts @@ -57,7 +57,7 @@ export class LocalizationService extends Bootstrap { this.localeProviders.push(provider); } - readonly translate = (token: T): T => { + readonly translate = (token: T, fallback?: T): T => { if (token === undefined) { return undefined as T; } @@ -75,6 +75,11 @@ export class LocalizationService extends Bootstrap { if (typeof translation === 'string') { return translation as T; } + + if (fallback !== undefined) { + return this.translate(fallback); + } + return token; }; diff --git a/webapp/packages/core-localization/src/Translate.tsx b/webapp/packages/core-localization/src/Translate.tsx index b74cd7b075..dc85bb7174 100644 --- a/webapp/packages/core-localization/src/Translate.tsx +++ b/webapp/packages/core-localization/src/Translate.tsx @@ -13,10 +13,11 @@ import { useTranslate } from './useTranslate'; interface Props { token: TLocalizationToken; + fallback?: TLocalizationToken; } -export const Translate: React.FC = observer(function Translate({ token }) { +export const Translate: React.FC = observer(function Translate({ token, fallback }) { const translate = useTranslate(); - return <>{translate(token)}; + return <>{translate(token, fallback)}; }); diff --git a/webapp/packages/core-localization/src/useTranslate.ts b/webapp/packages/core-localization/src/useTranslate.ts index 483b151a23..7303bc9cf7 100644 --- a/webapp/packages/core-localization/src/useTranslate.ts +++ b/webapp/packages/core-localization/src/useTranslate.ts @@ -11,7 +11,7 @@ import { useService } from '@cloudbeaver/core-di'; import { LocalizationService } from './LocalizationService'; import type { TLocalizationToken } from './TLocalizationToken'; -export function useTranslate(): ((token: T) => T) { +export function useTranslate(): ((token: T, fallback?: T) => T) { const localizationService = useService(LocalizationService); return localizationService.translate;