UNPKG

react-intlayer

Version:

Easily internationalize i18n your React applications with type-safe multilingual content management.

60 lines (57 loc) 2.04 kB
'use client'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); const require_client_useLocaleStorage = require('./useLocaleStorage.cjs'); const require_client_IntlayerProvider = require('./IntlayerProvider.cjs'); let _intlayer_config_built = require("@intlayer/config/built"); let react = require("react"); //#region src/client/useLocale.ts /** * Client-side hook to get the current locale and related locale management functions. * * @param props - Optional properties for the hook. * @returns An object containing the current locale, default locale, available locales, and a function to update the locale. * * @example * ```tsx * import { useLocale } from 'react-intlayer'; * * const LocaleSwitcher = () => { * const { locale, setLocale, availableLocales } = useLocale(); * * return ( * <select value={locale} onChange={(e) => setLocale(e.target.value)}> * {availableLocales.map((loc) => ( * <option key={loc} value={loc}>{loc}</option> * ))} * </select> * ); * }; * ``` */ const useLocale = ({ isCookieEnabled, onLocaleChange } = {}) => { const { defaultLocale, locales: availableLocales } = _intlayer_config_built.internationalization ?? {}; const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, react.useContext)(require_client_IntlayerProvider.IntlayerClientContext) ?? {}; return { locale, defaultLocale, availableLocales, setLocale: (0, react.useCallback)((locale) => { if (!availableLocales?.map(String).includes(locale)) { console.error(`Locale ${locale} is not available`); return; } setLocaleState(locale); require_client_useLocaleStorage.setLocaleInStorage(locale, isCookieEnabled ?? isCookieEnabledContext ?? true); onLocaleChange?.(locale); }, [ availableLocales, onLocaleChange, setLocaleState, isCookieEnabled ]) }; }; //#endregion exports.useLocale = useLocale; //# sourceMappingURL=useLocale.cjs.map