UNPKG

@cookbook/solid-intl

Version:

A universal internationalization (i18n) for Solid inspired by React Intl & FormatJS

20 lines (19 loc) 923 B
import { createComputed, createContext } from "solid-js"; import { createStore, createMutable } from "solid-js/store"; import { createIntl, createIntlCache } from "@formatjs/intl"; import processConfig from "./process-config"; import is from "./utils/is"; const IntlContext = createContext(); const IntlProvider = (props) => { if (is.nullish(props.locale)) { throw new ReferenceError('[solid-intl]: <IntlProvider /> expects a "locale" which was not configured. See https://formatjs.io/docs/react-intl/api#intlshape for more details'); } const cache = createMutable(createIntlCache()); const [intl, setIntl] = createStore(createIntl(processConfig(props), cache)); createComputed(() => { setIntl(createIntl(processConfig(props), cache)); }); return <IntlContext.Provider value={intl}>{props.children}</IntlContext.Provider>; }; export { IntlContext }; export default IntlProvider;