@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
44 lines (43 loc) • 1.52 kB
JavaScript
"use client";
import { useMemo, useContext } from 'react';
import SharedContext from "../../../shared/Context.js";
import sharedUseTranslation from "../../../shared/useTranslation.js";
import { extendDeep, isObject } from "../../../shared/component-helper.js";
import { LOCALE } from "../../../shared/defaults.js";
import formsLocales from "../constants/locales/index.js";
export default function useTranslation(messagesOrArgs) {
const {
locale,
translation: globalTranslation
} = useContext(SharedContext);
const {
messages,
fallbackLocale
} = useMemo(() => {
const arg = messagesOrArgs;
if (isObject(messagesOrArgs) && ('messages' in messagesOrArgs || 'fallbackLocale' in messagesOrArgs)) {
return {
messages: arg === null || arg === void 0 ? void 0 : arg.messages,
fallbackLocale: arg === null || arg === void 0 ? void 0 : arg.fallbackLocale
};
}
return {
messages: messagesOrArgs,
fallbackLocale: LOCALE
};
}, [messagesOrArgs]);
let translationLocale = locale;
if (locale.startsWith('en-') && !Object.keys(formsLocales).some(l => l === locale)) {
translationLocale = 'en-GB';
}
const base = useMemo(() => {
return extendDeep({}, formsLocales[translationLocale] || formsLocales[LOCALE], globalTranslation);
}, [globalTranslation, translationLocale]);
return sharedUseTranslation({
messages,
fallbackLocale,
base,
warnLabel: 'Form.useTranslation'
});
}
//# sourceMappingURL=useTranslation.js.map