UNPKG

storybook-react-i18next

Version:
47 lines (43 loc) 1.35 kB
import i18n from 'storybook-i18n/preview'; import React, { Fragment } from 'react'; import { useGlobals, useState, useEffect } from 'storybook/preview-api'; import { I18nextProvider } from 'react-i18next'; // src/preview.ts var withI18Next = (story, context) => { const { parameters: { i18n: i18n2 } } = context; if (i18n2 === void 0) { console.error(`The 'i18n' parameter is missing in 'parameters' configuration of preview.js. Define the 'i18n' parameter as follows: parameters: { i18n, }, `); } const language = i18n2?.language; const [{ locale }] = useGlobals(); const [key, setKey] = useState(0); useEffect(() => { if (i18n2) { i18n2.on("languageChanged", () => { setKey(Date.now()); }); return () => i18n2.off("languageChanged"); } }, [i18n2]); useEffect(() => { if (i18n2 && locale && language && locale !== language) { i18n2.changeLanguage(locale); } }, [language, locale, i18n2]); return /* @__PURE__ */ React.createElement(Fragment, { key }, /* @__PURE__ */ React.createElement(I18nextProvider, { i18n: i18n2 }, story(context))); }; // src/preview.ts var i18nDecorators = i18n.decorators || []; var preview = { ...i18n, // @ts-ignore decorators: [...i18nDecorators, withI18Next] }; var preview_default = preview; export { preview_default as default };