UNPKG

@dragonaxe/i18n

Version:
54 lines (53 loc) 1.71 kB
import React, { createContext, useContext, useState, useEffect } from "react"; import { a as PrismicClientFactory, P as PrismicMultilangualCdnService } from "./factory-DcbjsuBB.js"; const i18nContext = createContext({ localeId: "", locales: [], setLocaleId: (localeId) => { }, getCdnService: () => { throw new Error("Cdn Service not defined."); } }); const useI18nContext = () => { return useContext(i18nContext); }; const I18nContextProvider = (props) => { const fact = new PrismicClientFactory(); const client = fact.getClient(props.repoName, props.publicToken); const cdnServiceService = new PrismicMultilangualCdnService(client); const getStoredLocale = () => { if (globalThis.localStorage) { const storedLocale = localStorage.getItem(props.localstorageLocalKey); if (storedLocale) { return storedLocale; } } return props.fallbackLocale; }; const [currentLocale, setCurrentLocale] = useState(getStoredLocale()); const [locales, setLocales] = useState([]); const [cdnService] = useState(cdnServiceService); const handleChangeLocale = (localeId) => { if (globalThis.localStorage) { localStorage.setItem(props.localstorageLocalKey, localeId); } setCurrentLocale(localeId); }; const contextProps = { localeId: currentLocale, locales, setLocaleId: handleChangeLocale, getCdnService: () => cdnService }; useEffect(() => { cdnService.getLocales().then((localesResult) => { setLocales(localesResult); }); }, []); return /* @__PURE__ */ React.createElement(i18nContext.Provider, { value: contextProps }, props.children); }; export { I18nContextProvider, useI18nContext };