react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
60 lines (57 loc) • 2.04 kB
JavaScript
'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