react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
38 lines • 1.2 kB
JavaScript
"use client";
import configuration from "@intlayer/config/built";
import { useCallback, useContext } from "react";
import { IntlayerClientContext } from "./IntlayerProvider.mjs";
import { useLocaleCookie } from "./useLocaleCookie.mjs";
const useLocale = ({ onLocaleChange } = {}) => {
const { defaultLocale, locales: availableLocales } = configuration?.internationalization ?? {};
const { locale, setLocale: setLocaleState } = useContext(
IntlayerClientContext
);
const { setLocaleCookie } = useLocaleCookie();
const setLocale = useCallback(
(locale2) => {
if (!availableLocales?.map(String).includes(locale2)) {
console.error(`Locale ${locale2} is not available`);
return;
}
setLocaleState(locale2);
setLocaleCookie(locale2);
onLocaleChange?.(locale2);
},
[availableLocales, onLocaleChange, setLocaleCookie, setLocaleState]
);
return {
locale,
// Current locale
defaultLocale,
// Principal locale defined in config
availableLocales,
// List of the available locales defined in config
setLocale
// Function to set the locale
};
};
export {
useLocale
};
//# sourceMappingURL=useLocale.mjs.map