react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
39 lines (36 loc) • 1.46 kB
JavaScript
'use client';
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
const require_client_useLocaleStorage = require('./useLocaleStorage.cjs');
const require_client_IntlayerProvider = require('./IntlayerProvider.cjs');
let react = require("react");
let _intlayer_config_built = require("@intlayer/config/built");
_intlayer_config_built = require_rolldown_runtime.__toESM(_intlayer_config_built);
//#region src/client/useLocale.ts
/**
* On the client side, hook to get the current locale and all related fields
*/
const useLocale = ({ isCookieEnabled, onLocaleChange } = {}) => {
const { defaultLocale, locales: availableLocales } = _intlayer_config_built.default?.internationalization ?? {};
const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, react.useContext)(require_client_IntlayerProvider.IntlayerClientContext);
return {
locale,
defaultLocale,
availableLocales,
setLocale: (0, react.useCallback)((locale$1) => {
if (!availableLocales?.map(String).includes(locale$1)) {
console.error(`Locale ${locale$1} is not available`);
return;
}
setLocaleState(locale$1);
require_client_useLocaleStorage.setLocaleInStorage(locale$1, isCookieEnabled ?? isCookieEnabledContext ?? true);
onLocaleChange?.(locale$1);
}, [
availableLocales,
onLocaleChange,
setLocaleState
])
};
};
//#endregion
exports.useLocale = useLocale;
//# sourceMappingURL=useLocale.cjs.map