diff --git a/.storybook/decorators/withLang.tsx b/.storybook/decorators/withLang.tsx index d97d115..5cf16b8 100644 --- a/.storybook/decorators/withLang.tsx +++ b/.storybook/decorators/withLang.tsx @@ -1,13 +1,17 @@ import React from 'react'; import type {Decorator} from '@storybook/react'; -import {Lang, configure} from '../../src'; +import {Lang, configure} from '@gravity-ui/uikit'; export const withLang: Decorator = (Story, context) => { const lang = context.globals.lang; + const [key, forceRender] = React.useState(0); - configure({ - lang: lang as Lang, - }); + React.useEffect(() => { + configure({ + lang: lang as Lang, + }); - return ; + forceRender((c) => c + 1); + }, [lang]); + return ; }; diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 95a5f0b..dadf55f 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -5,13 +5,9 @@ import React from 'react'; import type {Decorator, Preview} from '@storybook/react'; import {ThemeProvider, MobileProvider, Lang, configure as uiKitConfigure} from '@gravity-ui/uikit'; import {configure as componentsConfigure} from '@gravity-ui/components'; -import {configure} from '../src'; import {withMobile} from './decorators/withMobile'; import {withLang} from './decorators/withLang'; -configure({ - lang: Lang.En, -}); uiKitConfigure({ lang: Lang.En, }); diff --git a/src/components/AllPagesPanel/i18n/index.ts b/src/components/AllPagesPanel/i18n/index.ts index 060b5d2..bc11d93 100644 --- a/src/components/AllPagesPanel/i18n/index.ts +++ b/src/components/AllPagesPanel/i18n/index.ts @@ -1,7 +1,8 @@ -import {registerKeyset} from '../../utils/registerKeyset'; +import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; +import {NAMESPACE} from '../../utils/cn'; import en from './en.json'; import ru from './ru.json'; const COMPONENT = 'AllPagesPanel'; -export default registerKeyset({en, ru}, COMPONENT); +export default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`); diff --git a/src/components/AsideHeader/i18n/index.ts b/src/components/AsideHeader/i18n/index.ts index 92d1330..0f10afc 100644 --- a/src/components/AsideHeader/i18n/index.ts +++ b/src/components/AsideHeader/i18n/index.ts @@ -1,7 +1,8 @@ -import {registerKeyset} from '../../utils/registerKeyset'; +import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; +import {NAMESPACE} from '../../utils/cn'; import en from './en.json'; import ru from './ru.json'; const COMPONENT = 'AsideHeader'; -export default registerKeyset({en, ru}, COMPONENT); +export default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`); diff --git a/src/components/MobileHeader/i18n/index.ts b/src/components/MobileHeader/i18n/index.ts index fee0a0a..07bedef 100644 --- a/src/components/MobileHeader/i18n/index.ts +++ b/src/components/MobileHeader/i18n/index.ts @@ -1,7 +1,8 @@ -import {registerKeyset} from '../../utils/registerKeyset'; +import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; +import {NAMESPACE} from '../../utils/cn'; import en from './en.json'; import ru from './ru.json'; const COMPONENT = 'MobileHeader'; -export default registerKeyset({en, ru}, COMPONENT); +export default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`); diff --git a/src/components/Settings/i18n/index.ts b/src/components/Settings/i18n/index.ts index af9cc85..8872aee 100644 --- a/src/components/Settings/i18n/index.ts +++ b/src/components/Settings/i18n/index.ts @@ -1,7 +1,8 @@ -import {registerKeyset} from '../../utils/registerKeyset'; +import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; +import {NAMESPACE} from '../../utils/cn'; import en from './en.json'; import ru from './ru.json'; const COMPONENT = 'Settings'; -export default registerKeyset({en, ru}, COMPONENT); +export default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`); diff --git a/src/components/Title/i18n/index.ts b/src/components/Title/i18n/index.ts index a09e572..0c5d929 100644 --- a/src/components/Title/i18n/index.ts +++ b/src/components/Title/i18n/index.ts @@ -1,7 +1,8 @@ -import {registerKeyset} from '../../utils/registerKeyset'; +import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; +import {NAMESPACE} from '../../utils/cn'; import en from './en.json'; import ru from './ru.json'; const COMPONENT = 'Title'; -export default registerKeyset({en, ru}, COMPONENT); +export default addComponentKeysets({en, ru}, `${NAMESPACE}${COMPONENT}`); diff --git a/src/components/index.ts b/src/components/index.ts index 9da241b..db57f1b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -12,5 +12,3 @@ export * from './HotkeysPanel'; export * from './Settings'; export * from './MobileHeader'; export * from './types'; - -export {Lang, configure} from './utils/configure'; diff --git a/src/components/utils/configure.ts b/src/components/utils/configure.ts deleted file mode 100644 index 89f4f2c..0000000 --- a/src/components/utils/configure.ts +++ /dev/null @@ -1,33 +0,0 @@ -export enum Lang { - Ru = 'ru', - En = 'en', -} - -interface Config { - lang: `${Lang}`; -} - -type Subscriber = (config: Config) => void; - -let subs: Subscriber[] = []; - -const config: Config = { - lang: Lang.En, -}; - -export const configure = (newConfig: Partial) => { - Object.assign(config, newConfig); - subs.forEach((sub) => { - sub(config); - }); -}; - -export const subscribeConfigure = (sub: Subscriber) => { - subs.push(sub); - - return () => { - subs = subs.filter((item) => item !== sub); - }; -}; - -export const getConfig = () => config; diff --git a/src/components/utils/registerKeyset.ts b/src/components/utils/registerKeyset.ts deleted file mode 100644 index b5d97a6..0000000 --- a/src/components/utils/registerKeyset.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {i18n} from '../../i18n'; - -import {Lang} from './configure'; - -type KeysData = Parameters[2]; - -export function registerKeyset(data: Record, keysetName: string) { - Object.entries(data).forEach(([lang, keys]) => i18n.registerKeyset(lang, keysetName, keys)); - - return i18n.keyset(keysetName); -} diff --git a/src/i18n.ts b/src/i18n.ts deleted file mode 100644 index 90f2b77..0000000 --- a/src/i18n.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {I18N} from '@gravity-ui/i18n'; - -import {getConfig, subscribeConfigure} from './components/utils/configure'; - -export const i18n = new I18N(); - -i18n.setLang(getConfig().lang); - -subscribeConfigure((config) => { - i18n.setLang(config.lang); -});