import { useCMS } from 'tinacms'; import { I18nClient } from '../i18nClient'; import { RealDoc, TranslateFunction, useTranslation } from './useTranslation'; interface Docs { currentDoc: RealDoc; defaultDoc: RealDoc; } export function useTranslations< S extends Record = Record >( translations: { [key in keyof S]: Docs } ): [{ [key in keyof S]: TranslateFunction }, I18nClient] { type Translations = { [key in keyof S]: TranslateFunction; }; const cms = useCMS(); const returnValue: Translations = {} as Translations; Object.keys(translations).forEach((key) => { const t = useTranslation( translations[key].currentDoc, translations[key].defaultDoc ); returnValue[key as keyof S] = t; }); return [returnValue, cms.api.localization]; }