@dragonaxe/i18n
Version:
A tool for i18n content.
54 lines (53 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
const factory = require("./factory-B8AWz8Jy.cjs");
const i18nContext = React.createContext({
localeId: "",
locales: [],
setLocaleId: (localeId) => {
},
getCdnService: () => {
throw new Error("Cdn Service not defined.");
}
});
const useI18nContext = () => {
return React.useContext(i18nContext);
};
const I18nContextProvider = (props) => {
const fact = new factory.PrismicClientFactory();
const client = fact.getClient(props.repoName, props.publicToken);
const cdnServiceService = new factory.PrismicMultilangualCdnService(client);
const getStoredLocale = () => {
if (globalThis.localStorage) {
const storedLocale = localStorage.getItem(props.localstorageLocalKey);
if (storedLocale) {
return storedLocale;
}
}
return props.fallbackLocale;
};
const [currentLocale, setCurrentLocale] = React.useState(getStoredLocale());
const [locales, setLocales] = React.useState([]);
const [cdnService] = React.useState(cdnServiceService);
const handleChangeLocale = (localeId) => {
if (globalThis.localStorage) {
localStorage.setItem(props.localstorageLocalKey, localeId);
}
setCurrentLocale(localeId);
};
const contextProps = {
localeId: currentLocale,
locales,
setLocaleId: handleChangeLocale,
getCdnService: () => cdnService
};
React.useEffect(() => {
cdnService.getLocales().then((localesResult) => {
setLocales(localesResult);
});
}, []);
return /* @__PURE__ */ React.createElement(i18nContext.Provider, { value: contextProps }, props.children);
};
exports.I18nContextProvider = I18nContextProvider;
exports.useI18nContext = useI18nContext;