UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

49 lines (48 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addComponentKeysets = addComponentKeysets; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const useLang_1 = require("../components/theme/useLang.js"); const i18n_1 = require("./i18n.js"); /** * Add component's keysets data * @param data - keysets data by languages * @param componentName - name of the component * @returns function to get keys' translations for current language * @example * ``` * import {addComponentKeysets} from '@gravity-ui/uikit/i18n'; * import en from './en.json'; * import ru from './ru.json'; * * const t = addComponentKeysets({en, ru}, 'Alert'); * * console.log(t('label_close')); // 'Close' * ``` */ function addComponentKeysets(data, componentName) { Object.entries(data).forEach(([lang, keys]) => i18n_1.i18n.registerKeyset(lang, componentName, keys)); const translateFunction = i18n_1.i18n.keyset(componentName); const useTranslation = () => { const langConfig = (0, useLang_1.useLang)(); const { lang = 'en', fallbackLang = 'en' } = i18n_1.i18n; const t = React.useCallback((...params) => { i18n_1.i18n.setLang(langConfig.lang); i18n_1.i18n.setFallbackLang(langConfig.fallbackLang); const result = translateFunction(...params); i18n_1.i18n.setLang(lang); i18n_1.i18n.setFallbackLang(fallbackLang); return result; }, [fallbackLang, lang, langConfig.fallbackLang, langConfig.lang]); return { t }; }; Object.assign(translateFunction, { useTranslation, Translation: ({ children }) => { return children(useTranslation()); }, }); return translateFunction; } //# sourceMappingURL=addComponentKeysets.js.map