@cookbook/solid-intl
Version:
A universal internationalization (i18n) for Solid inspired by React Intl & FormatJS
20 lines (19 loc) • 923 B
JSX
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;